Index: linux-2.6.32.9/arch/mips/bcm63xx/boards/board_bcm963xx.c =================================================================== --- linux-2.6.32.9.orig/arch/mips/bcm63xx/boards/board_bcm963xx.c 2010-02-28 18:50:37.000000000 +0100 +++ linux-2.6.32.9/arch/mips/bcm63xx/boards/board_bcm963xx.c 2010-02-28 18:54:31.000000000 +0100 @@ -336,24 +336,39 @@ .active_low = 1, }, { - .name = "ppp", - .gpio = 3, + .name = "power", + .gpio = 0, .active_low = 1, + .default_trigger = "default-on", }, { - .name = "ppp-fail", + .name = "stop", + .gpio = 1, + .active_low = 1, + }, + { + .name = "line1", .gpio = 4, .active_low = 1, }, { - .name = "power", - .gpio = 0, + .name = "line2", + .gpio = 5, .active_low = 1, - .default_trigger = "default-on", }, { - .name = "stop", - .gpio = 1, + .name = "line3", + .gpio = 6, + .active_low = 1, + }, + { + .name = "tel", + .gpio = 7, + .active_low = 1, + }, + { + .name = "eth", + .gpio = 35, .active_low = 1, }, }, @@ -855,6 +870,7 @@ int __init board_register_devices(void) { u32 val; + int led_count = 0; if (board.has_pccard) bcm63xx_pcmcia_register(); @@ -901,7 +917,11 @@ platform_device_register_simple("GPIODEV", 0, &gpiodev_resource, 1); - bcm63xx_led_data.num_leds = ARRAY_SIZE(board.leds); + /* count number of LEDs defined by this device */ + while (led_count < ARRAY_SIZE(board.leds) && board.leds[led_count].name) + led_count++; + + bcm63xx_led_data.num_leds = led_count; bcm63xx_led_data.leds = board.leds; platform_device_register(&bcm63xx_gpio_leds); Index: linux-2.6.32.9/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h =================================================================== --- linux-2.6.32.9.orig/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 2010-02-28 18:54:39.000000000 +0100 +++ linux-2.6.32.9/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 2010-02-28 18:54:49.000000000 +0100 @@ -54,7 +54,7 @@ struct bcm63xx_dsp_platform_data dsp; /* GPIO LEDs */ - struct gpio_led leds[5]; + struct gpio_led leds[8]; /* Reset button */ struct gpio_button reset_buttons[1];