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
7 This adds led and button GPIO configuration for Linksys wrt54g3gv2,
8 wrt54gsv1 and wrtsl54gs. This is based on OpenWrt broadcom-diag code.
10 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
12 arch/mips/bcm47xx/buttons.c | 27 +++++++++++++++++++++++++++
13 arch/mips/bcm47xx/leds.c | 33 +++++++++++++++++++++++++++++++++
14 2 files changed, 60 insertions(+)
16 --- a/arch/mips/bcm47xx/buttons.c
17 +++ b/arch/mips/bcm47xx/buttons.c
18 @@ -259,6 +259,18 @@ bcm47xx_buttons_linksys_wrt310nv1[] __in
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),
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),
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),
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),
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);
54 + case BCM47XX_BOARD_LINKSYS_WRT54G:
55 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54gsv1);
57 + case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
58 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g3gv2);
60 case BCM47XX_BOARD_LINKSYS_WRT610NV1:
61 err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv1);
63 case BCM47XX_BOARD_LINKSYS_WRT610NV2:
64 err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv2);
66 + case BCM47XX_BOARD_LINKSYS_WRTSL54GS:
67 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrtsl54gs);
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
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),
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),
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),
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),
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);
116 + case BCM47XX_BOARD_LINKSYS_WRT54G:
117 + bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54gsv1);
119 + case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
120 + bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2);
122 case BCM47XX_BOARD_LINKSYS_WRT610NV1:
123 bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv1);
125 case BCM47XX_BOARD_LINKSYS_WRT610NV2:
126 bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv2);
128 + case BCM47XX_BOARD_LINKSYS_WRTSL54GS:
129 + bcm47xx_set_pdata(bcm47xx_leds_linksys_wrtsl54gs);
132 case BCM47XX_BOARD_MOTOROLA_WE800G:
133 bcm47xx_set_pdata(bcm47xx_leds_motorola_we800g);