Messages in this thread Patch in this message | | | From | Utkarsh Patel <> | Subject | [PATCH 7/8] usb: typec: intel_pmc_mux: Configure active cable properties for USB4 | Date | Mon, 9 Nov 2020 16:37:15 -0800 |
| |
Value received as a part of Thunderbolt 3 cable discover mode VDO needs to be configured in the USB4 mode for the Thunderbolt rounded support and active cable plug link training.
Suggested-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Utkarsh Patel <utkarsh.h.patel@intel.com> --- drivers/usb/typec/mux/intel_pmc_mux.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/typec/mux/intel_pmc_mux.c b/drivers/usb/typec/mux/intel_pmc_mux.c index aa3211f1c4c3..61feb358aad3 100644 --- a/drivers/usb/typec/mux/intel_pmc_mux.c +++ b/drivers/usb/typec/mux/intel_pmc_mux.c @@ -295,6 +295,7 @@ pmc_usb_mux_usb4(struct pmc_usb_port *port, struct typec_mux_state *state) { struct enter_usb_data *data = state->data; struct altmode_req req = { }; + u8 cable_rounded; u8 cable_speed; if (IOM_PORT_ACTIVITY_IS(port->iom_status, TBT) || @@ -308,9 +309,6 @@ pmc_usb_mux_usb4(struct pmc_usb_port *port, struct typec_mux_state *state) /* USB4 Mode */ req.mode_data = PMC_USB_ALTMODE_FORCE_LSR; - if (data->active_link_training) - req.mode_data |= PMC_USB_ALTMODE_ACTIVE_LINK; - req.mode_data |= (port->orientation - 1) << PMC_USB_ALTMODE_ORI_SHIFT; req.mode_data |= (port->role - 1) << PMC_USB_ALTMODE_UFP_SHIFT; @@ -322,6 +320,20 @@ pmc_usb_mux_usb4(struct pmc_usb_port *port, struct typec_mux_state *state) fallthrough; default: req.mode_data |= PMC_USB_ALTMODE_ACTIVE_CABLE; + + if (data->tbt_cable_vdo) { + /* Active Thunderbolt 3 cable */ + if (data->tbt_cable_vdo & TBT_CABLE_LINK_TRAINING) + req.mode_data |= PMC_USB_ALTMODE_ACTIVE_LINK; + + cable_rounded = + TBT_CABLE_ROUNDED_SUPPORT(data->tbt_cable_vdo); + req.mode_data |= PMC_USB_ALTMODE_TBT_GEN(cable_rounded); + } else { + /* Active USB4 cable */ + req.mode_data |= PMC_USB_ALTMODE_ACTIVE_LINK | + PMC_USB_ALTMODE_TBT_GEN(1); + } break; } -- 2.17.1
| |