summaryrefslogtreecommitdiff
path: root/board/dalboz
diff options
context:
space:
mode:
authorPeter Marheine <pmarheine@chromium.org>2020-06-17 13:58:03 +1000
committerCommit Bot <commit-bot@chromium.org>2020-06-19 02:11:42 +0000
commitc3368bb9cccabea2eeeadd34fd7f91f04a1e3295 (patch)
tree37576fd14ae4500f47f28295760221c64508b879 /board/dalboz
parente0c415b8f76a5179474b89418094f986fd1cd772 (diff)
downloadchrome-ec-c3368bb9cccabea2eeeadd34fd7f91f04a1e3295.tar.gz
dalboz: move HDMI HPD off the IO expander
On earlier board versions (prior to version 2) the hotplug detect signal was routed only through an IO expander, but latency in that configuration is too high- new hardware routes it directly to an EC GPIO. Because the old one was too slow, drop support for it and use the new direct IO exclusively. BUG=b:153399461 TEST=HPD passthrough works on new boards. BRANCH=None Signed-off-by: Peter Marheine <pmarheine@chromium.org> Change-Id: If7a0cc8f57e8264a8910291879515de4eb1c338e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2247968 Reviewed-by: Edward Hill <ecgh@chromium.org>
Diffstat (limited to 'board/dalboz')
-rw-r--r--board/dalboz/board.c24
-rw-r--r--board/dalboz/gpio.inc5
2 files changed, 20 insertions, 9 deletions
diff --git a/board/dalboz/board.c b/board/dalboz/board.c
index 3f82897b3b..b2e5606a4e 100644
--- a/board/dalboz/board.c
+++ b/board/dalboz/board.c
@@ -49,18 +49,24 @@ void c1_tcpc_interrupt(enum gpio_signal signal)
c1_tcpc_config_interrupt(signal);
}
-static void hdmi_hpd_handler(void)
+/* Interrupt for C1 PPC with USB-C DB, HPD with HDMI DB. */
+void (*c1_ppc_config_interrupt)(enum gpio_signal signal) = ppc_interrupt;
+
+void c1_ppc_interrupt(enum gpio_signal signal)
{
- int hpd = 0;
+ c1_ppc_config_interrupt(signal);
+}
+static void hdmi_hpd_handler(void)
+{
/* Pass HPD through from DB OPT1 HDMI connector to AP's DP1. */
- ioex_get_level(IOEX_HDMI_CONN_HPD_3V3_DB, &hpd);
+ int hpd = gpio_get_level(GPIO_USB_C1_PPC_INT_ODL);
gpio_set_level(GPIO_DP1_HPD, hpd);
ccprints("HDMI HPD %d", hpd);
}
DECLARE_DEFERRED(hdmi_hpd_handler);
-void hdmi_hpd_interrupt(enum ioex_signal signal)
+void hdmi_hpd_interrupt(enum gpio_signal signal)
{
/* Debounce for 2 msec. */
hook_call_deferred(&hdmi_hpd_handler_data, (2 * MSEC));
@@ -287,7 +293,12 @@ void ppc_interrupt(enum gpio_signal signal)
break;
case GPIO_USB_C1_PPC_INT_ODL:
- nx20p348x_interrupt(USBC_PORT_C1);
+ /*
+ * Sensitive only to falling edges; GPIO is configured for both
+ * because this input may be used for HDMI HPD instead.
+ */
+ if (!gpio_get_level(signal))
+ nx20p348x_interrupt(USBC_PORT_C1);
break;
default:
@@ -520,7 +531,7 @@ static void setup_fw_config(void)
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);
+ c1_ppc_config_interrupt = hdmi_hpd_interrupt;
} else {
ccprints("DB OPT1 USBC");
ioex_config[IOEX_C1_NCT3807].flags = 0;
@@ -529,6 +540,7 @@ static void setup_fw_config(void)
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;
+ c1_ppc_config_interrupt = ppc_interrupt;
}
/* Enable PPC interrupts. */
diff --git a/board/dalboz/gpio.inc b/board/dalboz/gpio.inc
index 53829d77d2..14035d541b 100644
--- a/board/dalboz/gpio.inc
+++ b/board/dalboz/gpio.inc
@@ -11,7 +11,8 @@
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, 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)
+/* PPC interrupts trigger on falling edge, but HDMI HPD triggers on rising edge. */
+GPIO_INT(USB_C1_PPC_INT_ODL, PIN(D, 4), GPIO_INT_BOTH, c1_ppc_interrupt)
GPIO_INT(USB_C0_BC12_INT_ODL, PIN(9, 3), GPIO_INT_FALLING | GPIO_PULL_UP, bc12_interrupt)
GPIO_INT(USB_C1_BC12_INT_ODL, PIN(A, 4), GPIO_INT_FALLING | GPIO_PULL_UP, bc12_interrupt)
GPIO_INT(SLP_S3_L, PIN(7, 4), GPIO_INT_BOTH, power_signal_interrupt)
@@ -60,8 +61,6 @@ GPIO(LED3_PWM, PIN(C, 3), 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(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 */
IOEX(USB_C1_FAULT_ODL, EXPIN(IOEX_C0_NCT3807, 1, 0), GPIO_ODR_HIGH) /* C1 Fault to SOC */