diff options
author | Santosh Shilimkar <santosh.shilimkar@ti.com> | 2009-07-30 20:25:55 +0530 |
---|---|---|
committer | Santosh Shilimkar <santosh.shilimkar@ti.com> | 2009-07-30 20:25:55 +0530 |
commit | 6a25589143b68b7f50f3f26aa176ca4fc3c82a4b (patch) | |
tree | 19e913c8bf77438cd872e0cd4a5d3ba3ef689f4b | |
parent | d4323467ebbdef753a5080b19792aac0f750bc6e (diff) | |
parent | 9dc0791aa20a09369ed2d594b309f2d04af49566 (diff) |
Merge branch 'omap4_drivers_v2.6.31-rc1' of git://dev.omapzoom.org/pub/scm/santosh/kernel-omap4-base into L24.0.10_test
Conflicts:
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/mux.c
-rw-r--r-- | arch/arm/configs/omap_4430sdp_defconfig | 3 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-4430sdp.c | 80 | ||||
-rw-r--r-- | arch/arm/mach-omap2/mux.c | 26 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/mux.h | 12 | ||||
-rw-r--r-- | drivers/input/keyboard/Kconfig | 2 |
5 files changed, 121 insertions, 2 deletions
diff --git a/arch/arm/configs/omap_4430sdp_defconfig b/arch/arm/configs/omap_4430sdp_defconfig index 62578d1a2f8f..1e391f877004 100644 --- a/arch/arm/configs/omap_4430sdp_defconfig +++ b/arch/arm/configs/omap_4430sdp_defconfig @@ -374,7 +374,8 @@ CONFIG_INPUT_EVDEV=y # # Input Device Drivers # -# CONFIG_INPUT_KEYBOARD is not set +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_OMAP=y # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TABLET is not set diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index f8c7e3e65201..b7ad87d5a213 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c @@ -18,7 +18,9 @@ #include <linux/io.h> #include <linux/gpio.h> #include <linux/spi/spi.h> +#include <linux/input.h> +#include <mach/keypad.h> #include <mach/hardware.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -35,8 +37,68 @@ #include <linux/i2c/twl.h> #include <linux/regulator/machine.h> +#define OMAP4_KBDOCP_BASE 0x4A31C000 + static int ts_gpio; +static int omap_keymap[] = { + KEY(0, 0, KEY_SENDFILE), + KEY(0, 1, KEY_1), + KEY(0, 2, KEY_4), + KEY(0, 3, KEY_7), + KEY(1, 0, KEY_END), + KEY(1, 1, KEY_2), + KEY(1, 2, KEY_5), + KEY(1, 3, KEY_8), + KEY(1, 4, KEY_0), + KEY(2, 1, KEY_3), + KEY(2, 2, KEY_6), + KEY(2, 3, KEY_9), + KEY(3, 1, KEY_HOME), + KEY(3, 2, KEY_BACK), + KEY(3, 3, KEY_VOLUMEUP), + KEY(3, 4, KEY_VOLUMEDOWN), + KEY(4, 0, KEY_UP), + KEY(4, 1, KEY_RIGHT), + KEY(4, 2, KEY_LEFT), + KEY(4, 3, KEY_DOWN), + KEY(0, 4, KEY_DOT), + KEY(2, 4, KEY_LEFT), + KEY(4, 4, KEY_ENTER), + KEY(5, 0, KEY_SCROLLUP), + KEY(5, 1, KEY_SCROLLDOWN), + KEY(5, 2, KEY_RIGHT), + KEY(5, 3, KEY_RECORD), + 0, +}; + +static struct resource omap_kp_resources[] = { + [0] = { + .start = OMAP4_KBDOCP_BASE, + .end = OMAP4_KBDOCP_BASE, + .flags = IORESOURCE_MEM, + }, +}; + +static struct omap_kp_platform_data omap_kp_data = { + .rows = 5, + .cols = 6, + .keymap = omap_keymap, + .keymapsize = ARRAY_SIZE(omap_keymap), + .delay = 4, + .rep = 1, +}; + +static struct platform_device omap_kp_device = { + .name = "omap-keypad", + .id = -1, + .dev = { + .platform_data = &omap_kp_data, + }, + .num_resources = ARRAY_SIZE(omap_kp_resources), + .resource = omap_kp_resources, +}; + static struct omap2_mcspi_device_config tsc2046_mcspi_config = { .turbo_mode = 0, .single_channel = 1, /* 0: slave, 1: master */ @@ -99,6 +161,7 @@ static struct platform_device sdp4430_dss_device = { static struct platform_device *sdp4430_devices[] __initdata = { &sdp4430_dss_device, + &omap_kp_device, }; static struct omap_uart_config sdp4430_uart_config __initdata = { @@ -341,6 +404,22 @@ static void omap_abe_init(void) /* twl6030 audio power-on */ omap_cfg_reg(P_4430_GPIO_11); } +void omap_kp_init(void) +{ + omap_cfg_reg(PAD0_4430_UNIPRO_TX0); + omap_cfg_reg(PAD1_4430_UNIPRO_TY0); + omap_cfg_reg(PAD0_4430_UNIPRO_TX1); + omap_cfg_reg(PAD1_4430_UNIPRO_TY1); + omap_cfg_reg(PAD0_4430_UNIPRO_TX2); + omap_cfg_reg(PAD1_4430_UNIPRO_TY2); + + omap_cfg_reg(PAD0_4430_UNIPRO_RX0); + omap_cfg_reg(PAD1_4430_UNIPRO_RY0); + omap_cfg_reg(PAD0_4430_UNIPRO_RX1); + omap_cfg_reg(PAD1_4430_UNIPRO_RY1); + omap_cfg_reg(PAD0_4430_UNIPRO_RX2); + omap_cfg_reg(PAD1_4430_UNIPRO_RY2); +} static void __init omap_4430sdp_init(void) { @@ -354,6 +433,7 @@ static void __init omap_4430sdp_init(void) ARRAY_SIZE(sdp4430_spi_board_info)); omap_mcbsp_init(); omap_abe_init(); + omap_kp_init(); sdp4430_display_init(); } diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 92ed6f2f3196..aa76815235af 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c @@ -526,6 +526,31 @@ MUX_CFG_34XX("Y2_4430_McBSP1_DX", 0x102, MUX_CFG_34XX("Y4_4430_McBSP1_FSX", 0x104, OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT) +MUX_CFG_34XX("PAD0_4430_UNIPRO_TX0", 0x07c, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("PAD1_4430_UNIPRO_TY0", 0x07e, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("PAD0_4430_UNIPRO_TX1", 0x180, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("PAD1_4430_UNIPRO_TY1", 0x182, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("PAD0_4430_UNIPRO_TX2", 0x184, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("PAD1_4430_UNIPRO_TY2", 0x186, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("PAD0_4430_UNIPRO_RX0", 0x188, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("PAD0_4430_UNIPRO_RX1", 0x18c, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("PAD1_4430_UNIPRO_RY1", 0x18e, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("PAD1_4430_UNIPRO_RY0", 0x18a, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("PAD0_4430_UNIPRO_RX2", 0x190, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("PAD1_4430_UNIPRO_RY2", 0x192, + OMAP34XX_MUX_MODE1 | OMAP34XX_PIN_OUTPUT) + MUX_CFG_34XX("P_4430_ABE_PDM_UL_DATA", 0x106, OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT) MUX_CFG_34XX("P_4430_ABE_PDM_DL_DATA", 0x108, @@ -537,6 +562,7 @@ MUX_CFG_34XX("P_4430_ABE_PDM_LB_CLK", 0x10c, MUX_CFG_34XX("P_4430_ABE_PDM_CLKS", 0x10e, OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT) + MUX_CFG_34XX("P_4430_GPIO_11", 0x1ae, OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_OUTPUT) }; diff --git a/arch/arm/plat-omap/include/mach/mux.h b/arch/arm/plat-omap/include/mach/mux.h index 25b873960eab..8fdd645abbb3 100644 --- a/arch/arm/plat-omap/include/mach/mux.h +++ b/arch/arm/plat-omap/include/mach/mux.h @@ -869,6 +869,18 @@ enum omap44xx_index { Y2_4430_McBSP1_DX, Y3_4430_McBSP1_DR, Y4_4430_McBSP1_FSX, + PAD0_4430_UNIPRO_TX0, + PAD1_4430_UNIPRO_TY0, + PAD0_4430_UNIPRO_TX1, + PAD1_4430_UNIPRO_TY1, + PAD0_4430_UNIPRO_TX2, + PAD1_4430_UNIPRO_TY2, + PAD0_4430_UNIPRO_RX0, + PAD1_4430_UNIPRO_RY0, + PAD0_4430_UNIPRO_RX1, + PAD1_4430_UNIPRO_RY1, + PAD0_4430_UNIPRO_RX2, + PAD1_4430_UNIPRO_RY2, P_4430_ABE_PDM_UL_DATA, P_4430_ABE_PDM_DL_DATA, diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig index 9d8f796c6745..6b007423d438 100644 --- a/drivers/input/keyboard/Kconfig +++ b/drivers/input/keyboard/Kconfig @@ -263,7 +263,7 @@ config KEYBOARD_LM8323 config KEYBOARD_OMAP tristate "TI OMAP keypad support" - depends on (ARCH_OMAP1 || ARCH_OMAP2) + depends on (ARCH_OMAP1 || ARCH_OMAP2 || ARCH_OMAP4) help Say Y here if you want to use the OMAP keypad. |