msm: board-8930: Add TS support for 8930 QRD
Add synaptic TS support and gpio configuration for
8930 QRD
Change-Id: I82493553f355f52f2998918eb335495239f8c7de
Signed-off-by: Shantanu Jain <shjain@codeaurora.org>
diff --git a/arch/arm/mach-msm/board-8930-gpiomux.c b/arch/arm/mach-msm/board-8930-gpiomux.c
index 78046d7..035dd9a 100644
--- a/arch/arm/mach-msm/board-8930-gpiomux.c
+++ b/arch/arm/mach-msm/board-8930-gpiomux.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -188,6 +188,31 @@
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_DOWN,
};
+
+static struct gpiomux_setting synaptic_rmi4_resout_sus_cfg = {
+ .func = GPIOMUX_FUNC_GPIO,
+ .drv = GPIOMUX_DRV_6MA,
+ .pull = GPIOMUX_PULL_DOWN,
+};
+
+static struct gpiomux_setting synaptic_rmi4_resout_act_cfg = {
+ .func = GPIOMUX_FUNC_GPIO,
+ .drv = GPIOMUX_DRV_6MA,
+ .pull = GPIOMUX_PULL_UP,
+};
+
+static struct gpiomux_setting synaptic_rmi4_attn_act_cfg = {
+ .func = GPIOMUX_FUNC_GPIO,
+ .drv = GPIOMUX_DRV_8MA,
+ .pull = GPIOMUX_PULL_UP,
+};
+
+static struct gpiomux_setting synaptic_rmi4_attn_sus_cfg = {
+ .func = GPIOMUX_FUNC_GPIO,
+ .drv = GPIOMUX_DRV_2MA,
+ .pull = GPIOMUX_PULL_DOWN,
+};
+
#ifdef MSM8930_PHASE_2
static struct gpiomux_setting hsusb_sus_cfg = {
.func = GPIOMUX_FUNC_GPIO,
@@ -632,6 +657,23 @@
},
};
+static struct msm_gpiomux_config msm8960_synaptic_rmi4_configs[] __initdata = {
+ { /* TS INTERRUPT */
+ .gpio = 11,
+ .settings = {
+ [GPIOMUX_ACTIVE] = &synaptic_rmi4_attn_act_cfg,
+ [GPIOMUX_SUSPENDED] = &synaptic_rmi4_attn_sus_cfg,
+ },
+ },
+ { /* TS RESOUT */
+ .gpio = 52,
+ .settings = {
+ [GPIOMUX_ACTIVE] = &synaptic_rmi4_resout_act_cfg,
+ [GPIOMUX_SUSPENDED] = &synaptic_rmi4_resout_sus_cfg,
+ },
+ },
+};
+
static struct msm_gpiomux_config hap_lvl_shft_config[] __initdata = {
{
.gpio = 47,
@@ -953,6 +995,9 @@
msm_gpiomux_install(msm_sitar_config, ARRAY_SIZE(msm_sitar_config));
+ msm_gpiomux_install(msm8960_synaptic_rmi4_configs,
+ ARRAY_SIZE(msm8960_synaptic_rmi4_configs));
+
return 0;
}
diff --git a/arch/arm/mach-msm/board-8930-regulator-pm8038.c b/arch/arm/mach-msm/board-8930-regulator-pm8038.c
index 0203db4..36ad20c 100644
--- a/arch/arm/mach-msm/board-8930-regulator-pm8038.c
+++ b/arch/arm/mach-msm/board-8930-regulator-pm8038.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -68,6 +68,7 @@
REGULATOR_SUPPLY("8038_l9", NULL),
REGULATOR_SUPPLY("vdd_ana", "3-004a"),
REGULATOR_SUPPLY("vdd", "3-0024"),
+ REGULATOR_SUPPLY("vdd", "3-0020"),
REGULATOR_SUPPLY("cam_vana", "4-001a"),
REGULATOR_SUPPLY("cam_vana", "4-006c"),
REGULATOR_SUPPLY("cam_vana", "4-0048"),
@@ -208,6 +209,7 @@
REGULATOR_SUPPLY("8038_lvs2", NULL),
REGULATOR_SUPPLY("vcc_i2c", "3-004a"),
REGULATOR_SUPPLY("vcc_i2c", "3-0024"),
+ REGULATOR_SUPPLY("vcc_i2c", "3-0020"),
REGULATOR_SUPPLY("vcc_i2c", "0-0048"),
REGULATOR_SUPPLY("vddio", "12-0018"),
REGULATOR_SUPPLY("vlogic", "12-0068"),
diff --git a/arch/arm/mach-msm/board-8930.c b/arch/arm/mach-msm/board-8930.c
index 69e5288..4365a43 100644
--- a/arch/arm/mach-msm/board-8930.c
+++ b/arch/arm/mach-msm/board-8930.c
@@ -43,6 +43,7 @@
#include <linux/memory.h>
#include <linux/memblock.h>
#include <linux/msm_thermal.h>
+#include <linux/input/synaptics_dsx.h>
#include <linux/slimbus/slimbus.h>
#include <linux/mfd/wcd9xxx/core.h>
@@ -2045,6 +2046,37 @@
},
};
+/*» Synaptics Thin Driver» */
+
+#define CLEARPAD3202_ADDR 0x20
+#define CLEARPAD3202_ATTEN_GPIO (11)
+#define CLEARPAD3202_RESET_GPIO (52)
+
+static unsigned char synaptic_rmi4_button_codes[] = {KEY_MENU, KEY_HOME,
+ KEY_BACK};
+
+static struct synaptics_rmi4_capacitance_button_map synaptic_rmi4_button_map = {
+ .nbuttons = ARRAY_SIZE(synaptic_rmi4_button_codes),
+ .map = synaptic_rmi4_button_codes,
+};
+
+static struct synaptics_rmi4_platform_data rmi4_platformdata = {
+ .irq_flags = IRQF_TRIGGER_FALLING,
+ .irq_gpio = CLEARPAD3202_ATTEN_GPIO,
+ .reset_gpio = CLEARPAD3202_RESET_GPIO,
+ .regulator_en = true,
+ .i2c_pull_up = true,
+ .capacitance_button_map = &synaptic_rmi4_button_map,
+};
+
+static struct i2c_board_info rmi4_i2c_devices[] = {
+ {
+ I2C_BOARD_INFO("synaptics_rmi4_i2c",
+ CLEARPAD3202_ADDR),
+ .platform_data = &rmi4_platformdata,
+ },
+};
+
#define MHL_POWER_GPIO_PM8038 PM8038_GPIO_PM_TO_SYS(MHL_GPIO_PWR_EN)
#define MHL_POWER_GPIO_PM8917 PM8917_GPIO_PM_TO_SYS(25)
static struct msm_mhl_platform_data mhl_platform_data = {
@@ -2736,6 +2768,12 @@
ARRAY_SIZE(mxt_device_info_8930),
},
{
+ I2C_EVT,
+ MSM_8930_GSBI3_QUP_I2C_BUS_ID,
+ rmi4_i2c_devices,
+ ARRAY_SIZE(rmi4_i2c_devices),
+ },
+ {
I2C_SURF | I2C_FFA | I2C_LIQUID | I2C_FLUID,
MSM_8930_GSBI9_QUP_I2C_BUS_ID,
sii_device_info,
@@ -3027,7 +3065,8 @@
msm8930_init_cam();
#endif
msm8930_init_mmc();
- mxt_init_vkeys_8930();
+ if (!machine_is_msm8930_evt())
+ mxt_init_vkeys_8930();
register_i2c_devices();
msm8930_init_fb();
slim_register_board_info(msm_slim_devices,