[brcm63xx] fix alarm led color for board 96348A-122
[openwrt.git] / target / linux / brcm63xx / patches-3.3 / 300-reset_buttons.patch
index ef57ff8bfa45319bfd06a15b2a6688aa3127e800..f73c608bd9f427cfd9023683173b9a6df5722180 100644 (file)
@@ -4,12 +4,22 @@
  #include <linux/mtd/partitions.h>
  #include <linux/mtd/physmap.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
+@@ -30,6 +32,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;
+@@ -295,6 +300,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
+@@ -353,6 +368,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
+@@ -851,12 +876,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,
 +};
 +
  /*
@@ -67,7 +77,7 @@
  
        if (board.has_uart0)
                bcm63xx_uart_register(0);
-@@ -907,5 +940,16 @@ int __init board_register_devices(void)
+@@ -907,5 +943,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_ */