132890b98SMarc Dietrich /*
232890b98SMarc Dietrich  * drivers/input/keyboard/tegra-nvec.c
332890b98SMarc Dietrich  *
432890b98SMarc Dietrich  * Keyboard class input driver for keyboards connected to an NvEc compliant
532890b98SMarc Dietrich  * embedded controller
632890b98SMarc Dietrich  *
732890b98SMarc Dietrich  * Copyright (c) 2009, NVIDIA Corporation.
832890b98SMarc Dietrich  *
932890b98SMarc Dietrich  * This program is free software; you can redistribute it and/or modify
1032890b98SMarc Dietrich  * it under the terms of the GNU General Public License as published by
1132890b98SMarc Dietrich  * the Free Software Foundation; either version 2 of the License, or
1232890b98SMarc Dietrich  * (at your option) any later version.
1332890b98SMarc Dietrich  *
1432890b98SMarc Dietrich  * This program is distributed in the hope that it will be useful, but WITHOUT
1532890b98SMarc Dietrich  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1632890b98SMarc Dietrich  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
1732890b98SMarc Dietrich  * more details.
1832890b98SMarc Dietrich  *
1932890b98SMarc Dietrich  * You should have received a copy of the GNU General Public License along
20bbc2a2dfSRiku Salminen  * with this program; if not, see http://www.gnu.org/licenses
2132890b98SMarc Dietrich  */
2232890b98SMarc Dietrich 
2332890b98SMarc Dietrich static unsigned short code_tab_102us[] = {
24162c7d8cSMarc Dietrich 	/* 0x00 */
25162c7d8cSMarc Dietrich 	KEY_GRAVE,
2632890b98SMarc Dietrich 	KEY_ESC,
2732890b98SMarc Dietrich 	KEY_1,
2832890b98SMarc Dietrich 	KEY_2,
2932890b98SMarc Dietrich 	KEY_3,
3032890b98SMarc Dietrich 	KEY_4,
3132890b98SMarc Dietrich 	KEY_5,
3232890b98SMarc Dietrich 	KEY_6,
3332890b98SMarc Dietrich 	KEY_7,
3432890b98SMarc Dietrich 	KEY_8,
3532890b98SMarc Dietrich 	KEY_9,
3632890b98SMarc Dietrich 	KEY_0,
3732890b98SMarc Dietrich 	KEY_MINUS,
3832890b98SMarc Dietrich 	KEY_EQUAL,
3932890b98SMarc Dietrich 	KEY_BACKSPACE,
4032890b98SMarc Dietrich 	KEY_TAB,
41162c7d8cSMarc Dietrich 	/* 0x10 */
42162c7d8cSMarc Dietrich 	KEY_Q,
4332890b98SMarc Dietrich 	KEY_W,
4432890b98SMarc Dietrich 	KEY_E,
4532890b98SMarc Dietrich 	KEY_R,
4632890b98SMarc Dietrich 	KEY_T,
4732890b98SMarc Dietrich 	KEY_Y,
4832890b98SMarc Dietrich 	KEY_U,
4932890b98SMarc Dietrich 	KEY_I,
5032890b98SMarc Dietrich 	KEY_O,
5132890b98SMarc Dietrich 	KEY_P,
5232890b98SMarc Dietrich 	KEY_LEFTBRACE,
5332890b98SMarc Dietrich 	KEY_RIGHTBRACE,
5432890b98SMarc Dietrich 	KEY_ENTER,
5532890b98SMarc Dietrich 	KEY_LEFTCTRL,
5632890b98SMarc Dietrich 	KEY_A,
5732890b98SMarc Dietrich 	KEY_S,
58162c7d8cSMarc Dietrich 	/* 0x20 */
59162c7d8cSMarc Dietrich 	KEY_D,
6032890b98SMarc Dietrich 	KEY_F,
6132890b98SMarc Dietrich 	KEY_G,
6232890b98SMarc Dietrich 	KEY_H,
6332890b98SMarc Dietrich 	KEY_J,
6432890b98SMarc Dietrich 	KEY_K,
6532890b98SMarc Dietrich 	KEY_L,
6632890b98SMarc Dietrich 	KEY_SEMICOLON,
6732890b98SMarc Dietrich 	KEY_APOSTROPHE,
6832890b98SMarc Dietrich 	KEY_GRAVE,
6932890b98SMarc Dietrich 	KEY_LEFTSHIFT,
7032890b98SMarc Dietrich 	KEY_BACKSLASH,
7132890b98SMarc Dietrich 	KEY_Z,
7232890b98SMarc Dietrich 	KEY_X,
7332890b98SMarc Dietrich 	KEY_C,
7432890b98SMarc Dietrich 	KEY_V,
75162c7d8cSMarc Dietrich 	/* 0x30 */
76162c7d8cSMarc Dietrich 	KEY_B,
7732890b98SMarc Dietrich 	KEY_N,
7832890b98SMarc Dietrich 	KEY_M,
7932890b98SMarc Dietrich 	KEY_COMMA,
8032890b98SMarc Dietrich 	KEY_DOT,
8132890b98SMarc Dietrich 	KEY_SLASH,
8232890b98SMarc Dietrich 	KEY_RIGHTSHIFT,
8332890b98SMarc Dietrich 	KEY_KPASTERISK,
8432890b98SMarc Dietrich 	KEY_LEFTALT,
8532890b98SMarc Dietrich 	KEY_SPACE,
8632890b98SMarc Dietrich 	KEY_CAPSLOCK,
8732890b98SMarc Dietrich 	KEY_F1,
8832890b98SMarc Dietrich 	KEY_F2,
8932890b98SMarc Dietrich 	KEY_F3,
9032890b98SMarc Dietrich 	KEY_F4,
9132890b98SMarc Dietrich 	KEY_F5,
92162c7d8cSMarc Dietrich 	/* 0x40 */
93162c7d8cSMarc Dietrich 	KEY_F6,
9432890b98SMarc Dietrich 	KEY_F7,
9532890b98SMarc Dietrich 	KEY_F8,
9632890b98SMarc Dietrich 	KEY_F9,
9732890b98SMarc Dietrich 	KEY_F10,
9832890b98SMarc Dietrich 	KEY_FN,
99162c7d8cSMarc Dietrich 	/* VK_SCROLL */
100162c7d8cSMarc Dietrich 	0,
10132890b98SMarc Dietrich 	KEY_KP7,
10232890b98SMarc Dietrich 	KEY_KP8,
10332890b98SMarc Dietrich 	KEY_KP9,
10432890b98SMarc Dietrich 	KEY_KPMINUS,
10532890b98SMarc Dietrich 	KEY_KP4,
10632890b98SMarc Dietrich 	KEY_KP5,
10732890b98SMarc Dietrich 	KEY_KP6,
10832890b98SMarc Dietrich 	KEY_KPPLUS,
10932890b98SMarc Dietrich 	KEY_KP1,
110162c7d8cSMarc Dietrich 	/* 0x50 */
111162c7d8cSMarc Dietrich 	KEY_KP2,
11232890b98SMarc Dietrich 	KEY_KP3,
11332890b98SMarc Dietrich 	KEY_KP0,
11432890b98SMarc Dietrich 	KEY_KPDOT,
115162c7d8cSMarc Dietrich 	/* VK_SNAPSHOT */
116162c7d8cSMarc Dietrich 	KEY_MENU,
11732890b98SMarc Dietrich 	KEY_POWER,
118162c7d8cSMarc Dietrich 	/* VK_OEM_102 */
119162c7d8cSMarc Dietrich 	KEY_102ND,
120162c7d8cSMarc Dietrich 	KEY_F11,
121162c7d8cSMarc Dietrich 	KEY_F12,
12232890b98SMarc Dietrich 	0,
12332890b98SMarc Dietrich 	0,
12432890b98SMarc Dietrich 	0,
12532890b98SMarc Dietrich 	0,
12632890b98SMarc Dietrich 	0,
12732890b98SMarc Dietrich 	0,
12832890b98SMarc Dietrich 	0,
129162c7d8cSMarc Dietrich 	/* 0x60 */
13032890b98SMarc Dietrich 	0,
13132890b98SMarc Dietrich 	0,
132162c7d8cSMarc Dietrich 	0,
133162c7d8cSMarc Dietrich 	KEY_SEARCH,
13432890b98SMarc Dietrich 	0,
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,
146162c7d8cSMarc Dietrich 	/* 0x70 */
14732890b98SMarc Dietrich 	0,
14832890b98SMarc Dietrich 	0,
149162c7d8cSMarc Dietrich 	0,
150162c7d8cSMarc Dietrich 	KEY_KP5,
15132890b98SMarc Dietrich 	0,
15232890b98SMarc Dietrich 	0,
15332890b98SMarc Dietrich 	0,
15432890b98SMarc Dietrich 	0,
15532890b98SMarc Dietrich 	0,
15632890b98SMarc Dietrich 	0,
15732890b98SMarc Dietrich 	0,
15832890b98SMarc Dietrich 	0,
15932890b98SMarc Dietrich 	0,
160162c7d8cSMarc Dietrich 	KEY_KP9,
16132890b98SMarc Dietrich };
16232890b98SMarc Dietrich 
16332890b98SMarc Dietrich static unsigned short extcode_tab_us102[] = {
16432890b98SMarc Dietrich 	0,
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,
180162c7d8cSMarc Dietrich 	/* 0x10 */
18132890b98SMarc Dietrich 	0,
18232890b98SMarc Dietrich 	0,
18332890b98SMarc Dietrich 	0,
18432890b98SMarc Dietrich 	0,
18532890b98SMarc Dietrich 	0,
18632890b98SMarc Dietrich 	0,
18732890b98SMarc Dietrich 	0,
18832890b98SMarc Dietrich 	0,
189162c7d8cSMarc Dietrich 	0,
190162c7d8cSMarc Dietrich 	/* VK_MEDIA_NEXT_TRACK */
19132890b98SMarc Dietrich 	0,
19232890b98SMarc Dietrich 	0,
193162c7d8cSMarc Dietrich 	0,
194162c7d8cSMarc Dietrich 	/* VK_RETURN */
195162c7d8cSMarc Dietrich 	0,
196162c7d8cSMarc Dietrich 	KEY_RIGHTCTRL,
19732890b98SMarc Dietrich 	0,
19832890b98SMarc Dietrich 	0,
199162c7d8cSMarc Dietrich 	/* 0x20 */
200162c7d8cSMarc Dietrich 	KEY_MUTE,
201162c7d8cSMarc Dietrich 	/* VK_LAUNCH_APP1 */
20232890b98SMarc Dietrich 	0,
203162c7d8cSMarc Dietrich 	/* VK_MEDIA_PLAY_PAUSE */
204162c7d8cSMarc Dietrich 	0,
205162c7d8cSMarc Dietrich 	0,
206162c7d8cSMarc Dietrich 	/* VK_MEDIA_STOP */
20732890b98SMarc Dietrich 	0,
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,
219162c7d8cSMarc Dietrich 	/* 0x30 */
220162c7d8cSMarc Dietrich 	KEY_VOLUMEUP,
221162c7d8cSMarc Dietrich 	0,
222162c7d8cSMarc Dietrich 	/* VK_BROWSER_HOME */
22332890b98SMarc Dietrich 	0,
22432890b98SMarc Dietrich 	0,
22532890b98SMarc Dietrich 	0,
226162c7d8cSMarc Dietrich 	/* VK_DIVIDE */
227162c7d8cSMarc Dietrich 	KEY_KPSLASH,
228162c7d8cSMarc Dietrich 	0,
229162c7d8cSMarc Dietrich 	/* VK_SNAPSHOT */
230162c7d8cSMarc Dietrich 	KEY_SYSRQ,
231162c7d8cSMarc Dietrich 	/* VK_RMENU */
232162c7d8cSMarc Dietrich 	KEY_RIGHTALT,
233162c7d8cSMarc Dietrich 	/* VK_OEM_NV_BACKLIGHT_UP */
234162c7d8cSMarc Dietrich 	0,
235162c7d8cSMarc Dietrich 	/* VK_OEM_NV_BACKLIGHT_DN */
236162c7d8cSMarc Dietrich 	0,
237162c7d8cSMarc Dietrich 	/* VK_OEM_NV_BACKLIGHT_AUTOTOGGLE */
238162c7d8cSMarc Dietrich 	0,
239162c7d8cSMarc Dietrich 	/* VK_OEM_NV_POWER_INFO */
240162c7d8cSMarc Dietrich 	0,
241162c7d8cSMarc Dietrich 	/* VK_OEM_NV_WIFI_TOGGLE */
242162c7d8cSMarc Dietrich 	0,
243162c7d8cSMarc Dietrich 	/* VK_OEM_NV_DISPLAY_SELECT */
244162c7d8cSMarc Dietrich 	0,
245162c7d8cSMarc Dietrich 	/* VK_OEM_NV_AIRPLANE_TOGGLE */
246162c7d8cSMarc Dietrich 	0,
247162c7d8cSMarc Dietrich 	/* 0x40 */
248162c7d8cSMarc Dietrich 	0,
249162c7d8cSMarc Dietrich 	KEY_LEFT,
250162c7d8cSMarc Dietrich 	0,
251162c7d8cSMarc Dietrich 	0,
252162c7d8cSMarc Dietrich 	0,
253162c7d8cSMarc Dietrich 	0,
25432890b98SMarc Dietrich 	KEY_CANCEL,
25532890b98SMarc Dietrich 	KEY_HOME,
25632890b98SMarc Dietrich 	KEY_UP,
257162c7d8cSMarc Dietrich 	KEY_PAGEUP,
25832890b98SMarc Dietrich 	0,
25932890b98SMarc Dietrich 	KEY_LEFT,
26032890b98SMarc Dietrich 	0,
26132890b98SMarc Dietrich 	KEY_RIGHT,
26232890b98SMarc Dietrich 	0,
26332890b98SMarc Dietrich 	KEY_END,
264162c7d8cSMarc Dietrich 	/* 0x50 */
265162c7d8cSMarc Dietrich 	KEY_DOWN,
266162c7d8cSMarc Dietrich 	KEY_PAGEDOWN,
26732890b98SMarc Dietrich 	KEY_INSERT,
26832890b98SMarc Dietrich 	KEY_DELETE,
26932890b98SMarc Dietrich 	0,
27032890b98SMarc Dietrich 	0,
27132890b98SMarc Dietrich 	0,
27232890b98SMarc Dietrich 	0,
27332890b98SMarc Dietrich 	0,
27432890b98SMarc Dietrich 	0,
27532890b98SMarc Dietrich 	0,
276162c7d8cSMarc Dietrich 	KEY_LEFTMETA,
277162c7d8cSMarc Dietrich 	0,
278162c7d8cSMarc Dietrich 	KEY_ESC,
279162c7d8cSMarc Dietrich 	KEY_KPMINUS,
28032890b98SMarc Dietrich 	0,
28132890b98SMarc Dietrich 	0,
28232890b98SMarc Dietrich 	0,
28332890b98SMarc Dietrich 	0,
28432890b98SMarc Dietrich 	0,
28532890b98SMarc Dietrich 	0,
286162c7d8cSMarc Dietrich 	/* VK_BROWSER_SEARCH */
287162c7d8cSMarc Dietrich 	0,
288162c7d8cSMarc Dietrich 	/* VK_BROWSER_FAVORITES */
289162c7d8cSMarc Dietrich 	0,
290162c7d8cSMarc Dietrich 	/* VK_BROWSER_REFRESH */
291162c7d8cSMarc Dietrich 	0,
292162c7d8cSMarc Dietrich 	/* VK_BROWSER_STOP */
293162c7d8cSMarc Dietrich 	0,
294162c7d8cSMarc Dietrich 	/* VK_BROWSER_FORWARD */
295162c7d8cSMarc Dietrich 	0,
296162c7d8cSMarc Dietrich 	/* VK_BROWSER_BACK */
297162c7d8cSMarc Dietrich 	0,
298162c7d8cSMarc Dietrich 	/* VK_LAUNCH_APP2 */
299162c7d8cSMarc Dietrich 	0,
300162c7d8cSMarc Dietrich 	/* VK_LAUNCH_MAIL */
301162c7d8cSMarc Dietrich 	0,
302162c7d8cSMarc Dietrich 	/* VK_LAUNCH_MEDIA_SELECT */
303162c7d8cSMarc Dietrich 	0,
30432890b98SMarc Dietrich };
30532890b98SMarc Dietrich 
30632890b98SMarc Dietrich static unsigned short *code_tabs[] = { code_tab_102us, extcode_tab_us102 };
307