diff options
author | Edward Hill <ecgh@chromium.org> | 2020-03-17 23:56:31 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-03-20 18:14:22 +0000 |
commit | d3554c0366a9d5a9a548c0a2267221a69c41f556 (patch) | |
tree | 2f78e045e960e7421ea625c54306632142609ad3 /board/dalboz | |
parent | 455c33c43c72c838a46db4b58520489f57c3363a (diff) | |
download | chrome-ec-d3554c0366a9d5a9a548c0a2267221a69c41f556.tar.gz |
dalboz: Set IOEX interrupt handler for DB option
BUG=b:150349225
BRANCH=none
TEST=IO expander works on both OPT1 and OPT2 DB
Signed-off-by: Edward Hill <ecgh@chromium.org>
Change-Id: If4152427d7c3ec8ea3f719cb0f13f1d3d689fc6b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2108338
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'board/dalboz')
-rw-r--r-- | board/dalboz/board.c | 23 | ||||
-rw-r--r-- | board/dalboz/gpio.inc | 4 |
2 files changed, 25 insertions, 2 deletions
diff --git a/board/dalboz/board.c b/board/dalboz/board.c index 6753663bb9..8fd80d29a4 100644 --- a/board/dalboz/board.c +++ b/board/dalboz/board.c @@ -8,6 +8,7 @@ #include "button.h" #include "driver/accel_lis2dw12.h" #include "driver/accelgyro_lsm6dsm.h" +#include "driver/ioexpander/pcal6408.h" #include "extpower.h" #include "fan.h" #include "fan_chip.h" @@ -23,6 +24,14 @@ #include "task.h" #include "usb_charge.h" +/* Interrupt handler varies with DB option. */ +void (*c1_tcpc_config_interrupt)(enum gpio_signal signal) = tcpc_alert_event; + +void c1_tcpc_interrupt(enum gpio_signal signal) +{ + c1_tcpc_config_interrupt(signal); +} + #include "gpio_list.h" #ifdef HAS_TASK_MOTIONSENSE @@ -132,6 +141,17 @@ unsigned int motion_sensor_count = ARRAY_SIZE(motion_sensors); enum gpio_signal IOEX_USB_A1_RETIMER_EN = IOEX_USB_A1_RETIMER_EN_OPT1; enum gpio_signal IOEX_USB_A1_CHARGE_EN_DB_L = IOEX_USB_A1_CHARGE_EN_DB_L_OPT1; +static void pcal6408_handler(void) +{ + pcal6408_ioex_event_handler(IOEX_HDMI_PCAL6408); +} +DECLARE_DEFERRED(pcal6408_handler); + +void pcal6408_interrupt(enum gpio_signal signal) +{ + hook_call_deferred(&pcal6408_handler_data, 0); +} + static void setup_usb_db(void) { if (ec_config_get_usb_db() == DALBOZ_DB_D_OPT2_USBA_HDMI) { @@ -141,6 +161,8 @@ static void setup_usb_db(void) IOEX_USB_A1_RETIMER_EN = IOEX_USB_A1_RETIMER_EN_OPT2; IOEX_USB_A1_CHARGE_EN_DB_L = IOEX_USB_A1_CHARGE_EN_DB_L_OPT2; usb_port_enable[USBA_PORT_A1] = IOEX_EN_USB_A1_5V_DB_OPT2; + c1_tcpc_config_interrupt = pcal6408_interrupt; + ioex_enable_interrupt(IOEX_HDMI_CONN_HPD_3V3_DB); } else { ccprints("DB OPT1 USBC"); ioex_config[IOEX_C1_NCT3807].flags = 0; @@ -148,6 +170,7 @@ static void setup_usb_db(void) IOEX_USB_A1_RETIMER_EN = IOEX_USB_A1_RETIMER_EN_OPT1; IOEX_USB_A1_CHARGE_EN_DB_L = IOEX_USB_A1_CHARGE_EN_DB_L_OPT1; usb_port_enable[USBA_PORT_A1] = IOEX_EN_USB_A1_5V_DB_OPT1; + c1_tcpc_config_interrupt = tcpc_alert_event; } /* Enable PPC interrupts. */ diff --git a/board/dalboz/gpio.inc b/board/dalboz/gpio.inc index fb69562fdf..dacf9164eb 100644 --- a/board/dalboz/gpio.inc +++ b/board/dalboz/gpio.inc @@ -9,7 +9,7 @@ * Note: Those with interrupt handlers must be declared first. */ GPIO_INT(USB_C0_TCPC_INT_ODL, PIN(3, 4), GPIO_INT_FALLING, tcpc_alert_event) -GPIO_INT(USB_C1_TCPC_INT_ODL, PIN(F, 1), GPIO_INT_FALLING, tcpc_alert_event) +GPIO_INT(USB_C1_TCPC_INT_ODL, PIN(F, 1), GPIO_INT_FALLING, c1_tcpc_interrupt) GPIO_INT(USB_C0_PPC_FAULT_ODL, PIN(6, 3), GPIO_INT_FALLING, ppc_interrupt) GPIO_INT(USB_C1_PPC_INT_ODL, PIN(D, 4), GPIO_INT_FALLING, ppc_interrupt) GPIO_INT(USB_C0_BC12_INT_ODL, PIN(9, 3), GPIO_INT_FALLING | GPIO_PULL_UP, bc12_interrupt) @@ -55,7 +55,7 @@ GPIO(LED_CHRG_L, PIN(C, 0), GPIO_OUT_HIGH) * OPT1 DB (USB-C1), IOEX_HDMI_PCAL6408 is the OPT2 DB (HDMI). */ -IOEX_INT(HDMI_CONN_HPD_3V3_DB, EXPIN(IOEX_HDMI_PCAL6408, 0, 4), GPIO_INT_BOTH, hdmi_hpd_interrupt) +IOEX_INT(HDMI_CONN_HPD_3V3_DB, EXPIN(IOEX_HDMI_PCAL6408, 0, 4), GPIO_INT_BOTH, hdmi_hpd_interrupt) IOEX(USB_C0_FAULT_ODL, EXPIN(IOEX_C0_NCT3807, 0, 3), GPIO_ODR_HIGH) /* C0 Fault to SOC */ IOEX(USB_C0_TCPC_FASTSW_CTL_EN, EXPIN(IOEX_C0_NCT3807, 0, 4), GPIO_OUT_LOW) /* C0 FastSwitch Control */ |