* [PATCH v5 0/3] TypeC Connector Class driver improvements
@ 2020-08-21 21:47 Azhar Shaikh
2020-08-21 21:47 ` [PATCH v5 1/3] platform/chrome: cros_ec_typec: Send enum values to usb_role_switch_set_role() Azhar Shaikh
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Azhar Shaikh @ 2020-08-21 21:47 UTC (permalink / raw)
To: bleung, enric.balletbo, groeck, heikki.krogerus, pmalani
Cc: linux-kernel, azhar.shaikh, rajmohan.mani, utkarsh.h.patel,
casey.g.bowman
Changes in v5:
* Patch 1: "platform/chrome: cros_ec_typec: Send enum values to
usb_role_switch_set_role()"
- Rebased on top of https://lkml.org/lkml/2020/7/10/1063
* Patch 2: "platform/chrome: cros_ec_typec: Avoid setting usb role twice
during disconnect"
- Rebased on top of https://lkml.org/lkml/2020/7/10/1063
- Added Reviewed-by from v4
* Patch 3: "platform/chrome: cros_ec_typec: Re-order connector
configuration steps"
- Rebased on top of https://lkml.org/lkml/2020/7/10/1063
- Added Reviewed-by from v4
Changes in v4:
* Patch 1: "platform/chrome: cros_ec_typec: Send enum values to
usb_role_switch_set_role()"
- Remove extra line between Fixes and Signed-off tag.
- Added Reviewed-by and Cc tags from v1 and v2.
* Patch 2: "platform/chrome: cros_ec_typec: Avoid setting usb role twice
during disconnect"
- Added Suggested-by from v2.
* Patch 3: "platform/chrome: cros_ec_typec: Re-order connector
configuration steps"
- No change
Changes in v3:
* Patch 1: "platform/chrome: cros_ec_typec: Send enum values to
usb_role_switch_set_role()"
- No change
* Patch 2: "platform/chrome: cros_ec_typec: Avoid setting usb role twice
during disconnect"
- Move the location of calling usb_role_switch_set_role() to
end of function in cros_typec_configure_mux() to avoid any change
in code flow.
* Patch 3: "platform/chrome: cros_ec_typec: Re-order connector
configuration steps"
- New patch added
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 (3):
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
platform/chrome: cros_ec_typec: Re-order connector configuration steps
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 v5 1/3] platform/chrome: cros_ec_typec: Send enum values to usb_role_switch_set_role()
2020-08-21 21:47 [PATCH v5 0/3] TypeC Connector Class driver improvements Azhar Shaikh
@ 2020-08-21 21:47 ` Azhar Shaikh
2020-08-21 21:47 ` [PATCH v5 2/3] platform/chrome: cros_ec_typec: Avoid setting usb role twice during disconnect Azhar Shaikh
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Azhar Shaikh @ 2020-08-21 21:47 UTC (permalink / raw)
To: bleung, enric.balletbo, groeck, heikki.krogerus, pmalani
Cc: linux-kernel, azhar.shaikh, rajmohan.mani, utkarsh.h.patel,
casey.g.bowman
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>
---
Changes in v5:
- Rebased on top of https://lkml.org/lkml/2020/7/10/1063
Changes in v4:
- Remove extra line between Fixes and Signed-off tag.
- Added Reviewed-by and Cc tags from v1 and v2.
Changes in v3:
- No changes
Changes in v2:
- Update the commit message to change 'USB_ROLE_HOST in case of
UFP.' to 'USB_ROLE_HOST in case of DFP.'
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 585f27e2b362..739a1c846949 100644
--- a/drivers/platform/chrome/cros_ec_typec.c
+++ b/drivers/platform/chrome/cros_ec_typec.c
@@ -622,7 +622,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
* [PATCH v5 2/3] platform/chrome: cros_ec_typec: Avoid setting usb role twice during disconnect
2020-08-21 21:47 [PATCH v5 0/3] TypeC Connector Class driver improvements Azhar Shaikh
2020-08-21 21:47 ` [PATCH v5 1/3] platform/chrome: cros_ec_typec: Send enum values to usb_role_switch_set_role() Azhar Shaikh
@ 2020-08-21 21:47 ` Azhar Shaikh
2020-08-21 21:47 ` [PATCH v5 3/3] platform/chrome: cros_ec_typec: Re-order connector configuration steps Azhar Shaikh
2020-09-01 9:07 ` [PATCH v5 0/3] TypeC Connector Class driver improvements Enric Balletbo i Serra
3 siblings, 0 replies; 6+ messages in thread
From: Azhar Shaikh @ 2020-08-21 21:47 UTC (permalink / raw)
To: bleung, enric.balletbo, groeck, heikki.krogerus, pmalani
Cc: linux-kernel, azhar.shaikh, rajmohan.mani, utkarsh.h.patel,
casey.g.bowman
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().
Suggested-by: Prashant Malani <pmalani@chromium.org>
Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
---
Changes in v5:
- Rebased on top of https://lkml.org/lkml/2020/7/10/1063
- Added Reviewed-by from v4
Changes in v4:
- Added Suggested-by from v2.
Changes in v3:
- Move the location of calling usb_role_switch_set_role() to
end of function in cros_typec_configure_mux() to avoid any change
in code flow.
Changes in v2:
- New patch added
drivers/platform/chrome/cros_ec_typec.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c
index 739a1c846949..39989069decf 100644
--- a/drivers/platform/chrome/cros_ec_typec.c
+++ b/drivers/platform/chrome/cros_ec_typec.c
@@ -564,7 +564,12 @@ static int cros_typec_configure_mux(struct cros_typec_data *typec, int port_num,
ret = -ENOTSUPP;
}
- return ret;
+ if (ret)
+ return ret;
+
+ return 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);
}
static int cros_typec_port_update(struct cros_typec_data *typec, int port_num)
@@ -621,9 +626,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
* [PATCH v5 3/3] platform/chrome: cros_ec_typec: Re-order connector configuration steps
2020-08-21 21:47 [PATCH v5 0/3] TypeC Connector Class driver improvements Azhar Shaikh
2020-08-21 21:47 ` [PATCH v5 1/3] platform/chrome: cros_ec_typec: Send enum values to usb_role_switch_set_role() Azhar Shaikh
2020-08-21 21:47 ` [PATCH v5 2/3] platform/chrome: cros_ec_typec: Avoid setting usb role twice during disconnect Azhar Shaikh
@ 2020-08-21 21:47 ` Azhar Shaikh
2020-09-01 9:07 ` [PATCH v5 0/3] TypeC Connector Class driver improvements Enric Balletbo i Serra
3 siblings, 0 replies; 6+ messages in thread
From: Azhar Shaikh @ 2020-08-21 21:47 UTC (permalink / raw)
To: bleung, enric.balletbo, groeck, heikki.krogerus, pmalani
Cc: linux-kernel, azhar.shaikh, rajmohan.mani, utkarsh.h.patel,
casey.g.bowman
As per USB Type-C Spec R2.0 section 4.5.1.2 (Connecting Sources and Sinks)
and section 4.5.2.2 (Connection State Machine Requirements), the typical
flow for configuring a device connected to a typeC port is as below:
1. Source/sink detection
2. Orientation
3. Data role
4. VCONN
5. VBUS (USB Type-C currents)
6. The connector is now configured. We can start the PD communication
that should lead into configuration of the mux if we enter a mode.
But in existing code data role was set after the connector and mux are
already configured. So fix this by following the spec to set the data
role before the connector and mux are configured.
Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com>
Reviewed-by: Prashant Malani <pmalani@chromium.org>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
---
Changes in v5:
- Rebased on top of https://lkml.org/lkml/2020/7/10/1063
- Added Reviewed-by from v4
Changes in v4:
- No change
Changes in v3:
- New patch added
drivers/platform/chrome/cros_ec_typec.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c
index 39989069decf..31be31161350 100644
--- a/drivers/platform/chrome/cros_ec_typec.c
+++ b/drivers/platform/chrome/cros_ec_typec.c
@@ -545,6 +545,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_USB4_ENABLED) {
ret = cros_typec_enable_usb4(typec, port_num, pd_ctrl);
} else if (mux_flags & USB_PD_MUX_TBT_COMPAT_ENABLED) {
@@ -564,12 +570,7 @@ static int cros_typec_configure_mux(struct cros_typec_data *typec, int port_num,
ret = -ENOTSUPP;
}
- if (ret)
- return ret;
-
- return 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);
+ return ret;
}
static int cros_typec_port_update(struct cros_typec_data *typec, int port_num)
--
2.17.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v5 0/3] TypeC Connector Class driver improvements
2020-08-21 21:47 [PATCH v5 0/3] TypeC Connector Class driver improvements Azhar Shaikh
` (2 preceding siblings ...)
2020-08-21 21:47 ` [PATCH v5 3/3] platform/chrome: cros_ec_typec: Re-order connector configuration steps Azhar Shaikh
@ 2020-09-01 9:07 ` Enric Balletbo i Serra
2020-09-01 15:41 ` Shaikh, Azhar
3 siblings, 1 reply; 6+ messages in thread
From: Enric Balletbo i Serra @ 2020-09-01 9:07 UTC (permalink / raw)
To: Azhar Shaikh, bleung, groeck, heikki.krogerus, pmalani
Cc: linux-kernel, rajmohan.mani, utkarsh.h.patel, casey.g.bowman
Hi Azhar,
On 21/8/20 23:47, Azhar Shaikh wrote:
> Changes in v5:
>
> * Patch 1: "platform/chrome: cros_ec_typec: Send enum values to
> usb_role_switch_set_role()"
> - Rebased on top of https://lkml.org/lkml/2020/7/10/1063
>
> * Patch 2: "platform/chrome: cros_ec_typec: Avoid setting usb role twice
> during disconnect"
> - Rebased on top of https://lkml.org/lkml/2020/7/10/1063
> - Added Reviewed-by from v4
>
> * Patch 3: "platform/chrome: cros_ec_typec: Re-order connector
> configuration steps"
> - Rebased on top of https://lkml.org/lkml/2020/7/10/1063
> - Added Reviewed-by from v4
>
> Changes in v4:
> * Patch 1: "platform/chrome: cros_ec_typec: Send enum values to
> usb_role_switch_set_role()"
> - Remove extra line between Fixes and Signed-off tag.
> - Added Reviewed-by and Cc tags from v1 and v2.
>
> * Patch 2: "platform/chrome: cros_ec_typec: Avoid setting usb role twice
> during disconnect"
> - Added Suggested-by from v2.
>
> * Patch 3: "platform/chrome: cros_ec_typec: Re-order connector
> configuration steps"
> - No change
>
> Changes in v3:
> * Patch 1: "platform/chrome: cros_ec_typec: Send enum values to
> usb_role_switch_set_role()"
> - No change
>
> * Patch 2: "platform/chrome: cros_ec_typec: Avoid setting usb role twice
> during disconnect"
> - Move the location of calling usb_role_switch_set_role() to
> end of function in cros_typec_configure_mux() to avoid any change
> in code flow.
>
> * Patch 3: "platform/chrome: cros_ec_typec: Re-order connector
> configuration steps"
> - New patch added
>
> 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 (3):
> 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
> platform/chrome: cros_ec_typec: Re-order connector configuration steps
>
> drivers/platform/chrome/cros_ec_typec.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
The three patches of this series have been queued for 5.10.
Thanks,
Enric
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH v5 0/3] TypeC Connector Class driver improvements
2020-09-01 9:07 ` [PATCH v5 0/3] TypeC Connector Class driver improvements Enric Balletbo i Serra
@ 2020-09-01 15:41 ` Shaikh, Azhar
0 siblings, 0 replies; 6+ messages in thread
From: Shaikh, Azhar @ 2020-09-01 15:41 UTC (permalink / raw)
To: Enric Balletbo i Serra, bleung, groeck, heikki.krogerus, pmalani
Cc: linux-kernel, Mani, Rajmohan, Patel, Utkarsh H, Bowman, Casey G
Thank you Enric!
> -----Original Message-----
> From: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> Sent: Tuesday, September 1, 2020 2:07 AM
> To: Shaikh, Azhar <azhar.shaikh@intel.com>; bleung@chromium.org;
> groeck@chromium.org; heikki.krogerus@linux.intel.com;
> pmalani@chromium.org
> Cc: linux-kernel@vger.kernel.org; Mani, Rajmohan
> <rajmohan.mani@intel.com>; Patel, Utkarsh H <utkarsh.h.patel@intel.com>;
> Bowman, Casey G <casey.g.bowman@intel.com>
> Subject: Re: [PATCH v5 0/3] TypeC Connector Class driver improvements
>
> Hi Azhar,
>
> On 21/8/20 23:47, Azhar Shaikh wrote:
> > Changes in v5:
> >
> > * Patch 1: "platform/chrome: cros_ec_typec: Send enum values to
> > usb_role_switch_set_role()"
> > - Rebased on top of https://lkml.org/lkml/2020/7/10/1063
> >
> > * Patch 2: "platform/chrome: cros_ec_typec: Avoid setting usb role twice
> > during disconnect"
> > - Rebased on top of https://lkml.org/lkml/2020/7/10/1063
> > - Added Reviewed-by from v4
> >
> > * Patch 3: "platform/chrome: cros_ec_typec: Re-order connector
> > configuration steps"
> > - Rebased on top of https://lkml.org/lkml/2020/7/10/1063
> > - Added Reviewed-by from v4
> >
> > Changes in v4:
> > * Patch 1: "platform/chrome: cros_ec_typec: Send enum values to
> > usb_role_switch_set_role()"
> > - Remove extra line between Fixes and Signed-off tag.
> > - Added Reviewed-by and Cc tags from v1 and v2.
> >
> > * Patch 2: "platform/chrome: cros_ec_typec: Avoid setting usb role twice
> > during disconnect"
> > - Added Suggested-by from v2.
> >
> > * Patch 3: "platform/chrome: cros_ec_typec: Re-order connector
> > configuration steps"
> > - No change
> >
> > Changes in v3:
> > * Patch 1: "platform/chrome: cros_ec_typec: Send enum values to
> > usb_role_switch_set_role()"
> > - No change
> >
> > * Patch 2: "platform/chrome: cros_ec_typec: Avoid setting usb role twice
> > during disconnect"
> > - Move the location of calling usb_role_switch_set_role() to
> > end of function in cros_typec_configure_mux() to avoid any change
> > in code flow.
> >
> > * Patch 3: "platform/chrome: cros_ec_typec: Re-order connector
> > configuration steps"
> > - New patch added
> >
> > 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 (3):
> > 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
> > platform/chrome: cros_ec_typec: Re-order connector configuration steps
> >
> > drivers/platform/chrome/cros_ec_typec.c | 9 +++++++--
> > 1 file changed, 7 insertions(+), 2 deletions(-)
> >
>
>
> The three patches of this series have been queued for 5.10.
>
> Thanks,
> Enric
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-09-01 16:05 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-21 21:47 [PATCH v5 0/3] TypeC Connector Class driver improvements Azhar Shaikh
2020-08-21 21:47 ` [PATCH v5 1/3] platform/chrome: cros_ec_typec: Send enum values to usb_role_switch_set_role() Azhar Shaikh
2020-08-21 21:47 ` [PATCH v5 2/3] platform/chrome: cros_ec_typec: Avoid setting usb role twice during disconnect Azhar Shaikh
2020-08-21 21:47 ` [PATCH v5 3/3] platform/chrome: cros_ec_typec: Re-order connector configuration steps Azhar Shaikh
2020-09-01 9:07 ` [PATCH v5 0/3] TypeC Connector Class driver improvements Enric Balletbo i Serra
2020-09-01 15:41 ` 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®