summaryrefslogtreecommitdiff
path: root/board/ezkinil
diff options
context:
space:
mode:
authorSue Chen <sue.chen@quanta.corp-partner.google.com>2021-07-02 10:10:19 +0800
committerCommit Bot <commit-bot@chromium.org>2021-07-30 04:28:53 +0000
commit05e69748e694ffe803ebc1422c25dda6dfc87d53 (patch)
tree885168cdc53502afbe50565e9b7aaf76a96ef8a9 /board/ezkinil
parent94aa170edecde87bc8331021540a1f9692b21569 (diff)
downloadchrome-ec-05e69748e694ffe803ebc1422c25dda6dfc87d53.tar.gz
Ezkinil: Add PS8818 for TYPEC C1 secondary MUX
Use SSFC bits 6-7 to choose which secondary MUX is used. BUG=b:192523667 BRANCH=zork TEST=After setting SSFC to 0x80 on the DUT with PS8818, the typec on DB works fine. Signed-off-by: Sue Chen <sue.chen@quanta.corp-partner.google.com> Change-Id: I8a66098d1e9b947acfb26b78f0cec7f835bf4c40 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3000894 Reviewed-by: Edward Hill <ecgh@chromium.org> Commit-Queue: Edward Hill <ecgh@chromium.org>
Diffstat (limited to 'board/ezkinil')
-rw-r--r--board/ezkinil/board.c23
-rw-r--r--board/ezkinil/board.h1
2 files changed, 23 insertions, 1 deletions
diff --git a/board/ezkinil/board.c b/board/ezkinil/board.c
index 69bf41d215..074a7694b0 100644
--- a/board/ezkinil/board.c
+++ b/board/ezkinil/board.c
@@ -6,6 +6,7 @@
#include "adc.h"
#include "adc_chip.h"
#include "button.h"
+#include "cbi_ssfc.h"
#include "charge_state_v2.h"
#include "cros_board_info.h"
#include "driver/accelgyro_bmi_common.h"
@@ -336,9 +337,29 @@ void motion_interrupt(enum gpio_signal signal)
* USB-C MUX/Retimer dynamic configuration
*/
+int board_usbc1_retimer_inhpd = IOEX_USB_C1_HPD_IN_DB;
+
static void setup_mux(void)
{
- if (ec_config_has_usbc1_retimer_tusb544()) {
+ enum ec_ssfc_c1_mux mux = get_cbi_ssfc_c1_mux();
+
+ if (mux == SSFC_C1_MUX_NONE && ec_config_has_usbc1_retimer_tusb544())
+ mux = SSFC_C1_MUX_TUSB544;
+
+ if (mux == SSFC_C1_MUX_PS8818) {
+ ccprints("C1 PS8818 detected");
+ /*
+ * Main MUX is FP5, secondary MUX is PS8818
+ *
+ * Replace usb_muxes[USBC_PORT_C1] with the AMD FP5
+ * table entry.
+ */
+ memcpy(&usb_muxes[USBC_PORT_C1],
+ &usbc1_amd_fp5_usb_mux,
+ sizeof(struct usb_mux));
+ /* Set the PS8818 as the secondary MUX */
+ usb_muxes[USBC_PORT_C1].next_mux = &usbc1_ps8818;
+ } else if (mux == SSFC_C1_MUX_TUSB544) {
ccprints("C1 TUSB544 detected");
/*
* Main MUX is FP5, secondary MUX is TUSB544
diff --git a/board/ezkinil/board.h b/board/ezkinil/board.h
index b823ded45a..e3ec10d456 100644
--- a/board/ezkinil/board.h
+++ b/board/ezkinil/board.h
@@ -204,6 +204,7 @@ static inline bool ec_config_has_hdmi_conn_hpd(void)
: GPIO_DP2_HPD)
extern const struct usb_mux usbc1_tusb544;
+extern const struct usb_mux usbc1_ps8818;
extern const struct usb_mux usbc1_ps8743;
extern struct usb_mux usbc1_amd_fp5_usb_mux;