summaryrefslogtreecommitdiff
path: root/board/dalboz
diff options
context:
space:
mode:
authorEdward Hill <ecgh@chromium.org>2020-03-17 23:56:31 -0600
committerCommit Bot <commit-bot@chromium.org>2020-03-20 18:14:22 +0000
commitd3554c0366a9d5a9a548c0a2267221a69c41f556 (patch)
tree2f78e045e960e7421ea625c54306632142609ad3 /board/dalboz
parent455c33c43c72c838a46db4b58520489f57c3363a (diff)
downloadchrome-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.c23
-rw-r--r--board/dalboz/gpio.inc4
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 */