summaryrefslogtreecommitdiff
path: root/baseboard
diff options
context:
space:
mode:
authorEric Yilun Lin <yllin@chromium.org>2020-02-10 14:58:37 +0800
committerCommit Bot <commit-bot@chromium.org>2020-02-10 10:39:51 +0000
commit579c08cd553353baeb8965a5e9b15278bca61afa (patch)
tree6434f972d2e3c6108ee57263752fda62b27c3b3b /baseboard
parent97c2fbbb2692e0395d360cdc75140f9f1d6e5911 (diff)
downloadchrome-ec-579c08cd553353baeb8965a5e9b15278bca61afa.tar.gz
kukui: inform AP DP status by USB_MUX event
This CL notify the usb mux status to AP no matter the it5205 exists or not. Some revs of the krane and kodama replace virtual mux with a real mux. However, this will stop informing the AP usb mux status, but it6505 still need the mux information to control the regulators. BUG=b:149181702 BRANCH=kukui TEST=plug hub w/ DP port, and see exton state DP=1 by 'cat /sys/class/extcon/extcon0/state' Change-Id: I86c0998340c935b16b02ec0c3edf0484f1843ebf Signed-off-by: Eric Yilun Lin <yllin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2043625 Reviewed-by: Pi-Hsun Shih <pihsun@chromium.org> Reviewed-by: Ting Shen <phoenixshen@chromium.org> Tested-by: Pi-Hsun Shih <pihsun@chromium.org> Commit-Queue: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'baseboard')
-rw-r--r--baseboard/kukui/usb_pd_policy.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/baseboard/kukui/usb_pd_policy.c b/baseboard/kukui/usb_pd_policy.c
index 95fbdf0163..0925c1b329 100644
--- a/baseboard/kukui/usb_pd_policy.c
+++ b/baseboard/kukui/usb_pd_policy.c
@@ -105,13 +105,23 @@ __overridable int board_has_virtual_mux(void)
return IS_ENABLED(CONFIG_USB_MUX_VIRTUAL);
}
+static void board_usb_mux_set(int port, mux_state_t mux_mode,
+ enum usb_switch usb_mode, int polarity)
+{
+ usb_mux_set(port, mux_mode, usb_mode, polarity);
+
+ if (!board_has_virtual_mux())
+ /* b:149181702: Inform AP of DP status */
+ host_set_single_event(EC_HOST_EVENT_USB_MUX);
+}
+
__override void svdm_safe_dp_mode(int port)
{
/* make DP interface safe until configure */
dp_flags[port] = 0;
dp_status[port] = 0;
- usb_mux_set(port, USB_PD_MUX_NONE,
- USB_SWITCH_CONNECT, board_get_polarity(port));
+ board_usb_mux_set(port, USB_PD_MUX_NONE, USB_SWITCH_CONNECT,
+ board_get_polarity(port));
}
__override int svdm_enter_dp_mode(int port, uint32_t mode_caps)
@@ -152,12 +162,12 @@ __override int svdm_dp_config(int port, uint32_t *payload)
return 0;
if (board_has_virtual_mux())
- usb_mux_set(port, USB_PD_MUX_DP_ENABLED, USB_SWITCH_CONNECT,
- board_get_polarity(port));
+ board_usb_mux_set(port, USB_PD_MUX_DP_ENABLED,
+ USB_SWITCH_CONNECT, board_get_polarity(port));
else
- usb_mux_set(port, mf_pref ?
- USB_PD_MUX_DOCK : USB_PD_MUX_DP_ENABLED,
- USB_SWITCH_CONNECT, board_get_polarity(port));
+ board_usb_mux_set(
+ port, mf_pref ? USB_PD_MUX_DOCK : USB_PD_MUX_DP_ENABLED,
+ USB_SWITCH_CONNECT, board_get_polarity(port));
payload[0] = VDO(USB_SID_DISPLAYPORT, 1,
CMD_DP_CONFIG | VDO_OPOS(opos));