Make dp_altmode_notify() handle the dp->data.conf == 0 case too,
rather then having separate code-paths for this in various places
which call it.

Reviewed-by: Heikki Krogerus <heikki.kroge...@linux.intel.com>
Tested-by: Heikki Krogerus <heikki.kroge...@linux.intel.com>
Signed-off-by: Hans de Goede <hdego...@redhat.com>
---
 drivers/usb/typec/altmodes/displayport.c | 35 +++++++++---------------
 1 file changed, 13 insertions(+), 22 deletions(-)

diff --git a/drivers/usb/typec/altmodes/displayport.c 
b/drivers/usb/typec/altmodes/displayport.c
index b7f094435b00..aa669b9cf70e 100644
--- a/drivers/usb/typec/altmodes/displayport.c
+++ b/drivers/usb/typec/altmodes/displayport.c
@@ -66,10 +66,17 @@ struct dp_altmode {
 
 static int dp_altmode_notify(struct dp_altmode *dp)
 {
-       u8 state = get_count_order(DP_CONF_GET_PIN_ASSIGN(dp->data.conf));
+       unsigned long conf;
+       u8 state;
+
+       if (dp->data.conf) {
+               state = get_count_order(DP_CONF_GET_PIN_ASSIGN(dp->data.conf));
+               conf = TYPEC_MODAL_STATE(state);
+       } else {
+               conf = TYPEC_STATE_USB;
+       }
 
-       return typec_altmode_notify(dp->alt, TYPEC_MODAL_STATE(state),
-                                  &dp->data);
+       return typec_altmode_notify(dp->alt, conf, &dp->data);
 }
 
 static int dp_altmode_configure(struct dp_altmode *dp, u8 con)
@@ -137,21 +144,10 @@ 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");
-
-       if (!dp->data.conf)
-               return typec_altmode_notify(dp->alt, TYPEC_STATE_USB,
-                                           &dp->data);
-
-       ret = dp_altmode_notify(dp);
-       if (ret)
-               return ret;
-
        sysfs_notify(&dp->alt->dev.kobj, "displayport", "pin_assignment");
 
-       return 0;
+       return dp_altmode_notify(dp);
 }
 
 static int dp_altmode_configure_vdm(struct dp_altmode *dp, u32 conf)
@@ -172,13 +168,8 @@ static int dp_altmode_configure_vdm(struct dp_altmode *dp, 
u32 conf)
        }
 
        ret = typec_altmode_vdm(dp->alt, header, &conf, 2);
-       if (ret) {
-               if (DP_CONF_GET_PIN_ASSIGN(dp->data.conf))
-                       dp_altmode_notify(dp);
-               else
-                       typec_altmode_notify(dp->alt, TYPEC_STATE_USB,
-                                            &dp->data);
-       }
+       if (ret)
+               dp_altmode_notify(dp);
 
        return ret;
 }
-- 
2.31.1

Reply via email to