summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2019-04-15 17:58:41 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2019-05-20 18:36:14 +0000
commit43df4b47bd189fe135b73bfe8ba852c36d6518f4 (patch)
tree5928294cbb7342a42027b1496b39e6ab369eb05a
parent38f43e67c120650d11b44cffdbe516533bf754f4 (diff)
downloadchrome-ec-43df4b47bd189fe135b73bfe8ba852c36d6518f4.tar.gz
Nami: Set TCPC_AUX_SWITCH to 0xC on Port 1 on CCD enable
When the screen brightness is changed, DP sends signal on AUX channel. This causes CCD mode to be disconnected. This patch sets the MUX to aux+ <-> sbu2, aux- <-> sbu1 to fix it. Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> BUG=b/113266817 BRANCH=none TEST=Verify on Syndra UART over CCD doesn't get disconnected when the screen brightness is changed. Change-Id: I3dba1bdfd44a921077a2f60dec17119bb0077238 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1618598 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Commit-Queue: Daisuke Nojiri <dnojiri@chromium.org> Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
-rw-r--r--board/nami/board.c24
-rw-r--r--board/nami/board.h2
-rw-r--r--board/nami/gpio.inc2
3 files changed, 27 insertions, 1 deletions
diff --git a/board/nami/board.c b/board/nami/board.c
index 58c9ba2628..9c3a179a08 100644
--- a/board/nami/board.c
+++ b/board/nami/board.c
@@ -997,6 +997,26 @@ void board_bc12_enable(void)
CPRINTS("BC12 enabled");
}
+static void anx7447_set_aux_switch(void)
+{
+ const int port = USB_PD_PORT_ANX7447;
+
+ /* Debounce */
+ if (gpio_get_level(GPIO_CCD_MODE_ODL))
+ return;
+
+ CPRINTS("C%d: AUX_SW_SEL=0x%x", port, 0xc);
+ if (tcpc_write(port, ANX7447_REG_TCPC_AUX_SWITCH, 0xc))
+ CPRINTS("C%d: Setting AUX_SW_SEL failed", port);
+}
+DECLARE_DEFERRED(anx7447_set_aux_switch);
+
+void ccd_mode_isr(enum gpio_signal signal)
+{
+ /* Wait 2 seconds until all mux setting is done by PD task */
+ hook_call_deferred(&anx7447_set_aux_switch_data, 2 * SECOND);
+}
+
static void board_init(void)
{
int reg;
@@ -1029,6 +1049,10 @@ static void board_init(void)
gpio_enable_interrupt(GPIO_USB_C0_BC12_INT_L);
gpio_enable_interrupt(GPIO_USB_C1_BC12_INT_L);
+ /* Trigger once to set mux in case CCD cable is already connected. */
+ ccd_mode_isr(GPIO_CCD_MODE_ODL);
+ gpio_enable_interrupt(GPIO_CCD_MODE_ODL);
+
/* Enable Accel/Gyro interrupt for convertibles. */
if (sku & SKU_ID_MASK_CONVERTIBLE)
gpio_enable_interrupt(GPIO_ACCELGYRO3_INT_L);
diff --git a/board/nami/board.h b/board/nami/board.h
index f772aabe41..34c3469bc5 100644
--- a/board/nami/board.h
+++ b/board/nami/board.h
@@ -341,6 +341,8 @@ extern uint8_t model;
/* SKU_ID[24:31] are dedicated to OEM customization */
#define CBI_SKU_CUSTOM_FIELD(val) ((val) >> 24)
+void ccd_mode_isr(enum gpio_signal signal);
+
#endif /* !__ASSEMBLER__ */
#endif /* __CROS_EC_BOARD_H */
diff --git a/board/nami/gpio.inc b/board/nami/gpio.inc
index 5ac3f5a8da..c03e88db65 100644
--- a/board/nami/gpio.inc
+++ b/board/nami/gpio.inc
@@ -34,6 +34,7 @@ GPIO_INT(USB_C1_VBUS_WAKE_L, PIN(C, 5), GPIO_INT_BOTH | GPIO_PULL_UP,vbus1_evt)
GPIO_INT(USB_C0_BC12_INT_L, PIN(D, 2), GPIO_INT_FALLING, usb0_evt)
GPIO_INT(USB_C1_BC12_INT_L, PIN(D, 3), GPIO_INT_FALLING, usb1_evt)
GPIO_INT(ACCELGYRO3_INT_L, PIN(3, 6), GPIO_INT_FALLING | GPIO_PULL_UP, bmi160_interrupt)
+GPIO_INT(CCD_MODE_ODL, PIN(6, 3), GPIO_INT_FALLING, ccd_mode_isr)
GPIO(ENABLE_BACKLIGHT_L, PIN(6, 7), GPIO_OUT_LOW) /* LCD backlight */
GPIO(PP3300_DX_WLAN, PIN(B, 1), GPIO_OUT_LOW) /* Enable WLAN 3.3V Power */
@@ -46,7 +47,6 @@ GPIO(EC_PLATFORM_RST, PIN(4, 5), GPIO_OUT_LOW) /* EC Reset to LDO_EN */
GPIO(SYS_RESET_L, PIN(6, 1), GPIO_ODR_HIGH) /* Cold Reset to SOC */
GPIO(PMIC_SLP_SUS_L, PIN(8, 5), GPIO_OUT_LOW) /* SLP_SUS# to PMIC */
GPIO(BATTERY_PRESENT_L, PIN(3, 4), GPIO_INPUT) /* Battery Present */
-GPIO(CCD_MODE_ODL, PIN(6, 3), GPIO_INPUT) /* Case Closed Debug Mode */
GPIO(ENTERING_RW, PIN(7, 6), GPIO_OUTPUT) /* EC Entering RW */
GPIO(PMIC_INT_L, PIN(6, 0), GPIO_INPUT) /* PMIC interrupt */
#ifndef CONFIG_PWM_KBLIGHT