brcm63xx: 3.10: backport multi-board support
[openwrt.git] / target / linux / brcm63xx / patches-3.10 / 301-led_count.patch
1 --- a/arch/mips/bcm63xx/boards/board_common.c
2 +++ b/arch/mips/bcm63xx/boards/board_common.c
3 @@ -170,6 +170,7 @@ static struct platform_device bcm63xx_gp
4  int __init board_register_devices(void)
5  {
6         int button_count = 0;
7 +       int led_count = 0;
8  
9         if (board.has_uart0)
10                 bcm63xx_uart_register(0);
11 @@ -223,10 +224,16 @@ int __init board_register_devices(void)
12  
13         bcm63xx_flash_register();
14  
15 -       bcm63xx_led_data.num_leds = ARRAY_SIZE(board.leds);
16 -       bcm63xx_led_data.leds = board.leds;
17 +       /* count number of LEDs defined by this device */
18 +       while (led_count < ARRAY_SIZE(board.leds) && board.leds[led_count].name)
19 +               led_count++;
20 +
21 +       if (led_count) {
22 +               bcm63xx_led_data.num_leds = led_count;
23 +               bcm63xx_led_data.leds = board.leds;
24  
25 -       platform_device_register(&bcm63xx_gpio_leds);
26 +               platform_device_register(&bcm63xx_gpio_leds);
27 +       }
28  
29         if (board.ephy_reset_gpio && board.ephy_reset_gpio_flags)
30                 gpio_request_one(board.ephy_reset_gpio,
31 --- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
32 +++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
33 @@ -47,7 +47,7 @@ struct board_info {
34         struct bcm63xx_dsp_platform_data dsp;
35  
36         /* GPIO LEDs */
37 -       struct gpio_led leds[5];
38 +       struct gpio_led leds[14];
39  
40         /* Buttons */
41         struct gpio_keys_button buttons[4];