brcm47xx: add initial support for kernel 3.14
[openwrt.git] / target / linux / brcm47xx / patches-3.14 / 140-MIPS-BCM47XX-add-button-and-led-configuration-for-so.patch
1 From e3d15471f1be2bd2fd4db82907ad4b2d74ec2636 Mon Sep 17 00:00:00 2001
2 From: Hauke Mehrtens <hauke@hauke-m.de>
3 Date: Fri, 10 Jan 2014 23:55:28 +0100
4 Subject: [PATCH 4/6] MIPS: BCM47XX: add button and led configuration for some
5  Linksys devices
6
7 This adds led and button GPIO configuration for Linksys wrt54g3gv2,
8 wrt54gsv1 and wrtsl54gs. This is based on OpenWrt broadcom-diag code.
9
10 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
11 ---
12  arch/mips/bcm47xx/buttons.c |   27 +++++++++++++++++++++++++++
13  arch/mips/bcm47xx/leds.c    |   33 +++++++++++++++++++++++++++++++++
14  2 files changed, 60 insertions(+)
15
16 --- a/arch/mips/bcm47xx/buttons.c
17 +++ b/arch/mips/bcm47xx/buttons.c
18 @@ -259,6 +259,18 @@ bcm47xx_buttons_linksys_wrt310nv1[] __in
19  };
20  
21  static const struct gpio_keys_button
22 +bcm47xx_buttons_linksys_wrt54g3gv2[] __initconst = {
23 +       BCM47XX_GPIO_KEY(5, KEY_WIMAX),
24 +       BCM47XX_GPIO_KEY(6, KEY_RESTART),
25 +};
26 +
27 +static const struct gpio_keys_button
28 +bcm47xx_buttons_linksys_wrt54gsv1[] __initconst = {
29 +       BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
30 +       BCM47XX_GPIO_KEY(6, KEY_RESTART),
31 +};
32 +
33 +static const struct gpio_keys_button
34  bcm47xx_buttons_linksys_wrt610nv1[] __initconst = {
35         BCM47XX_GPIO_KEY(6, KEY_RESTART),
36         BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON),
37 @@ -270,6 +282,12 @@ bcm47xx_buttons_linksys_wrt610nv2[] __in
38         BCM47XX_GPIO_KEY(6, KEY_RESTART),
39  };
40  
41 +static const struct gpio_keys_button
42 +bcm47xx_buttons_linksys_wrtsl54gs[] __initconst = {
43 +       BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
44 +       BCM47XX_GPIO_KEY(6, KEY_RESTART),
45 +};
46 +
47  /* Motorola */
48  
49  static const struct gpio_keys_button
50 @@ -479,12 +497,21 @@ int __init bcm47xx_buttons_register(void
51         case BCM47XX_BOARD_LINKSYS_WRT310NV1:
52                 err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310nv1);
53                 break;
54 +       case BCM47XX_BOARD_LINKSYS_WRT54G:
55 +               err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54gsv1);
56 +               break;
57 +       case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
58 +               err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g3gv2);
59 +               break;
60         case BCM47XX_BOARD_LINKSYS_WRT610NV1:
61                 err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv1);
62                 break;
63         case BCM47XX_BOARD_LINKSYS_WRT610NV2:
64                 err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv2);
65                 break;
66 +       case BCM47XX_BOARD_LINKSYS_WRTSL54GS:
67 +               err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrtsl54gs);
68 +               break;
69  
70         case BCM47XX_BOARD_MOTOROLA_WE800G:
71                 err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_we800g);
72 --- a/arch/mips/bcm47xx/leds.c
73 +++ b/arch/mips/bcm47xx/leds.c
74 @@ -292,6 +292,21 @@ bcm47xx_leds_linksys_wrt310nv1[] __initc
75  };
76  
77  static const struct gpio_led
78 +bcm47xx_leds_linksys_wrt54gsv1[] __initconst = {
79 +       BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
80 +       BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
81 +       BCM47XX_GPIO_LED(5, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
82 +       BCM47XX_GPIO_LED(7, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
83 +};
84 +
85 +static const struct gpio_led
86 +bcm47xx_leds_linksys_wrt54g3gv2[] __initconst = {
87 +       BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
88 +       BCM47XX_GPIO_LED(2, "green", "3g", 0, LEDS_GPIO_DEFSTATE_OFF),
89 +       BCM47XX_GPIO_LED(3, "blue", "3g", 0, LEDS_GPIO_DEFSTATE_OFF),
90 +};
91 +
92 +static const struct gpio_led
93  bcm47xx_leds_linksys_wrt610nv1[] __initconst = {
94         BCM47XX_GPIO_LED(0, "unk", "usb",  1, LEDS_GPIO_DEFSTATE_OFF),
95         BCM47XX_GPIO_LED(1, "unk", "power",  0, LEDS_GPIO_DEFSTATE_OFF),
96 @@ -308,6 +323,15 @@ bcm47xx_leds_linksys_wrt610nv2[] __initc
97         BCM47XX_GPIO_LED(7, "unk", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
98  };
99  
100 +static const struct gpio_led
101 +bcm47xx_leds_linksys_wrtsl54gs[] __initconst = {
102 +       BCM47XX_GPIO_LED(0, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
103 +       BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
104 +       BCM47XX_GPIO_LED(2, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
105 +       BCM47XX_GPIO_LED(3, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
106 +       BCM47XX_GPIO_LED(7, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
107 +};
108 +
109  /* Motorola */
110  
111  static const struct gpio_led
112 @@ -502,12 +526,21 @@ void __init bcm47xx_leds_register(void)
113         case BCM47XX_BOARD_LINKSYS_WRT310NV1:
114                 bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt310nv1);
115                 break;
116 +       case BCM47XX_BOARD_LINKSYS_WRT54G:
117 +               bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54gsv1);
118 +               break;
119 +       case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
120 +               bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2);
121 +               break;
122         case BCM47XX_BOARD_LINKSYS_WRT610NV1:
123                 bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv1);
124                 break;
125         case BCM47XX_BOARD_LINKSYS_WRT610NV2:
126                 bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv2);
127                 break;
128 +       case BCM47XX_BOARD_LINKSYS_WRTSL54GS:
129 +               bcm47xx_set_pdata(bcm47xx_leds_linksys_wrtsl54gs);
130 +               break;
131  
132         case BCM47XX_BOARD_MOTOROLA_WE800G:
133                 bcm47xx_set_pdata(bcm47xx_leds_motorola_we800g);