summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Michalec <tm@semihalf.com>2022-07-20 14:01:48 +0200
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-09-13 11:17:43 +0000
commit7a31262e625a9b60cd3be8af991f4c2b71ddbc1c (patch)
tree54688bd9b4dad74f8597c3cda6ebfd90edfe9ff9
parentcee97725249c4a7b1f800544ad9620f133f36316 (diff)
downloadchrome-ec-7a31262e625a9b60cd3be8af991f4c2b71ddbc1c.tar.gz
zephyr: intelrvp: usb_mux: Split struct usb_mux in intelrvp boards
Update intelrvp boards to use new struct usb_mux_chain. LOW_COVERAGE_REASON=no test for adlrvp board yet BUG=b:236274003 TEST=zmake build -a TEST=./twister -T zephyr/test BRANCH=None Cq-Depend: chromium:3779618 Signed-off-by: Tomasz Michalec <tm@semihalf.com> Change-Id: I6f69cc3d4ce99837a0db6bb12d55b71551a0d577 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3780416 Tested-by: Tomasz Michalec <tmichalec@google.com> Commit-Queue: Tomasz Michalec <tmichalec@google.com> Reviewed-by: Keith Short <keithshort@chromium.org>
-rw-r--r--zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts24
-rw-r--r--zephyr/projects/intelrvp/adlrvp/src/adlrvp.c58
-rw-r--r--zephyr/projects/intelrvp/mtlrvp/usbc.dts24
3 files changed, 73 insertions, 33 deletions
diff --git a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts
index 0134636df5..322550960d 100644
--- a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts
+++ b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts
@@ -12,7 +12,11 @@
reg = <0>;
tcpc = <&tcpc_port0>;
chg = <&charger>;
- usb-muxes = <&usb_c0_bb_retimer &virtual_mux_c0>;
+ usb_mux_chain_0: usb-mux-chain-0 {
+ compatible = "cros-ec,usb-mux-chain";
+ usb-muxes = <&usb_c0_bb_retimer
+ &virtual_mux_c0>;
+ };
};
port0-muxes {
virtual_mux_c0: virtual-mux-c0 {
@@ -24,7 +28,11 @@
compatible = "named-usbc-port";
reg = <1>;
tcpc = <&tcpc_port1>;
- usb-muxes = <&usb_c1_bb_retimer &virtual_mux_c1>;
+ usb_mux_chain_1: usb-mux-chain-1 {
+ compatible = "cros-ec,usb-mux-chain";
+ usb-muxes = <&usb_c1_bb_retimer
+ &virtual_mux_c1>;
+ };
};
port1-muxes {
virtual_mux_c1: virtual-mux-c1 {
@@ -36,7 +44,11 @@
compatible = "named-usbc-port";
reg = <2>;
tcpc = <&tcpc_port2>;
- usb-muxes = <&usb_c2_bb_retimer &virtual_mux_c2>;
+ usb_mux_chain_2: usb-mux-chain-2 {
+ compatible = "cros-ec,usb-mux-chain";
+ usb-muxes = <&usb_c2_bb_retimer
+ &virtual_mux_c2>;
+ };
};
port2-muxes {
virtual_mux_c2: virtual-mux-c2 {
@@ -48,7 +60,11 @@
compatible = "named-usbc-port";
reg = <3>;
tcpc = <&tcpc_port3>;
- usb-muxes = <&usb_c3_bb_retimer &virtual_mux_c3>;
+ usb_mux_chain_3: usb-mux-chain-3 {
+ compatible = "cros-ec,usb-mux-chain";
+ usb-muxes = <&usb_c3_bb_retimer
+ &virtual_mux_c3>;
+ };
};
port3-muxes {
virtual_mux_c3: virtual-mux-c3 {
diff --git a/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c b/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c
index 59d7d59abb..0145ae744f 100644
--- a/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c
+++ b/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c
@@ -96,23 +96,29 @@ BUILD_ASSERT(ARRAY_SIZE(ppc_chips) == CONFIG_USB_PD_PORT_MAX_COUNT);
unsigned int ppc_cnt = ARRAY_SIZE(ppc_chips);
/* USB Mux Configuration for Soc side BB-Retimers for Dual retimer config */
-static struct usb_mux soc_side_bb_retimer0_usb_mux = {
- .usb_port = TYPE_C_PORT_0,
- .next_mux = USB_MUX_NEXT_POINTER(DT_NODELABEL(usbc_port0), 0),
- .driver = &bb_usb_retimer,
- .hpd_update = bb_retimer_hpd_update,
- .i2c_port = I2C_PORT_TYPEC_0,
- .i2c_addr_flags = I2C_PORT0_BB_RETIMER_SOC_ADDR,
+struct usb_mux_chain soc_side_bb_retimer0_usb_mux = {
+ .mux =
+ &(const struct usb_mux){
+ .usb_port = TYPE_C_PORT_0,
+ .driver = &bb_usb_retimer,
+ .hpd_update = bb_retimer_hpd_update,
+ .i2c_port = I2C_PORT_TYPEC_0,
+ .i2c_addr_flags = I2C_PORT0_BB_RETIMER_SOC_ADDR,
+ },
+ .next = &USB_MUX_CHAIN_STRUCT_NAME(1, 0),
};
#if defined(HAS_TASK_PD_C1)
-static struct usb_mux soc_side_bb_retimer1_usb_mux = {
- .usb_port = TYPE_C_PORT_1,
- .next_mux = USB_MUX_NEXT_POINTER(DT_NODELABEL(usbc_port1), 0),
- .driver = &bb_usb_retimer,
- .hpd_update = bb_retimer_hpd_update,
- .i2c_port = I2C_PORT_TYPEC_1,
- .i2c_addr_flags = I2C_PORT1_BB_RETIMER_SOC_ADDR,
+struct usb_mux_chain soc_side_bb_retimer1_usb_mux = {
+ .mux =
+ &(const struct usb_mux){
+ .usb_port = TYPE_C_PORT_1,
+ .driver = &bb_usb_retimer,
+ .hpd_update = bb_retimer_hpd_update,
+ .i2c_port = I2C_PORT_TYPEC_1,
+ .i2c_addr_flags = I2C_PORT1_BB_RETIMER_SOC_ADDR,
+ },
+ .next = &USB_MUX_CHAIN_STRUCT_NAME(1, 1),
};
#endif
@@ -244,25 +250,29 @@ static void configure_charger(void)
static void configure_retimer_usbmux(void)
{
+ struct usb_mux *mux;
+
switch (ADL_RVP_BOARD_ID(board_get_version())) {
case ADLN_LP5_ERB_SKU_BOARD_ID:
case ADLN_LP5_RVP_SKU_BOARD_ID:
/* enable TUSB1044RNQR redriver on Port0 */
- usb_muxes[TYPE_C_PORT_0].i2c_addr_flags =
- TUSB1064_I2C_ADDR14_FLAGS;
- usb_muxes[TYPE_C_PORT_0].driver = &tusb1064_usb_mux_driver;
- usb_muxes[TYPE_C_PORT_0].hpd_update = tusb1044_hpd_update;
+ mux = USB_MUX_POINTER(DT_NODELABEL(usb_mux_chain_0), 0);
+ mux->i2c_addr_flags = TUSB1064_I2C_ADDR14_FLAGS;
+ mux->driver = &tusb1064_usb_mux_driver;
+ mux->hpd_update = tusb1044_hpd_update;
#if defined(HAS_TASK_PD_C1)
- usb_muxes[TYPE_C_PORT_1].driver = NULL;
- usb_muxes[TYPE_C_PORT_1].hpd_update = NULL;
+ mux = USB_MUX_POINTER(DT_NODELABEL(usb_mux_chain_1), 0);
+ mux->driver = NULL;
+ mux->hpd_update = NULL;
#endif
break;
case ADLP_LP5_T4_RVP_SKU_BOARD_ID:
/* No retimer on Port-2 */
#if defined(HAS_TASK_PD_C2)
- usb_muxes[TYPE_C_PORT_2].driver = NULL;
+ mux = USB_MUX_POINTER(DT_NODELABEL(usb_mux_chain_2), 0);
+ mux->driver = NULL;
#endif
break;
@@ -272,11 +282,9 @@ static void configure_retimer_usbmux(void)
* Change the default usb mux config on runtime to support
* dual retimer topology.
*/
- usb_muxes[TYPE_C_PORT_0].next_mux =
- &soc_side_bb_retimer0_usb_mux;
+ usb_muxes[TYPE_C_PORT_0].next = &soc_side_bb_retimer0_usb_mux;
#if defined(HAS_TASK_PD_C1)
- usb_muxes[TYPE_C_PORT_1].next_mux =
- &soc_side_bb_retimer1_usb_mux;
+ usb_muxes[TYPE_C_PORT_1].next = &soc_side_bb_retimer1_usb_mux;
#endif
break;
diff --git a/zephyr/projects/intelrvp/mtlrvp/usbc.dts b/zephyr/projects/intelrvp/mtlrvp/usbc.dts
index caad49fc05..e4f3bdc465 100644
--- a/zephyr/projects/intelrvp/mtlrvp/usbc.dts
+++ b/zephyr/projects/intelrvp/mtlrvp/usbc.dts
@@ -13,7 +13,11 @@
reg = <0>;
tcpc = <&tcpc_port0>;
chg = <&charger>;
- usb-muxes = <&usb_c0_hb_retimer &virtual_mux_c0>;
+ usb-mux-chain-0 {
+ compatible = "cros-ec,usb-mux-chain";
+ usb-muxes = <&usb_c0_hb_retimer
+ &virtual_mux_c0>;
+ };
};
port0-muxes {
virtual_mux_c0: virtual-mux-c0 {
@@ -25,7 +29,11 @@
compatible = "named-usbc-port";
reg = <1>;
tcpc = <&tcpc_port1>;
- usb-muxes = <&usb_c1_hb_retimer &virtual_mux_c1>;
+ usb-mux-chain-1 {
+ compatible = "cros-ec,usb-mux-chain";
+ usb-muxes = <&usb_c1_hb_retimer
+ &virtual_mux_c1>;
+ };
};
port1-muxes {
virtual_mux_c1: virtual-mux-c1 {
@@ -37,7 +45,11 @@
compatible = "named-usbc-port";
reg = <2>;
tcpc = <&tcpc_port2>;
- usb-muxes = <&usb_c2_hb_retimer &virtual_mux_c2>;
+ usb-mux-chain-2 {
+ compatible = "cros-ec,usb-mux-chain";
+ usb-muxes = <&usb_c2_hb_retimer
+ &virtual_mux_c2>;
+ };
};
port2-muxes {
virtual_mux_c2: virtual-mux-c2 {
@@ -49,7 +61,11 @@
compatible = "named-usbc-port";
reg = <3>;
tcpc = <&tcpc_port3>;
- usb-muxes = <&usb_c3_hb_retimer &virtual_mux_c3>;
+ usb-mux-chain-3 {
+ compatible = "cros-ec,usb-mux-chain";
+ usb-muxes = <&usb_c3_hb_retimer
+ &virtual_mux_c3>;
+ };
};
port3-muxes {
virtual_mux_c3: virtual-mux-c3 {