|
@@ -3347,6 +3347,7 @@ static int dp_display_mst_connector_uninstall(struct dp_display *dp_display,
|
|
struct sde_connector *sde_conn;
|
|
struct sde_connector *sde_conn;
|
|
struct dp_panel *dp_panel;
|
|
struct dp_panel *dp_panel;
|
|
struct dp_display_private *dp;
|
|
struct dp_display_private *dp;
|
|
|
|
+ struct dp_audio *audio = NULL;
|
|
|
|
|
|
if (!dp_display || !connector) {
|
|
if (!dp_display || !connector) {
|
|
DP_ERR("invalid input\n");
|
|
DP_ERR("invalid input\n");
|
|
@@ -3372,13 +3373,17 @@ static int dp_display_mst_connector_uninstall(struct dp_display *dp_display,
|
|
}
|
|
}
|
|
|
|
|
|
dp_panel = sde_conn->drv_panel;
|
|
dp_panel = sde_conn->drv_panel;
|
|
- dp_audio_put(dp_panel->audio);
|
|
|
|
|
|
+
|
|
|
|
+ /* Make a copy of audio structure to call into dp_audio_put later */
|
|
|
|
+ audio = dp_panel->audio;
|
|
dp_panel_put(dp_panel);
|
|
dp_panel_put(dp_panel);
|
|
|
|
|
|
DP_MST_DEBUG("dp mst connector uninstalled. conn:%d\n",
|
|
DP_MST_DEBUG("dp mst connector uninstalled. conn:%d\n",
|
|
connector->base.id);
|
|
connector->base.id);
|
|
|
|
|
|
mutex_unlock(&dp->session_lock);
|
|
mutex_unlock(&dp->session_lock);
|
|
|
|
+
|
|
|
|
+ dp_audio_put(audio);
|
|
SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, dp->state);
|
|
SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, dp->state);
|
|
|
|
|
|
return rc;
|
|
return rc;
|