On Tue, Jun 24, 2008 at 3:21 AM, Miguel Angel Aguilar Ulloa <miguel.aguilar@xxxxxxxxxxxx> wrote: > Add twl4030 keypad driver support to OMAP3 EVM > > Signed-off-by: Miguel Angel Aguilar <miguel.aguilar@xxxxxxxxxxxx> > > --- a/arch/arm/mach-omap2/board-omap3evm.c 2008-06-23 > 15:07:13.000000000 -0600 > +++ b/arch/arm/mach-omap2/board-omap3evm.c 2008-06-23 > 14:32:29.000000000 -0600 > @@ -19,6 +19,7 @@ > #include <linux/err.h> > #include <linux/clk.h> > #include <linux/io.h> > +#include <linux/input.h> > #include <linux/spi/spi.h> > #include <linux/spi/ads7846.h> > > @@ -28,6 +29,7 @@ > #include <asm/mach/map.h> > > #include <asm/arch/gpio.h> > +#include <asm/arch/keypad.h> > #include <asm/arch/board.h> > #include <asm/arch/hsmmc.h> > #include <asm/arch/usb-musb.h> > @@ -149,6 +151,56 @@ struct spi_board_info omap3evm_spi_board > }, > }; > > +static int omap3evm_keymap[] = { > + KEY(0, 0, KEY_LEFT), > + KEY(0, 1, KEY_RIGHT), > + KEY(0, 2, KEY_A), > + KEY(0, 3, KEY_B), > + KEY(0, 4, KEY_C), > + KEY(1, 0, KEY_DOWN), > + KEY(1, 1, KEY_UP), > + KEY(1, 2, KEY_E), > + KEY(1, 3, KEY_F), > + KEY(1, 4, KEY_G), > + KEY(2, 0, KEY_ENTER), > + KEY(2, 1, KEY_I), > + KEY(2, 2, KEY_J), > + KEY(2, 3, KEY_K), > + KEY(2, 4, KEY_3), > + KEY(3, 0, KEY_M), > + KEY(3, 1, KEY_N), > + KEY(3, 2, KEY_O), > + KEY(3, 3, KEY_P), > + KEY(3, 4, KEY_Q), > + KEY(4, 0, KEY_R), > + KEY(4, 1, KEY_4), > + KEY(4, 2, KEY_T), > + KEY(4, 3, KEY_U), > + KEY(4, 4, KEY_D), > + KEY(5, 0, KEY_V), > + KEY(5, 1, KEY_W), > + KEY(5, 2, KEY_L), > + KEY(5, 3, KEY_S), > + KEY(5, 4, KEY_H), > + 0 > +}; > + Omap3evm has only 15 keys right?(Some body correct me if I am wrong). Then how the mapping and dividing into rows and columns is done? > +static struct omap_kp_platform_data omap3evm_kp_data = { > + .rows = 4, > + .cols = 4, > + .keymap = omap3evm_keymap, > + .keymapsize = ARRAY_SIZE(omap3evm_keymap), > + .rep = 1, > +}; > + > +static struct platform_device omap3evm_kp_device = { > + .name = "omap_twl4030keypad", > + .id = -1, > + .dev = { > + .platform_data = &omap3evm_kp_data, > + }, > +}; > + > static void __init omap3_evm_init_irq(void) > { > omap2_init_common_hw(); > @@ -165,6 +217,7 @@ static struct omap_board_config_kernel o > > static struct platform_device *omap3_evm_devices[] __initdata = { > &omap3_evm_lcd_device, > + &omap3evm_kp_device, > #ifdef CONFIG_RTC_DRV_TWL4030 > &omap3_evm_twl4030rtc_device, > #endif > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html