From: Cameron Nemo <[email protected]> A recent commit [1] introduced an unintended behavioral change by reordering certain function calls. The sysfs_notify call for pin_assignment should only be invoked when the dp_altmode_notify call returns 0, and in the dp->data.conf == 0 case.
[1] https://lore.kernel.org/r/[email protected] Signed-off-by: Cameron Nemo <[email protected]> --- drivers/usb/typec/altmodes/displayport.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c index c1d8c23baa39..a15ae78066e3 100644 --- a/drivers/usb/typec/altmodes/displayport.c +++ b/drivers/usb/typec/altmodes/displayport.c @@ -154,10 +154,17 @@ static int dp_altmode_status_update(struct dp_altmode *dp) static int dp_altmode_configured(struct dp_altmode *dp) { + int ret; + sysfs_notify(&dp->alt->dev.kobj, "displayport", "configuration"); + + ret = dp_altmode_notify(dp); + if (ret || !dp->data.conf) + return ret; + sysfs_notify(&dp->alt->dev.kobj, "displayport", "pin_assignment"); - return dp_altmode_notify(dp); + return 0; } static int dp_altmode_configure_vdm(struct dp_altmode *dp, u32 conf) -- 2.33.0
