summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Fuzhen <fuzhen.lin@freescale.com>2011-12-08 11:11:51 +0800
committerJason Liu <r64343@freescale.com>2012-01-09 21:12:17 +0800
commit5561ea9c56f56f14aad8a1c079c4fb320c6d742f (patch)
tree0445ea1c4d41b6aed5611bc5f25bb2d044920c2b
parentfec9bbd2197a79c29c118e94d443bf07d8966016 (diff)
ENGR00169681 MX6: Add GPIO keys for sabrrelite
Add gpio keys for sabrelite Signed-off-by: Lin Fuzhen <fuzhen.lin@freescale.com>
-rw-r--r--arch/arm/mach-mx6/board-mx6q_sabrelite.c50
-rw-r--r--arch/arm/plat-mxc/include/mach/iomux-mx6q.h2
2 files changed, 51 insertions, 1 deletions
diff --git a/arch/arm/mach-mx6/board-mx6q_sabrelite.c b/arch/arm/mach-mx6/board-mx6q_sabrelite.c
index b8b321fed576..b2af641a3202 100644
--- a/arch/arm/mach-mx6/board-mx6q_sabrelite.c
+++ b/arch/arm/mach-mx6/board-mx6q_sabrelite.c
@@ -84,6 +84,12 @@
#define MX6Q_SABRELITE_USB_HUB_RESET IMX_GPIO_NR(7, 12)
#define MX6Q_SABRELITE_CAN1_STBY IMX_GPIO_NR(1, 2)
#define MX6Q_SABRELITE_CAN1_EN IMX_GPIO_NR(1, 4)
+#define MX6Q_SABRELITE_MENU_KEY IMX_GPIO_NR(2, 1)
+#define MX6Q_SABRELITE_BACK_KEY IMX_GPIO_NR(2, 2)
+#define MX6Q_SABRELITE_ONOFF_KEY IMX_GPIO_NR(2, 3)
+#define MX6Q_SABRELITE_HOME_KEY IMX_GPIO_NR(2, 4)
+#define MX6Q_SABRELITE_VOL_UP_KEY IMX_GPIO_NR(7, 13)
+#define MX6Q_SABRELITE_VOL_DOWN_KEY IMX_GPIO_NR(4, 5)
#define MX6Q_SABRELITE_SD3_WP_PADCFG (PAD_CTL_PKE | PAD_CTL_PUE | \
PAD_CTL_PUS_22K_UP | PAD_CTL_SPEED_MED | \
@@ -783,6 +789,48 @@ static const struct pm_platform_data mx6q_sabrelite_pm_data __initconst = {
.suspend_exit = sabrelite_suspend_exit,
};
+#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
+#define GPIO_BUTTON(gpio_num, ev_code, act_low, descr, wake) \
+{ \
+ .gpio = gpio_num, \
+ .type = EV_KEY, \
+ .code = ev_code, \
+ .active_low = act_low, \
+ .desc = "btn " descr, \
+ .wakeup = wake, \
+}
+
+static struct gpio_keys_button sabrelite_buttons[] = {
+ GPIO_BUTTON(MX6Q_SABRELITE_ONOFF_KEY, KEY_POWER, 1, "key-power", 1),
+ GPIO_BUTTON(MX6Q_SABRELITE_MENU_KEY, KEY_MENU, 1, "key-memu", 0),
+ GPIO_BUTTON(MX6Q_SABRELITE_HOME_KEY, KEY_HOME, 1, "key-home", 0),
+ GPIO_BUTTON(MX6Q_SABRELITE_BACK_KEY, KEY_BACK, 1, "key-back", 0),
+ GPIO_BUTTON(MX6Q_SABRELITE_VOL_UP_KEY, KEY_VOLUMEUP, 1, "volume-up", 0),
+ GPIO_BUTTON(MX6Q_SABRELITE_VOL_DOWN_KEY, KEY_VOLUMEDOWN, 1, "volume-down", 0),
+};
+
+static struct gpio_keys_platform_data sabrelite_button_data = {
+ .buttons = sabrelite_buttons,
+ .nbuttons = ARRAY_SIZE(sabrelite_buttons),
+};
+
+static struct platform_device sabrelite_button_device = {
+ .name = "gpio-keys",
+ .id = -1,
+ .num_resources = 0,
+ .dev = {
+ .platform_data = &sabrelite_button_data,
+ }
+};
+
+static void __init sabrelite_add_device_buttons(void)
+{
+ platform_device_register(&sabrelite_button_device);
+}
+#else
+static void __init sabrelite_add_device_buttons(void) {}
+#endif
+
static struct regulator_consumer_supply sabrelite_vmmc_consumers[] = {
REGULATOR_SUPPLY("vmmc", "sdhci-esdhc-imx.2"),
REGULATOR_SUPPLY("vmmc", "sdhci-esdhc-imx.3"),
@@ -1010,6 +1058,8 @@ static void __init mx6_sabrelite_board_init(void)
imx6q_add_dvfs_core(&sabrelite_dvfscore_data);
mx6_cpu_regulator_init();
+ sabrelite_add_device_buttons();
+
imx6q_add_hdmi_soc();
imx6q_add_hdmi_soc_dai();
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx6q.h b/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
index 8123eeb30e04..9ebde65d18db 100644
--- a/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
+++ b/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
@@ -6083,7 +6083,7 @@ typedef enum iomux_config {
#define MX6Q_PAD_GPIO_19__ECSPI1_RDY \
(_MX6Q_PAD_GPIO_19__ECSPI1_RDY | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_GPIO_19__GPIO_4_5 \
- (_MX6Q_PAD_GPIO_19__GPIO_4_5 | MUX_PAD_CTRL(MX6Q_HIGH_DRV))
+ (_MX6Q_PAD_GPIO_19__GPIO_4_5 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_GPIO_19__ENET_TX_ER \
(_MX6Q_PAD_GPIO_19__ENET_TX_ER | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_GPIO_19__SRC_INT_BOOT \