Message ID | 20230718024703.1013367-3-utkarsh.h.patel@intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 8405bc521b768823ecc35f30792407dd247fb139 |
Headers | show |
Series | Add support to configure active retimer cable | expand |
On Mon, Jul 17, 2023 at 07:47:03PM -0700, Utkarsh Patel wrote: > Cable type such as active and retimer received as a part of Thunderbolt3 > or Thunderbolt4 cable discover mode VDO needs to be configured in the > thunderbolt alternate mode. > > Configuring the register bits for this cable type is changed with Intel > Meteor Lake platform. BIT2 for Retimer/Redriver cable and BIT22 for > Active/Passive cable. > > Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > Signed-off-by: Utkarsh Patel <utkarsh.h.patel@intel.com> > --- > Changes in v4: > - No changes. > > Changes in v3: > - No changes. > > Changes in v2: > - No changes. > --- > --- > drivers/usb/typec/mux/intel_pmc_mux.c | 28 +++++++++++++++++++++++---- > 1 file changed, 24 insertions(+), 4 deletions(-) Why the 2 --- lines? And why are you not cc:ing all the proper people (i.e. the person that can actually apply this...)? confused, greg k-h
Hi Greg, Thank you for the review and feedback. > -----Original Message----- > From: Greg KH <gregkh@linuxfoundation.org> > Sent: Tuesday, July 18, 2023 6:29 AM > To: Patel, Utkarsh H <utkarsh.h.patel@intel.com> > Cc: linux-kernel@vger.kernel.org; linux-usb@vger.kernel.org; > heikki.krogerus@linux.intel.com; pmalani@chromium.org; > bleung@chromium.org > Subject: Re: [PATCH v4 2/2] usb: typec: intel_pmc_mux: Configure Active and > Retimer Cable type > > On Mon, Jul 17, 2023 at 07:47:03PM -0700, Utkarsh Patel wrote: > > Cable type such as active and retimer received as a part of > > Thunderbolt3 or Thunderbolt4 cable discover mode VDO needs to be > > configured in the thunderbolt alternate mode. > > > > Configuring the register bits for this cable type is changed with > > Intel Meteor Lake platform. BIT2 for Retimer/Redriver cable and BIT22 > > for Active/Passive cable. > > > > Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > > Signed-off-by: Utkarsh Patel <utkarsh.h.patel@intel.com> > > --- > > Changes in v4: > > - No changes. > > > > Changes in v3: > > - No changes. > > > > Changes in v2: > > - No changes. > > --- > > --- > > drivers/usb/typec/mux/intel_pmc_mux.c | 28 > > +++++++++++++++++++++++---- > > 1 file changed, 24 insertions(+), 4 deletions(-) > > Why the 2 --- lines? This is by mistake. > > And why are you not cc:ing all the proper people (i.e. the person that can > actually apply this...)? > Ack. I will correct both of these when I send next patch. Sincerely, Utkarsh Patel.
diff --git a/drivers/usb/typec/mux/intel_pmc_mux.c b/drivers/usb/typec/mux/intel_pmc_mux.c index 5e8edf3881c0..888632847a74 100644 --- a/drivers/usb/typec/mux/intel_pmc_mux.c +++ b/drivers/usb/typec/mux/intel_pmc_mux.c @@ -59,7 +59,7 @@ enum { }; /* Common Mode Data bits */ -#define PMC_USB_ALTMODE_ACTIVE_CABLE BIT(2) +#define PMC_USB_ALTMODE_RETIMER_CABLE BIT(2) #define PMC_USB_ALTMODE_ORI_SHIFT 1 #define PMC_USB_ALTMODE_UFP_SHIFT 3 @@ -71,6 +71,7 @@ enum { #define PMC_USB_ALTMODE_TBT_TYPE BIT(17) #define PMC_USB_ALTMODE_CABLE_TYPE BIT(18) #define PMC_USB_ALTMODE_ACTIVE_LINK BIT(20) +#define PMC_USB_ALTMODE_ACTIVE_CABLE BIT(22) #define PMC_USB_ALTMODE_FORCE_LSR BIT(23) #define PMC_USB_ALTMODE_CABLE_SPD(_s_) (((_s_) & GENMASK(2, 0)) << 25) #define PMC_USB_ALTMODE_CABLE_USB31 1 @@ -319,8 +320,18 @@ pmc_usb_mux_tbt(struct pmc_usb_port *port, struct typec_mux_state *state) if (data->cable_mode & TBT_CABLE_LINK_TRAINING) req.mode_data |= PMC_USB_ALTMODE_ACTIVE_LINK; - if (data->enter_vdo & TBT_ENTER_MODE_ACTIVE_CABLE) - req.mode_data |= PMC_USB_ALTMODE_ACTIVE_CABLE; + if (acpi_dev_hid_uid_match(port->pmc->iom_adev, "INTC1072", NULL) || + acpi_dev_hid_uid_match(port->pmc->iom_adev, "INTC1079", NULL)) { + if ((data->enter_vdo & TBT_ENTER_MODE_ACTIVE_CABLE) || + (data->cable_mode & TBT_CABLE_RETIMER)) + req.mode_data |= PMC_USB_ALTMODE_RETIMER_CABLE; + } else { + if (data->enter_vdo & TBT_ENTER_MODE_ACTIVE_CABLE) + req.mode_data |= PMC_USB_ALTMODE_ACTIVE_CABLE; + + if (data->cable_mode & TBT_CABLE_RETIMER) + req.mode_data |= PMC_USB_ALTMODE_RETIMER_CABLE; + } req.mode_data |= PMC_USB_ALTMODE_CABLE_SPD(cable_speed); @@ -359,8 +370,17 @@ pmc_usb_mux_usb4(struct pmc_usb_port *port, struct typec_mux_state *state) case EUDO_CABLE_TYPE_OPTICAL: req.mode_data |= PMC_USB_ALTMODE_CABLE_TYPE; fallthrough; + case EUDO_CABLE_TYPE_RE_TIMER: + if (!acpi_dev_hid_uid_match(port->pmc->iom_adev, "INTC1072", NULL) || + !acpi_dev_hid_uid_match(port->pmc->iom_adev, "INTC1079", NULL)) + req.mode_data |= PMC_USB_ALTMODE_RETIMER_CABLE; + fallthrough; default: - req.mode_data |= PMC_USB_ALTMODE_ACTIVE_CABLE; + if (acpi_dev_hid_uid_match(port->pmc->iom_adev, "INTC1072", NULL) || + acpi_dev_hid_uid_match(port->pmc->iom_adev, "INTC1079", NULL)) + req.mode_data |= PMC_USB_ALTMODE_RETIMER_CABLE; + else + req.mode_data |= PMC_USB_ALTMODE_ACTIVE_CABLE; /* Configure data rate to rounded in the case of Active TBT3 * and USB4 cables.