summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLu Zhang <lu.zhang@bitland.corp-partner.google.com>2020-06-09 11:38:09 +0800
committerCommit Bot <commit-bot@chromium.org>2020-06-10 04:05:49 +0000
commit1587e30266cf7e2efdd6c11872fe98d2034e5279 (patch)
treee87cdce30dd63cf3df83c5ea3dadfcd16b51f052
parentd2ffb374350e59ac93a8cda6b38a58423b6f055e (diff)
downloadchrome-ec-1587e30266cf7e2efdd6c11872fe98d2034e5279.tar.gz
vilboz: Split mux to dalboz and vilboz
BUG=b:158125500 BRANCH=none TEST=make buildall -j Signed-off-by: Lu Zhang <lu.zhang@bitland.corp-partner.google.com> Change-Id: I0836daf254f1c1c1fb2d7fd45868b55517689cf9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2235236 Reviewed-by: Edward Hill <ecgh@chromium.org> Reviewed-by: Peter Marheine <pmarheine@chromium.org>
-rw-r--r--baseboard/zork/baseboard.c16
-rw-r--r--baseboard/zork/baseboard.h6
-rw-r--r--baseboard/zork/variant_dalboz.c71
-rw-r--r--baseboard/zork/variant_trembyle.c16
-rw-r--r--board/dalboz/board.c82
-rw-r--r--board/dalboz/board.h6
-rw-r--r--board/vilboz/board.c81
-rw-r--r--board/vilboz/board.h6
8 files changed, 193 insertions, 91 deletions
diff --git a/baseboard/zork/baseboard.c b/baseboard/zork/baseboard.c
index 8e78105a44..41fda62343 100644
--- a/baseboard/zork/baseboard.c
+++ b/baseboard/zork/baseboard.c
@@ -325,22 +325,6 @@ __override uint32_t board_override_feature_flags0(uint32_t flags0)
return flags0;
}
-void board_overcurrent_event(int port, int is_overcurrented)
-{
- switch (port) {
- case USBC_PORT_C0:
- ioex_set_level(IOEX_USB_C0_FAULT_ODL, !is_overcurrented);
- break;
-
- case USBC_PORT_C1:
- ioex_set_level(IOEX_USB_C1_FAULT_ODL, !is_overcurrented);
- break;
-
- default:
- break;
- }
-}
-
void board_hibernate(void)
{
int port;
diff --git a/baseboard/zork/baseboard.h b/baseboard/zork/baseboard.h
index 708ba40e4d..287f6293c9 100644
--- a/baseboard/zork/baseboard.h
+++ b/baseboard/zork/baseboard.h
@@ -150,7 +150,6 @@
#define CONFIG_USB_PD_DUAL_ROLE_AUTO_TOGGLE
#define CONFIG_USB_PD_LOGGING
#define CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT TYPEC_RP_3A0
-#define CONFIG_USB_PD_PORT_MAX_COUNT 2
#define CONFIG_USB_PD_TCPC_LOW_POWER
#define CONFIG_USB_PD_TCPM_MUX
#define CONFIG_USB_PD_TCPM_NCT38XX
@@ -160,7 +159,6 @@
#define CONFIG_USBC_PPC
#define CONFIG_USBC_PPC_SBU
#define CONFIG_USBC_PPC_AOZ1380
-#define CONFIG_USBC_PPC_NX20P3483
#define CONFIG_USBC_RETIMER_PI3HDX1204
#define CONFIG_USBC_SS_MUX
#define CONFIG_USBC_SS_MUX_DFP_ONLY
@@ -170,12 +168,12 @@
#define CONFIG_USB_MUX_RUNTIME_CONFIG
#if defined(VARIANT_ZORK_TREMBYLE)
+ #define CONFIG_USB_PD_PORT_MAX_COUNT 2
+ #define CONFIG_USBC_PPC_NX20P3483
#define CONFIG_USBC_RETIMER_PS8802
#define CONFIG_USBC_RETIMER_PS8818
#define CONFIG_IO_EXPANDER_PORT_COUNT USBC_PORT_COUNT
#elif defined(VARIANT_ZORK_DALBOZ)
- #define CONFIG_USB_MUX_PS8740
- #define CONFIG_USB_MUX_PS8743
#define CONFIG_IO_EXPANDER_PORT_COUNT IOEX_PORT_COUNT
#define CONFIG_USB_PORT_ENABLE_DYNAMIC
#endif
diff --git a/baseboard/zork/variant_dalboz.c b/baseboard/zork/variant_dalboz.c
index c7a9ae7e97..a3eb193e3e 100644
--- a/baseboard/zork/variant_dalboz.c
+++ b/baseboard/zork/variant_dalboz.c
@@ -5,17 +5,10 @@
#include "charger.h"
#include "common.h"
-#include "console.h"
#include "driver/charger/isl9241.h"
-#include "driver/ioexpander/pcal6408.h"
-#include "driver/tcpm/nct38xx.h"
-#include "driver/usb_mux/amd_fp5.h"
-#include "driver/usb_mux/ps8743.h"
#include "gpio.h"
#include "hooks.h"
#include "i2c.h"
-#include "ioexpander.h"
-#include "usb_mux.h"
const struct i2c_port_t i2c_ports[] = {
{
@@ -90,67 +83,3 @@ const struct charger_config_t chg_chips[] = {
};
const unsigned int chg_cnt = ARRAY_SIZE(chg_chips);
-/*****************************************************************************
- * USB-C
- */
-
-/*
- * USB C0 port SBU mux use standalone FSUSB42UMX
- * chip and it need a board specific driver.
- * Overall, it will use chained mux framework.
- */
-static int fsusb42umx_set_mux(const struct usb_mux *me, mux_state_t mux_state)
-{
- if (mux_state & USB_PD_MUX_POLARITY_INVERTED)
- ioex_set_level(IOEX_USB_C0_SBU_FLIP, 1);
- else
- ioex_set_level(IOEX_USB_C0_SBU_FLIP, 0);
-
- return EC_SUCCESS;
-}
-
-/*
- * .init is not necessary here because it has nothing
- * to do. Primary mux will handle mux state so .get is
- * not needed as well. usb_mux.c can handle the situation
- * properly.
- */
-const struct usb_mux_driver usbc0_sbu_mux_driver = {
- .set = fsusb42umx_set_mux,
-};
-
-/*
- * Since FSUSB42UMX is not a i2c device, .i2c_port and
- * .i2c_addr_flags are not required here.
- */
-const struct usb_mux usbc0_sbu_mux = {
- .usb_port = USBC_PORT_C0,
- .driver = &usbc0_sbu_mux_driver,
-};
-
-struct usb_mux usbc1_amd_fp5_usb_mux = {
- .usb_port = USBC_PORT_C1,
- .i2c_port = I2C_PORT_USB_AP_MUX,
- .i2c_addr_flags = AMD_FP5_MUX_I2C_ADDR_FLAGS,
- .driver = &amd_fp5_usb_mux_driver,
- .flags = USB_MUX_FLAG_SET_WITHOUT_FLIP,
-};
-
-struct usb_mux usb_muxes[] = {
- [USBC_PORT_C0] = {
- .usb_port = USBC_PORT_C0,
- .i2c_port = I2C_PORT_USB_AP_MUX,
- .i2c_addr_flags = AMD_FP5_MUX_I2C_ADDR_FLAGS,
- .driver = &amd_fp5_usb_mux_driver,
- .next_mux = &usbc0_sbu_mux,
- },
- [USBC_PORT_C1] = {
- .usb_port = USBC_PORT_C1,
- .i2c_port = I2C_PORT_TCPC1,
- .i2c_addr_flags = PS8743_I2C_ADDR1_FLAG,
- .driver = &ps8743_usb_mux_driver,
- .next_mux = &usbc1_amd_fp5_usb_mux,
- }
-};
-BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT);
-
diff --git a/baseboard/zork/variant_trembyle.c b/baseboard/zork/variant_trembyle.c
index ac39568835..3e76cc2bdf 100644
--- a/baseboard/zork/variant_trembyle.c
+++ b/baseboard/zork/variant_trembyle.c
@@ -228,6 +228,22 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_overcurrent_event(int port, int is_overcurrented)
+{
+ switch (port) {
+ case USBC_PORT_C0:
+ ioex_set_level(IOEX_USB_C0_FAULT_ODL, !is_overcurrented);
+ break;
+
+ case USBC_PORT_C1:
+ ioex_set_level(IOEX_USB_C1_FAULT_ODL, !is_overcurrented);
+ break;
+
+ default:
+ break;
+ }
+}
+
const struct tcpc_config_t tcpc_config[] = {
[USBC_PORT_C0] = {
.bus_type = EC_BUS_TYPE_I2C,
diff --git a/board/dalboz/board.c b/board/dalboz/board.c
index edfcdafc77..7bb4c20a5f 100644
--- a/board/dalboz/board.c
+++ b/board/dalboz/board.c
@@ -13,6 +13,7 @@
#include "driver/ppc/aoz1380.h"
#include "driver/ppc/nx20p348x.h"
#include "driver/tcpm/nct38xx.h"
+#include "driver/usb_mux/amd_fp5.h"
#include "driver/usb_mux/ps8740.h"
#include "driver/usb_mux/ps8743.h"
#include "extpower.h"
@@ -198,6 +199,71 @@ static int board_ps8743_mux_set(const struct usb_mux *me,
return EC_SUCCESS;
}
+
+/*****************************************************************************
+ * USB-C
+ */
+
+/*
+ * USB C0 port SBU mux use standalone FSUSB42UMX
+ * chip and it need a board specific driver.
+ * Overall, it will use chained mux framework.
+ */
+static int fsusb42umx_set_mux(const struct usb_mux *me, mux_state_t mux_state)
+{
+ if (mux_state & USB_PD_MUX_POLARITY_INVERTED)
+ ioex_set_level(IOEX_USB_C0_SBU_FLIP, 1);
+ else
+ ioex_set_level(IOEX_USB_C0_SBU_FLIP, 0);
+
+ return EC_SUCCESS;
+}
+
+/*
+ * .init is not necessary here because it has nothing
+ * to do. Primary mux will handle mux state so .get is
+ * not needed as well. usb_mux.c can handle the situation
+ * properly.
+ */
+const struct usb_mux_driver usbc0_sbu_mux_driver = {
+ .set = fsusb42umx_set_mux,
+};
+
+/*
+ * Since FSUSB42UMX is not a i2c device, .i2c_port and
+ * .i2c_addr_flags are not required here.
+ */
+const struct usb_mux usbc0_sbu_mux = {
+ .usb_port = USBC_PORT_C0,
+ .driver = &usbc0_sbu_mux_driver,
+};
+
+struct usb_mux usbc1_amd_fp5_usb_mux = {
+ .usb_port = USBC_PORT_C1,
+ .i2c_port = I2C_PORT_USB_AP_MUX,
+ .i2c_addr_flags = AMD_FP5_MUX_I2C_ADDR_FLAGS,
+ .driver = &amd_fp5_usb_mux_driver,
+ .flags = USB_MUX_FLAG_SET_WITHOUT_FLIP,
+};
+
+struct usb_mux usb_muxes[] = {
+ [USBC_PORT_C0] = {
+ .usb_port = USBC_PORT_C0,
+ .i2c_port = I2C_PORT_USB_AP_MUX,
+ .i2c_addr_flags = AMD_FP5_MUX_I2C_ADDR_FLAGS,
+ .driver = &amd_fp5_usb_mux_driver,
+ .next_mux = &usbc0_sbu_mux,
+ },
+ [USBC_PORT_C1] = {
+ .usb_port = USBC_PORT_C1,
+ .i2c_port = I2C_PORT_TCPC1,
+ .i2c_addr_flags = PS8743_I2C_ADDR1_FLAG,
+ .driver = &ps8743_usb_mux_driver,
+ .next_mux = &usbc1_amd_fp5_usb_mux,
+ }
+};
+BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT);
+
struct ppc_config_t ppc_chips[] = {
[USBC_PORT_C0] = {
/* Device does not talk I2C */
@@ -283,6 +349,22 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_overcurrent_event(int port, int is_overcurrented)
+{
+ switch (port) {
+ case USBC_PORT_C0:
+ ioex_set_level(IOEX_USB_C0_FAULT_ODL, !is_overcurrented);
+ break;
+
+ case USBC_PORT_C1:
+ ioex_set_level(IOEX_USB_C1_FAULT_ODL, !is_overcurrented);
+ break;
+
+ default:
+ break;
+ }
+}
+
const struct tcpc_config_t tcpc_config[] = {
[USBC_PORT_C0] = {
.bus_type = EC_BUS_TYPE_I2C,
diff --git a/board/dalboz/board.h b/board/dalboz/board.h
index 392a3d1f37..389aeb3587 100644
--- a/board/dalboz/board.h
+++ b/board/dalboz/board.h
@@ -23,6 +23,12 @@
#define CONFIG_IO_EXPANDER_PCAL6408
#define CONFIG_MKBP_USE_GPIO
+#define CONFIG_USBC_PPC_NX20P3483
+#define CONFIG_USB_MUX_PS8740
+#define CONFIG_USB_MUX_PS8743
+
+#define CONFIG_USB_PD_PORT_MAX_COUNT 2
+
/* Power LEDs */
#define CONFIG_LED_POWER_LED
diff --git a/board/vilboz/board.c b/board/vilboz/board.c
index b3f06498db..6c7a153c75 100644
--- a/board/vilboz/board.c
+++ b/board/vilboz/board.c
@@ -13,6 +13,7 @@
#include "driver/ppc/aoz1380.h"
#include "driver/ppc/nx20p348x.h"
#include "driver/tcpm/nct38xx.h"
+#include "driver/usb_mux/amd_fp5.h"
#include "driver/usb_mux/ps8740.h"
#include "driver/usb_mux/ps8743.h"
#include "extpower.h"
@@ -180,6 +181,70 @@ static int board_ps8743_mux_set(const struct usb_mux *me,
return ps8743_write(me, PS8743_REG_MODE, reg);
}
+/*****************************************************************************
+ * USB-C
+ */
+
+/*
+ * USB C0 port SBU mux use standalone FSUSB42UMX
+ * chip and it need a board specific driver.
+ * Overall, it will use chained mux framework.
+ */
+static int fsusb42umx_set_mux(const struct usb_mux *me, mux_state_t mux_state)
+{
+ if (mux_state & USB_PD_MUX_POLARITY_INVERTED)
+ ioex_set_level(IOEX_USB_C0_SBU_FLIP, 1);
+ else
+ ioex_set_level(IOEX_USB_C0_SBU_FLIP, 0);
+
+ return EC_SUCCESS;
+}
+
+/*
+ * .init is not necessary here because it has nothing
+ * to do. Primary mux will handle mux state so .get is
+ * not needed as well. usb_mux.c can handle the situation
+ * properly.
+ */
+const struct usb_mux_driver usbc0_sbu_mux_driver = {
+ .set = fsusb42umx_set_mux,
+};
+
+/*
+ * Since FSUSB42UMX is not a i2c device, .i2c_port and
+ * .i2c_addr_flags are not required here.
+ */
+const struct usb_mux usbc0_sbu_mux = {
+ .usb_port = USBC_PORT_C0,
+ .driver = &usbc0_sbu_mux_driver,
+};
+
+struct usb_mux usbc1_amd_fp5_usb_mux = {
+ .usb_port = USBC_PORT_C1,
+ .i2c_port = I2C_PORT_USB_AP_MUX,
+ .i2c_addr_flags = AMD_FP5_MUX_I2C_ADDR_FLAGS,
+ .driver = &amd_fp5_usb_mux_driver,
+ .flags = USB_MUX_FLAG_SET_WITHOUT_FLIP,
+};
+
+struct usb_mux usb_muxes[] = {
+ [USBC_PORT_C0] = {
+ .usb_port = USBC_PORT_C0,
+ .i2c_port = I2C_PORT_USB_AP_MUX,
+ .i2c_addr_flags = AMD_FP5_MUX_I2C_ADDR_FLAGS,
+ .driver = &amd_fp5_usb_mux_driver,
+ .next_mux = &usbc0_sbu_mux,
+ },
+ [USBC_PORT_C1] = {
+ .usb_port = USBC_PORT_C1,
+ .i2c_port = I2C_PORT_TCPC1,
+ .i2c_addr_flags = PS8743_I2C_ADDR1_FLAG,
+ .driver = &ps8743_usb_mux_driver,
+ .next_mux = &usbc1_amd_fp5_usb_mux,
+ }
+};
+BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT);
+
struct ppc_config_t ppc_chips[] = {
[USBC_PORT_C0] = {
/* Device does not talk I2C */
@@ -265,6 +330,22 @@ int board_set_active_charge_port(int port)
return EC_SUCCESS;
}
+void board_overcurrent_event(int port, int is_overcurrented)
+{
+ switch (port) {
+ case USBC_PORT_C0:
+ ioex_set_level(IOEX_USB_C0_FAULT_ODL, !is_overcurrented);
+ break;
+
+ case USBC_PORT_C1:
+ ioex_set_level(IOEX_USB_C1_FAULT_ODL, !is_overcurrented);
+ break;
+
+ default:
+ break;
+ }
+}
+
const struct tcpc_config_t tcpc_config[] = {
[USBC_PORT_C0] = {
.bus_type = EC_BUS_TYPE_I2C,
diff --git a/board/vilboz/board.h b/board/vilboz/board.h
index a4ebee6585..fa95f0bd0d 100644
--- a/board/vilboz/board.h
+++ b/board/vilboz/board.h
@@ -22,6 +22,12 @@
#define CONFIG_MKBP_USE_GPIO
+#define CONFIG_USBC_PPC_NX20P3483
+#define CONFIG_USB_MUX_PS8740
+#define CONFIG_USB_MUX_PS8743
+
+#define CONFIG_USB_PD_PORT_MAX_COUNT 2
+
/* Power LEDs */
#define CONFIG_LED_POWER_LED