[brcm63xx] leds: do not register device if no leds defined
[openwrt.git] / target / linux / brcm63xx / patches-3.3 / 300-reset_buttons.patch
index ef57ff8bfa45319bfd06a15b2a6688aa3127e800..0e1d6f8d95c6478ed603d4c97bc6af51e6634e04 100644 (file)
@@ -1,15 +1,25 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -15,6 +15,8 @@
- #include <linux/mtd/partitions.h>
- #include <linux/mtd/physmap.h>
+@@ -12,6 +12,8 @@
+ #include <linux/string.h>
+ #include <linux/platform_device.h>
  #include <linux/ssb/ssb.h>
-+#include <linux/gpio_buttons.h>
++#include <linux/gpio_keys.h>
 +#include <linux/input.h>
  #include <asm/addrspace.h>
  #include <bcm63xx_board.h>
  #include <bcm63xx_cpu.h>
-@@ -295,6 +297,16 @@ static struct board_info __initdata boar
+@@ -28,6 +30,9 @@
+ #define PFX   "board_bcm963xx: "
++#define BCM963XX_KEYS_POLL_INTERVAL           20
++#define BCM963XX_KEYS_DEBOUNCE_INTERVAL       (BCM963XX_KEYS_POLL_INTERVAL * 3)
++
+ static struct bcm963xx_nvram nvram;
+ static unsigned int mac_addr_used;
+ static struct board_info board;
+@@ -293,6 +298,16 @@ static struct board_info __initdata boar
                        .active_low     = 1,
                },
        },
 +                      .active_low     = 1,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_RESTART,
-+                      .threshold      = 3,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +      },
  };
  
  static struct board_info __initdata board_96348gw = {
-@@ -353,6 +365,16 @@ static struct board_info __initdata boar
+@@ -351,6 +366,16 @@ static struct board_info __initdata boar
                        .active_low     = 1,
                },
        },
 +                      .active_low     = 1,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_RESTART,
-+                      .threshold      = 3,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +      },
  };
  
  static struct board_info __initdata board_FAST2404 = {
-@@ -851,12 +873,23 @@ static struct platform_device bcm63xx_gp
+@@ -821,11 +846,23 @@ static struct platform_device bcm63xx_gp
        .dev.platform_data      = &bcm63xx_led_data,
  };
  
-+static struct gpio_buttons_platform_data bcm63xx_gpio_buttons_data = {
-+      .poll_interval  = 20,
++static struct gpio_keys_platform_data bcm63xx_gpio_keys_data = {
++      .poll_interval  = BCM963XX_KEYS_POLL_INTERVAL,
 +};
 +
-+static struct platform_device bcm63xx_gpio_buttons_device = {
-+      .name           = "gpio-buttons",
++static struct platform_device bcm63xx_gpio_keys_device = {
++      .name           = "gpio-keys-polled",
 +      .id             = 0,
-+      .dev.platform_data = &bcm63xx_gpio_buttons_data,
++      .dev.platform_data = &bcm63xx_gpio_keys_data,
 +};
 +
  /*
   */
  int __init board_register_devices(void)
  {
-       u32 val;
 +      int button_count = 0;
++
        if (board.has_uart0)
                bcm63xx_uart_register(0);
-@@ -907,5 +940,16 @@ int __init board_register_devices(void)
+@@ -868,5 +905,16 @@ int __init board_register_devices(void)
  
        platform_device_register(&bcm63xx_gpio_leds);
  
 +              button_count++;
 +
 +      if (button_count) {
-+              bcm63xx_gpio_buttons_data.nbuttons = button_count;
-+              bcm63xx_gpio_buttons_data.buttons = board.buttons;
++              bcm63xx_gpio_keys_data.nbuttons = button_count;
++              bcm63xx_gpio_keys_data.buttons = board.buttons;
 +
-+              platform_device_register(&bcm63xx_gpio_buttons_device);
++              platform_device_register(&bcm63xx_gpio_keys_device);
 +      }
 +
        return 0;
  
  #include <linux/types.h>
  #include <linux/gpio.h>
-+#include <linux/gpio_buttons.h>
++#include <linux/gpio_keys.h>
  #include <linux/leds.h>
  #include <bcm63xx_dev_enet.h>
  #include <bcm63xx_dev_dsp.h>
        struct gpio_led leds[5];
 +
 +      /* Buttons */
-+      struct gpio_button buttons[4];
++      struct gpio_keys_button buttons[4];
  };
  
  #endif /* ! BOARD_BCM963XX_H_ */