System like Android allow user control power role from UI, it is possible to implement application base on typec uevent to refresh UI, but found there is chance that UI show different state from typec attribute file.
In typec_set_pwr_opmode(), when partner support PD, there is no uevent send to user space which cause the problem.
Fix it by sending uevent notification when change power mode to PD.
Fixes: bdecb33af34f ("usb: typec: API for controlling USB Type-C Multiplexers") Cc: stable@vger.kernel.org Signed-off-by: Linyu Yuan quic_linyyuan@quicinc.com --- v2: (v1 https://lore.kernel.org/linux-usb/1656637315-31229-1-git-send-email-quic_lin...) fix review comment from Greg, add Fixes tag, improve commit description.
drivers/usb/typec/class.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c index bbc46b1..3da94f712 100644 --- a/drivers/usb/typec/class.c +++ b/drivers/usb/typec/class.c @@ -1851,6 +1851,7 @@ void typec_set_pwr_opmode(struct typec_port *port, partner->usb_pd = 1; sysfs_notify(&partner_dev->kobj, NULL, "supports_usb_power_delivery"); + kobject_uevent(&partner_dev->kobj, KOBJ_CHANGE); } put_device(partner_dev); }
Fri, Jul 01, 2022 at 04:08:54PM +0800, Linyu Yuan kirjoitti:
System like Android allow user control power role from UI, it is possible to implement application base on typec uevent to refresh UI, but found there is chance that UI show different state from typec attribute file.
In typec_set_pwr_opmode(), when partner support PD, there is no uevent send to user space which cause the problem.
Fix it by sending uevent notification when change power mode to PD.
Fixes: bdecb33af34f ("usb: typec: API for controlling USB Type-C Multiplexers") Cc: stable@vger.kernel.org Signed-off-by: Linyu Yuan quic_linyyuan@quicinc.com
Acked-by: Heikki Krogerus heikki.krogerus@linux.intel.com
v2: (v1 https://lore.kernel.org/linux-usb/1656637315-31229-1-git-send-email-quic_lin...) fix review comment from Greg, add Fixes tag, improve commit description.
drivers/usb/typec/class.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c index bbc46b1..3da94f712 100644 --- a/drivers/usb/typec/class.c +++ b/drivers/usb/typec/class.c @@ -1851,6 +1851,7 @@ void typec_set_pwr_opmode(struct typec_port *port, partner->usb_pd = 1; sysfs_notify(&partner_dev->kobj, NULL, "supports_usb_power_delivery");
} put_device(partner_dev); }kobject_uevent(&partner_dev->kobj, KOBJ_CHANGE);
-- 2.7.4
linux-stable-mirror@lists.linaro.org