1971bcfcaSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0+ */
232890b98SMarc Dietrich /*
332890b98SMarc Dietrich  * drivers/input/keyboard/tegra-nvec.c
432890b98SMarc Dietrich  *
532890b98SMarc Dietrich  * Keyboard class input driver for keyboards connected to an NvEc compliant
632890b98SMarc Dietrich  * embedded controller
732890b98SMarc Dietrich  *
832890b98SMarc Dietrich  * Copyright (c) 2009, NVIDIA Corporation.
932890b98SMarc Dietrich  *
1032890b98SMarc Dietrich  * This program is free software; you can redistribute it and/or modify
1132890b98SMarc Dietrich  * it under the terms of the GNU General Public License as published by
1232890b98SMarc Dietrich  * the Free Software Foundation; either version 2 of the License, or
1332890b98SMarc Dietrich  * (at your option) any later version.
1432890b98SMarc Dietrich  *
1532890b98SMarc Dietrich  * This program is distributed in the hope that it will be useful, but WITHOUT
1632890b98SMarc Dietrich  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1732890b98SMarc Dietrich  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
1832890b98SMarc Dietrich  * more details.
1932890b98SMarc Dietrich  *
2032890b98SMarc Dietrich  * You should have received a copy of the GNU General Public License along
21bbc2a2dfSRiku Salminen  * with this program; if not, see http://www.gnu.org/licenses
2232890b98SMarc Dietrich  */
2332890b98SMarc Dietrich 
2432890b98SMarc Dietrich static unsigned short code_tab_102us[] = {
25162c7d8cSMarc Dietrich 	/* 0x00 */
26162c7d8cSMarc Dietrich 	KEY_GRAVE,
2732890b98SMarc Dietrich 	KEY_ESC,
2832890b98SMarc Dietrich 	KEY_1,
2932890b98SMarc Dietrich 	KEY_2,
3032890b98SMarc Dietrich 	KEY_3,
3132890b98SMarc Dietrich 	KEY_4,
3232890b98SMarc Dietrich 	KEY_5,
3332890b98SMarc Dietrich 	KEY_6,
3432890b98SMarc Dietrich 	KEY_7,
3532890b98SMarc Dietrich 	KEY_8,
3632890b98SMarc Dietrich 	KEY_9,
3732890b98SMarc Dietrich 	KEY_0,
3832890b98SMarc Dietrich 	KEY_MINUS,
3932890b98SMarc Dietrich 	KEY_EQUAL,
4032890b98SMarc Dietrich 	KEY_BACKSPACE,
4132890b98SMarc Dietrich 	KEY_TAB,
42162c7d8cSMarc Dietrich 	/* 0x10 */
43162c7d8cSMarc Dietrich 	KEY_Q,
4432890b98SMarc Dietrich 	KEY_W,
4532890b98SMarc Dietrich 	KEY_E,
4632890b98SMarc Dietrich 	KEY_R,
4732890b98SMarc Dietrich 	KEY_T,
4832890b98SMarc Dietrich 	KEY_Y,
4932890b98SMarc Dietrich 	KEY_U,
5032890b98SMarc Dietrich 	KEY_I,
5132890b98SMarc Dietrich 	KEY_O,
5232890b98SMarc Dietrich 	KEY_P,
5332890b98SMarc Dietrich 	KEY_LEFTBRACE,
5432890b98SMarc Dietrich 	KEY_RIGHTBRACE,
5532890b98SMarc Dietrich 	KEY_ENTER,
5632890b98SMarc Dietrich 	KEY_LEFTCTRL,
5732890b98SMarc Dietrich 	KEY_A,
5832890b98SMarc Dietrich 	KEY_S,
59162c7d8cSMarc Dietrich 	/* 0x20 */
60162c7d8cSMarc Dietrich 	KEY_D,
6132890b98SMarc Dietrich 	KEY_F,
6232890b98SMarc Dietrich 	KEY_G,
6332890b98SMarc Dietrich 	KEY_H,
6432890b98SMarc Dietrich 	KEY_J,
6532890b98SMarc Dietrich 	KEY_K,
6632890b98SMarc Dietrich 	KEY_L,
6732890b98SMarc Dietrich 	KEY_SEMICOLON,
6832890b98SMarc Dietrich 	KEY_APOSTROPHE,
6932890b98SMarc Dietrich 	KEY_GRAVE,
7032890b98SMarc Dietrich 	KEY_LEFTSHIFT,
7132890b98SMarc Dietrich 	KEY_BACKSLASH,
7232890b98SMarc Dietrich 	KEY_Z,
7332890b98SMarc Dietrich 	KEY_X,
7432890b98SMarc Dietrich 	KEY_C,
7532890b98SMarc Dietrich 	KEY_V,
76162c7d8cSMarc Dietrich 	/* 0x30 */
77162c7d8cSMarc Dietrich 	KEY_B,
7832890b98SMarc Dietrich 	KEY_N,
7932890b98SMarc Dietrich 	KEY_M,
8032890b98SMarc Dietrich 	KEY_COMMA,
8132890b98SMarc Dietrich 	KEY_DOT,
8232890b98SMarc Dietrich 	KEY_SLASH,
8332890b98SMarc Dietrich 	KEY_RIGHTSHIFT,
8432890b98SMarc Dietrich 	KEY_KPASTERISK,
8532890b98SMarc Dietrich 	KEY_LEFTALT,
8632890b98SMarc Dietrich 	KEY_SPACE,
8732890b98SMarc Dietrich 	KEY_CAPSLOCK,
8832890b98SMarc Dietrich 	KEY_F1,
8932890b98SMarc Dietrich 	KEY_F2,
9032890b98SMarc Dietrich 	KEY_F3,
9132890b98SMarc Dietrich 	KEY_F4,
9232890b98SMarc Dietrich 	KEY_F5,
93162c7d8cSMarc Dietrich 	/* 0x40 */
94162c7d8cSMarc Dietrich 	KEY_F6,
9532890b98SMarc Dietrich 	KEY_F7,
9632890b98SMarc Dietrich 	KEY_F8,
9732890b98SMarc Dietrich 	KEY_F9,
9832890b98SMarc Dietrich 	KEY_F10,
9932890b98SMarc Dietrich 	KEY_FN,
100162c7d8cSMarc Dietrich 	/* VK_SCROLL */
101162c7d8cSMarc Dietrich 	0,
10232890b98SMarc Dietrich 	KEY_KP7,
10332890b98SMarc Dietrich 	KEY_KP8,
10432890b98SMarc Dietrich 	KEY_KP9,
10532890b98SMarc Dietrich 	KEY_KPMINUS,
10632890b98SMarc Dietrich 	KEY_KP4,
10732890b98SMarc Dietrich 	KEY_KP5,
10832890b98SMarc Dietrich 	KEY_KP6,
10932890b98SMarc Dietrich 	KEY_KPPLUS,
11032890b98SMarc Dietrich 	KEY_KP1,
111162c7d8cSMarc Dietrich 	/* 0x50 */
112162c7d8cSMarc Dietrich 	KEY_KP2,
11332890b98SMarc Dietrich 	KEY_KP3,
11432890b98SMarc Dietrich 	KEY_KP0,
11532890b98SMarc Dietrich 	KEY_KPDOT,
116162c7d8cSMarc Dietrich 	/* VK_SNAPSHOT */
117162c7d8cSMarc Dietrich 	KEY_MENU,
11832890b98SMarc Dietrich 	KEY_POWER,
119162c7d8cSMarc Dietrich 	/* VK_OEM_102 */
120162c7d8cSMarc Dietrich 	KEY_102ND,
121162c7d8cSMarc Dietrich 	KEY_F11,
122162c7d8cSMarc Dietrich 	KEY_F12,
12332890b98SMarc Dietrich 	0,
12432890b98SMarc Dietrich 	0,
12532890b98SMarc Dietrich 	0,
12632890b98SMarc Dietrich 	0,
12732890b98SMarc Dietrich 	0,
12832890b98SMarc Dietrich 	0,
12932890b98SMarc Dietrich 	0,
130162c7d8cSMarc Dietrich 	/* 0x60 */
13132890b98SMarc Dietrich 	0,
13232890b98SMarc Dietrich 	0,
133162c7d8cSMarc Dietrich 	0,
134162c7d8cSMarc Dietrich 	KEY_SEARCH,
13532890b98SMarc Dietrich 	0,
13632890b98SMarc Dietrich 	0,
13732890b98SMarc Dietrich 	0,
13832890b98SMarc Dietrich 	0,
13932890b98SMarc Dietrich 	0,
14032890b98SMarc Dietrich 	0,
14132890b98SMarc Dietrich 	0,
14232890b98SMarc Dietrich 	0,
14332890b98SMarc Dietrich 	0,
14432890b98SMarc Dietrich 	0,
14532890b98SMarc Dietrich 	0,
14632890b98SMarc Dietrich 	0,
147162c7d8cSMarc Dietrich 	/* 0x70 */
14832890b98SMarc Dietrich 	0,
14932890b98SMarc Dietrich 	0,
150162c7d8cSMarc Dietrich 	0,
151162c7d8cSMarc Dietrich 	KEY_KP5,
15232890b98SMarc Dietrich 	0,
15332890b98SMarc Dietrich 	0,
15432890b98SMarc Dietrich 	0,
15532890b98SMarc Dietrich 	0,
15632890b98SMarc Dietrich 	0,
15732890b98SMarc Dietrich 	0,
15832890b98SMarc Dietrich 	0,
15932890b98SMarc Dietrich 	0,
16032890b98SMarc Dietrich 	0,
161162c7d8cSMarc Dietrich 	KEY_KP9,
16232890b98SMarc Dietrich };
16332890b98SMarc Dietrich 
16432890b98SMarc Dietrich static unsigned short extcode_tab_us102[] = {
16532890b98SMarc Dietrich 	0,
16632890b98SMarc Dietrich 	0,
16732890b98SMarc Dietrich 	0,
16832890b98SMarc Dietrich 	0,
16932890b98SMarc Dietrich 	0,
17032890b98SMarc Dietrich 	0,
17132890b98SMarc Dietrich 	0,
17232890b98SMarc Dietrich 	0,
17332890b98SMarc Dietrich 	0,
17432890b98SMarc Dietrich 	0,
17532890b98SMarc Dietrich 	0,
17632890b98SMarc Dietrich 	0,
17732890b98SMarc Dietrich 	0,
17832890b98SMarc Dietrich 	0,
17932890b98SMarc Dietrich 	0,
18032890b98SMarc Dietrich 	0,
181162c7d8cSMarc Dietrich 	/* 0x10 */
18232890b98SMarc Dietrich 	0,
18332890b98SMarc Dietrich 	0,
18432890b98SMarc Dietrich 	0,
18532890b98SMarc Dietrich 	0,
18632890b98SMarc Dietrich 	0,
18732890b98SMarc Dietrich 	0,
18832890b98SMarc Dietrich 	0,
18932890b98SMarc Dietrich 	0,
190162c7d8cSMarc Dietrich 	0,
191162c7d8cSMarc Dietrich 	/* VK_MEDIA_NEXT_TRACK */
19232890b98SMarc Dietrich 	0,
19332890b98SMarc Dietrich 	0,
194162c7d8cSMarc Dietrich 	0,
195162c7d8cSMarc Dietrich 	/* VK_RETURN */
196162c7d8cSMarc Dietrich 	0,
197162c7d8cSMarc Dietrich 	KEY_RIGHTCTRL,
19832890b98SMarc Dietrich 	0,
19932890b98SMarc Dietrich 	0,
200162c7d8cSMarc Dietrich 	/* 0x20 */
201162c7d8cSMarc Dietrich 	KEY_MUTE,
202162c7d8cSMarc Dietrich 	/* VK_LAUNCH_APP1 */
20332890b98SMarc Dietrich 	0,
204162c7d8cSMarc Dietrich 	/* VK_MEDIA_PLAY_PAUSE */
205162c7d8cSMarc Dietrich 	0,
206162c7d8cSMarc Dietrich 	0,
207162c7d8cSMarc Dietrich 	/* VK_MEDIA_STOP */
20832890b98SMarc Dietrich 	0,
20932890b98SMarc Dietrich 	0,
21032890b98SMarc Dietrich 	0,
21132890b98SMarc Dietrich 	0,
21232890b98SMarc Dietrich 	0,
21332890b98SMarc Dietrich 	0,
21432890b98SMarc Dietrich 	0,
21532890b98SMarc Dietrich 	0,
21632890b98SMarc Dietrich 	0,
21732890b98SMarc Dietrich 	0,
21832890b98SMarc Dietrich 	0,
21932890b98SMarc Dietrich 	0,
220162c7d8cSMarc Dietrich 	/* 0x30 */
221162c7d8cSMarc Dietrich 	KEY_VOLUMEUP,
222162c7d8cSMarc Dietrich 	0,
223162c7d8cSMarc Dietrich 	/* VK_BROWSER_HOME */
22432890b98SMarc Dietrich 	0,
22532890b98SMarc Dietrich 	0,
22632890b98SMarc Dietrich 	0,
227162c7d8cSMarc Dietrich 	/* VK_DIVIDE */
228162c7d8cSMarc Dietrich 	KEY_KPSLASH,
229162c7d8cSMarc Dietrich 	0,
230162c7d8cSMarc Dietrich 	/* VK_SNAPSHOT */
231162c7d8cSMarc Dietrich 	KEY_SYSRQ,
232162c7d8cSMarc Dietrich 	/* VK_RMENU */
233162c7d8cSMarc Dietrich 	KEY_RIGHTALT,
234162c7d8cSMarc Dietrich 	/* VK_OEM_NV_BACKLIGHT_UP */
235162c7d8cSMarc Dietrich 	0,
236162c7d8cSMarc Dietrich 	/* VK_OEM_NV_BACKLIGHT_DN */
237162c7d8cSMarc Dietrich 	0,
238162c7d8cSMarc Dietrich 	/* VK_OEM_NV_BACKLIGHT_AUTOTOGGLE */
239162c7d8cSMarc Dietrich 	0,
240162c7d8cSMarc Dietrich 	/* VK_OEM_NV_POWER_INFO */
241162c7d8cSMarc Dietrich 	0,
242162c7d8cSMarc Dietrich 	/* VK_OEM_NV_WIFI_TOGGLE */
243162c7d8cSMarc Dietrich 	0,
244162c7d8cSMarc Dietrich 	/* VK_OEM_NV_DISPLAY_SELECT */
245162c7d8cSMarc Dietrich 	0,
246162c7d8cSMarc Dietrich 	/* VK_OEM_NV_AIRPLANE_TOGGLE */
247162c7d8cSMarc Dietrich 	0,
248162c7d8cSMarc Dietrich 	/* 0x40 */
249162c7d8cSMarc Dietrich 	0,
250162c7d8cSMarc Dietrich 	KEY_LEFT,
251162c7d8cSMarc Dietrich 	0,
252162c7d8cSMarc Dietrich 	0,
253162c7d8cSMarc Dietrich 	0,
254162c7d8cSMarc Dietrich 	0,
25532890b98SMarc Dietrich 	KEY_CANCEL,
25632890b98SMarc Dietrich 	KEY_HOME,
25732890b98SMarc Dietrich 	KEY_UP,
258162c7d8cSMarc Dietrich 	KEY_PAGEUP,
25932890b98SMarc Dietrich 	0,
26032890b98SMarc Dietrich 	KEY_LEFT,
26132890b98SMarc Dietrich 	0,
26232890b98SMarc Dietrich 	KEY_RIGHT,
26332890b98SMarc Dietrich 	0,
26432890b98SMarc Dietrich 	KEY_END,
265162c7d8cSMarc Dietrich 	/* 0x50 */
266162c7d8cSMarc Dietrich 	KEY_DOWN,
267162c7d8cSMarc Dietrich 	KEY_PAGEDOWN,
26832890b98SMarc Dietrich 	KEY_INSERT,
26932890b98SMarc Dietrich 	KEY_DELETE,
27032890b98SMarc Dietrich 	0,
27132890b98SMarc Dietrich 	0,
27232890b98SMarc Dietrich 	0,
27332890b98SMarc Dietrich 	0,
27432890b98SMarc Dietrich 	0,
27532890b98SMarc Dietrich 	0,
27632890b98SMarc Dietrich 	0,
277162c7d8cSMarc Dietrich 	KEY_LEFTMETA,
278162c7d8cSMarc Dietrich 	0,
279162c7d8cSMarc Dietrich 	KEY_ESC,
280162c7d8cSMarc Dietrich 	KEY_KPMINUS,
28132890b98SMarc Dietrich 	0,
28232890b98SMarc Dietrich 	0,
28332890b98SMarc Dietrich 	0,
28432890b98SMarc Dietrich 	0,
28532890b98SMarc Dietrich 	0,
28632890b98SMarc Dietrich 	0,
287162c7d8cSMarc Dietrich 	/* VK_BROWSER_SEARCH */
288162c7d8cSMarc Dietrich 	0,
289162c7d8cSMarc Dietrich 	/* VK_BROWSER_FAVORITES */
290162c7d8cSMarc Dietrich 	0,
291162c7d8cSMarc Dietrich 	/* VK_BROWSER_REFRESH */
292162c7d8cSMarc Dietrich 	0,
293162c7d8cSMarc Dietrich 	/* VK_BROWSER_STOP */
294162c7d8cSMarc Dietrich 	0,
295162c7d8cSMarc Dietrich 	/* VK_BROWSER_FORWARD */
296162c7d8cSMarc Dietrich 	0,
297162c7d8cSMarc Dietrich 	/* VK_BROWSER_BACK */
298162c7d8cSMarc Dietrich 	0,
299162c7d8cSMarc Dietrich 	/* VK_LAUNCH_APP2 */
300162c7d8cSMarc Dietrich 	0,
301162c7d8cSMarc Dietrich 	/* VK_LAUNCH_MAIL */
302162c7d8cSMarc Dietrich 	0,
303162c7d8cSMarc Dietrich 	/* VK_LAUNCH_MEDIA_SELECT */
304162c7d8cSMarc Dietrich 	0,
30532890b98SMarc Dietrich };
30632890b98SMarc Dietrich 
30732890b98SMarc Dietrich static unsigned short *code_tabs[] = { code_tab_102us, extcode_tab_us102 };
308