xref: /OK3568_Linux_fs/kernel/arch/mips/bcm47xx/leds.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun #include "bcm47xx_private.h"
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun #include <linux/leds.h>
5*4882a593Smuzhiyun #include <bcm47xx_board.h>
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun /**************************************************
8*4882a593Smuzhiyun  * Database
9*4882a593Smuzhiyun  **************************************************/
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #define BCM47XX_GPIO_LED(_gpio, _color, _function, _active_low,		\
12*4882a593Smuzhiyun 			 _default_state)				\
13*4882a593Smuzhiyun 	{								\
14*4882a593Smuzhiyun 		.name		= "bcm47xx:" _color ":" _function,	\
15*4882a593Smuzhiyun 		.gpio		= _gpio,				\
16*4882a593Smuzhiyun 		.active_low	= _active_low,				\
17*4882a593Smuzhiyun 		.default_state	= _default_state,			\
18*4882a593Smuzhiyun 	}
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #define BCM47XX_GPIO_LED_TRIGGER(_gpio, _color, _function, _active_low,	\
21*4882a593Smuzhiyun 				 _default_trigger)			\
22*4882a593Smuzhiyun 	{								\
23*4882a593Smuzhiyun 		.name		= "bcm47xx:" _color ":" _function,	\
24*4882a593Smuzhiyun 		.gpio		= _gpio,				\
25*4882a593Smuzhiyun 		.active_low	= _active_low,				\
26*4882a593Smuzhiyun 		.default_state	= LEDS_GPIO_DEFSTATE_OFF,		\
27*4882a593Smuzhiyun 		.default_trigger	= _default_trigger,		\
28*4882a593Smuzhiyun 	}
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun /* Asus */
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun static const struct gpio_led
33*4882a593Smuzhiyun bcm47xx_leds_asus_rtn12[] __initconst = {
34*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
35*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
36*4882a593Smuzhiyun };
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun static const struct gpio_led
39*4882a593Smuzhiyun bcm47xx_leds_asus_rtn15u[] __initconst = {
40*4882a593Smuzhiyun 	/* TODO: Add "wlan" LED */
41*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "blue", "wan", 1, LEDS_GPIO_DEFSTATE_OFF),
42*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(4, "blue", "lan", 1, LEDS_GPIO_DEFSTATE_OFF),
43*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON),
44*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(9, "blue", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
45*4882a593Smuzhiyun };
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun static const struct gpio_led
48*4882a593Smuzhiyun bcm47xx_leds_asus_rtn16[] __initconst = {
49*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON),
50*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
51*4882a593Smuzhiyun };
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun static const struct gpio_led
54*4882a593Smuzhiyun bcm47xx_leds_asus_rtn66u[] __initconst = {
55*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(12, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON),
56*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(15, "blue", "usb", 1, LEDS_GPIO_DEFSTATE_OFF),
57*4882a593Smuzhiyun };
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun static const struct gpio_led
60*4882a593Smuzhiyun bcm47xx_leds_asus_wl300g[] __initconst = {
61*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
62*4882a593Smuzhiyun };
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun static const struct gpio_led
65*4882a593Smuzhiyun bcm47xx_leds_asus_wl320ge[] __initconst = {
66*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
67*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
68*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(11, "unk", "link", 1, LEDS_GPIO_DEFSTATE_OFF),
69*4882a593Smuzhiyun };
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun static const struct gpio_led
72*4882a593Smuzhiyun bcm47xx_leds_asus_wl330ge[] __initconst = {
73*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
74*4882a593Smuzhiyun };
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun static const struct gpio_led
77*4882a593Smuzhiyun bcm47xx_leds_asus_wl500g[] __initconst = {
78*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
79*4882a593Smuzhiyun };
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun static const struct gpio_led
82*4882a593Smuzhiyun bcm47xx_leds_asus_wl500gd[] __initconst = {
83*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
84*4882a593Smuzhiyun };
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun static const struct gpio_led
87*4882a593Smuzhiyun bcm47xx_leds_asus_wl500gpv1[] __initconst = {
88*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
89*4882a593Smuzhiyun };
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun static const struct gpio_led
92*4882a593Smuzhiyun bcm47xx_leds_asus_wl500gpv2[] __initconst = {
93*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
94*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
95*4882a593Smuzhiyun };
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun static const struct gpio_led
98*4882a593Smuzhiyun bcm47xx_leds_asus_wl500w[] __initconst = {
99*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
100*4882a593Smuzhiyun };
101*4882a593Smuzhiyun 
102*4882a593Smuzhiyun static const struct gpio_led
103*4882a593Smuzhiyun bcm47xx_leds_asus_wl520gc[] __initconst = {
104*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
105*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
106*4882a593Smuzhiyun };
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun static const struct gpio_led
109*4882a593Smuzhiyun bcm47xx_leds_asus_wl520gu[] __initconst = {
110*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
111*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
112*4882a593Smuzhiyun };
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun static const struct gpio_led
115*4882a593Smuzhiyun bcm47xx_leds_asus_wl700ge[] __initconst = {
116*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), /* Labeled "READY" (there is no "power" LED). Originally ON, flashing on USB activity. */
117*4882a593Smuzhiyun };
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun static const struct gpio_led
120*4882a593Smuzhiyun bcm47xx_leds_asus_wlhdd[] __initconst = {
121*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
122*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF),
123*4882a593Smuzhiyun };
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun /* Belkin */
126*4882a593Smuzhiyun 
127*4882a593Smuzhiyun static const struct gpio_led
128*4882a593Smuzhiyun bcm47xx_leds_belkin_f7d4301[] __initconst = {
129*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(10, "green", "power", 1, LEDS_GPIO_DEFSTATE_ON),
130*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(11, "amber", "power", 1, LEDS_GPIO_DEFSTATE_OFF),
131*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(12, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
132*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(13, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
133*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(14, "unk", "usb0", 1, LEDS_GPIO_DEFSTATE_OFF),
134*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(15, "unk", "usb1", 1, LEDS_GPIO_DEFSTATE_OFF),
135*4882a593Smuzhiyun };
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun /* Buffalo */
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun static const struct gpio_led
140*4882a593Smuzhiyun bcm47xx_leds_buffalo_whr2_a54g54[] __initconst = {
141*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF),
142*4882a593Smuzhiyun };
143*4882a593Smuzhiyun 
144*4882a593Smuzhiyun static const struct gpio_led
145*4882a593Smuzhiyun bcm47xx_leds_buffalo_whr_g125[] __initconst = {
146*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "bridge", 1, LEDS_GPIO_DEFSTATE_OFF),
147*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
148*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "unk", "internal", 1, LEDS_GPIO_DEFSTATE_OFF),
149*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
150*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF),
151*4882a593Smuzhiyun };
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun static const struct gpio_led
154*4882a593Smuzhiyun bcm47xx_leds_buffalo_whr_g54s[] __initconst = {
155*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "green", "bridge", 1, LEDS_GPIO_DEFSTATE_OFF),
156*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "green", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
157*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "green", "internal", 1, LEDS_GPIO_DEFSTATE_OFF),
158*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
159*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "red", "diag", 1, LEDS_GPIO_DEFSTATE_OFF),
160*4882a593Smuzhiyun };
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun static const struct gpio_led
163*4882a593Smuzhiyun bcm47xx_leds_buffalo_whr_hp_g54[] __initconst = {
164*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "bridge", 1, LEDS_GPIO_DEFSTATE_OFF),
165*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
166*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "unk", "internal", 1, LEDS_GPIO_DEFSTATE_OFF),
167*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
168*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF),
169*4882a593Smuzhiyun };
170*4882a593Smuzhiyun 
171*4882a593Smuzhiyun static const struct gpio_led
172*4882a593Smuzhiyun bcm47xx_leds_buffalo_wzr_g300n[] __initconst = {
173*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "bridge", 1, LEDS_GPIO_DEFSTATE_OFF),
174*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
175*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF),
176*4882a593Smuzhiyun };
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun static const struct gpio_led
179*4882a593Smuzhiyun bcm47xx_leds_buffalo_wzr_rs_g54[] __initconst = {
180*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
181*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "vpn", 1, LEDS_GPIO_DEFSTATE_OFF),
182*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF),
183*4882a593Smuzhiyun };
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun static const struct gpio_led
186*4882a593Smuzhiyun bcm47xx_leds_buffalo_wzr_rs_g54hp[] __initconst = {
187*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
188*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "vpn", 1, LEDS_GPIO_DEFSTATE_OFF),
189*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF),
190*4882a593Smuzhiyun };
191*4882a593Smuzhiyun 
192*4882a593Smuzhiyun /* Dell */
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun static const struct gpio_led
195*4882a593Smuzhiyun bcm47xx_leds_dell_tm2300[] __initconst = {
196*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
197*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
198*4882a593Smuzhiyun };
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun /* D-Link */
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun static const struct gpio_led
203*4882a593Smuzhiyun bcm47xx_leds_dlink_dir130[] __initconst = {
204*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(0, "green", "status", 1, "timer"), /* Originally blinking when device is ready, separated from "power" LED */
205*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "blue", "unk", 1, LEDS_GPIO_DEFSTATE_OFF),
206*4882a593Smuzhiyun };
207*4882a593Smuzhiyun 
208*4882a593Smuzhiyun static const struct gpio_led
209*4882a593Smuzhiyun bcm47xx_leds_dlink_dir330[] __initconst = {
210*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(0, "green", "status", 1, "timer"), /* Originally blinking when device is ready, separated from "power" LED */
211*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(4, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF),
212*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "blue", "unk", 1, LEDS_GPIO_DEFSTATE_OFF),
213*4882a593Smuzhiyun };
214*4882a593Smuzhiyun 
215*4882a593Smuzhiyun /* Huawei */
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun static const struct gpio_led
218*4882a593Smuzhiyun bcm47xx_leds_huawei_e970[] __initconst = {
219*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
220*4882a593Smuzhiyun };
221*4882a593Smuzhiyun 
222*4882a593Smuzhiyun /* Linksys */
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun static const struct gpio_led
225*4882a593Smuzhiyun bcm47xx_leds_linksys_e1000v1[] __initconst = {
226*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
227*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "blue", "power", 0, LEDS_GPIO_DEFSTATE_ON),
228*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
229*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(4, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
230*4882a593Smuzhiyun };
231*4882a593Smuzhiyun 
232*4882a593Smuzhiyun static const struct gpio_led
233*4882a593Smuzhiyun bcm47xx_leds_linksys_e1000v21[] __initconst = {
234*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
235*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON),
236*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "amber", "wps", 0, LEDS_GPIO_DEFSTATE_OFF),
237*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(8, "blue", "wps", 0, LEDS_GPIO_DEFSTATE_OFF),
238*4882a593Smuzhiyun };
239*4882a593Smuzhiyun 
240*4882a593Smuzhiyun static const struct gpio_led
241*4882a593Smuzhiyun bcm47xx_leds_linksys_e2000v1[] __initconst = {
242*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
243*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "blue", "power", 0, LEDS_GPIO_DEFSTATE_ON),
244*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
245*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(4, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
246*4882a593Smuzhiyun };
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun static const struct gpio_led
249*4882a593Smuzhiyun bcm47xx_leds_linksys_e3000v1[] __initconst = {
250*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
251*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
252*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
253*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
254*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
255*4882a593Smuzhiyun };
256*4882a593Smuzhiyun 
257*4882a593Smuzhiyun static const struct gpio_led
258*4882a593Smuzhiyun bcm47xx_leds_linksys_e3200v1[] __initconst = {
259*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "green", "power", 1, LEDS_GPIO_DEFSTATE_ON),
260*4882a593Smuzhiyun };
261*4882a593Smuzhiyun 
262*4882a593Smuzhiyun static const struct gpio_led
263*4882a593Smuzhiyun bcm47xx_leds_linksys_e4200v1[] __initconst = {
264*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "white", "power", 1, LEDS_GPIO_DEFSTATE_ON),
265*4882a593Smuzhiyun };
266*4882a593Smuzhiyun 
267*4882a593Smuzhiyun static const struct gpio_led
268*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt150nv1[] __initconst = {
269*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
270*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
271*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
272*4882a593Smuzhiyun };
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun static const struct gpio_led
275*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt150nv11[] __initconst = {
276*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
277*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
278*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
279*4882a593Smuzhiyun };
280*4882a593Smuzhiyun 
281*4882a593Smuzhiyun static const struct gpio_led
282*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt160nv1[] __initconst = {
283*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
284*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
285*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
286*4882a593Smuzhiyun };
287*4882a593Smuzhiyun 
288*4882a593Smuzhiyun static const struct gpio_led
289*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt160nv3[] __initconst = {
290*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
291*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
292*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(4, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
293*4882a593Smuzhiyun };
294*4882a593Smuzhiyun 
295*4882a593Smuzhiyun static const struct gpio_led
296*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt300n_v1[] __initconst = {
297*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON),
298*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
299*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
300*4882a593Smuzhiyun };
301*4882a593Smuzhiyun 
302*4882a593Smuzhiyun static const struct gpio_led
303*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt300nv11[] __initconst = {
304*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
305*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
306*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
307*4882a593Smuzhiyun };
308*4882a593Smuzhiyun 
309*4882a593Smuzhiyun static const struct gpio_led
310*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt310nv1[] __initconst = {
311*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "blue", "power", 0, LEDS_GPIO_DEFSTATE_ON),
312*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
313*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(9, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
314*4882a593Smuzhiyun };
315*4882a593Smuzhiyun 
316*4882a593Smuzhiyun static const struct gpio_led
317*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt54g_generic[] __initconst = {
318*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
319*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
320*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
321*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
322*4882a593Smuzhiyun };
323*4882a593Smuzhiyun 
324*4882a593Smuzhiyun static const struct gpio_led
325*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt54g3gv2[] __initconst = {
326*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
327*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "green", "3g", 0, LEDS_GPIO_DEFSTATE_OFF),
328*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "blue", "3g", 0, LEDS_GPIO_DEFSTATE_OFF),
329*4882a593Smuzhiyun };
330*4882a593Smuzhiyun 
331*4882a593Smuzhiyun /* Verified on: WRT54GS V1.0 */
332*4882a593Smuzhiyun static const struct gpio_led
333*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt54g_type_0101[] __initconst = {
334*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "green", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
335*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON),
336*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "green", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
337*4882a593Smuzhiyun };
338*4882a593Smuzhiyun 
339*4882a593Smuzhiyun /* Verified on: WRT54GL V1.1 */
340*4882a593Smuzhiyun static const struct gpio_led
341*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt54g_type_0467[] __initconst = {
342*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "green", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
343*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON),
344*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
345*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
346*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "green", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
347*4882a593Smuzhiyun };
348*4882a593Smuzhiyun 
349*4882a593Smuzhiyun static const struct gpio_led
350*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt610nv1[] __initconst = {
351*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "usb",  1, LEDS_GPIO_DEFSTATE_OFF),
352*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power",  0, LEDS_GPIO_DEFSTATE_OFF),
353*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "amber", "wps",  1, LEDS_GPIO_DEFSTATE_OFF),
354*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(9, "blue", "wps",  1, LEDS_GPIO_DEFSTATE_OFF),
355*4882a593Smuzhiyun };
356*4882a593Smuzhiyun 
357*4882a593Smuzhiyun static const struct gpio_led
358*4882a593Smuzhiyun bcm47xx_leds_linksys_wrt610nv2[] __initconst = {
359*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
360*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
361*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
362*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
363*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
364*4882a593Smuzhiyun };
365*4882a593Smuzhiyun 
366*4882a593Smuzhiyun static const struct gpio_led
367*4882a593Smuzhiyun bcm47xx_leds_linksys_wrtsl54gs[] __initconst = {
368*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "green", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
369*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON),
370*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
371*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
372*4882a593Smuzhiyun };
373*4882a593Smuzhiyun 
374*4882a593Smuzhiyun /* Luxul */
375*4882a593Smuzhiyun 
376*4882a593Smuzhiyun static const struct gpio_led
377*4882a593Smuzhiyun bcm47xx_leds_luxul_abr_4400_v1[] __initconst = {
378*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(12, "green", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
379*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(15, "green", "status", 0, "timer"),
380*4882a593Smuzhiyun };
381*4882a593Smuzhiyun 
382*4882a593Smuzhiyun static const struct gpio_led
383*4882a593Smuzhiyun bcm47xx_leds_luxul_xap_310_v1[] __initconst = {
384*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(6, "green", "status", 1, "timer"),
385*4882a593Smuzhiyun };
386*4882a593Smuzhiyun 
387*4882a593Smuzhiyun static const struct gpio_led
388*4882a593Smuzhiyun bcm47xx_leds_luxul_xap_1210_v1[] __initconst = {
389*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(6, "green", "status", 1, "timer"),
390*4882a593Smuzhiyun };
391*4882a593Smuzhiyun 
392*4882a593Smuzhiyun static const struct gpio_led
393*4882a593Smuzhiyun bcm47xx_leds_luxul_xap_1230_v1[] __initconst = {
394*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "blue", "2ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
395*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(4, "green", "bridge", 0, LEDS_GPIO_DEFSTATE_OFF),
396*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(6, "green", "status", 1, "timer"),
397*4882a593Smuzhiyun };
398*4882a593Smuzhiyun 
399*4882a593Smuzhiyun static const struct gpio_led
400*4882a593Smuzhiyun bcm47xx_leds_luxul_xap_1240_v1[] __initconst = {
401*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "blue", "2ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
402*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(4, "green", "bridge", 0, LEDS_GPIO_DEFSTATE_OFF),
403*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(6, "green", "status", 1, "timer"),
404*4882a593Smuzhiyun };
405*4882a593Smuzhiyun 
406*4882a593Smuzhiyun static const struct gpio_led
407*4882a593Smuzhiyun bcm47xx_leds_luxul_xap_1500_v1[] __initconst = {
408*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(13, "green", "status", 1, "timer"),
409*4882a593Smuzhiyun };
410*4882a593Smuzhiyun 
411*4882a593Smuzhiyun static const struct gpio_led
412*4882a593Smuzhiyun bcm47xx_leds_luxul_xap1500_v1_extra[] __initconst = {
413*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(44, "green", "5ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
414*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(76, "green", "2ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
415*4882a593Smuzhiyun };
416*4882a593Smuzhiyun 
417*4882a593Smuzhiyun static const struct gpio_led
418*4882a593Smuzhiyun bcm47xx_leds_luxul_xbr_4400_v1[] __initconst = {
419*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(12, "green", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
420*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(15, "green", "status", 0, "timer"),
421*4882a593Smuzhiyun };
422*4882a593Smuzhiyun 
423*4882a593Smuzhiyun static const struct gpio_led
424*4882a593Smuzhiyun bcm47xx_leds_luxul_xvw_p30_v1[] __initconst = {
425*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(0, "blue", "status", 1, "timer"),
426*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "green", "link", 1, LEDS_GPIO_DEFSTATE_OFF),
427*4882a593Smuzhiyun };
428*4882a593Smuzhiyun 
429*4882a593Smuzhiyun static const struct gpio_led
430*4882a593Smuzhiyun bcm47xx_leds_luxul_xwr_600_v1[] __initconst = {
431*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "green", "wps", 0, LEDS_GPIO_DEFSTATE_OFF),
432*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(6, "green", "status", 1, "timer"),
433*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(9, "green", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
434*4882a593Smuzhiyun };
435*4882a593Smuzhiyun 
436*4882a593Smuzhiyun static const struct gpio_led
437*4882a593Smuzhiyun bcm47xx_leds_luxul_xwr_1750_v1[] __initconst = {
438*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "green", "5ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
439*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(12, "green", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
440*4882a593Smuzhiyun 	BCM47XX_GPIO_LED_TRIGGER(13, "green", "status", 0, "timer"),
441*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(15, "green", "wps", 0, LEDS_GPIO_DEFSTATE_OFF),
442*4882a593Smuzhiyun };
443*4882a593Smuzhiyun 
444*4882a593Smuzhiyun static const struct gpio_led
445*4882a593Smuzhiyun bcm47xx_leds_luxul_xwr1750_v1_extra[] __initconst = {
446*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(76, "green", "2ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
447*4882a593Smuzhiyun };
448*4882a593Smuzhiyun 
449*4882a593Smuzhiyun /* Microsoft */
450*4882a593Smuzhiyun 
451*4882a593Smuzhiyun static const struct gpio_led
452*4882a593Smuzhiyun bcm47xx_leds_microsoft_nm700[] __initconst = {
453*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
454*4882a593Smuzhiyun };
455*4882a593Smuzhiyun 
456*4882a593Smuzhiyun /* Motorola */
457*4882a593Smuzhiyun 
458*4882a593Smuzhiyun static const struct gpio_led
459*4882a593Smuzhiyun bcm47xx_leds_motorola_we800g[] __initconst = {
460*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "amber", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
461*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "unk", "unk", 1, LEDS_GPIO_DEFSTATE_OFF), /* There are only 3 LEDs: Power, Wireless and Device (ethernet) */
462*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(4, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON),
463*4882a593Smuzhiyun };
464*4882a593Smuzhiyun 
465*4882a593Smuzhiyun static const struct gpio_led
466*4882a593Smuzhiyun bcm47xx_leds_motorola_wr850gp[] __initconst = {
467*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
468*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
469*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(6, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
470*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF),
471*4882a593Smuzhiyun };
472*4882a593Smuzhiyun 
473*4882a593Smuzhiyun static const struct gpio_led
474*4882a593Smuzhiyun bcm47xx_leds_motorola_wr850gv2v3[] __initconst = {
475*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
476*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
477*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF),
478*4882a593Smuzhiyun };
479*4882a593Smuzhiyun 
480*4882a593Smuzhiyun /* Netgear */
481*4882a593Smuzhiyun 
482*4882a593Smuzhiyun static const struct gpio_led
483*4882a593Smuzhiyun bcm47xx_leds_netgear_wndr3400v1[] __initconst = {
484*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "green", "usb", 1, LEDS_GPIO_DEFSTATE_OFF),
485*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON),
486*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "amber", "power", 0, LEDS_GPIO_DEFSTATE_OFF),
487*4882a593Smuzhiyun };
488*4882a593Smuzhiyun 
489*4882a593Smuzhiyun static const struct gpio_led
490*4882a593Smuzhiyun bcm47xx_leds_netgear_wndr4500v1[] __initconst = {
491*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
492*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "green", "power", 1, LEDS_GPIO_DEFSTATE_ON),
493*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "amber", "power", 1, LEDS_GPIO_DEFSTATE_OFF),
494*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(8, "green", "usb1", 1, LEDS_GPIO_DEFSTATE_OFF),
495*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(9, "green", "2ghz", 1, LEDS_GPIO_DEFSTATE_OFF),
496*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(11, "blue", "5ghz", 1, LEDS_GPIO_DEFSTATE_OFF),
497*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(14, "green", "usb2", 1, LEDS_GPIO_DEFSTATE_OFF),
498*4882a593Smuzhiyun };
499*4882a593Smuzhiyun 
500*4882a593Smuzhiyun static const struct gpio_led
501*4882a593Smuzhiyun bcm47xx_leds_netgear_wnr1000_v3[] __initconst = {
502*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
503*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "green", "wps", 0, LEDS_GPIO_DEFSTATE_OFF),
504*4882a593Smuzhiyun };
505*4882a593Smuzhiyun 
506*4882a593Smuzhiyun static const struct gpio_led
507*4882a593Smuzhiyun bcm47xx_leds_netgear_wnr3500lv1[] __initconst = {
508*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "blue", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
509*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
510*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "green", "wan", 1, LEDS_GPIO_DEFSTATE_OFF),
511*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON),
512*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "amber", "power", 0, LEDS_GPIO_DEFSTATE_OFF),
513*4882a593Smuzhiyun };
514*4882a593Smuzhiyun 
515*4882a593Smuzhiyun static const struct gpio_led
516*4882a593Smuzhiyun bcm47xx_leds_netgear_wnr834bv2[] __initconst = {
517*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(2, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON),
518*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "amber", "power", 0, LEDS_GPIO_DEFSTATE_OFF),
519*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(7, "unk", "connected", 0, LEDS_GPIO_DEFSTATE_OFF),
520*4882a593Smuzhiyun };
521*4882a593Smuzhiyun 
522*4882a593Smuzhiyun /* Siemens */
523*4882a593Smuzhiyun static const struct gpio_led
524*4882a593Smuzhiyun bcm47xx_leds_siemens_se505v2[] __initconst = {
525*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
526*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(3, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
527*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(5, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
528*4882a593Smuzhiyun };
529*4882a593Smuzhiyun 
530*4882a593Smuzhiyun /* SimpleTech */
531*4882a593Smuzhiyun 
532*4882a593Smuzhiyun static const struct gpio_led
533*4882a593Smuzhiyun bcm47xx_leds_simpletech_simpleshare[] __initconst = {
534*4882a593Smuzhiyun 	BCM47XX_GPIO_LED(1, "unk", "status", 1, LEDS_GPIO_DEFSTATE_OFF), /* "Ready" LED */
535*4882a593Smuzhiyun };
536*4882a593Smuzhiyun 
537*4882a593Smuzhiyun /**************************************************
538*4882a593Smuzhiyun  * Init
539*4882a593Smuzhiyun  **************************************************/
540*4882a593Smuzhiyun 
541*4882a593Smuzhiyun static struct gpio_led_platform_data bcm47xx_leds_pdata __initdata;
542*4882a593Smuzhiyun 
543*4882a593Smuzhiyun #define bcm47xx_set_pdata(dev_leds) do {				\
544*4882a593Smuzhiyun 	bcm47xx_leds_pdata.leds = dev_leds;				\
545*4882a593Smuzhiyun 	bcm47xx_leds_pdata.num_leds = ARRAY_SIZE(dev_leds);		\
546*4882a593Smuzhiyun } while (0)
547*4882a593Smuzhiyun 
548*4882a593Smuzhiyun static struct gpio_led_platform_data bcm47xx_leds_pdata_extra __initdata = {};
549*4882a593Smuzhiyun #define bcm47xx_set_pdata_extra(dev_leds) do {				\
550*4882a593Smuzhiyun 	bcm47xx_leds_pdata_extra.leds = dev_leds;			\
551*4882a593Smuzhiyun 	bcm47xx_leds_pdata_extra.num_leds = ARRAY_SIZE(dev_leds);	\
552*4882a593Smuzhiyun } while (0)
553*4882a593Smuzhiyun 
bcm47xx_leds_register(void)554*4882a593Smuzhiyun void __init bcm47xx_leds_register(void)
555*4882a593Smuzhiyun {
556*4882a593Smuzhiyun 	enum bcm47xx_board board = bcm47xx_board_get();
557*4882a593Smuzhiyun 
558*4882a593Smuzhiyun 	switch (board) {
559*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_RTN12:
560*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_rtn12);
561*4882a593Smuzhiyun 		break;
562*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_RTN15U:
563*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_rtn15u);
564*4882a593Smuzhiyun 		break;
565*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_RTN16:
566*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_rtn16);
567*4882a593Smuzhiyun 		break;
568*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_RTN66U:
569*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_rtn66u);
570*4882a593Smuzhiyun 		break;
571*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WL300G:
572*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wl300g);
573*4882a593Smuzhiyun 		break;
574*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WL320GE:
575*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wl320ge);
576*4882a593Smuzhiyun 		break;
577*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WL330GE:
578*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wl330ge);
579*4882a593Smuzhiyun 		break;
580*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WL500G:
581*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wl500g);
582*4882a593Smuzhiyun 		break;
583*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WL500GD:
584*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wl500gd);
585*4882a593Smuzhiyun 		break;
586*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WL500GPV1:
587*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wl500gpv1);
588*4882a593Smuzhiyun 		break;
589*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WL500GPV2:
590*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wl500gpv2);
591*4882a593Smuzhiyun 		break;
592*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WL500W:
593*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wl500w);
594*4882a593Smuzhiyun 		break;
595*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WL520GC:
596*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wl520gc);
597*4882a593Smuzhiyun 		break;
598*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WL520GU:
599*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wl520gu);
600*4882a593Smuzhiyun 		break;
601*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WL700GE:
602*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wl700ge);
603*4882a593Smuzhiyun 		break;
604*4882a593Smuzhiyun 	case BCM47XX_BOARD_ASUS_WLHDD:
605*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_asus_wlhdd);
606*4882a593Smuzhiyun 		break;
607*4882a593Smuzhiyun 
608*4882a593Smuzhiyun 	case BCM47XX_BOARD_BELKIN_F7D3301:
609*4882a593Smuzhiyun 	case BCM47XX_BOARD_BELKIN_F7D3302:
610*4882a593Smuzhiyun 	case BCM47XX_BOARD_BELKIN_F7D4301:
611*4882a593Smuzhiyun 	case BCM47XX_BOARD_BELKIN_F7D4302:
612*4882a593Smuzhiyun 	case BCM47XX_BOARD_BELKIN_F7D4401:
613*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_belkin_f7d4301);
614*4882a593Smuzhiyun 		break;
615*4882a593Smuzhiyun 
616*4882a593Smuzhiyun 	case BCM47XX_BOARD_BUFFALO_WHR2_A54G54:
617*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_buffalo_whr2_a54g54);
618*4882a593Smuzhiyun 		break;
619*4882a593Smuzhiyun 	case BCM47XX_BOARD_BUFFALO_WHR_G125:
620*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_buffalo_whr_g125);
621*4882a593Smuzhiyun 		break;
622*4882a593Smuzhiyun 	case BCM47XX_BOARD_BUFFALO_WHR_G54S:
623*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_buffalo_whr_g54s);
624*4882a593Smuzhiyun 		break;
625*4882a593Smuzhiyun 	case BCM47XX_BOARD_BUFFALO_WHR_HP_G54:
626*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_buffalo_whr_hp_g54);
627*4882a593Smuzhiyun 		break;
628*4882a593Smuzhiyun 	case BCM47XX_BOARD_BUFFALO_WZR_G300N:
629*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_buffalo_wzr_g300n);
630*4882a593Smuzhiyun 		break;
631*4882a593Smuzhiyun 	case BCM47XX_BOARD_BUFFALO_WZR_RS_G54:
632*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_buffalo_wzr_rs_g54);
633*4882a593Smuzhiyun 		break;
634*4882a593Smuzhiyun 	case BCM47XX_BOARD_BUFFALO_WZR_RS_G54HP:
635*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_buffalo_wzr_rs_g54hp);
636*4882a593Smuzhiyun 		break;
637*4882a593Smuzhiyun 
638*4882a593Smuzhiyun 	case BCM47XX_BOARD_DELL_TM2300:
639*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_dell_tm2300);
640*4882a593Smuzhiyun 		break;
641*4882a593Smuzhiyun 
642*4882a593Smuzhiyun 	case BCM47XX_BOARD_DLINK_DIR130:
643*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_dlink_dir130);
644*4882a593Smuzhiyun 		break;
645*4882a593Smuzhiyun 	case BCM47XX_BOARD_DLINK_DIR330:
646*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_dlink_dir330);
647*4882a593Smuzhiyun 		break;
648*4882a593Smuzhiyun 
649*4882a593Smuzhiyun 	case BCM47XX_BOARD_HUAWEI_E970:
650*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_huawei_e970);
651*4882a593Smuzhiyun 		break;
652*4882a593Smuzhiyun 
653*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_E1000V1:
654*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_e1000v1);
655*4882a593Smuzhiyun 		break;
656*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_E1000V21:
657*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_e1000v21);
658*4882a593Smuzhiyun 		break;
659*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_E2000V1:
660*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_e2000v1);
661*4882a593Smuzhiyun 		break;
662*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_E3000V1:
663*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_e3000v1);
664*4882a593Smuzhiyun 		break;
665*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_E3200V1:
666*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_e3200v1);
667*4882a593Smuzhiyun 		break;
668*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_E4200V1:
669*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_e4200v1);
670*4882a593Smuzhiyun 		break;
671*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT150NV1:
672*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt150nv1);
673*4882a593Smuzhiyun 		break;
674*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT150NV11:
675*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt150nv11);
676*4882a593Smuzhiyun 		break;
677*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT160NV1:
678*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt160nv1);
679*4882a593Smuzhiyun 		break;
680*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT160NV3:
681*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt160nv3);
682*4882a593Smuzhiyun 		break;
683*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT300N_V1:
684*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt300n_v1);
685*4882a593Smuzhiyun 		break;
686*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT300NV11:
687*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt300nv11);
688*4882a593Smuzhiyun 		break;
689*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT310NV1:
690*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt310nv1);
691*4882a593Smuzhiyun 		break;
692*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
693*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2);
694*4882a593Smuzhiyun 		break;
695*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101:
696*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_type_0101);
697*4882a593Smuzhiyun 		break;
698*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467:
699*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_type_0467);
700*4882a593Smuzhiyun 		break;
701*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708:
702*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_generic);
703*4882a593Smuzhiyun 		break;
704*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT610NV1:
705*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv1);
706*4882a593Smuzhiyun 		break;
707*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRT610NV2:
708*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv2);
709*4882a593Smuzhiyun 		break;
710*4882a593Smuzhiyun 	case BCM47XX_BOARD_LINKSYS_WRTSL54GS:
711*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrtsl54gs);
712*4882a593Smuzhiyun 		break;
713*4882a593Smuzhiyun 
714*4882a593Smuzhiyun 	case BCM47XX_BOARD_LUXUL_ABR_4400_V1:
715*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_luxul_abr_4400_v1);
716*4882a593Smuzhiyun 		break;
717*4882a593Smuzhiyun 	case BCM47XX_BOARD_LUXUL_XAP_310_V1:
718*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xap_310_v1);
719*4882a593Smuzhiyun 		break;
720*4882a593Smuzhiyun 	case BCM47XX_BOARD_LUXUL_XAP_1210_V1:
721*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xap_1210_v1);
722*4882a593Smuzhiyun 		break;
723*4882a593Smuzhiyun 	case BCM47XX_BOARD_LUXUL_XAP_1230_V1:
724*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xap_1230_v1);
725*4882a593Smuzhiyun 		break;
726*4882a593Smuzhiyun 	case BCM47XX_BOARD_LUXUL_XAP_1240_V1:
727*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xap_1240_v1);
728*4882a593Smuzhiyun 		break;
729*4882a593Smuzhiyun 	case BCM47XX_BOARD_LUXUL_XAP_1500_V1:
730*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xap_1500_v1);
731*4882a593Smuzhiyun 		bcm47xx_set_pdata_extra(bcm47xx_leds_luxul_xap1500_v1_extra);
732*4882a593Smuzhiyun 		break;
733*4882a593Smuzhiyun 	case BCM47XX_BOARD_LUXUL_XBR_4400_V1:
734*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xbr_4400_v1);
735*4882a593Smuzhiyun 		break;
736*4882a593Smuzhiyun 	case BCM47XX_BOARD_LUXUL_XVW_P30_V1:
737*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xvw_p30_v1);
738*4882a593Smuzhiyun 		break;
739*4882a593Smuzhiyun 	case BCM47XX_BOARD_LUXUL_XWR_600_V1:
740*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xwr_600_v1);
741*4882a593Smuzhiyun 		break;
742*4882a593Smuzhiyun 	case BCM47XX_BOARD_LUXUL_XWR_1750_V1:
743*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xwr_1750_v1);
744*4882a593Smuzhiyun 		bcm47xx_set_pdata_extra(bcm47xx_leds_luxul_xwr1750_v1_extra);
745*4882a593Smuzhiyun 		break;
746*4882a593Smuzhiyun 
747*4882a593Smuzhiyun 	case BCM47XX_BOARD_MICROSOFT_MN700:
748*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_microsoft_nm700);
749*4882a593Smuzhiyun 		break;
750*4882a593Smuzhiyun 
751*4882a593Smuzhiyun 	case BCM47XX_BOARD_MOTOROLA_WE800G:
752*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_motorola_we800g);
753*4882a593Smuzhiyun 		break;
754*4882a593Smuzhiyun 	case BCM47XX_BOARD_MOTOROLA_WR850GP:
755*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_motorola_wr850gp);
756*4882a593Smuzhiyun 		break;
757*4882a593Smuzhiyun 	case BCM47XX_BOARD_MOTOROLA_WR850GV2V3:
758*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_motorola_wr850gv2v3);
759*4882a593Smuzhiyun 		break;
760*4882a593Smuzhiyun 
761*4882a593Smuzhiyun 	case BCM47XX_BOARD_NETGEAR_WNDR3400V1:
762*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr3400v1);
763*4882a593Smuzhiyun 		break;
764*4882a593Smuzhiyun 	case BCM47XX_BOARD_NETGEAR_WNDR4500V1:
765*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr4500v1);
766*4882a593Smuzhiyun 		break;
767*4882a593Smuzhiyun 	case BCM47XX_BOARD_NETGEAR_WNR1000_V3:
768*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr1000_v3);
769*4882a593Smuzhiyun 		break;
770*4882a593Smuzhiyun 	case BCM47XX_BOARD_NETGEAR_WNR3500L:
771*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr3500lv1);
772*4882a593Smuzhiyun 		break;
773*4882a593Smuzhiyun 	case BCM47XX_BOARD_NETGEAR_WNR834BV2:
774*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr834bv2);
775*4882a593Smuzhiyun 		break;
776*4882a593Smuzhiyun 
777*4882a593Smuzhiyun 	case BCM47XX_BOARD_SIEMENS_SE505V2:
778*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_siemens_se505v2);
779*4882a593Smuzhiyun 		break;
780*4882a593Smuzhiyun 
781*4882a593Smuzhiyun 	case BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE:
782*4882a593Smuzhiyun 		bcm47xx_set_pdata(bcm47xx_leds_simpletech_simpleshare);
783*4882a593Smuzhiyun 		break;
784*4882a593Smuzhiyun 
785*4882a593Smuzhiyun 	default:
786*4882a593Smuzhiyun 		pr_debug("No LEDs configuration found for this device\n");
787*4882a593Smuzhiyun 		return;
788*4882a593Smuzhiyun 	}
789*4882a593Smuzhiyun 
790*4882a593Smuzhiyun 	gpio_led_register_device(-1, &bcm47xx_leds_pdata);
791*4882a593Smuzhiyun 	if (bcm47xx_leds_pdata_extra.num_leds)
792*4882a593Smuzhiyun 		gpio_led_register_device(0, &bcm47xx_leds_pdata_extra);
793*4882a593Smuzhiyun }
794