1 // SPDX-License-Identifier: GPL-2.0
2 #include "bcm47xx_private.h"
4 #include <linux/input.h>
5 #include <linux/gpio_keys.h>
6 #include <linux/interrupt.h>
7 #include <bcm47xx_board.h>
10 /**************************************************
12 **************************************************/
14 #define BCM47XX_GPIO_KEY(_gpio, _code) \
21 #define BCM47XX_GPIO_KEY_H(_gpio, _code) \
29 static const struct gpio_keys_button
30 bcm47xx_buttons_asus_rtn12
[] __initconst
= {
31 BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON
),
32 BCM47XX_GPIO_KEY(1, KEY_RESTART
),
33 BCM47XX_GPIO_KEY(4, BTN_0
), /* Router mode */
34 BCM47XX_GPIO_KEY(5, BTN_1
), /* Repeater mode */
35 BCM47XX_GPIO_KEY(6, BTN_2
), /* AP mode */
38 static const struct gpio_keys_button
39 bcm47xx_buttons_asus_rtn16
[] __initconst
= {
40 BCM47XX_GPIO_KEY(6, KEY_WPS_BUTTON
),
41 BCM47XX_GPIO_KEY(8, KEY_RESTART
),
44 static const struct gpio_keys_button
45 bcm47xx_buttons_asus_rtn66u
[] __initconst
= {
46 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
47 BCM47XX_GPIO_KEY(9, KEY_RESTART
),
50 static const struct gpio_keys_button
51 bcm47xx_buttons_asus_wl300g
[] __initconst
= {
52 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
55 static const struct gpio_keys_button
56 bcm47xx_buttons_asus_wl320ge
[] __initconst
= {
57 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
60 static const struct gpio_keys_button
61 bcm47xx_buttons_asus_wl330ge
[] __initconst
= {
62 BCM47XX_GPIO_KEY(2, KEY_RESTART
),
65 static const struct gpio_keys_button
66 bcm47xx_buttons_asus_wl500g
[] __initconst
= {
67 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
70 static const struct gpio_keys_button
71 bcm47xx_buttons_asus_wl500gd
[] __initconst
= {
72 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
75 static const struct gpio_keys_button
76 bcm47xx_buttons_asus_wl500gpv1
[] __initconst
= {
77 BCM47XX_GPIO_KEY(0, KEY_RESTART
),
78 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
81 static const struct gpio_keys_button
82 bcm47xx_buttons_asus_wl500gpv2
[] __initconst
= {
83 BCM47XX_GPIO_KEY(2, KEY_RESTART
),
84 BCM47XX_GPIO_KEY(3, KEY_WPS_BUTTON
),
87 static const struct gpio_keys_button
88 bcm47xx_buttons_asus_wl500w
[] __initconst
= {
89 BCM47XX_GPIO_KEY_H(6, KEY_RESTART
),
90 BCM47XX_GPIO_KEY_H(7, KEY_WPS_BUTTON
),
93 static const struct gpio_keys_button
94 bcm47xx_buttons_asus_wl520gc
[] __initconst
= {
95 BCM47XX_GPIO_KEY(2, KEY_RESTART
),
96 BCM47XX_GPIO_KEY(3, KEY_WPS_BUTTON
),
99 static const struct gpio_keys_button
100 bcm47xx_buttons_asus_wl520gu
[] __initconst
= {
101 BCM47XX_GPIO_KEY(2, KEY_RESTART
),
102 BCM47XX_GPIO_KEY(3, KEY_WPS_BUTTON
),
105 static const struct gpio_keys_button
106 bcm47xx_buttons_asus_wl700ge
[] __initconst
= {
107 BCM47XX_GPIO_KEY(0, KEY_POWER
), /* Hard disk power switch */
108 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
), /* EZSetup */
109 BCM47XX_GPIO_KEY(6, KEY_COPY
), /* Copy data from USB to internal disk */
110 BCM47XX_GPIO_KEY(7, KEY_RESTART
), /* Hard reset */
113 static const struct gpio_keys_button
114 bcm47xx_buttons_asus_wlhdd
[] __initconst
= {
115 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
120 static const struct gpio_keys_button
121 bcm47xx_buttons_huawei_e970
[] __initconst
= {
122 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
127 static const struct gpio_keys_button
128 bcm47xx_buttons_belkin_f7d4301
[] __initconst
= {
129 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
130 BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON
),
135 static const struct gpio_keys_button
136 bcm47xx_buttons_buffalo_whr2_a54g54
[] __initconst
= {
137 BCM47XX_GPIO_KEY(4, KEY_RESTART
),
140 static const struct gpio_keys_button
141 bcm47xx_buttons_buffalo_whr_g125
[] __initconst
= {
142 BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON
),
143 BCM47XX_GPIO_KEY(4, KEY_RESTART
),
144 BCM47XX_GPIO_KEY(5, BTN_0
), /* Router / AP mode swtich */
147 static const struct gpio_keys_button
148 bcm47xx_buttons_buffalo_whr_g54s
[] __initconst
= {
149 BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON
),
150 BCM47XX_GPIO_KEY(4, KEY_RESTART
),
151 BCM47XX_GPIO_KEY(5, BTN_0
), /* Router / AP mode swtich */
154 static const struct gpio_keys_button
155 bcm47xx_buttons_buffalo_whr_hp_g54
[] __initconst
= {
156 BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON
),
157 BCM47XX_GPIO_KEY(4, KEY_RESTART
),
158 BCM47XX_GPIO_KEY(5, BTN_0
), /* Router / AP mode swtich */
161 static const struct gpio_keys_button
162 bcm47xx_buttons_buffalo_wzr_g300n
[] __initconst
= {
163 BCM47XX_GPIO_KEY(4, KEY_RESTART
),
166 static const struct gpio_keys_button
167 bcm47xx_buttons_buffalo_wzr_rs_g54
[] __initconst
= {
168 BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON
),
169 BCM47XX_GPIO_KEY(4, KEY_RESTART
),
172 static const struct gpio_keys_button
173 bcm47xx_buttons_buffalo_wzr_rs_g54hp
[] __initconst
= {
174 BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON
),
175 BCM47XX_GPIO_KEY(4, KEY_RESTART
),
180 static const struct gpio_keys_button
181 bcm47xx_buttons_dell_tm2300
[] __initconst
= {
182 BCM47XX_GPIO_KEY(0, KEY_RESTART
),
187 static const struct gpio_keys_button
188 bcm47xx_buttons_dlink_dir130
[] __initconst
= {
189 BCM47XX_GPIO_KEY(3, KEY_RESTART
),
190 BCM47XX_GPIO_KEY(7, KEY_UNKNOWN
),
193 static const struct gpio_keys_button
194 bcm47xx_buttons_dlink_dir330
[] __initconst
= {
195 BCM47XX_GPIO_KEY(3, KEY_RESTART
),
196 BCM47XX_GPIO_KEY(7, KEY_UNKNOWN
),
201 static const struct gpio_keys_button
202 bcm47xx_buttons_linksys_e1000v1
[] __initconst
= {
203 BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON
),
204 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
207 static const struct gpio_keys_button
208 bcm47xx_buttons_linksys_e1000v21
[] __initconst
= {
209 BCM47XX_GPIO_KEY(9, KEY_WPS_BUTTON
),
210 BCM47XX_GPIO_KEY(10, KEY_RESTART
),
213 static const struct gpio_keys_button
214 bcm47xx_buttons_linksys_e2000v1
[] __initconst
= {
215 BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON
),
216 BCM47XX_GPIO_KEY(8, KEY_RESTART
),
219 static const struct gpio_keys_button
220 bcm47xx_buttons_linksys_e3000v1
[] __initconst
= {
221 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
222 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
225 static const struct gpio_keys_button
226 bcm47xx_buttons_linksys_e3200v1
[] __initconst
= {
227 BCM47XX_GPIO_KEY(5, KEY_RESTART
),
228 BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON
),
231 static const struct gpio_keys_button
232 bcm47xx_buttons_linksys_e4200v1
[] __initconst
= {
233 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
234 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
237 static const struct gpio_keys_button
238 bcm47xx_buttons_linksys_wrt150nv1
[] __initconst
= {
239 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
240 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
243 static const struct gpio_keys_button
244 bcm47xx_buttons_linksys_wrt150nv11
[] __initconst
= {
245 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
246 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
249 static const struct gpio_keys_button
250 bcm47xx_buttons_linksys_wrt160nv1
[] __initconst
= {
251 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
252 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
255 static const struct gpio_keys_button
256 bcm47xx_buttons_linksys_wrt160nv3
[] __initconst
= {
257 BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON
),
258 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
261 static const struct gpio_keys_button
262 bcm47xx_buttons_linksys_wrt300n_v1
[] __initconst
= {
263 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
264 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
267 static const struct gpio_keys_button
268 bcm47xx_buttons_linksys_wrt300nv11
[] __initconst
= {
269 BCM47XX_GPIO_KEY(4, KEY_UNKNOWN
),
270 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
273 static const struct gpio_keys_button
274 bcm47xx_buttons_linksys_wrt310nv1
[] __initconst
= {
275 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
276 BCM47XX_GPIO_KEY(8, KEY_UNKNOWN
),
279 static const struct gpio_keys_button
280 bcm47xx_buttons_linksys_wrt54g3gv2
[] __initconst
= {
281 BCM47XX_GPIO_KEY(5, KEY_WIMAX
),
282 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
285 static const struct gpio_keys_button
286 bcm47xx_buttons_linksys_wrt54g_generic
[] __initconst
= {
287 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
288 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
291 static const struct gpio_keys_button
292 bcm47xx_buttons_linksys_wrt610nv1
[] __initconst
= {
293 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
294 BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON
),
297 static const struct gpio_keys_button
298 bcm47xx_buttons_linksys_wrt610nv2
[] __initconst
= {
299 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
300 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
303 static const struct gpio_keys_button
304 bcm47xx_buttons_linksys_wrtsl54gs
[] __initconst
= {
305 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
306 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
311 static const struct gpio_keys_button
312 bcm47xx_buttons_luxul_abr_4400_v1
[] = {
313 BCM47XX_GPIO_KEY(14, KEY_RESTART
),
316 static const struct gpio_keys_button
317 bcm47xx_buttons_luxul_xap_310_v1
[] = {
318 BCM47XX_GPIO_KEY(20, KEY_RESTART
),
321 static const struct gpio_keys_button
322 bcm47xx_buttons_luxul_xap_1210_v1
[] = {
323 BCM47XX_GPIO_KEY(8, KEY_RESTART
),
326 static const struct gpio_keys_button
327 bcm47xx_buttons_luxul_xap_1230_v1
[] = {
328 BCM47XX_GPIO_KEY(8, KEY_RESTART
),
331 static const struct gpio_keys_button
332 bcm47xx_buttons_luxul_xap_1240_v1
[] = {
333 BCM47XX_GPIO_KEY(8, KEY_RESTART
),
336 static const struct gpio_keys_button
337 bcm47xx_buttons_luxul_xap_1500_v1
[] = {
338 BCM47XX_GPIO_KEY(14, KEY_RESTART
),
341 static const struct gpio_keys_button
342 bcm47xx_buttons_luxul_xbr_4400_v1
[] = {
343 BCM47XX_GPIO_KEY(14, KEY_RESTART
),
346 static const struct gpio_keys_button
347 bcm47xx_buttons_luxul_xvw_p30_v1
[] = {
348 BCM47XX_GPIO_KEY(20, KEY_RESTART
),
351 static const struct gpio_keys_button
352 bcm47xx_buttons_luxul_xwr_600_v1
[] = {
353 BCM47XX_GPIO_KEY(8, KEY_RESTART
),
356 static const struct gpio_keys_button
357 bcm47xx_buttons_luxul_xwr_1750_v1
[] = {
358 BCM47XX_GPIO_KEY(14, BTN_TASK
),
363 static const struct gpio_keys_button
364 bcm47xx_buttons_microsoft_nm700
[] __initconst
= {
365 BCM47XX_GPIO_KEY(7, KEY_RESTART
),
370 static const struct gpio_keys_button
371 bcm47xx_buttons_motorola_we800g
[] __initconst
= {
372 BCM47XX_GPIO_KEY(0, KEY_RESTART
),
375 static const struct gpio_keys_button
376 bcm47xx_buttons_motorola_wr850gp
[] __initconst
= {
377 BCM47XX_GPIO_KEY(5, KEY_RESTART
),
380 static const struct gpio_keys_button
381 bcm47xx_buttons_motorola_wr850gv2v3
[] __initconst
= {
382 BCM47XX_GPIO_KEY(5, KEY_RESTART
),
387 static const struct gpio_keys_button
388 bcm47xx_buttons_netgear_wndr3400v1
[] __initconst
= {
389 BCM47XX_GPIO_KEY(4, KEY_RESTART
),
390 BCM47XX_GPIO_KEY(6, KEY_WPS_BUTTON
),
391 BCM47XX_GPIO_KEY(8, KEY_RFKILL
),
394 static const struct gpio_keys_button
395 bcm47xx_buttons_netgear_wndr3400_v3
[] __initconst
= {
396 BCM47XX_GPIO_KEY(12, KEY_RESTART
),
397 BCM47XX_GPIO_KEY(23, KEY_WPS_BUTTON
),
400 static const struct gpio_keys_button
401 bcm47xx_buttons_netgear_wndr3700v3
[] __initconst
= {
402 BCM47XX_GPIO_KEY(2, KEY_RFKILL
),
403 BCM47XX_GPIO_KEY(3, KEY_RESTART
),
404 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
407 static const struct gpio_keys_button
408 bcm47xx_buttons_netgear_wndr4500v1
[] __initconst
= {
409 BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON
),
410 BCM47XX_GPIO_KEY(5, KEY_RFKILL
),
411 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
414 static const struct gpio_keys_button
415 bcm47xx_buttons_netgear_wnr3500lv1
[] __initconst
= {
416 BCM47XX_GPIO_KEY(4, KEY_RESTART
),
417 BCM47XX_GPIO_KEY(6, KEY_WPS_BUTTON
),
420 static const struct gpio_keys_button
421 bcm47xx_buttons_netgear_wnr834bv2
[] __initconst
= {
422 BCM47XX_GPIO_KEY(6, KEY_RESTART
),
427 static const struct gpio_keys_button
428 bcm47xx_buttons_simpletech_simpleshare
[] __initconst
= {
429 BCM47XX_GPIO_KEY(0, KEY_RESTART
),
432 /**************************************************
434 **************************************************/
436 static struct gpio_keys_platform_data bcm47xx_button_pdata
;
438 static struct platform_device bcm47xx_buttons_gpio_keys
= {
441 .platform_data
= &bcm47xx_button_pdata
,
445 /* Copy data from __initconst */
446 static int __init
bcm47xx_buttons_copy(const struct gpio_keys_button
*buttons
,
449 size_t size
= nbuttons
* sizeof(*buttons
);
451 bcm47xx_button_pdata
.buttons
= kmemdup(buttons
, size
, GFP_KERNEL
);
452 if (!bcm47xx_button_pdata
.buttons
)
454 bcm47xx_button_pdata
.nbuttons
= nbuttons
;
459 #define bcm47xx_copy_bdata(dev_buttons) \
460 bcm47xx_buttons_copy(dev_buttons, ARRAY_SIZE(dev_buttons));
462 int __init
bcm47xx_buttons_register(void)
464 enum bcm47xx_board board
= bcm47xx_board_get();
468 case BCM47XX_BOARD_ASUS_RTN12
:
469 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn12
);
471 case BCM47XX_BOARD_ASUS_RTN16
:
472 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn16
);
474 case BCM47XX_BOARD_ASUS_RTN66U
:
475 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn66u
);
477 case BCM47XX_BOARD_ASUS_WL300G
:
478 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl300g
);
480 case BCM47XX_BOARD_ASUS_WL320GE
:
481 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl320ge
);
483 case BCM47XX_BOARD_ASUS_WL330GE
:
484 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl330ge
);
486 case BCM47XX_BOARD_ASUS_WL500G
:
487 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500g
);
489 case BCM47XX_BOARD_ASUS_WL500GD
:
490 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500gd
);
492 case BCM47XX_BOARD_ASUS_WL500GPV1
:
493 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500gpv1
);
495 case BCM47XX_BOARD_ASUS_WL500GPV2
:
496 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500gpv2
);
498 case BCM47XX_BOARD_ASUS_WL500W
:
499 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500w
);
501 case BCM47XX_BOARD_ASUS_WL520GC
:
502 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl520gc
);
504 case BCM47XX_BOARD_ASUS_WL520GU
:
505 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl520gu
);
507 case BCM47XX_BOARD_ASUS_WL700GE
:
508 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl700ge
);
510 case BCM47XX_BOARD_ASUS_WLHDD
:
511 err
= bcm47xx_copy_bdata(bcm47xx_buttons_asus_wlhdd
);
514 case BCM47XX_BOARD_BELKIN_F7D3301
:
515 case BCM47XX_BOARD_BELKIN_F7D3302
:
516 case BCM47XX_BOARD_BELKIN_F7D4301
:
517 case BCM47XX_BOARD_BELKIN_F7D4302
:
518 case BCM47XX_BOARD_BELKIN_F7D4401
:
519 err
= bcm47xx_copy_bdata(bcm47xx_buttons_belkin_f7d4301
);
522 case BCM47XX_BOARD_BUFFALO_WHR2_A54G54
:
523 err
= bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr2_a54g54
);
525 case BCM47XX_BOARD_BUFFALO_WHR_G125
:
526 err
= bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr_g125
);
528 case BCM47XX_BOARD_BUFFALO_WHR_G54S
:
529 err
= bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr_g54s
);
531 case BCM47XX_BOARD_BUFFALO_WHR_HP_G54
:
532 err
= bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr_hp_g54
);
534 case BCM47XX_BOARD_BUFFALO_WZR_G300N
:
535 err
= bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_wzr_g300n
);
537 case BCM47XX_BOARD_BUFFALO_WZR_RS_G54
:
538 err
= bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_wzr_rs_g54
);
540 case BCM47XX_BOARD_BUFFALO_WZR_RS_G54HP
:
541 err
= bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_wzr_rs_g54hp
);
544 case BCM47XX_BOARD_DELL_TM2300
:
545 err
= bcm47xx_copy_bdata(bcm47xx_buttons_dell_tm2300
);
548 case BCM47XX_BOARD_DLINK_DIR130
:
549 err
= bcm47xx_copy_bdata(bcm47xx_buttons_dlink_dir130
);
551 case BCM47XX_BOARD_DLINK_DIR330
:
552 err
= bcm47xx_copy_bdata(bcm47xx_buttons_dlink_dir330
);
555 case BCM47XX_BOARD_HUAWEI_E970
:
556 err
= bcm47xx_copy_bdata(bcm47xx_buttons_huawei_e970
);
559 case BCM47XX_BOARD_LINKSYS_E1000V1
:
560 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e1000v1
);
562 case BCM47XX_BOARD_LINKSYS_E1000V21
:
563 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e1000v21
);
565 case BCM47XX_BOARD_LINKSYS_E2000V1
:
566 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e2000v1
);
568 case BCM47XX_BOARD_LINKSYS_E3000V1
:
569 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e3000v1
);
571 case BCM47XX_BOARD_LINKSYS_E3200V1
:
572 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e3200v1
);
574 case BCM47XX_BOARD_LINKSYS_E4200V1
:
575 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e4200v1
);
577 case BCM47XX_BOARD_LINKSYS_WRT150NV1
:
578 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt150nv1
);
580 case BCM47XX_BOARD_LINKSYS_WRT150NV11
:
581 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt150nv11
);
583 case BCM47XX_BOARD_LINKSYS_WRT160NV1
:
584 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt160nv1
);
586 case BCM47XX_BOARD_LINKSYS_WRT160NV3
:
587 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt160nv3
);
589 case BCM47XX_BOARD_LINKSYS_WRT300N_V1
:
590 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt300n_v1
);
592 case BCM47XX_BOARD_LINKSYS_WRT300NV11
:
593 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt300nv11
);
595 case BCM47XX_BOARD_LINKSYS_WRT310NV1
:
596 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310nv1
);
598 case BCM47XX_BOARD_LINKSYS_WRT54G3GV2
:
599 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g3gv2
);
601 case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101
:
602 case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467
:
603 case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708
:
604 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g_generic
);
606 case BCM47XX_BOARD_LINKSYS_WRT610NV1
:
607 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv1
);
609 case BCM47XX_BOARD_LINKSYS_WRT610NV2
:
610 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv2
);
612 case BCM47XX_BOARD_LINKSYS_WRTSL54GS
:
613 err
= bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrtsl54gs
);
616 case BCM47XX_BOARD_LUXUL_ABR_4400_V1
:
617 err
= bcm47xx_copy_bdata(bcm47xx_buttons_luxul_abr_4400_v1
);
619 case BCM47XX_BOARD_LUXUL_XAP_310_V1
:
620 err
= bcm47xx_copy_bdata(bcm47xx_buttons_luxul_xap_310_v1
);
622 case BCM47XX_BOARD_LUXUL_XAP_1210_V1
:
623 err
= bcm47xx_copy_bdata(bcm47xx_buttons_luxul_xap_1210_v1
);
625 case BCM47XX_BOARD_LUXUL_XAP_1230_V1
:
626 err
= bcm47xx_copy_bdata(bcm47xx_buttons_luxul_xap_1230_v1
);
628 case BCM47XX_BOARD_LUXUL_XAP_1240_V1
:
629 err
= bcm47xx_copy_bdata(bcm47xx_buttons_luxul_xap_1240_v1
);
631 case BCM47XX_BOARD_LUXUL_XAP_1500_V1
:
632 err
= bcm47xx_copy_bdata(bcm47xx_buttons_luxul_xap_1500_v1
);
634 case BCM47XX_BOARD_LUXUL_XBR_4400_V1
:
635 err
= bcm47xx_copy_bdata(bcm47xx_buttons_luxul_xbr_4400_v1
);
637 case BCM47XX_BOARD_LUXUL_XVW_P30_V1
:
638 err
= bcm47xx_copy_bdata(bcm47xx_buttons_luxul_xvw_p30_v1
);
640 case BCM47XX_BOARD_LUXUL_XWR_600_V1
:
641 err
= bcm47xx_copy_bdata(bcm47xx_buttons_luxul_xwr_600_v1
);
643 case BCM47XX_BOARD_LUXUL_XWR_1750_V1
:
644 err
= bcm47xx_copy_bdata(bcm47xx_buttons_luxul_xwr_1750_v1
);
647 case BCM47XX_BOARD_MICROSOFT_MN700
:
648 err
= bcm47xx_copy_bdata(bcm47xx_buttons_microsoft_nm700
);
651 case BCM47XX_BOARD_MOTOROLA_WE800G
:
652 err
= bcm47xx_copy_bdata(bcm47xx_buttons_motorola_we800g
);
654 case BCM47XX_BOARD_MOTOROLA_WR850GP
:
655 err
= bcm47xx_copy_bdata(bcm47xx_buttons_motorola_wr850gp
);
657 case BCM47XX_BOARD_MOTOROLA_WR850GV2V3
:
658 err
= bcm47xx_copy_bdata(bcm47xx_buttons_motorola_wr850gv2v3
);
661 case BCM47XX_BOARD_NETGEAR_WNDR3400V1
:
662 err
= bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr3400v1
);
664 case BCM47XX_BOARD_NETGEAR_WNDR3400_V3
:
665 err
= bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr3400_v3
);
667 case BCM47XX_BOARD_NETGEAR_WNDR3700V3
:
668 err
= bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr3700v3
);
670 case BCM47XX_BOARD_NETGEAR_WNDR4500V1
:
671 err
= bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr4500v1
);
673 case BCM47XX_BOARD_NETGEAR_WNR3500L
:
674 err
= bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wnr3500lv1
);
676 case BCM47XX_BOARD_NETGEAR_WNR834BV2
:
677 err
= bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wnr834bv2
);
680 case BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE
:
681 err
= bcm47xx_copy_bdata(bcm47xx_buttons_simpletech_simpleshare
);
685 pr_debug("No buttons configuration found for this device\n");
692 err
= platform_device_register(&bcm47xx_buttons_gpio_keys
);
694 pr_err("Failed to register platform device: %d\n", err
);