* [PATCH v2 0/2] TypeC Connector Class driver improvements
@ 2020-07-30 22:52 Azhar Shaikh
2020-07-30 22:52 ` [PATCH v2 1/2] platform/chrome: cros_ec_typec: Send enum values to usb_role_switch_set_role() Azhar Shaikh
2020-07-30 22:52 ` [PATCH] platform/chrome: cros_ec_typec: Avoid setting usb role twice during disconnect Azhar Shaikh
0 siblings, 2 replies; 6+ messages in thread
From: Azhar Shaikh @ 2020-07-30 22:52 UTC (permalink / raw)
To: bleung, enric.balletbo, groeck, pmalani, linux-kernel
Cc: heikki.krogerus, azhar.shaikh, utkarsh.h.patel, casey.g.bowman,
rajmohan.mani
Changes in v2:
* Patch 1: "platform/chrome: cros_ec_typec: Send enum values to
usb_role_switch_set_role()"
* Update the commit message to change 'USB_ROLE_HOST in case of
UFP.' to 'USB_ROLE_HOST in case of DFP.'
* Patch 2: "platform/chrome: cros_ec_typec: Avoid setting usb role twice
during disconnect"
* New patch added.
Azhar Shaikh (2):
platform/chrome: cros_ec_typec: Send enum values to
usb_role_switch_set_role()
platform/chrome: cros_ec_typec: Avoid setting usb role twice during
disconnect
drivers/platform/chrome/cros_ec_typec.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v2 1/2] platform/chrome: cros_ec_typec: Send enum values to usb_role_switch_set_role() 2020-07-30 22:52 [PATCH v2 0/2] TypeC Connector Class driver improvements Azhar Shaikh @ 2020-07-30 22:52 ` Azhar Shaikh 2020-07-31 13:33 ` Heikki Krogerus 2020-07-30 22:52 ` [PATCH] platform/chrome: cros_ec_typec: Avoid setting usb role twice during disconnect Azhar Shaikh 1 sibling, 1 reply; 6+ messages in thread From: Azhar Shaikh @ 2020-07-30 22:52 UTC (permalink / raw) To: bleung, enric.balletbo, groeck, pmalani, linux-kernel Cc: heikki.krogerus, azhar.shaikh, utkarsh.h.patel, casey.g.bowman, rajmohan.mani usb_role_switch_set_role() has the second argument as enum for usb_role. Currently depending upon the data role i.e. UFP(0) or DFP(1) is sent. This eventually translates to USB_ROLE_NONE in case of UFP and USB_ROLE_DEVICE in case of DFP. Correct this by sending correct enum values as USB_ROLE_DEVICE in case of UFP and USB_ROLE_HOST in case of DFP. Fixes: 7e7def15fa4b ("platform/chrome: cros_ec_typec: Add USB mux control") Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com> Cc: Prashant Malani <pmalani@chromium.org> Reviewed-by: Prashant Malani <pmalani@chromium.org> --- drivers/platform/chrome/cros_ec_typec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c index 3eae01f4c9f7..eb4713b7ae14 100644 --- a/drivers/platform/chrome/cros_ec_typec.c +++ b/drivers/platform/chrome/cros_ec_typec.c @@ -590,7 +590,8 @@ static int cros_typec_port_update(struct cros_typec_data *typec, int port_num) dev_warn(typec->dev, "Configure muxes failed, err = %d\n", ret); return usb_role_switch_set_role(typec->ports[port_num]->role_sw, - !!(resp.role & PD_CTRL_RESP_ROLE_DATA)); + resp.role & PD_CTRL_RESP_ROLE_DATA + ? USB_ROLE_HOST : USB_ROLE_DEVICE); } static int cros_typec_get_cmd_version(struct cros_typec_data *typec) -- 2.17.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] platform/chrome: cros_ec_typec: Send enum values to usb_role_switch_set_role() 2020-07-30 22:52 ` [PATCH v2 1/2] platform/chrome: cros_ec_typec: Send enum values to usb_role_switch_set_role() Azhar Shaikh @ 2020-07-31 13:33 ` Heikki Krogerus 0 siblings, 0 replies; 6+ messages in thread From: Heikki Krogerus @ 2020-07-31 13:33 UTC (permalink / raw) To: Azhar Shaikh Cc: bleung, enric.balletbo, groeck, pmalani, linux-kernel, utkarsh.h.patel, casey.g.bowman, rajmohan.mani On Thu, Jul 30, 2020 at 03:52:56PM -0700, Azhar Shaikh wrote: > usb_role_switch_set_role() has the second argument as enum for usb_role. > Currently depending upon the data role i.e. UFP(0) or DFP(1) is sent. > This eventually translates to USB_ROLE_NONE in case of UFP and > USB_ROLE_DEVICE in case of DFP. Correct this by sending correct enum > values as USB_ROLE_DEVICE in case of UFP and USB_ROLE_HOST in case of > DFP. > > Fixes: 7e7def15fa4b ("platform/chrome: cros_ec_typec: Add USB mux control") > > Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com> > Cc: Prashant Malani <pmalani@chromium.org> > Reviewed-by: Prashant Malani <pmalani@chromium.org> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > drivers/platform/chrome/cros_ec_typec.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c > index 3eae01f4c9f7..eb4713b7ae14 100644 > --- a/drivers/platform/chrome/cros_ec_typec.c > +++ b/drivers/platform/chrome/cros_ec_typec.c > @@ -590,7 +590,8 @@ static int cros_typec_port_update(struct cros_typec_data *typec, int port_num) > dev_warn(typec->dev, "Configure muxes failed, err = %d\n", ret); > > return usb_role_switch_set_role(typec->ports[port_num]->role_sw, > - !!(resp.role & PD_CTRL_RESP_ROLE_DATA)); > + resp.role & PD_CTRL_RESP_ROLE_DATA > + ? USB_ROLE_HOST : USB_ROLE_DEVICE); > } > > static int cros_typec_get_cmd_version(struct cros_typec_data *typec) > -- > 2.17.1 -- heikki ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] platform/chrome: cros_ec_typec: Avoid setting usb role twice during disconnect 2020-07-30 22:52 [PATCH v2 0/2] TypeC Connector Class driver improvements Azhar Shaikh 2020-07-30 22:52 ` [PATCH v2 1/2] platform/chrome: cros_ec_typec: Send enum values to usb_role_switch_set_role() Azhar Shaikh @ 2020-07-30 22:52 ` Azhar Shaikh 2020-07-31 13:36 ` Heikki Krogerus 1 sibling, 1 reply; 6+ messages in thread From: Azhar Shaikh @ 2020-07-30 22:52 UTC (permalink / raw) To: bleung, enric.balletbo, groeck, pmalani, linux-kernel Cc: heikki.krogerus, azhar.shaikh, utkarsh.h.patel, casey.g.bowman, rajmohan.mani On disconnect port partner is removed and usb role is set to NONE. But then in cros_typec_port_update() the role is set again. Avoid this by moving usb_role_switch_set_role() to cros_typec_configure_mux(). Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com> Suggested-by: Prashant Malani <pmalani@chromium.org> --- drivers/platform/chrome/cros_ec_typec.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c index eb4713b7ae14..df97431b2275 100644 --- a/drivers/platform/chrome/cros_ec_typec.c +++ b/drivers/platform/chrome/cros_ec_typec.c @@ -515,6 +515,12 @@ static int cros_typec_configure_mux(struct cros_typec_data *typec, int port_num, if (ret) return ret; + ret = usb_role_switch_set_role(typec->ports[port_num]->role_sw, + pd_ctrl->role & PD_CTRL_RESP_ROLE_DATA + ? USB_ROLE_HOST : USB_ROLE_DEVICE); + if (ret) + return ret; + if (mux_flags & USB_PD_MUX_TBT_COMPAT_ENABLED) { ret = cros_typec_enable_tbt(typec, port_num, pd_ctrl); } else if (mux_flags & USB_PD_MUX_DP_ENABLED) { @@ -589,9 +595,7 @@ static int cros_typec_port_update(struct cros_typec_data *typec, int port_num) if (ret) dev_warn(typec->dev, "Configure muxes failed, err = %d\n", ret); - return usb_role_switch_set_role(typec->ports[port_num]->role_sw, - resp.role & PD_CTRL_RESP_ROLE_DATA - ? USB_ROLE_HOST : USB_ROLE_DEVICE); + return ret; } static int cros_typec_get_cmd_version(struct cros_typec_data *typec) -- 2.17.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/chrome: cros_ec_typec: Avoid setting usb role twice during disconnect 2020-07-30 22:52 ` [PATCH] platform/chrome: cros_ec_typec: Avoid setting usb role twice during disconnect Azhar Shaikh @ 2020-07-31 13:36 ` Heikki Krogerus 2020-08-03 15:57 ` Shaikh, Azhar 0 siblings, 1 reply; 6+ messages in thread From: Heikki Krogerus @ 2020-07-31 13:36 UTC (permalink / raw) To: Azhar Shaikh Cc: bleung, enric.balletbo, groeck, pmalani, linux-kernel, utkarsh.h.patel, casey.g.bowman, rajmohan.mani Hi, I guess this is was supposed to be PATCH v2 2/2, right? On Thu, Jul 30, 2020 at 03:52:57PM -0700, Azhar Shaikh wrote: > On disconnect port partner is removed and usb role is set to NONE. > But then in cros_typec_port_update() the role is set again. > Avoid this by moving usb_role_switch_set_role() to > cros_typec_configure_mux(). > > Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com> > Suggested-by: Prashant Malani <pmalani@chromium.org> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > drivers/platform/chrome/cros_ec_typec.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c > index eb4713b7ae14..df97431b2275 100644 > --- a/drivers/platform/chrome/cros_ec_typec.c > +++ b/drivers/platform/chrome/cros_ec_typec.c > @@ -515,6 +515,12 @@ static int cros_typec_configure_mux(struct cros_typec_data *typec, int port_num, > if (ret) > return ret; > > + ret = usb_role_switch_set_role(typec->ports[port_num]->role_sw, > + pd_ctrl->role & PD_CTRL_RESP_ROLE_DATA > + ? USB_ROLE_HOST : USB_ROLE_DEVICE); > + if (ret) > + return ret; > + > if (mux_flags & USB_PD_MUX_TBT_COMPAT_ENABLED) { > ret = cros_typec_enable_tbt(typec, port_num, pd_ctrl); > } else if (mux_flags & USB_PD_MUX_DP_ENABLED) { > @@ -589,9 +595,7 @@ static int cros_typec_port_update(struct cros_typec_data *typec, int port_num) > if (ret) > dev_warn(typec->dev, "Configure muxes failed, err = %d\n", ret); > > - return usb_role_switch_set_role(typec->ports[port_num]->role_sw, > - resp.role & PD_CTRL_RESP_ROLE_DATA > - ? USB_ROLE_HOST : USB_ROLE_DEVICE); > + return ret; > } > > static int cros_typec_get_cmd_version(struct cros_typec_data *typec) > -- > 2.17.1 thanks, -- heikki ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH] platform/chrome: cros_ec_typec: Avoid setting usb role twice during disconnect 2020-07-31 13:36 ` Heikki Krogerus @ 2020-08-03 15:57 ` Shaikh, Azhar 0 siblings, 0 replies; 6+ messages in thread From: Shaikh, Azhar @ 2020-08-03 15:57 UTC (permalink / raw) To: Heikki Krogerus Cc: bleung, enric.balletbo, groeck, pmalani, linux-kernel, Patel, Utkarsh H, Bowman, Casey G, Mani, Rajmohan Hi, > -----Original Message----- > From: Heikki Krogerus <heikki.krogerus@linux.intel.com> > Sent: Friday, July 31, 2020 6:37 AM > To: Shaikh, Azhar <azhar.shaikh@intel.com> > Cc: bleung@chromium.org; enric.balletbo@collabora.com; > groeck@chromium.org; pmalani@chromium.org; linux- > kernel@vger.kernel.org; Patel, Utkarsh H <utkarsh.h.patel@intel.com>; > Bowman, Casey G <casey.g.bowman@intel.com>; Mani, Rajmohan > <rajmohan.mani@intel.com> > Subject: Re: [PATCH] platform/chrome: cros_ec_typec: Avoid setting usb > role twice during disconnect > > Hi, > > I guess this is was supposed to be PATCH v2 2/2, right? > That is correct. > On Thu, Jul 30, 2020 at 03:52:57PM -0700, Azhar Shaikh wrote: > > On disconnect port partner is removed and usb role is set to NONE. > > But then in cros_typec_port_update() the role is set again. > > Avoid this by moving usb_role_switch_set_role() to > > cros_typec_configure_mux(). > > > > Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com> > > Suggested-by: Prashant Malani <pmalani@chromium.org> > > Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > > > --- > > drivers/platform/chrome/cros_ec_typec.c | 10 +++++++--- > > 1 file changed, 7 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/platform/chrome/cros_ec_typec.c > > b/drivers/platform/chrome/cros_ec_typec.c > > index eb4713b7ae14..df97431b2275 100644 > > --- a/drivers/platform/chrome/cros_ec_typec.c > > +++ b/drivers/platform/chrome/cros_ec_typec.c > > @@ -515,6 +515,12 @@ static int cros_typec_configure_mux(struct > cros_typec_data *typec, int port_num, > > if (ret) > > return ret; > > > > + ret = usb_role_switch_set_role(typec->ports[port_num]->role_sw, > > + pd_ctrl->role & > PD_CTRL_RESP_ROLE_DATA > > + ? USB_ROLE_HOST : USB_ROLE_DEVICE); > > + if (ret) > > + return ret; > > + > > if (mux_flags & USB_PD_MUX_TBT_COMPAT_ENABLED) { > > ret = cros_typec_enable_tbt(typec, port_num, pd_ctrl); > > } else if (mux_flags & USB_PD_MUX_DP_ENABLED) { @@ -589,9 > +595,7 @@ > > static int cros_typec_port_update(struct cros_typec_data *typec, int > port_num) > > if (ret) > > dev_warn(typec->dev, "Configure muxes failed, err = %d\n", > ret); > > > > - return usb_role_switch_set_role(typec->ports[port_num]- > >role_sw, > > - resp.role & PD_CTRL_RESP_ROLE_DATA > > - ? USB_ROLE_HOST : USB_ROLE_DEVICE); > > + return ret; > > } > > > > static int cros_typec_get_cmd_version(struct cros_typec_data *typec) > > -- > > 2.17.1 > > thanks, > > -- > heikki ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-08-03 15:57 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-07-30 22:52 [PATCH v2 0/2] TypeC Connector Class driver improvements Azhar Shaikh 2020-07-30 22:52 ` [PATCH v2 1/2] platform/chrome: cros_ec_typec: Send enum values to usb_role_switch_set_role() Azhar Shaikh 2020-07-31 13:33 ` Heikki Krogerus 2020-07-30 22:52 ` [PATCH] platform/chrome: cros_ec_typec: Avoid setting usb role twice during disconnect Azhar Shaikh 2020-07-31 13:36 ` Heikki Krogerus 2020-08-03 15:57 ` Shaikh, Azhar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®