summaryrefslogtreecommitdiff
path: root/board/trogdor/board.c
diff options
context:
space:
mode:
authorWai-Hong Tam <waihong@google.com>2020-01-14 10:48:15 -0800
committerCommit Bot <commit-bot@chromium.org>2020-01-16 21:50:15 +0000
commit59bf4eeb0940deee91ba3c5a3d80e1fb39e966e6 (patch)
treedf2e7e6258185834ddd20c954e31884da30ac2bb /board/trogdor/board.c
parentd57264e2872a5e54ae553c1c324ff3ef5b937263 (diff)
downloadchrome-ec-59bf4eeb0940deee91ba3c5a3d80e1fb39e966e6.tar.gz
Trogdor: Abandon virtual HPD approach and configure TCPC for HPD status
The TCPC is required to know the HPD status; otherwise, some mux misbehaves. Even thought the HPD status is through a GPIO to notify AP, still configure the TCPC. As the GPIO approach works well, abandon the virtual HPD approach. BRANCH=None BUG=b:147358149 TEST=Plugged a Type-C to DP dongle to the board, checked that the IN_HPD bit not set. Plugged a monitor to the dongle, checked that the IN_HPD bit set. Change-Id: Id8b8eae462c80c36156a1e9443c8af87cd784fd0 Signed-off-by: Wai-Hong Tam <waihong@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2003531 Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Diffstat (limited to 'board/trogdor/board.c')
-rw-r--r--board/trogdor/board.c52
1 files changed, 7 insertions, 45 deletions
diff --git a/board/trogdor/board.c b/board/trogdor/board.c
index d9c30571d3..202671651c 100644
--- a/board/trogdor/board.c
+++ b/board/trogdor/board.c
@@ -244,56 +244,18 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_MAX_COUNT] = {
/*
* Port-0/1 USB mux driver.
*
- * The USB mux is handled by TCPC chip and the HPD is handled by AP.
- * Redirect to tcpci_tcpm_usb_mux_driver but override the get() function
- * to check the HPD_IRQ mask from virtual_usb_mux_driver.
- *
- * Both port 0 and 1 use the same TCPC part.
+ * The USB mux is handled by TCPC chip and the HPD update is through a GPIO
+ * to AP. But the TCPC chip is also needed to know the HPD status; otherwise,
+ * the mux misbehaves.
*/
-
-static int port_usb_mux_init(int port)
-{
- return tcpci_tcpm_usb_mux_driver.init(port);
-}
-
-static int port_usb_mux_set(int i2c_addr, mux_state_t mux_state)
-{
- return tcpci_tcpm_usb_mux_driver.set(i2c_addr, mux_state);
-}
-
-static int port_usb_mux_get(int port, mux_state_t *mux_state)
-{
- int rv;
- mux_state_t virtual_mux_state;
-
- rv = tcpci_tcpm_usb_mux_driver.get(port, mux_state);
- rv |= virtual_usb_mux_driver.get(port, &virtual_mux_state);
-
- if (virtual_mux_state & USB_PD_MUX_HPD_IRQ)
- *mux_state |= USB_PD_MUX_HPD_IRQ;
- return rv;
-}
-
-static int port_usb_mux_enter_low_power(int port)
-{
- return tcpci_tcpm_usb_mux_driver.enter_low_power_mode(port);
-}
-
-const struct usb_mux_driver port_usb_mux_driver = {
- .init = &port_usb_mux_init,
- .set = &port_usb_mux_set,
- .get = &port_usb_mux_get,
- .enter_low_power_mode = &port_usb_mux_enter_low_power,
-};
-
struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = {
{
- .driver = &port_usb_mux_driver,
- .hpd_update = &virtual_hpd_update,
+ .driver = &ps8xxx_usb_mux_driver,
+ .hpd_update = &ps8xxx_tcpc_update_hpd_status,
},
{
- .driver = &port_usb_mux_driver,
- .hpd_update = &virtual_hpd_update,
+ .driver = &ps8xxx_usb_mux_driver,
+ .hpd_update = &ps8xxx_tcpc_update_hpd_status,
}
};