diff options
-rw-r--r-- | board/dratini/board.c | 24 | ||||
-rw-r--r-- | board/dratini/board.h | 2 | ||||
-rw-r--r-- | board/dratini/gpio.inc | 3 |
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 */ |