Merge tag 'drm-msm-next-2024-04-11' of https://gitlab.freedesktop.org/drm/msm into...
[sfrench/cifs-2.6.git] / drivers / gpu / drm / msm / dp / dp_display.c
index c4cb82af5c2f2f77ae7c9804f4fd6a12c42d42c0..ffbfde9225898619c11b6fd3d59062ed1a65b719 100644 (file)
@@ -484,7 +484,7 @@ static void dp_display_handle_video_request(struct dp_display_private *dp)
        }
 }
 
-static int dp_display_handle_port_ststus_changed(struct dp_display_private *dp)
+static int dp_display_handle_port_status_changed(struct dp_display_private *dp)
 {
        int rc = 0;
 
@@ -541,7 +541,7 @@ static int dp_display_usbpd_attention_cb(struct device *dev)
                drm_dbg_dp(dp->drm_dev, "hpd_state=%d sink_request=%d\n",
                                        dp->hpd_state, sink_request);
                if (sink_request & DS_PORT_STATUS_CHANGED)
-                       rc = dp_display_handle_port_ststus_changed(dp);
+                       rc = dp_display_handle_port_status_changed(dp);
                else
                        rc = dp_display_handle_irq_hpd(dp);
        }
@@ -588,6 +588,7 @@ static int dp_hpd_plug_handle(struct dp_display_private *dp, u32 data)
        ret = dp_display_usbpd_configure_cb(&pdev->dev);
        if (ret) {      /* link train failed */
                dp->hpd_state = ST_DISCONNECTED;
+               pm_runtime_put_sync(&pdev->dev);
        } else {
                dp->hpd_state = ST_MAINLINK_READY;
        }
@@ -645,6 +646,7 @@ static int dp_hpd_unplug_handle(struct dp_display_private *dp, u32 data)
                dp_display_host_phy_exit(dp);
                dp->hpd_state = ST_DISCONNECTED;
                dp_display_notify_disconnect(&dp->dp_display.pdev->dev);
+               pm_runtime_put_sync(&pdev->dev);
                mutex_unlock(&dp->event_mutex);
                return 0;
        }