2021-12-08 07:18:36

by Steven Syu

[permalink] [raw]
Subject: [PATCH v3] usb: typec: clear usb_pd flag if change to typec only mode

From: Steven Syu <[email protected]>

Set usb_pd to 0 when power operation mode
leaving power delivery. That can avoid user-sepace
read "yes" form the supports_usb_power_delivery_show() attribute
but power operation mode already change form power delivery to
others mode.

Signed-off-by: Steven Syu <[email protected]>
---
changes for v3:
resubmit and add the changes comment of v1->v2

v1->v2:
1.remove sysfs_notify(&partner_dev->kobj, NULL, "supports_usb_power_delivery"); when operation mode is not PD.
2.resubmitted patch by private email for remove footbar in the mail.

drivers/usb/typec/class.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
index aeef453..2043e07 100644
--- a/drivers/usb/typec/class.c
+++ b/drivers/usb/typec/class.c
@@ -1718,6 +1718,8 @@ void typec_set_pwr_opmode(struct typec_port *port,
partner->usb_pd = 1;
sysfs_notify(&partner_dev->kobj, NULL,
"supports_usb_power_delivery");
+ } else if (opmode != TYPEC_PWR_MODE_PD && partner->usb_pd) {
+ partner->usb_pd = 0;
}
put_device(partner_dev);
}
--
2.7.4



2021-12-09 10:11:24

by Heikki Krogerus

[permalink] [raw]
Subject: Re: [PATCH v3] usb: typec: clear usb_pd flag if change to typec only mode

Hi,

On Wed, Dec 08, 2021 at 03:18:25PM +0800, Steven Syu wrote:
> From: Steven Syu <[email protected]>
>
> Set usb_pd to 0 when power operation mode
> leaving power delivery. That can avoid user-sepace
> read "yes" form the supports_usb_power_delivery_show() attribute
> but power operation mode already change form power delivery to
> others mode.

I think you need to add a short explanation about the situation where
this can happen - where we loose the USB PD contract.

> Signed-off-by: Steven Syu <[email protected]>
> ---
> changes for v3:
> resubmit and add the changes comment of v1->v2
>
> v1->v2:
> 1.remove sysfs_notify(&partner_dev->kobj, NULL, "supports_usb_power_delivery"); when operation mode is not PD.
> 2.resubmitted patch by private email for remove footbar in the mail.
>
> drivers/usb/typec/class.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
> index aeef453..2043e07 100644
> --- a/drivers/usb/typec/class.c
> +++ b/drivers/usb/typec/class.c
> @@ -1718,6 +1718,8 @@ void typec_set_pwr_opmode(struct typec_port *port,
> partner->usb_pd = 1;
> sysfs_notify(&partner_dev->kobj, NULL,
> "supports_usb_power_delivery");
> + } else if (opmode != TYPEC_PWR_MODE_PD && partner->usb_pd) {
> + partner->usb_pd = 0;
> }
> put_device(partner_dev);
> }
> --
> 2.7.4

thanks,

--
heikki