1 From 12dacbcfa86048cc0810fc6b91b3d7329722e59b Mon Sep 17 00:00:00 2001
2 From: Rafa? Mi?ecki <zajec5@gmail.com>
3 Date: Thu, 2 Jan 2014 13:37:56 +0100
4 Subject: [PATCH 031/110] MIPS: BCM47XX: Import buttons database from OpenWrt
6 This includes all devices from OpenWrt's "diag" that we support in arch
7 code (we have entries for in enum bcm47xx_board).
9 Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
10 Acked-by: John Crispin <blogic@openwrt.org>
11 Patchwork: http://patchwork.linux-mips.org/patch/6301/
13 arch/mips/bcm47xx/buttons.c | 456 +++++++++++++++++++++++++++++++++++++++++++
14 1 file changed, 456 insertions(+)
16 --- a/arch/mips/bcm47xx/buttons.c
17 +++ b/arch/mips/bcm47xx/buttons.c
20 **************************************************/
22 +#define BCM47XX_GPIO_KEY(_gpio, _code) \
31 +static const struct gpio_keys_button
32 +bcm47xx_buttons_asus_rtn12[] __initconst = {
33 + BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON),
34 + BCM47XX_GPIO_KEY(1, KEY_RESTART),
35 + BCM47XX_GPIO_KEY(4, BTN_0), /* Router mode */
36 + BCM47XX_GPIO_KEY(5, BTN_1), /* Repeater mode */
37 + BCM47XX_GPIO_KEY(6, BTN_2), /* AP mode */
40 +static const struct gpio_keys_button
41 +bcm47xx_buttons_asus_rtn16[] __initconst = {
42 + BCM47XX_GPIO_KEY(6, KEY_WPS_BUTTON),
43 + BCM47XX_GPIO_KEY(8, KEY_RESTART),
46 +static const struct gpio_keys_button
47 +bcm47xx_buttons_asus_rtn66u[] __initconst = {
48 + BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
49 + BCM47XX_GPIO_KEY(9, KEY_RESTART),
52 +static const struct gpio_keys_button
53 +bcm47xx_buttons_asus_wl300g[] __initconst = {
54 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
57 +static const struct gpio_keys_button
58 +bcm47xx_buttons_asus_wl320ge[] __initconst = {
59 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
62 +static const struct gpio_keys_button
63 +bcm47xx_buttons_asus_wl330ge[] __initconst = {
64 + BCM47XX_GPIO_KEY(2, KEY_RESTART),
67 +static const struct gpio_keys_button
68 +bcm47xx_buttons_asus_wl500gd[] __initconst = {
69 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
72 +static const struct gpio_keys_button
73 +bcm47xx_buttons_asus_wl500gpv1[] __initconst = {
74 + BCM47XX_GPIO_KEY(0, KEY_RESTART),
75 + BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
78 +static const struct gpio_keys_button
79 +bcm47xx_buttons_asus_wl500gpv2[] __initconst = {
80 + BCM47XX_GPIO_KEY(2, KEY_RESTART),
81 + BCM47XX_GPIO_KEY(3, KEY_WPS_BUTTON),
84 +static const struct gpio_keys_button
85 +bcm47xx_buttons_asus_wl500w[] __initconst = {
86 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
87 + BCM47XX_GPIO_KEY(7, KEY_WPS_BUTTON),
90 +static const struct gpio_keys_button
91 +bcm47xx_buttons_asus_wl520gc[] __initconst = {
92 + BCM47XX_GPIO_KEY(2, KEY_RESTART),
93 + BCM47XX_GPIO_KEY(3, KEY_WPS_BUTTON),
96 +static const struct gpio_keys_button
97 +bcm47xx_buttons_asus_wl520gu[] __initconst = {
98 + BCM47XX_GPIO_KEY(2, KEY_RESTART),
99 + BCM47XX_GPIO_KEY(3, KEY_WPS_BUTTON),
102 +static const struct gpio_keys_button
103 +bcm47xx_buttons_asus_wl700ge[] __initconst = {
104 + BCM47XX_GPIO_KEY(0, KEY_POWER), /* Hard disk power switch */
105 + BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), /* EZSetup */
106 + BCM47XX_GPIO_KEY(6, KEY_COPY), /* Copy data from USB to internal disk */
107 + BCM47XX_GPIO_KEY(7, KEY_RESTART), /* Hard reset */
110 +static const struct gpio_keys_button
111 +bcm47xx_buttons_asus_wlhdd[] __initconst = {
112 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
117 +static const struct gpio_keys_button
118 +bcm47xx_buttons_huawei_e970[] __initconst = {
119 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
124 +static const struct gpio_keys_button
125 +bcm47xx_buttons_belkin_f7d4301[] __initconst = {
126 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
127 + BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON),
132 +static const struct gpio_keys_button
133 +bcm47xx_buttons_buffalo_whr2_a54g54[] __initconst = {
134 + BCM47XX_GPIO_KEY(4, KEY_RESTART),
137 +static const struct gpio_keys_button
138 +bcm47xx_buttons_buffalo_whr_g125[] __initconst = {
139 + BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON),
140 + BCM47XX_GPIO_KEY(4, KEY_RESTART),
141 + BCM47XX_GPIO_KEY(5, BTN_0), /* Router / AP mode swtich */
144 +static const struct gpio_keys_button
145 +bcm47xx_buttons_buffalo_whr_g54s[] __initconst = {
146 + BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON),
147 + BCM47XX_GPIO_KEY(4, KEY_RESTART),
148 + BCM47XX_GPIO_KEY(5, BTN_0), /* Router / AP mode swtich */
151 +static const struct gpio_keys_button
152 +bcm47xx_buttons_buffalo_whr_hp_g54[] __initconst = {
153 + BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON),
154 + BCM47XX_GPIO_KEY(4, KEY_RESTART),
155 + BCM47XX_GPIO_KEY(5, BTN_0), /* Router / AP mode swtich */
158 +static const struct gpio_keys_button
159 +bcm47xx_buttons_buffalo_wzr_g300n[] __initconst = {
160 + BCM47XX_GPIO_KEY(4, KEY_RESTART),
163 +static const struct gpio_keys_button
164 +bcm47xx_buttons_buffalo_wzr_rs_g54[] __initconst = {
165 + BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON),
166 + BCM47XX_GPIO_KEY(4, KEY_RESTART),
169 +static const struct gpio_keys_button
170 +bcm47xx_buttons_buffalo_wzr_rs_g54hp[] __initconst = {
171 + BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON),
172 + BCM47XX_GPIO_KEY(4, KEY_RESTART),
177 +static const struct gpio_keys_button
178 +bcm47xx_buttons_dell_tm2300[] __initconst = {
179 + BCM47XX_GPIO_KEY(0, KEY_RESTART),
184 +static const struct gpio_keys_button
185 +bcm47xx_buttons_dlink_dir130[] __initconst = {
186 + BCM47XX_GPIO_KEY(3, KEY_RESTART),
187 + BCM47XX_GPIO_KEY(7, KEY_UNKNOWN),
190 +static const struct gpio_keys_button
191 +bcm47xx_buttons_dlink_dir330[] __initconst = {
192 + BCM47XX_GPIO_KEY(3, KEY_RESTART),
193 + BCM47XX_GPIO_KEY(7, KEY_UNKNOWN),
198 +static const struct gpio_keys_button
199 +bcm47xx_buttons_linksys_e1000v1[] __initconst = {
200 + BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON),
201 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
204 +static const struct gpio_keys_button
205 +bcm47xx_buttons_linksys_e1000v21[] __initconst = {
206 + BCM47XX_GPIO_KEY(9, KEY_WPS_BUTTON),
207 + BCM47XX_GPIO_KEY(10, KEY_RESTART),
210 +static const struct gpio_keys_button
211 +bcm47xx_buttons_linksys_e2000v1[] __initconst = {
212 + BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON),
213 + BCM47XX_GPIO_KEY(8, KEY_RESTART),
216 +static const struct gpio_keys_button
217 +bcm47xx_buttons_linksys_e3000v1[] __initconst = {
218 + BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
219 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
222 +static const struct gpio_keys_button
223 +bcm47xx_buttons_linksys_e3200v1[] __initconst = {
224 + BCM47XX_GPIO_KEY(5, KEY_RESTART),
225 + BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON),
228 +static const struct gpio_keys_button
229 +bcm47xx_buttons_linksys_e4200v1[] __initconst = {
230 + BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
231 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
234 +static const struct gpio_keys_button
235 +bcm47xx_buttons_linksys_wrt150nv1[] __initconst = {
236 + BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
237 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
240 +static const struct gpio_keys_button
241 +bcm47xx_buttons_linksys_wrt150nv11[] __initconst = {
242 + BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
243 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
246 +static const struct gpio_keys_button
247 +bcm47xx_buttons_linksys_wrt160nv1[] __initconst = {
248 + BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
249 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
252 +static const struct gpio_keys_button
253 +bcm47xx_buttons_linksys_wrt160nv3[] __initconst = {
254 + BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON),
255 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
258 +static const struct gpio_keys_button
259 +bcm47xx_buttons_linksys_wrt300nv11[] __initconst = {
260 + BCM47XX_GPIO_KEY(4, KEY_UNKNOWN),
261 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
264 +static const struct gpio_keys_button
265 +bcm47xx_buttons_linksys_wrt310nv1[] __initconst = {
266 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
267 + BCM47XX_GPIO_KEY(8, KEY_UNKNOWN),
270 +static const struct gpio_keys_button
271 +bcm47xx_buttons_linksys_wrt610nv1[] __initconst = {
272 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
273 + BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON),
276 +static const struct gpio_keys_button
277 +bcm47xx_buttons_linksys_wrt610nv2[] __initconst = {
278 + BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
279 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
284 +static const struct gpio_keys_button
285 +bcm47xx_buttons_motorola_we800g[] __initconst = {
286 + BCM47XX_GPIO_KEY(0, KEY_RESTART),
289 +static const struct gpio_keys_button
290 +bcm47xx_buttons_motorola_wr850gp[] __initconst = {
291 + BCM47XX_GPIO_KEY(5, KEY_RESTART),
294 +static const struct gpio_keys_button
295 +bcm47xx_buttons_motorola_wr850gv2v3[] __initconst = {
296 + BCM47XX_GPIO_KEY(5, KEY_RESTART),
301 +static const struct gpio_keys_button
302 +bcm47xx_buttons_netgear_wndr3400v1[] __initconst = {
303 + BCM47XX_GPIO_KEY(4, KEY_RESTART),
304 + BCM47XX_GPIO_KEY(6, KEY_WPS_BUTTON),
305 + BCM47XX_GPIO_KEY(8, KEY_RFKILL),
308 +static const struct gpio_keys_button
309 +bcm47xx_buttons_netgear_wndr3700v3[] __initconst = {
310 + BCM47XX_GPIO_KEY(2, KEY_RFKILL),
311 + BCM47XX_GPIO_KEY(3, KEY_RESTART),
312 + BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
315 static const struct gpio_keys_button
316 bcm47xx_buttons_netgear_wndr4500_v1[] __initconst = {
318 @@ -30,6 +323,18 @@ bcm47xx_buttons_netgear_wndr4500_v1[] __
322 +static const struct gpio_keys_button
323 +bcm47xx_buttons_netgear_wnr834bv2[] __initconst = {
324 + BCM47XX_GPIO_KEY(6, KEY_RESTART),
329 +static const struct gpio_keys_button
330 +bcm47xx_buttons_simpletech_simpleshare[] __initconst = {
331 + BCM47XX_GPIO_KEY(0, KEY_RESTART),
334 /**************************************************
336 **************************************************/
337 @@ -74,9 +379,160 @@ int __init bcm47xx_buttons_register(void
341 + case BCM47XX_BOARD_ASUS_RTN12:
342 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn12);
344 + case BCM47XX_BOARD_ASUS_RTN16:
345 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn16);
347 + case BCM47XX_BOARD_ASUS_RTN66U:
348 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn66u);
350 + case BCM47XX_BOARD_ASUS_WL300G:
351 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl300g);
353 + case BCM47XX_BOARD_ASUS_WL320GE:
354 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl320ge);
356 + case BCM47XX_BOARD_ASUS_WL330GE:
357 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl330ge);
359 + case BCM47XX_BOARD_ASUS_WL500GD:
360 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500gd);
362 + case BCM47XX_BOARD_ASUS_WL500GPV1:
363 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500gpv1);
365 + case BCM47XX_BOARD_ASUS_WL500GPV2:
366 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500gpv2);
368 + case BCM47XX_BOARD_ASUS_WL500W:
369 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500w);
371 + case BCM47XX_BOARD_ASUS_WL520GC:
372 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl520gc);
374 + case BCM47XX_BOARD_ASUS_WL520GU:
375 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl520gu);
377 + case BCM47XX_BOARD_ASUS_WL700GE:
378 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl700ge);
380 + case BCM47XX_BOARD_ASUS_WLHDD:
381 + err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wlhdd);
384 + case BCM47XX_BOARD_BELKIN_F7D4301:
385 + err = bcm47xx_copy_bdata(bcm47xx_buttons_belkin_f7d4301);
388 + case BCM47XX_BOARD_BUFFALO_WHR2_A54G54:
389 + err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr2_a54g54);
391 + case BCM47XX_BOARD_BUFFALO_WHR_G125:
392 + err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr_g125);
394 + case BCM47XX_BOARD_BUFFALO_WHR_G54S:
395 + err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr_g54s);
397 + case BCM47XX_BOARD_BUFFALO_WHR_HP_G54:
398 + err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr_hp_g54);
400 + case BCM47XX_BOARD_BUFFALO_WZR_G300N:
401 + err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_wzr_g300n);
403 + case BCM47XX_BOARD_BUFFALO_WZR_RS_G54:
404 + err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_wzr_rs_g54);
406 + case BCM47XX_BOARD_BUFFALO_WZR_RS_G54HP:
407 + err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_wzr_rs_g54hp);
410 + case BCM47XX_BOARD_DELL_TM2300:
411 + err = bcm47xx_copy_bdata(bcm47xx_buttons_dell_tm2300);
414 + case BCM47XX_BOARD_DLINK_DIR130:
415 + err = bcm47xx_copy_bdata(bcm47xx_buttons_dlink_dir130);
417 + case BCM47XX_BOARD_DLINK_DIR330:
418 + err = bcm47xx_copy_bdata(bcm47xx_buttons_dlink_dir330);
421 + case BCM47XX_BOARD_HUAWEI_E970:
422 + err = bcm47xx_copy_bdata(bcm47xx_buttons_huawei_e970);
425 + case BCM47XX_BOARD_LINKSYS_E1000V1:
426 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e1000v1);
428 + case BCM47XX_BOARD_LINKSYS_E1000V21:
429 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e1000v21);
431 + case BCM47XX_BOARD_LINKSYS_E2000V1:
432 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e2000v1);
434 + case BCM47XX_BOARD_LINKSYS_E3000V1:
435 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e3000v1);
437 + case BCM47XX_BOARD_LINKSYS_E3200V1:
438 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e3200v1);
440 + case BCM47XX_BOARD_LINKSYS_E4200V1:
441 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e4200v1);
443 + case BCM47XX_BOARD_LINKSYS_WRT150NV1:
444 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt150nv1);
446 + case BCM47XX_BOARD_LINKSYS_WRT150NV11:
447 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt150nv11);
449 + case BCM47XX_BOARD_LINKSYS_WRT160NV1:
450 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt160nv1);
452 + case BCM47XX_BOARD_LINKSYS_WRT160NV3:
453 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt160nv3);
455 + case BCM47XX_BOARD_LINKSYS_WRT300NV11:
456 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt300nv11);
458 + case BCM47XX_BOARD_LINKSYS_WRT310NV1:
459 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310nv1);
461 + case BCM47XX_BOARD_LINKSYS_WRT610NV1:
462 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv1);
464 + case BCM47XX_BOARD_LINKSYS_WRT610NV2:
465 + err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv2);
468 + case BCM47XX_BOARD_MOTOROLA_WE800G:
469 + err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_we800g);
471 + case BCM47XX_BOARD_MOTOROLA_WR850GP:
472 + err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_wr850gp);
474 + case BCM47XX_BOARD_MOTOROLA_WR850GV2V3:
475 + err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_wr850gv2v3);
478 + case BCM47XX_BOARD_NETGEAR_WNDR3400V1:
479 + err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr3400v1);
481 + case BCM47XX_BOARD_NETGEAR_WNDR3700V3:
482 + err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr3700v3);
484 case BCM47XX_BOARD_NETGEAR_WNDR4500V1:
485 err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr4500_v1);
487 + case BCM47XX_BOARD_NETGEAR_WNR834BV2:
488 + err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wnr834bv2);
491 + case BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE:
492 + err = bcm47xx_copy_bdata(bcm47xx_buttons_simpletech_simpleshare);
496 pr_debug("No buttons configuration found for this device\n");