summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSantosh Shilimkar <santosh.shilimkar@ti.com>2009-07-30 20:25:55 +0530
committerSantosh Shilimkar <santosh.shilimkar@ti.com>2009-07-30 20:25:55 +0530
commit6a25589143b68b7f50f3f26aa176ca4fc3c82a4b (patch)
tree19e913c8bf77438cd872e0cd4a5d3ba3ef689f4b
parentd4323467ebbdef753a5080b19792aac0f750bc6e (diff)
parent9dc0791aa20a09369ed2d594b309f2d04af49566 (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_defconfig3
-rw-r--r--arch/arm/mach-omap2/board-4430sdp.c80
-rw-r--r--arch/arm/mach-omap2/mux.c26
-rw-r--r--arch/arm/plat-omap/include/mach/mux.h12
-rw-r--r--drivers/input/keyboard/Kconfig2
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.