16884b680SArnd Bergmann /* 26884b680SArnd Bergmann * Copyright (C) 2010 ST Microelectronics 3*25d238b2SRajeev Kumar * Rajeev Kumar <[email protected]> 46884b680SArnd Bergmann * 56884b680SArnd Bergmann * This file is licensed under the terms of the GNU General Public 66884b680SArnd Bergmann * License version 2. This program is licensed "as is" without any 76884b680SArnd Bergmann * warranty of any kind, whether express or implied. 86884b680SArnd Bergmann */ 96884b680SArnd Bergmann 106884b680SArnd Bergmann #ifndef __PLAT_KEYBOARD_H 116884b680SArnd Bergmann #define __PLAT_KEYBOARD_H 126884b680SArnd Bergmann 136884b680SArnd Bergmann #include <linux/bitops.h> 146884b680SArnd Bergmann #include <linux/input.h> 156884b680SArnd Bergmann #include <linux/input/matrix_keypad.h> 166884b680SArnd Bergmann #include <linux/types.h> 176884b680SArnd Bergmann 186884b680SArnd Bergmann #define DECLARE_9x9_KEYMAP(_name) \ 196884b680SArnd Bergmann int _name[] = { \ 206884b680SArnd Bergmann KEY(0, 0, KEY_ESC), \ 216884b680SArnd Bergmann KEY(0, 1, KEY_1), \ 226884b680SArnd Bergmann KEY(0, 2, KEY_2), \ 236884b680SArnd Bergmann KEY(0, 3, KEY_3), \ 246884b680SArnd Bergmann KEY(0, 4, KEY_4), \ 256884b680SArnd Bergmann KEY(0, 5, KEY_5), \ 266884b680SArnd Bergmann KEY(0, 6, KEY_6), \ 276884b680SArnd Bergmann KEY(0, 7, KEY_7), \ 286884b680SArnd Bergmann KEY(0, 8, KEY_8), \ 296884b680SArnd Bergmann KEY(1, 0, KEY_9), \ 306884b680SArnd Bergmann KEY(1, 1, KEY_MINUS), \ 316884b680SArnd Bergmann KEY(1, 2, KEY_EQUAL), \ 326884b680SArnd Bergmann KEY(1, 3, KEY_BACKSPACE), \ 336884b680SArnd Bergmann KEY(1, 4, KEY_TAB), \ 346884b680SArnd Bergmann KEY(1, 5, KEY_Q), \ 356884b680SArnd Bergmann KEY(1, 6, KEY_W), \ 366884b680SArnd Bergmann KEY(1, 7, KEY_E), \ 376884b680SArnd Bergmann KEY(1, 8, KEY_R), \ 386884b680SArnd Bergmann KEY(2, 0, KEY_T), \ 396884b680SArnd Bergmann KEY(2, 1, KEY_Y), \ 406884b680SArnd Bergmann KEY(2, 2, KEY_U), \ 416884b680SArnd Bergmann KEY(2, 3, KEY_I), \ 426884b680SArnd Bergmann KEY(2, 4, KEY_O), \ 436884b680SArnd Bergmann KEY(2, 5, KEY_P), \ 446884b680SArnd Bergmann KEY(2, 6, KEY_LEFTBRACE), \ 456884b680SArnd Bergmann KEY(2, 7, KEY_RIGHTBRACE), \ 466884b680SArnd Bergmann KEY(2, 8, KEY_ENTER), \ 476884b680SArnd Bergmann KEY(3, 0, KEY_LEFTCTRL), \ 486884b680SArnd Bergmann KEY(3, 1, KEY_A), \ 496884b680SArnd Bergmann KEY(3, 2, KEY_S), \ 506884b680SArnd Bergmann KEY(3, 3, KEY_D), \ 516884b680SArnd Bergmann KEY(3, 4, KEY_F), \ 526884b680SArnd Bergmann KEY(3, 5, KEY_G), \ 536884b680SArnd Bergmann KEY(3, 6, KEY_H), \ 546884b680SArnd Bergmann KEY(3, 7, KEY_J), \ 556884b680SArnd Bergmann KEY(3, 8, KEY_K), \ 566884b680SArnd Bergmann KEY(4, 0, KEY_L), \ 576884b680SArnd Bergmann KEY(4, 1, KEY_SEMICOLON), \ 586884b680SArnd Bergmann KEY(4, 2, KEY_APOSTROPHE), \ 596884b680SArnd Bergmann KEY(4, 3, KEY_GRAVE), \ 606884b680SArnd Bergmann KEY(4, 4, KEY_LEFTSHIFT), \ 616884b680SArnd Bergmann KEY(4, 5, KEY_BACKSLASH), \ 626884b680SArnd Bergmann KEY(4, 6, KEY_Z), \ 636884b680SArnd Bergmann KEY(4, 7, KEY_X), \ 646884b680SArnd Bergmann KEY(4, 8, KEY_C), \ 656884b680SArnd Bergmann KEY(5, 0, KEY_V), \ 666884b680SArnd Bergmann KEY(5, 1, KEY_B), \ 676884b680SArnd Bergmann KEY(5, 2, KEY_N), \ 686884b680SArnd Bergmann KEY(5, 3, KEY_M), \ 696884b680SArnd Bergmann KEY(5, 4, KEY_COMMA), \ 706884b680SArnd Bergmann KEY(5, 5, KEY_DOT), \ 716884b680SArnd Bergmann KEY(5, 6, KEY_SLASH), \ 726884b680SArnd Bergmann KEY(5, 7, KEY_RIGHTSHIFT), \ 736884b680SArnd Bergmann KEY(5, 8, KEY_KPASTERISK), \ 746884b680SArnd Bergmann KEY(6, 0, KEY_LEFTALT), \ 756884b680SArnd Bergmann KEY(6, 1, KEY_SPACE), \ 766884b680SArnd Bergmann KEY(6, 2, KEY_CAPSLOCK), \ 776884b680SArnd Bergmann KEY(6, 3, KEY_F1), \ 786884b680SArnd Bergmann KEY(6, 4, KEY_F2), \ 796884b680SArnd Bergmann KEY(6, 5, KEY_F3), \ 806884b680SArnd Bergmann KEY(6, 6, KEY_F4), \ 816884b680SArnd Bergmann KEY(6, 7, KEY_F5), \ 826884b680SArnd Bergmann KEY(6, 8, KEY_F6), \ 836884b680SArnd Bergmann KEY(7, 0, KEY_F7), \ 846884b680SArnd Bergmann KEY(7, 1, KEY_F8), \ 856884b680SArnd Bergmann KEY(7, 2, KEY_F9), \ 866884b680SArnd Bergmann KEY(7, 3, KEY_F10), \ 876884b680SArnd Bergmann KEY(7, 4, KEY_NUMLOCK), \ 886884b680SArnd Bergmann KEY(7, 5, KEY_SCROLLLOCK), \ 896884b680SArnd Bergmann KEY(7, 6, KEY_KP7), \ 906884b680SArnd Bergmann KEY(7, 7, KEY_KP8), \ 916884b680SArnd Bergmann KEY(7, 8, KEY_KP9), \ 926884b680SArnd Bergmann KEY(8, 0, KEY_KPMINUS), \ 936884b680SArnd Bergmann KEY(8, 1, KEY_KP4), \ 946884b680SArnd Bergmann KEY(8, 2, KEY_KP5), \ 956884b680SArnd Bergmann KEY(8, 3, KEY_KP6), \ 966884b680SArnd Bergmann KEY(8, 4, KEY_KPPLUS), \ 976884b680SArnd Bergmann KEY(8, 5, KEY_KP1), \ 986884b680SArnd Bergmann KEY(8, 6, KEY_KP2), \ 996884b680SArnd Bergmann KEY(8, 7, KEY_KP3), \ 1006884b680SArnd Bergmann KEY(8, 8, KEY_KP0), \ 1016884b680SArnd Bergmann } 1026884b680SArnd Bergmann 1036884b680SArnd Bergmann #define DECLARE_6x6_KEYMAP(_name) \ 1046884b680SArnd Bergmann int _name[] = { \ 1056884b680SArnd Bergmann KEY(0, 0, KEY_RESERVED), \ 1066884b680SArnd Bergmann KEY(0, 1, KEY_1), \ 1076884b680SArnd Bergmann KEY(0, 2, KEY_2), \ 1086884b680SArnd Bergmann KEY(0, 3, KEY_3), \ 1096884b680SArnd Bergmann KEY(0, 4, KEY_4), \ 1106884b680SArnd Bergmann KEY(0, 5, KEY_5), \ 1116884b680SArnd Bergmann KEY(1, 0, KEY_Q), \ 1126884b680SArnd Bergmann KEY(1, 1, KEY_W), \ 1136884b680SArnd Bergmann KEY(1, 2, KEY_E), \ 1146884b680SArnd Bergmann KEY(1, 3, KEY_R), \ 1156884b680SArnd Bergmann KEY(1, 4, KEY_T), \ 1166884b680SArnd Bergmann KEY(1, 5, KEY_Y), \ 1176884b680SArnd Bergmann KEY(2, 0, KEY_D), \ 1186884b680SArnd Bergmann KEY(2, 1, KEY_F), \ 1196884b680SArnd Bergmann KEY(2, 2, KEY_G), \ 1206884b680SArnd Bergmann KEY(2, 3, KEY_H), \ 1216884b680SArnd Bergmann KEY(2, 4, KEY_J), \ 1226884b680SArnd Bergmann KEY(2, 5, KEY_K), \ 1236884b680SArnd Bergmann KEY(3, 0, KEY_B), \ 1246884b680SArnd Bergmann KEY(3, 1, KEY_N), \ 1256884b680SArnd Bergmann KEY(3, 2, KEY_M), \ 1266884b680SArnd Bergmann KEY(3, 3, KEY_COMMA), \ 1276884b680SArnd Bergmann KEY(3, 4, KEY_DOT), \ 1286884b680SArnd Bergmann KEY(3, 5, KEY_SLASH), \ 1296884b680SArnd Bergmann KEY(4, 0, KEY_F6), \ 1306884b680SArnd Bergmann KEY(4, 1, KEY_F7), \ 1316884b680SArnd Bergmann KEY(4, 2, KEY_F8), \ 1326884b680SArnd Bergmann KEY(4, 3, KEY_F9), \ 1336884b680SArnd Bergmann KEY(4, 4, KEY_F10), \ 1346884b680SArnd Bergmann KEY(4, 5, KEY_NUMLOCK), \ 1356884b680SArnd Bergmann KEY(5, 0, KEY_KP2), \ 1366884b680SArnd Bergmann KEY(5, 1, KEY_KP3), \ 1376884b680SArnd Bergmann KEY(5, 2, KEY_KP0), \ 1386884b680SArnd Bergmann KEY(5, 3, KEY_KPDOT), \ 1396884b680SArnd Bergmann KEY(5, 4, KEY_RO), \ 1406884b680SArnd Bergmann KEY(5, 5, KEY_ZENKAKUHANKAKU), \ 1416884b680SArnd Bergmann } 1426884b680SArnd Bergmann 1436884b680SArnd Bergmann #define KEYPAD_9x9 0 1446884b680SArnd Bergmann #define KEYPAD_6x6 1 1456884b680SArnd Bergmann #define KEYPAD_2x2 2 1466884b680SArnd Bergmann 1476884b680SArnd Bergmann /** 1486884b680SArnd Bergmann * struct kbd_platform_data - spear keyboard platform data 1496884b680SArnd Bergmann * keymap: pointer to keymap data (table and size) 1506884b680SArnd Bergmann * rep: enables key autorepeat 1516884b680SArnd Bergmann * mode: choose keyboard support(9x9, 6x6, 2x2) 1526884b680SArnd Bergmann * suspended_rate: rate at which keyboard would operate in suspended mode 1536884b680SArnd Bergmann * 1546884b680SArnd Bergmann * This structure is supposed to be used by platform code to supply 1556884b680SArnd Bergmann * keymaps to drivers that implement keyboards. 1566884b680SArnd Bergmann */ 1576884b680SArnd Bergmann struct kbd_platform_data { 1586884b680SArnd Bergmann const struct matrix_keymap_data *keymap; 1596884b680SArnd Bergmann bool rep; 1606884b680SArnd Bergmann unsigned int mode; 1616884b680SArnd Bergmann unsigned int suspended_rate; 1626884b680SArnd Bergmann }; 1636884b680SArnd Bergmann 1646884b680SArnd Bergmann #endif /* __PLAT_KEYBOARD_H */ 165