diff options
author | Jason Wang <jason77.wang@gmail.com> | 2010-07-14 09:24:54 -0400 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2010-07-26 08:29:21 -0400 |
commit | d5efe2551e3ea88d9446f0d9d073debbb847f6af (patch) | |
tree | c8ba61fd24c4a8f7235932842f6ffde0ea8591a6 /arch/arm/mach-mx5 | |
parent | a7ebd93143bc883b51227457e59ec774b1eb6c03 (diff) |
mx51_3ds: add keypad support on 3ds platform
Add keymaps and imx_keypad device registration for imx51_3ds board.
Signed-off-by: Jason Wang <jason77.wang@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-mx5')
-rw-r--r-- | arch/arm/mach-mx5/board-mx51_3ds.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/arch/arm/mach-mx5/board-mx51_3ds.c b/arch/arm/mach-mx5/board-mx51_3ds.c index f6a338c3345b..f95c2fd94667 100644 --- a/arch/arm/mach-mx5/board-mx51_3ds.c +++ b/arch/arm/mach-mx5/board-mx51_3ds.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/input/matrix_keypad.h> | ||
15 | 16 | ||
16 | #include <asm/mach-types.h> | 17 | #include <asm/mach-types.h> |
17 | #include <asm/mach/arch.h> | 18 | #include <asm/mach/arch.h> |
@@ -48,6 +49,18 @@ static struct pad_desc mx51_3ds_pads[] = { | |||
48 | 49 | ||
49 | /* CPLD PARENT IRQ PIN */ | 50 | /* CPLD PARENT IRQ PIN */ |
50 | MX51_PAD_GPIO_1_6__GPIO_1_6, | 51 | MX51_PAD_GPIO_1_6__GPIO_1_6, |
52 | |||
53 | /* KPP */ | ||
54 | MX51_PAD_KEY_ROW0__KEY_ROW0, | ||
55 | MX51_PAD_KEY_ROW1__KEY_ROW1, | ||
56 | MX51_PAD_KEY_ROW2__KEY_ROW2, | ||
57 | MX51_PAD_KEY_ROW3__KEY_ROW3, | ||
58 | MX51_PAD_KEY_COL0__KEY_COL0, | ||
59 | MX51_PAD_KEY_COL1__KEY_COL1, | ||
60 | MX51_PAD_KEY_COL2__KEY_COL2, | ||
61 | MX51_PAD_KEY_COL3__KEY_COL3, | ||
62 | MX51_PAD_KEY_COL4__KEY_COL4, | ||
63 | MX51_PAD_KEY_COL5__KEY_COL5, | ||
51 | }; | 64 | }; |
52 | 65 | ||
53 | /* Serial ports */ | 66 | /* Serial ports */ |
@@ -68,6 +81,52 @@ static inline void mxc_init_imx_uart(void) | |||
68 | } | 81 | } |
69 | #endif /* SERIAL_IMX */ | 82 | #endif /* SERIAL_IMX */ |
70 | 83 | ||
84 | #if defined(CONFIG_KEYBOARD_IMX) || defined(CONFIG_KEYBOARD_IMX_MODULE) | ||
85 | static int mx51_3ds_board_keymap[] = { | ||
86 | KEY(0, 0, KEY_1), | ||
87 | KEY(0, 1, KEY_2), | ||
88 | KEY(0, 2, KEY_3), | ||
89 | KEY(0, 3, KEY_F1), | ||
90 | KEY(0, 4, KEY_UP), | ||
91 | KEY(0, 5, KEY_F2), | ||
92 | |||
93 | KEY(1, 0, KEY_4), | ||
94 | KEY(1, 1, KEY_5), | ||
95 | KEY(1, 2, KEY_6), | ||
96 | KEY(1, 3, KEY_LEFT), | ||
97 | KEY(1, 4, KEY_SELECT), | ||
98 | KEY(1, 5, KEY_RIGHT), | ||
99 | |||
100 | KEY(2, 0, KEY_7), | ||
101 | KEY(2, 1, KEY_8), | ||
102 | KEY(2, 2, KEY_9), | ||
103 | KEY(2, 3, KEY_F3), | ||
104 | KEY(2, 4, KEY_DOWN), | ||
105 | KEY(2, 5, KEY_F4), | ||
106 | |||
107 | KEY(3, 0, KEY_0), | ||
108 | KEY(3, 1, KEY_OK), | ||
109 | KEY(3, 2, KEY_ESC), | ||
110 | KEY(3, 3, KEY_ENTER), | ||
111 | KEY(3, 4, KEY_MENU), | ||
112 | KEY(3, 5, KEY_BACK) | ||
113 | }; | ||
114 | |||
115 | static struct matrix_keymap_data mx51_3ds_map_data = { | ||
116 | .keymap = mx51_3ds_board_keymap, | ||
117 | .keymap_size = ARRAY_SIZE(mx51_3ds_board_keymap), | ||
118 | }; | ||
119 | |||
120 | static void mxc_init_keypad(void) | ||
121 | { | ||
122 | mxc_register_device(&mxc_keypad_device, &mx51_3ds_map_data); | ||
123 | } | ||
124 | #else | ||
125 | static inline void mxc_init_keypad(void) | ||
126 | { | ||
127 | } | ||
128 | #endif | ||
129 | |||
71 | /* | 130 | /* |
72 | * Board specific initialization. | 131 | * Board specific initialization. |
73 | */ | 132 | */ |
@@ -80,6 +139,8 @@ static void __init mxc_board_init(void) | |||
80 | if (mxc_expio_init(MX51_CS5_BASE_ADDR, EXPIO_PARENT_INT)) | 139 | if (mxc_expio_init(MX51_CS5_BASE_ADDR, EXPIO_PARENT_INT)) |
81 | printk(KERN_WARNING "Init of the debugboard failed, all " | 140 | printk(KERN_WARNING "Init of the debugboard failed, all " |
82 | "devices on the board are unusable.\n"); | 141 | "devices on the board are unusable.\n"); |
142 | |||
143 | mxc_init_keypad(); | ||
83 | } | 144 | } |
84 | 145 | ||
85 | static void __init mx51_3ds_timer_init(void) | 146 | static void __init mx51_3ds_timer_init(void) |