summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Mittelberg <bmbm@google.com>2021-03-24 20:44:30 +0000
committerCommit Bot <commit-bot@chromium.org>2021-04-15 22:54:33 +0000
commitf7b945264c001e700bebc66c6401ae67e97df74e (patch)
tree071d9a7e49b7abf6c7d360a59e0f59ada4a06c22
parentc41de27e7dafae672a9e97f19a7f1ee648598191 (diff)
downloadchrome-ec-f7b945264c001e700bebc66c6401ae67e97df74e.tar.gz
dratini: Set TCPC_AUX_SWITCH to 0xC on Port 0 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. Same change as I3dba1bdfd44a921077a2f60dec17119bb0077238 BUG=b:183123775 BRANCH=none TEST=manually verify servod doesn't exit when screen brightness is changed Signed-off-by: Boris Mittelberg <bmbm@google.com> Change-Id: Iff91a4b4753b42ee42cd5baac36ba8243d966ce0 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2785192 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> (cherry picked from commit 515990a91e4430ff66cae9e532332a0ee33162de) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2829732 Reviewed-by: Shelley Chen <shchen@chromium.org> Commit-Queue: Shelley Chen <shchen@chromium.org> Tested-by: Shelley Chen <shchen@chromium.org>
-rw-r--r--board/dratini/board.c24
-rw-r--r--board/dratini/board.h2
-rw-r--r--board/dratini/gpio.inc3
3 files changed, 29 insertions, 0 deletions
diff --git a/board/dratini/board.c b/board/dratini/board.c
index 87df7d3dfd..b60b5ff645 100644
--- a/board/dratini/board.c
+++ b/board/dratini/board.c
@@ -415,6 +415,26 @@ static void board_update_sensor_config_from_sku(void)
}
}
+static void anx7447_set_aux_switch(void)
+{
+ const int port = USB_PD_PORT_TCPC_0;
+
+ /* 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)
{
/* Initialize Fans */
@@ -429,6 +449,10 @@ static void board_init(void)
/* Enable HDMI HPD interrupt. */
gpio_enable_interrupt(GPIO_HDMI_CONN_HPD);
+ /* 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);
+
board_update_sensor_config_from_sku();
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
diff --git a/board/dratini/board.h b/board/dratini/board.h
index bd40963a62..d0efeb72be 100644
--- a/board/dratini/board.h
+++ b/board/dratini/board.h
@@ -181,6 +181,8 @@ extern const int keyboard_factory_scan_pins_used;
bool board_is_convertible(void);
+void ccd_mode_isr(enum gpio_signal signal);
+
#endif /* !__ASSEMBLER__ */
#endif /* __CROS_EC_BOARD_H */
diff --git a/board/dratini/gpio.inc b/board/dratini/gpio.inc
index 1d83a9813a..c242919a89 100644
--- a/board/dratini/gpio.inc
+++ b/board/dratini/gpio.inc
@@ -38,6 +38,9 @@ GPIO_INT(USB_C1_TCPC_INT_ODL, PIN(F, 5), GPIO_INT_FALLING, tcpc_alert_event)
GPIO_INT(USB_C0_BC12_INT_ODL, PIN(9, 5), GPIO_INT_FALLING, bc12_interrupt)
GPIO_INT(USB_C1_BC12_INT_ODL, PIN(E, 4), GPIO_INT_FALLING, bc12_interrupt)
+/* CCD mode line*/
+GPIO_INT(CCD_MODE_ODL, PIN(E, 5), GPIO_INT_FALLING, ccd_mode_isr)
+
GPIO_INT(HDMI_CONN_HPD, PIN(7, 2), GPIO_INT_BOTH, hdmi_hpd_interrupt)
/* Volume button interrupts */