RE: [PATCH v2 7/8] usb: typec: intel_pmc_mux: Configure active cable properties for USB4
From: Patel, Utkarsh H
Date: Tue Nov 17 2020 - 17:38:13 EST
Hi Heikki,
> -----Original Message-----
> From: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>
> Sent: Tuesday, November 17, 2020 4:22 AM
> To: Patel, Utkarsh H <utkarsh.h.patel@xxxxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx; linux-usb@xxxxxxxxxxxxxxx;
> pmalani@xxxxxxxxxxxx; enric.balletbo@xxxxxxxxxxxxx; Mani, Rajmohan
> <rajmohan.mani@xxxxxxxxx>; Shaikh, Azhar <azhar.shaikh@xxxxxxxxx>
> Subject: Re: [PATCH v2 7/8] usb: typec: intel_pmc_mux: Configure active cable
> properties for USB4
>
> On Fri, Nov 13, 2020 at 12:25:02PM -0800, Utkarsh Patel wrote:
> > 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@xxxxxxxxxxxxxxx>
> > Signed-off-by: Utkarsh Patel <utkarsh.h.patel@xxxxxxxxx>
> >
> > --
> > Changes in v2:
> > - No change.
> > --
> > ---
> > 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);
>
> No need for the newline:
Ack
>
> 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;
> > }
>
> thanks,
>
> --
> Heikki
Sincerely,
Utkarsh Patel.