Message ID | 20230811210735.159529-5-utkarsh.h.patel@intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Displayport Alternate Mode 2.1 Support | expand |
Hello! On 8/12/23 12:07 AM, Utkarsh Patel wrote: > Mux agent driver can configure cable details such as cable type and > cable speed received as a part of displayport configuration to support > Displayport Alternate mode 2.1. > > Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Hm, I think the R-b tags should follow your signoff... > Signed-off-by: Utkarsh Patel <utkarsh.h.patel@intel.com> > --- > drivers/usb/typec/mux/intel_pmc_mux.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/drivers/usb/typec/mux/intel_pmc_mux.c b/drivers/usb/typec/mux/intel_pmc_mux.c > index 888632847a74..218f6e25518d 100644 > --- a/drivers/usb/typec/mux/intel_pmc_mux.c > +++ b/drivers/usb/typec/mux/intel_pmc_mux.c [...] > @@ -282,6 +288,24 @@ pmc_usb_mux_dp(struct pmc_usb_port *port, struct typec_mux_state *state) > req.mode_data |= (state->mode - TYPEC_STATE_MODAL) << > PMC_USB_ALTMODE_DP_MODE_SHIFT; > > + if (!is_pmc_mux_tbt(port->pmc->iom_adev)) { > + u8 cable_speed = (data->conf & DP_CONF_SIGNALLING_MASK) >> > + DP_CONF_SIGNALLING_SHIFT; > + > + u8 cable_type = (data->conf & DP_CONF_CABLE_TYPE_MASK) >> > + DP_CONF_CABLE_TYPE_SHIFT; > + > + req.mode_data |= PMC_USB_ALTMODE_CABLE_SPD(cable_speed); > + > + if (cable_type == DP_CONF_CABLE_TYPE_OPTICAL) > + req.mode_data |= PMC_USB_ALTMODE_CABLE_TYPE; > + else if (cable_type == DP_CONF_CABLE_TYPE_RE_TIMER) > + req.mode_data |= PMC_USB_ALTMODE_ACTIVE_CABLE | > + PMC_USB_ALTMODE_RETIMER_CABLE; > + else if (cable_type == DP_CONF_CABLE_TYPE_RE_DRIVER) > + req.mode_data |= PMC_USB_ALTMODE_ACTIVE_CABLE; The chain of the *if* statements above is asking to use *switch* instead... [...] MBR, Sergey
On Sat, Aug 12, 2023 at 12:47:43PM +0300, Sergey Shtylyov wrote: > On 8/12/23 12:07 AM, Utkarsh Patel wrote: > > > Mux agent driver can configure cable details such as cable type and > > cable speed received as a part of displayport configuration to support > > Displayport Alternate mode 2.1. > > > > Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > > Hm, I think the R-b tags should follow your signoff... They following historical order. So, before this patch appears upstream, it had collected Rb tags. > > Signed-off-by: Utkarsh Patel <utkarsh.h.patel@intel.com>
On Mon, Aug 14, 2023 at 05:48:52PM +0300, Andy Shevchenko wrote: > On Sat, Aug 12, 2023 at 12:47:43PM +0300, Sergey Shtylyov wrote: > > On 8/12/23 12:07 AM, Utkarsh Patel wrote: > > > > > Mux agent driver can configure cable details such as cable type and > > > cable speed received as a part of displayport configuration to support > > > Displayport Alternate mode 2.1. > > > > > > Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > > Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > > > > Hm, I think the R-b tags should follow your signoff... > > They following historical order. > So, before this patch appears upstream, it had collected Rb tags. Note, Submitting Patches only defines the order rules to SoB tag, for Rb there is no such rule: "Both Tested-by and Reviewed-by tags, once received on mailing list from tester or reviewer, should be added by author to the applicable patches when sending next versions." > > > Signed-off-by: Utkarsh Patel <utkarsh.h.patel@intel.com>
diff --git a/drivers/usb/typec/mux/intel_pmc_mux.c b/drivers/usb/typec/mux/intel_pmc_mux.c index 888632847a74..218f6e25518d 100644 --- a/drivers/usb/typec/mux/intel_pmc_mux.c +++ b/drivers/usb/typec/mux/intel_pmc_mux.c @@ -180,6 +180,12 @@ static int hsl_orientation(struct pmc_usb_port *port) return port->orientation - 1; } +static bool is_pmc_mux_tbt(struct acpi_device *adev) +{ + return acpi_dev_hid_uid_match(adev, "INTC1072", NULL) || + acpi_dev_hid_uid_match(adev, "INTC1079", NULL); +} + static int pmc_usb_send_command(struct intel_scu_ipc_dev *ipc, u8 *msg, u32 len) { u8 response[4]; @@ -282,6 +288,24 @@ pmc_usb_mux_dp(struct pmc_usb_port *port, struct typec_mux_state *state) req.mode_data |= (state->mode - TYPEC_STATE_MODAL) << PMC_USB_ALTMODE_DP_MODE_SHIFT; + if (!is_pmc_mux_tbt(port->pmc->iom_adev)) { + u8 cable_speed = (data->conf & DP_CONF_SIGNALLING_MASK) >> + DP_CONF_SIGNALLING_SHIFT; + + u8 cable_type = (data->conf & DP_CONF_CABLE_TYPE_MASK) >> + DP_CONF_CABLE_TYPE_SHIFT; + + req.mode_data |= PMC_USB_ALTMODE_CABLE_SPD(cable_speed); + + if (cable_type == DP_CONF_CABLE_TYPE_OPTICAL) + req.mode_data |= PMC_USB_ALTMODE_CABLE_TYPE; + else if (cable_type == DP_CONF_CABLE_TYPE_RE_TIMER) + req.mode_data |= PMC_USB_ALTMODE_ACTIVE_CABLE | + PMC_USB_ALTMODE_RETIMER_CABLE; + else if (cable_type == DP_CONF_CABLE_TYPE_RE_DRIVER) + req.mode_data |= PMC_USB_ALTMODE_ACTIVE_CABLE; + } + ret = pmc_usb_command(port, (void *)&req, sizeof(req)); if (ret) return ret;