|
@@ -87,147 +87,6 @@ struct tegra_kbc {
|
|
|
struct clk *clk;
|
|
|
};
|
|
|
|
|
|
-static const u32 tegra_kbc_default_keymap[] = {
|
|
|
- KEY(0, 2, KEY_W),
|
|
|
- KEY(0, 3, KEY_S),
|
|
|
- KEY(0, 4, KEY_A),
|
|
|
- KEY(0, 5, KEY_Z),
|
|
|
- KEY(0, 7, KEY_FN),
|
|
|
-
|
|
|
- KEY(1, 7, KEY_LEFTMETA),
|
|
|
-
|
|
|
- KEY(2, 6, KEY_RIGHTALT),
|
|
|
- KEY(2, 7, KEY_LEFTALT),
|
|
|
-
|
|
|
- KEY(3, 0, KEY_5),
|
|
|
- KEY(3, 1, KEY_4),
|
|
|
- KEY(3, 2, KEY_R),
|
|
|
- KEY(3, 3, KEY_E),
|
|
|
- KEY(3, 4, KEY_F),
|
|
|
- KEY(3, 5, KEY_D),
|
|
|
- KEY(3, 6, KEY_X),
|
|
|
-
|
|
|
- KEY(4, 0, KEY_7),
|
|
|
- KEY(4, 1, KEY_6),
|
|
|
- KEY(4, 2, KEY_T),
|
|
|
- KEY(4, 3, KEY_H),
|
|
|
- KEY(4, 4, KEY_G),
|
|
|
- KEY(4, 5, KEY_V),
|
|
|
- KEY(4, 6, KEY_C),
|
|
|
- KEY(4, 7, KEY_SPACE),
|
|
|
-
|
|
|
- KEY(5, 0, KEY_9),
|
|
|
- KEY(5, 1, KEY_8),
|
|
|
- KEY(5, 2, KEY_U),
|
|
|
- KEY(5, 3, KEY_Y),
|
|
|
- KEY(5, 4, KEY_J),
|
|
|
- KEY(5, 5, KEY_N),
|
|
|
- KEY(5, 6, KEY_B),
|
|
|
- KEY(5, 7, KEY_BACKSLASH),
|
|
|
-
|
|
|
- KEY(6, 0, KEY_MINUS),
|
|
|
- KEY(6, 1, KEY_0),
|
|
|
- KEY(6, 2, KEY_O),
|
|
|
- KEY(6, 3, KEY_I),
|
|
|
- KEY(6, 4, KEY_L),
|
|
|
- KEY(6, 5, KEY_K),
|
|
|
- KEY(6, 6, KEY_COMMA),
|
|
|
- KEY(6, 7, KEY_M),
|
|
|
-
|
|
|
- KEY(7, 1, KEY_EQUAL),
|
|
|
- KEY(7, 2, KEY_RIGHTBRACE),
|
|
|
- KEY(7, 3, KEY_ENTER),
|
|
|
- KEY(7, 7, KEY_MENU),
|
|
|
-
|
|
|
- KEY(8, 4, KEY_RIGHTSHIFT),
|
|
|
- KEY(8, 5, KEY_LEFTSHIFT),
|
|
|
-
|
|
|
- KEY(9, 5, KEY_RIGHTCTRL),
|
|
|
- KEY(9, 7, KEY_LEFTCTRL),
|
|
|
-
|
|
|
- KEY(11, 0, KEY_LEFTBRACE),
|
|
|
- KEY(11, 1, KEY_P),
|
|
|
- KEY(11, 2, KEY_APOSTROPHE),
|
|
|
- KEY(11, 3, KEY_SEMICOLON),
|
|
|
- KEY(11, 4, KEY_SLASH),
|
|
|
- KEY(11, 5, KEY_DOT),
|
|
|
-
|
|
|
- KEY(12, 0, KEY_F10),
|
|
|
- KEY(12, 1, KEY_F9),
|
|
|
- KEY(12, 2, KEY_BACKSPACE),
|
|
|
- KEY(12, 3, KEY_3),
|
|
|
- KEY(12, 4, KEY_2),
|
|
|
- KEY(12, 5, KEY_UP),
|
|
|
- KEY(12, 6, KEY_PRINT),
|
|
|
- KEY(12, 7, KEY_PAUSE),
|
|
|
-
|
|
|
- KEY(13, 0, KEY_INSERT),
|
|
|
- KEY(13, 1, KEY_DELETE),
|
|
|
- KEY(13, 3, KEY_PAGEUP),
|
|
|
- KEY(13, 4, KEY_PAGEDOWN),
|
|
|
- KEY(13, 5, KEY_RIGHT),
|
|
|
- KEY(13, 6, KEY_DOWN),
|
|
|
- KEY(13, 7, KEY_LEFT),
|
|
|
-
|
|
|
- KEY(14, 0, KEY_F11),
|
|
|
- KEY(14, 1, KEY_F12),
|
|
|
- KEY(14, 2, KEY_F8),
|
|
|
- KEY(14, 3, KEY_Q),
|
|
|
- KEY(14, 4, KEY_F4),
|
|
|
- KEY(14, 5, KEY_F3),
|
|
|
- KEY(14, 6, KEY_1),
|
|
|
- KEY(14, 7, KEY_F7),
|
|
|
-
|
|
|
- KEY(15, 0, KEY_ESC),
|
|
|
- KEY(15, 1, KEY_GRAVE),
|
|
|
- KEY(15, 2, KEY_F5),
|
|
|
- KEY(15, 3, KEY_TAB),
|
|
|
- KEY(15, 4, KEY_F1),
|
|
|
- KEY(15, 5, KEY_F2),
|
|
|
- KEY(15, 6, KEY_CAPSLOCK),
|
|
|
- KEY(15, 7, KEY_F6),
|
|
|
-
|
|
|
- /* Software Handled Function Keys */
|
|
|
- KEY(20, 0, KEY_KP7),
|
|
|
-
|
|
|
- KEY(21, 0, KEY_KP9),
|
|
|
- KEY(21, 1, KEY_KP8),
|
|
|
- KEY(21, 2, KEY_KP4),
|
|
|
- KEY(21, 4, KEY_KP1),
|
|
|
-
|
|
|
- KEY(22, 1, KEY_KPSLASH),
|
|
|
- KEY(22, 2, KEY_KP6),
|
|
|
- KEY(22, 3, KEY_KP5),
|
|
|
- KEY(22, 4, KEY_KP3),
|
|
|
- KEY(22, 5, KEY_KP2),
|
|
|
- KEY(22, 7, KEY_KP0),
|
|
|
-
|
|
|
- KEY(27, 1, KEY_KPASTERISK),
|
|
|
- KEY(27, 3, KEY_KPMINUS),
|
|
|
- KEY(27, 4, KEY_KPPLUS),
|
|
|
- KEY(27, 5, KEY_KPDOT),
|
|
|
-
|
|
|
- KEY(28, 5, KEY_VOLUMEUP),
|
|
|
-
|
|
|
- KEY(29, 3, KEY_HOME),
|
|
|
- KEY(29, 4, KEY_END),
|
|
|
- KEY(29, 5, KEY_BRIGHTNESSDOWN),
|
|
|
- KEY(29, 6, KEY_VOLUMEDOWN),
|
|
|
- KEY(29, 7, KEY_BRIGHTNESSUP),
|
|
|
-
|
|
|
- KEY(30, 0, KEY_NUMLOCK),
|
|
|
- KEY(30, 1, KEY_SCROLLLOCK),
|
|
|
- KEY(30, 2, KEY_MUTE),
|
|
|
-
|
|
|
- KEY(31, 4, KEY_HELP),
|
|
|
-};
|
|
|
-
|
|
|
-static const
|
|
|
-struct matrix_keymap_data tegra_kbc_default_keymap_data = {
|
|
|
- .keymap = tegra_kbc_default_keymap,
|
|
|
- .keymap_size = ARRAY_SIZE(tegra_kbc_default_keymap),
|
|
|
-};
|
|
|
-
|
|
|
static void tegra_kbc_report_released_keys(struct input_dev *input,
|
|
|
unsigned short old_keycodes[],
|
|
|
unsigned int old_num_keys,
|
|
@@ -704,33 +563,6 @@ static inline struct tegra_kbc_platform_data *tegra_kbc_dt_parse_pdata(
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
-static int tegra_kbd_setup_keymap(struct tegra_kbc *kbc)
|
|
|
-{
|
|
|
- const struct tegra_kbc_platform_data *pdata = kbc->pdata;
|
|
|
- const struct matrix_keymap_data *keymap_data = pdata->keymap_data;
|
|
|
- unsigned int keymap_rows = KBC_MAX_KEY;
|
|
|
- int retval;
|
|
|
-
|
|
|
- if (keymap_data && pdata->use_fn_map)
|
|
|
- keymap_rows *= 2;
|
|
|
-
|
|
|
- retval = matrix_keypad_build_keymap(keymap_data, NULL,
|
|
|
- keymap_rows, KBC_MAX_COL,
|
|
|
- kbc->keycode, kbc->idev);
|
|
|
- if (retval == -ENOSYS || retval == -ENOENT) {
|
|
|
- /*
|
|
|
- * If there is no OF support in kernel or keymap
|
|
|
- * property is missing, use default keymap.
|
|
|
- */
|
|
|
- retval = matrix_keypad_build_keymap(
|
|
|
- &tegra_kbc_default_keymap_data, NULL,
|
|
|
- keymap_rows, KBC_MAX_COL,
|
|
|
- kbc->keycode, kbc->idev);
|
|
|
- }
|
|
|
-
|
|
|
- return retval;
|
|
|
-}
|
|
|
-
|
|
|
static int tegra_kbc_probe(struct platform_device *pdev)
|
|
|
{
|
|
|
const struct tegra_kbc_platform_data *pdata = pdev->dev.platform_data;
|
|
@@ -742,6 +574,7 @@ static int tegra_kbc_probe(struct platform_device *pdev)
|
|
|
int num_rows = 0;
|
|
|
unsigned int debounce_cnt;
|
|
|
unsigned int scan_time_rows;
|
|
|
+ unsigned int keymap_rows = KBC_MAX_KEY;
|
|
|
|
|
|
if (!pdata)
|
|
|
pdata = tegra_kbc_dt_parse_pdata(pdev);
|
|
@@ -815,7 +648,12 @@ static int tegra_kbc_probe(struct platform_device *pdev)
|
|
|
input_dev->open = tegra_kbc_open;
|
|
|
input_dev->close = tegra_kbc_close;
|
|
|
|
|
|
- err = tegra_kbd_setup_keymap(kbc);
|
|
|
+ if (pdata->keymap_data && pdata->use_fn_map)
|
|
|
+ keymap_rows *= 2;
|
|
|
+
|
|
|
+ err = matrix_keypad_build_keymap(pdata->keymap_data, NULL,
|
|
|
+ keymap_rows, KBC_MAX_COL,
|
|
|
+ kbc->keycode, input_dev);
|
|
|
if (err) {
|
|
|
dev_err(&pdev->dev, "failed to setup keymap\n");
|
|
|
return err;
|