summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Wan <Bruce.Wan@quantatw.com>2014-11-11 11:39:22 +0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-11-14 01:18:34 +0000
commit54e3b27776c736438a450353d7e70a51cd08ac11 (patch)
tree2d940332a89100e2b0aab1c2f287b96b7e442671
parentcd27c27d652b24470e59d43dcc120e38498e4a62 (diff)
downloadchrome-ec-54e3b27776c736438a450353d7e70a51cd08ac11.tar.gz
Candy: Add touchscreen enable pin control for Elan touchscreen power-on sequence
Candy use TS_EN to enable touchscreen, and TOUCH_RST_L for RESETB signal, so we need add TOUCHSCREEN_ENABLE control for Elan touchscreen power-on sequence. BUG=chrome-os-partner:32284 BRANCH=rambi TEST=manual Candy use TS_EN to enable touchscreen, and TOUCH_RST_L for RESETB signal. Signed-off-by: Bruce Wan <Bruce.Wan@quantatw.com> Change-Id: Ia1f568302c17ab7ed31220370412b1c27ae5dc2f Reviewed-on: https://chromium-review.googlesource.com/228983 Tested-by: Bruce Wan <Bruce.Wan@quantatw.com> Reviewed-by: Mohammed Habibulla <moch@chromium.org> Commit-Queue: Devin Lu <Devin.Lu@quantatw.com>
-rw-r--r--board/candy/board.c1
-rw-r--r--board/candy/board.h2
-rwxr-xr-xinclude/config.h8
-rwxr-xr-xpower/baytrail.c15
4 files changed, 26 insertions, 0 deletions
diff --git a/board/candy/board.c b/board/candy/board.c
index ae6b7054d8..fa90b992bd 100644
--- a/board/candy/board.c
+++ b/board/candy/board.c
@@ -104,6 +104,7 @@ const struct gpio_info gpio_list[] = {
{"PPSX_EN", LM4_GPIO_L, (1<<6), GPIO_OUT_LOW, NULL},
{"SUSP_VR_EN", LM4_GPIO_C, (1<<7), GPIO_OUT_LOW, NULL},
{"TOUCHSCREEN_RESET_L", LM4_GPIO_N, (1<<7), GPIO_OUT_LOW, NULL},
+ {"TOUCHSCREEN_ENABLE", LM4_GPIO_J, (1<<5), GPIO_OUT_LOW, NULL},
{"USB_CTL1", LM4_GPIO_E, (1<<6), GPIO_OUT_LOW, NULL},
{"USB_ILIM_SEL", LM4_GPIO_E, (1<<5), GPIO_OUT_LOW, NULL},
{"USB1_ENABLE", LM4_GPIO_E, (1<<4), GPIO_OUT_LOW, NULL},
diff --git a/board/candy/board.h b/board/candy/board.h
index 759696cbc5..65b5044ac4 100644
--- a/board/candy/board.h
+++ b/board/candy/board.h
@@ -39,6 +39,7 @@
#define CONFIG_SCI_GPIO GPIO_PCH_SCI_L
#define CONFIG_TEMP_SENSOR
#define CONFIG_TEMP_SENSOR_TMP432
+#define CONFIG_TOUCHSCREEN_ENABLE_CONTROL GPIO_TOUCHSCREEN_ENABLE
#define CONFIG_USB_PORT_POWER_IN_S3
#define CONFIG_USB_PORT_POWER_SMART
#define CONFIG_USB_PORT_POWER_SMART_DEFAULT_MODE USB_CHARGE_MODE_CDP
@@ -124,6 +125,7 @@ enum gpio_signal {
GPIO_PPSX_EN, /* Enable PP1350_PCH_SX, PP1000_PCH_SX */
GPIO_SUSP_VR_EN, /* Enable 1.05V regulator */
GPIO_TOUCHSCREEN_RESET_L, /* Reset touch screen */
+ GPIO_TOUCHSCREEN_ENABLE, /* Touch screen enable */
GPIO_USB_CTL1, /* USB control signal 1 to both ports */
GPIO_USB_ILIM_SEL, /* USB current limit to both ports */
GPIO_USB1_ENABLE, /* USB port 1 output power enable */
diff --git a/include/config.h b/include/config.h
index 839bc6d9b1..4048733ac1 100755
--- a/include/config.h
+++ b/include/config.h
@@ -780,6 +780,14 @@
#undef CONFIG_TEMP_SENSOR_POWER_GPIO
/*****************************************************************************/
+
+/*
+ * Some touch screens require additional enable signal for proper power
+ * sequencing.
+ */
+#undef CONFIG_TOUCHSCREEN_ENABLE_CONTROL
+
+/*****************************************************************************/
/* UART config */
/* Baud rate for UARTs */
diff --git a/power/baytrail.c b/power/baytrail.c
index f6320812bd..87b5f8a4f4 100755
--- a/power/baytrail.c
+++ b/power/baytrail.c
@@ -160,6 +160,11 @@ enum power_state power_handle_state(enum power_state state)
*/
gpio_set_level(GPIO_TOUCHSCREEN_RESET_L, lid_is_open());
+#ifdef CONFIG_TOUCHSCREEN_ENABLE_CONTROL
+ gpio_set_level(CONFIG_TOUCHSCREEN_ENABLE_CONTROL,
+ lid_is_open());
+#endif
+
/* Check for state transitions */
if (!power_has_signals(IN_PGOOD_S3)) {
/* Required rail went away */
@@ -250,6 +255,9 @@ enum power_state power_handle_state(enum power_state state)
* still closed); it may have been turned off if the lid was
* closed in S3.
*/
+#ifdef CONFIG_TOUCHSCREEN_ENABLE_CONTROL
+ gpio_set_level(CONFIG_TOUCHSCREEN_ENABLE_CONTROL, 1);
+#endif
gpio_set_level(GPIO_TOUCHSCREEN_RESET_L, 1);
/* Wait for non-core power rails good */
@@ -259,6 +267,9 @@ enum power_state power_handle_state(enum power_state state)
gpio_set_level(GPIO_PP3300_DX_EN, 0);
gpio_set_level(GPIO_PP5000_EN, 0);
gpio_set_level(GPIO_TOUCHSCREEN_RESET_L, 0);
+#ifdef CONFIG_TOUCHSCREEN_ENABLE_CONTROL
+ gpio_set_level(CONFIG_TOUCHSCREEN_ENABLE_CONTROL, 0);
+#endif
return POWER_S3;
}
@@ -389,6 +400,10 @@ enum power_state power_handle_state(enum power_state state)
gpio_set_level(GPIO_ENABLE_TOUCHPAD, 0);
gpio_set_level(GPIO_TOUCHSCREEN_RESET_L, 0);
+#ifdef CONFIG_TOUCHSCREEN_ENABLE_CONTROL
+ gpio_set_level(CONFIG_TOUCHSCREEN_ENABLE_CONTROL, 0);
+#endif
+
#ifdef CONFIG_LAN_POWER_S3
/* Turn off LAN controller power */
gpio_set_level(CONFIG_LAN_POWER_S3, 0);