Message ID | 20250404-ml-topic-tcpm-v1-1-b99f44badce8@pengutronix.de |
---|---|
State | New |
Headers | show |
Series | usb: typec: tcpm: sink (ufp) accessory mode support | expand |
+Badhri On Fri, Apr 04, 2025 at 12:43:04AM +0200, Michael Grzeschik wrote: > Since the function tcpm_acc_attach is not setting the data and role for > for the sink case we extend it to check for it first. > > Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > drivers/usb/typec/tcpm/tcpm.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c > index a99db4e025cd0..839697c14265e 100644 > --- a/drivers/usb/typec/tcpm/tcpm.c > +++ b/drivers/usb/typec/tcpm/tcpm.c > @@ -4551,12 +4551,17 @@ static void tcpm_snk_detach(struct tcpm_port *port) > static int tcpm_acc_attach(struct tcpm_port *port) > { > int ret; > + enum typec_role role; > + enum typec_data_role data; > > if (port->attached) > return 0; > > - ret = tcpm_set_roles(port, true, TYPEC_SOURCE, > - tcpm_data_role_for_source(port)); > + role = tcpm_port_is_sink(port) ? TYPEC_SINK : TYPEC_SOURCE; > + data = tcpm_port_is_sink(port) ? tcpm_data_role_for_sink(port) > + : tcpm_data_role_for_source(port); > + > + ret = tcpm_set_roles(port, true, role, data); > if (ret < 0) > return ret; >
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index a99db4e025cd0..839697c14265e 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -4551,12 +4551,17 @@ static void tcpm_snk_detach(struct tcpm_port *port) static int tcpm_acc_attach(struct tcpm_port *port) { int ret; + enum typec_role role; + enum typec_data_role data; if (port->attached) return 0; - ret = tcpm_set_roles(port, true, TYPEC_SOURCE, - tcpm_data_role_for_source(port)); + role = tcpm_port_is_sink(port) ? TYPEC_SINK : TYPEC_SOURCE; + data = tcpm_port_is_sink(port) ? tcpm_data_role_for_sink(port) + : tcpm_data_role_for_source(port); + + ret = tcpm_set_roles(port, true, role, data); if (ret < 0) return ret;
Since the function tcpm_acc_attach is not setting the data and role for for the sink case we extend it to check for it first. Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> --- drivers/usb/typec/tcpm/tcpm.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)