aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mmp/aspenite.c
diff options
context:
space:
mode:
authorMark F. Brown <mark.brown314@gmail.com>2010-09-03 18:28:11 -0400
committerEric Miao <eric.y.miao@gmail.com>2010-10-09 05:07:21 -0400
commit6aafc5f394fce437bf005b59034d7e5917778a99 (patch)
tree290ec52f588b2995a20212dbb4d2ea4b7dfa758d /arch/arm/mach-mmp/aspenite.c
parentab5739a17953b22480dc7caf6603380d563c53fc (diff)
ARM: pxa168/aspenite: add board support for keypad
Signed-off-by: Mark F. Brown <mark.brown314@gmail.com> Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
Diffstat (limited to 'arch/arm/mach-mmp/aspenite.c')
-rw-r--r--arch/arm/mach-mmp/aspenite.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
index 9e1bd6b1fdfb..f04bae6e4ccf 100644
--- a/arch/arm/mach-mmp/aspenite.c
+++ b/arch/arm/mach-mmp/aspenite.c
@@ -24,6 +24,8 @@
24#include <mach/pxa168.h> 24#include <mach/pxa168.h>
25#include <mach/gpio.h> 25#include <mach/gpio.h>
26#include <video/pxa168fb.h> 26#include <video/pxa168fb.h>
27#include <linux/input.h>
28#include <plat/pxa27x_keypad.h>
27 29
28#include "common.h" 30#include "common.h"
29 31
@@ -97,6 +99,13 @@ static unsigned long common_pin_config[] __initdata = {
97 GPIO81_LCD_DD21, 99 GPIO81_LCD_DD21,
98 GPIO82_LCD_DD22, 100 GPIO82_LCD_DD22,
99 GPIO83_LCD_DD23, 101 GPIO83_LCD_DD23,
102
103 /* Keypad */
104 GPIO109_KP_MKIN1,
105 GPIO110_KP_MKIN0,
106 GPIO111_KP_MKOUT7,
107 GPIO112_KP_MKOUT6,
108 GPIO121_KP_MKIN4,
100}; 109};
101 110
102static struct smc91x_platdata smc91x_info = { 111static struct smc91x_platdata smc91x_info = {
@@ -193,6 +202,23 @@ struct pxa168fb_mach_info aspenite_lcd_info = {
193 .invert_pixclock = 0, 202 .invert_pixclock = 0,
194}; 203};
195 204
205static unsigned int aspenite_matrix_key_map[] = {
206 KEY(0, 6, KEY_UP), /* SW 4 */
207 KEY(0, 7, KEY_DOWN), /* SW 5 */
208 KEY(1, 6, KEY_LEFT), /* SW 6 */
209 KEY(1, 7, KEY_RIGHT), /* SW 7 */
210 KEY(4, 6, KEY_ENTER), /* SW 8 */
211 KEY(4, 7, KEY_ESC), /* SW 9 */
212};
213
214static struct pxa27x_keypad_platform_data aspenite_keypad_info __initdata = {
215 .matrix_key_rows = 5,
216 .matrix_key_cols = 8,
217 .matrix_key_map = aspenite_matrix_key_map,
218 .matrix_key_map_size = ARRAY_SIZE(aspenite_matrix_key_map),
219 .debounce_interval = 30,
220};
221
196static void __init common_init(void) 222static void __init common_init(void)
197{ 223{
198 mfp_config(ARRAY_AND_SIZE(common_pin_config)); 224 mfp_config(ARRAY_AND_SIZE(common_pin_config));
@@ -203,6 +229,7 @@ static void __init common_init(void)
203 pxa168_add_ssp(1); 229 pxa168_add_ssp(1);
204 pxa168_add_nand(&aspenite_nand_info); 230 pxa168_add_nand(&aspenite_nand_info);
205 pxa168_add_fb(&aspenite_lcd_info); 231 pxa168_add_fb(&aspenite_lcd_info);
232 pxa168_add_keypad(&aspenite_keypad_info);
206 233
207 /* off-chip devices */ 234 /* off-chip devices */
208 platform_device_register(&smc91x_device); 235 platform_device_register(&smc91x_device);