diff options
author | Ting Shen <phoenixshen@google.com> | 2019-10-16 12:07:59 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-10-17 07:14:31 +0000 |
commit | 99c273e1ecd4f90aa8b883fd4ed9e56ca6bbbda1 (patch) | |
tree | 2eb2e688200ec0e1ad8417ff97091dc7aea9cfbf /baseboard | |
parent | 37edd51bc1465a873ede878978556542b8fe3c20 (diff) | |
download | chrome-ec-99c273e1ecd4f90aa8b883fd4ed9e56ca6bbbda1.tar.gz |
kukui: runtime usb mux config selection
The compile time IF_ENABLED(CONFIG_USB_MUX_XXX) does not work on kukui,
change this to runtime selection.
BUG=b:135079572
TEST=On Krane Rev5/Kodama, verify the mux switch to dp + usb mode
(i2cxfer r 0 0x48 0x11 returns 0x03 or 0x13)
BRANCH=kukui
Change-Id: Ib44f0c383ed5f9156e3dd3bf6faa3daebb22e146
Signed-off-by: Ting Shen <phoenixshen@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1864493
Tested-by: Ting Shen <phoenixshen@chromium.org>
Commit-Queue: Ting Shen <phoenixshen@chromium.org>
Reviewed-by: Eric Yilun Lin <yllin@chromium.org>
Diffstat (limited to 'baseboard')
-rw-r--r-- | baseboard/kukui/usb_pd_policy.c | 12 | ||||
-rw-r--r-- | baseboard/kukui/usb_pd_policy.h | 13 |
2 files changed, 22 insertions, 3 deletions
diff --git a/baseboard/kukui/usb_pd_policy.c b/baseboard/kukui/usb_pd_policy.c index 5d5ca68e2d..43136009d8 100644 --- a/baseboard/kukui/usb_pd_policy.c +++ b/baseboard/kukui/usb_pd_policy.c @@ -10,6 +10,7 @@ #include "timer.h" #include "usb_mux.h" #include "usb_pd.h" +#include "usb_pd_policy.h" #include "util.h" #define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args) @@ -239,6 +240,11 @@ static int dp_flags[CONFIG_USB_PD_PORT_COUNT]; /* DP Status VDM as returned by UFP */ static uint32_t dp_status[CONFIG_USB_PD_PORT_COUNT]; +__overridable int board_has_virtual_mux(void) +{ + return IS_ENABLED(CONFIG_USB_MUX_VIRTUAL); +} + static void svdm_safe_dp_mode(int port) { /* make DP interface safe until configure */ @@ -251,7 +257,7 @@ static void svdm_safe_dp_mode(int port) static int svdm_enter_dp_mode(int port, uint32_t mode_caps) { /* Kukui/Krane doesn't support superspeed lanes. */ - const uint32_t support_pin_mode = IS_ENABLED(CONFIG_USB_MUX_VIRTUAL) ? + const uint32_t support_pin_mode = board_has_virtual_mux() ? (MODE_DP_PIN_C | MODE_DP_PIN_E) : MODE_DP_PIN_ALL; /** @@ -293,7 +299,7 @@ static int svdm_dp_config(int port, uint32_t *payload) int pin_mode; /* Kukui doesn't support multi-function mode, mask it out. */ - if (IS_ENABLED(CONFIG_USB_MUX_VIRTUAL)) + if (board_has_virtual_mux()) status &= ~PD_VDO_DPSTS_MF_MASK; pin_mode = pd_dfp_dp_get_pin_mode(port, status); @@ -301,7 +307,7 @@ static int svdm_dp_config(int port, uint32_t *payload) if (!pin_mode) return 0; - if (IS_ENABLED(CONFIG_USB_MUX_VIRTUAL)) + if (board_has_virtual_mux()) usb_mux_set(port, TYPEC_MUX_DP, USB_SWITCH_CONNECT, board_get_polarity(port)); else diff --git a/baseboard/kukui/usb_pd_policy.h b/baseboard/kukui/usb_pd_policy.h new file mode 100644 index 0000000000..78e0213f53 --- /dev/null +++ b/baseboard/kukui/usb_pd_policy.h @@ -0,0 +1,13 @@ +/* Copyright 2019 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef __CROS_EC_BASEBOARD_USB_PD_POLICY_H +#define __CROS_EC_BASEBOARD_USB_PD_POLICY_H + +#include "common.h" + +__override_proto int board_has_virtual_mux(void); + +#endif /* __CROS_EC_BASEBOARD_USB_PD_POLICY_H */ |