summaryrefslogtreecommitdiff
path: root/baseboard
diff options
context:
space:
mode:
authorTomasz Michalec <tm@semihalf.com>2022-07-20 11:36:05 +0200
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-09-13 11:12:21 +0000
commit23205994cc48ccf59620c723bcedddddcf1134f6 (patch)
treef14e1d55c88fe5e85e978ecaad468818b1e15b5f /baseboard
parentdedd3cb583894c4ea3b5370f6f02d5ecfd7eac6b (diff)
downloadchrome-ec-23205994cc48ccf59620c723bcedddddcf1134f6.tar.gz
brya: usb_mux: Split struct usb_mux in brya boards
Update brya boards to use new struct usb_mux_chain. BUG=b:236274003 TEST=make buildall BRANCH=None Cq-Depend: chromium:3748785 Signed-off-by: Tomasz Michalec <tm@semihalf.com> Change-Id: Ibfce1a895db0b179672f26cdf2c27b7168bf8985 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3779625 Tested-by: Tomasz Michalec <tmichalec@google.com> Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com> Commit-Queue: Tomasz Michalec <tmichalec@google.com> Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'baseboard')
-rw-r--r--baseboard/intelrvp/adlrvp.c152
1 files changed, 89 insertions, 63 deletions
diff --git a/baseboard/intelrvp/adlrvp.c b/baseboard/intelrvp/adlrvp.c
index 5f01b1659a..6f301be986 100644
--- a/baseboard/intelrvp/adlrvp.c
+++ b/baseboard/intelrvp/adlrvp.c
@@ -93,94 +93,123 @@ BUILD_ASSERT(ARRAY_SIZE(ppc_chips) == CONFIG_USB_PD_PORT_MAX_COUNT);
unsigned int ppc_cnt = ARRAY_SIZE(ppc_chips);
/* USB-C retimer Configuration */
-struct usb_mux usbc0_tcss_usb_mux = {
+struct usb_mux bb_retimer0_usb_mux = {
.usb_port = TYPE_C_PORT_0,
- .driver = &virtual_usb_mux_driver,
- .hpd_update = &virtual_hpd_update,
+ .driver = &bb_usb_retimer,
+ .hpd_update = bb_retimer_hpd_update,
+ .i2c_port = I2C_PORT_TYPEC_0,
+ .i2c_addr_flags = I2C_PORT0_BB_RETIMER_ADDR,
+};
+struct usb_mux_chain usbc0_tcss_usb_mux = {
+ .mux =
+ &(const struct usb_mux){
+ .usb_port = TYPE_C_PORT_0,
+ .driver = &virtual_usb_mux_driver,
+ .hpd_update = &virtual_hpd_update,
+ },
};
#if defined(HAS_TASK_PD_C1)
-struct usb_mux usbc1_tcss_usb_mux = {
+struct usb_mux bb_retimer1_usb_mux = {
.usb_port = TYPE_C_PORT_1,
- .driver = &virtual_usb_mux_driver,
- .hpd_update = &virtual_hpd_update,
+ .driver = &bb_usb_retimer,
+ .hpd_update = bb_retimer_hpd_update,
+ .i2c_port = I2C_PORT_TYPEC_1,
+ .i2c_addr_flags = I2C_PORT1_BB_RETIMER_ADDR,
+};
+struct usb_mux_chain usbc1_tcss_usb_mux = {
+ .mux =
+ &(const struct usb_mux){
+ .usb_port = TYPE_C_PORT_1,
+ .driver = &virtual_usb_mux_driver,
+ .hpd_update = &virtual_hpd_update,
+ },
};
#endif
#if defined(HAS_TASK_PD_C2)
-struct usb_mux usbc2_tcss_usb_mux = {
+struct usb_mux bb_retimer2_usb_mux = {
.usb_port = TYPE_C_PORT_2,
- .driver = &virtual_usb_mux_driver,
- .hpd_update = &virtual_hpd_update,
+ .driver = &bb_usb_retimer,
+ .hpd_update = bb_retimer_hpd_update,
+ .i2c_port = I2C_PORT_TYPEC_2,
+ .i2c_addr_flags = I2C_PORT2_BB_RETIMER_ADDR,
+};
+struct usb_mux_chain usbc2_tcss_usb_mux = {
+ .mux =
+ &(const struct usb_mux){
+ .usb_port = TYPE_C_PORT_2,
+ .driver = &virtual_usb_mux_driver,
+ .hpd_update = &virtual_hpd_update,
+ },
};
#endif
#if defined(HAS_TASK_PD_C3)
-struct usb_mux usbc3_tcss_usb_mux = {
- .usb_port = TYPE_C_PORT_3,
- .driver = &virtual_usb_mux_driver,
- .hpd_update = &virtual_hpd_update,
+struct usb_mux_chain usbc3_tcss_usb_mux = {
+ .mux =
+ &(const struct usb_mux){
+ .usb_port = TYPE_C_PORT_3,
+ .driver = &virtual_usb_mux_driver,
+ .hpd_update = &virtual_hpd_update,
+ },
};
#endif
/* USB muxes Configuration */
-struct usb_mux usb_muxes[] = {
+struct usb_mux_chain usb_muxes[] = {
[TYPE_C_PORT_0] = {
- .usb_port = TYPE_C_PORT_0,
- .next_mux = &usbc0_tcss_usb_mux,
- .driver = &bb_usb_retimer,
- .hpd_update = bb_retimer_hpd_update,
- .i2c_port = I2C_PORT_TYPEC_0,
- .i2c_addr_flags = I2C_PORT0_BB_RETIMER_ADDR,
+ .mux = &bb_retimer0_usb_mux,
+ .next = &usbc0_tcss_usb_mux,
},
#if defined(HAS_TASK_PD_C1)
[TYPE_C_PORT_1] = {
- .usb_port = TYPE_C_PORT_1,
- .next_mux = &usbc1_tcss_usb_mux,
- .driver = &bb_usb_retimer,
- .hpd_update = bb_retimer_hpd_update,
- .i2c_port = I2C_PORT_TYPEC_1,
- .i2c_addr_flags = I2C_PORT1_BB_RETIMER_ADDR,
+ .mux = &bb_retimer1_usb_mux,
+ .next = &usbc1_tcss_usb_mux,
},
#endif
#if defined(HAS_TASK_PD_C2)
[TYPE_C_PORT_2] = {
- .usb_port = TYPE_C_PORT_2,
- .next_mux = &usbc2_tcss_usb_mux,
- .driver = &bb_usb_retimer,
- .hpd_update = bb_retimer_hpd_update,
- .i2c_port = I2C_PORT_TYPEC_2,
- .i2c_addr_flags = I2C_PORT2_BB_RETIMER_ADDR,
+ .mux = &bb_retimer2_usb_mux,
+ .next = &usbc2_tcss_usb_mux,
},
#endif
#if defined(HAS_TASK_PD_C3)
[TYPE_C_PORT_3] = {
- .usb_port = TYPE_C_PORT_3,
- .next_mux = &usbc3_tcss_usb_mux,
- .driver = &bb_usb_retimer,
- .hpd_update = bb_retimer_hpd_update,
- .i2c_port = I2C_PORT_TYPEC_3,
- .i2c_addr_flags = I2C_PORT3_BB_RETIMER_ADDR,
+ .mux = &(const struct usb_mux) {
+ .usb_port = TYPE_C_PORT_3,
+ .driver = &bb_usb_retimer,
+ .hpd_update = bb_retimer_hpd_update,
+ .i2c_port = I2C_PORT_TYPEC_3,
+ .i2c_addr_flags = I2C_PORT3_BB_RETIMER_ADDR,
+ },
+ .next = &usbc3_tcss_usb_mux,
},
#endif
};
BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == CONFIG_USB_PD_PORT_MAX_COUNT);
/* USB Mux Configuration for Soc side BB-Retimers for Dual retimer config */
-struct usb_mux soc_side_bb_retimer0_usb_mux = {
- .usb_port = TYPE_C_PORT_0,
- .next_mux = &usbc0_tcss_usb_mux,
- .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 = &usbc0_tcss_usb_mux,
};
#if defined(HAS_TASK_PD_C1)
-struct usb_mux soc_side_bb_retimer1_usb_mux = {
- .usb_port = TYPE_C_PORT_1,
- .next_mux = &usbc1_tcss_usb_mux,
- .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 = &usbc1_tcss_usb_mux,
};
#endif
@@ -378,21 +407,20 @@ static void configure_retimer_usbmux(void)
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;
+ bb_retimer0_usb_mux.i2c_addr_flags = TUSB1064_I2C_ADDR14_FLAGS;
+ bb_retimer0_usb_mux.driver = &tusb1064_usb_mux_driver;
+ bb_retimer0_usb_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;
+ bb_retimer1_usb_mux.driver = NULL;
+ bb_retimer1_usb_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;
+ bb_retimer2_usb_mux.driver = NULL;
#endif
break;
@@ -402,11 +430,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;