Loading drivers/gpu/drm/msm/dp/dp_ctrl.c +6 −0 Original line number Diff line number Diff line Loading @@ -1096,6 +1096,9 @@ static int dp_ctrl_on(struct dp_ctrl *dp_ctrl, bool mst_mode) ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); if (ctrl->power_on) goto end; ctrl->mst_mode = mst_mode; rate = ctrl->panel->link_info.rate; Loading Loading @@ -1130,6 +1133,9 @@ static void dp_ctrl_off(struct dp_ctrl *dp_ctrl) ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); if (!ctrl->power_on) return; dp_ctrl_configure_source_link_params(ctrl, false); ctrl->catalog->reset(ctrl->catalog); Loading drivers/gpu/drm/msm/dp/dp_display.c +18 −10 Original line number Diff line number Diff line Loading @@ -713,6 +713,11 @@ static int dp_display_process_hpd_low(struct dp_display_private *dp) rc = dp_display_send_hpd_notification(dp); mutex_lock(&dp->session_lock); if (!dp->active_stream_cnt) dp->ctrl->off(dp->ctrl); mutex_unlock(&dp->session_lock); dp->panel->video_test = false; return rc; Loading Loading @@ -1249,6 +1254,7 @@ static int dp_display_prepare(struct dp_display *dp_display, void *panel) { struct dp_display_private *dp; struct dp_panel *dp_panel; int rc = 0; if (!dp_display || !panel) { pr_err("invalid input\n"); Loading @@ -1271,9 +1277,13 @@ static int dp_display_prepare(struct dp_display *dp_display, void *panel) if (dp->power_on) goto end; if (dp_display_is_ready(dp)) if (!dp_display_is_ready(dp)) goto end; dp_display_host_init(dp); else rc = dp->ctrl->on(dp->ctrl, dp->mst.mst_active); if (rc) goto end; if (dp->debug->psm_enabled) { Loading Loading @@ -1375,10 +1385,8 @@ static int dp_display_enable(struct dp_display *dp_display, void *panel) } rc = dp_display_stream_enable(dp, panel); if (rc && (dp->active_stream_cnt == 0)) { dp->ctrl->off(dp->ctrl); if (rc) goto end; } dp->power_on = true; end: Loading Loading @@ -1412,7 +1420,7 @@ static int dp_display_post_enable(struct dp_display *dp_display, void *panel) mutex_lock(&dp->session_lock); if (!dp->power_on) { pr_debug("Link not setup, return\n"); pr_debug("stream not setup, return\n"); goto end; } Loading Loading @@ -1481,7 +1489,7 @@ static int dp_display_pre_disable(struct dp_display *dp_display, void *panel) mutex_lock(&dp->session_lock); if (!dp->power_on) { pr_debug("Link already powered off, return\n"); pr_debug("stream already powered off, return\n"); goto end; } Loading Loading @@ -1551,8 +1559,6 @@ static int dp_display_disable(struct dp_display *dp_display, void *panel) goto end; } dp->ctrl->off(dp->ctrl); /* * In case of framework reboot, the DP off sequence is executed without * any notification from driver. Initialize post_open callback to notify Loading @@ -1561,6 +1567,8 @@ static int dp_display_disable(struct dp_display *dp_display, void *panel) if (dp_display_is_ready(dp) && !dp->mst.mst_active) { dp_display->post_open = dp_display_post_open; dp->dp_display.is_sst_connected = false; dp->ctrl->off(dp->ctrl); dp_display_host_deinit(dp); } Loading Loading
drivers/gpu/drm/msm/dp/dp_ctrl.c +6 −0 Original line number Diff line number Diff line Loading @@ -1096,6 +1096,9 @@ static int dp_ctrl_on(struct dp_ctrl *dp_ctrl, bool mst_mode) ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); if (ctrl->power_on) goto end; ctrl->mst_mode = mst_mode; rate = ctrl->panel->link_info.rate; Loading Loading @@ -1130,6 +1133,9 @@ static void dp_ctrl_off(struct dp_ctrl *dp_ctrl) ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); if (!ctrl->power_on) return; dp_ctrl_configure_source_link_params(ctrl, false); ctrl->catalog->reset(ctrl->catalog); Loading
drivers/gpu/drm/msm/dp/dp_display.c +18 −10 Original line number Diff line number Diff line Loading @@ -713,6 +713,11 @@ static int dp_display_process_hpd_low(struct dp_display_private *dp) rc = dp_display_send_hpd_notification(dp); mutex_lock(&dp->session_lock); if (!dp->active_stream_cnt) dp->ctrl->off(dp->ctrl); mutex_unlock(&dp->session_lock); dp->panel->video_test = false; return rc; Loading Loading @@ -1249,6 +1254,7 @@ static int dp_display_prepare(struct dp_display *dp_display, void *panel) { struct dp_display_private *dp; struct dp_panel *dp_panel; int rc = 0; if (!dp_display || !panel) { pr_err("invalid input\n"); Loading @@ -1271,9 +1277,13 @@ static int dp_display_prepare(struct dp_display *dp_display, void *panel) if (dp->power_on) goto end; if (dp_display_is_ready(dp)) if (!dp_display_is_ready(dp)) goto end; dp_display_host_init(dp); else rc = dp->ctrl->on(dp->ctrl, dp->mst.mst_active); if (rc) goto end; if (dp->debug->psm_enabled) { Loading Loading @@ -1375,10 +1385,8 @@ static int dp_display_enable(struct dp_display *dp_display, void *panel) } rc = dp_display_stream_enable(dp, panel); if (rc && (dp->active_stream_cnt == 0)) { dp->ctrl->off(dp->ctrl); if (rc) goto end; } dp->power_on = true; end: Loading Loading @@ -1412,7 +1420,7 @@ static int dp_display_post_enable(struct dp_display *dp_display, void *panel) mutex_lock(&dp->session_lock); if (!dp->power_on) { pr_debug("Link not setup, return\n"); pr_debug("stream not setup, return\n"); goto end; } Loading Loading @@ -1481,7 +1489,7 @@ static int dp_display_pre_disable(struct dp_display *dp_display, void *panel) mutex_lock(&dp->session_lock); if (!dp->power_on) { pr_debug("Link already powered off, return\n"); pr_debug("stream already powered off, return\n"); goto end; } Loading Loading @@ -1551,8 +1559,6 @@ static int dp_display_disable(struct dp_display *dp_display, void *panel) goto end; } dp->ctrl->off(dp->ctrl); /* * In case of framework reboot, the DP off sequence is executed without * any notification from driver. Initialize post_open callback to notify Loading @@ -1561,6 +1567,8 @@ static int dp_display_disable(struct dp_display *dp_display, void *panel) if (dp_display_is_ready(dp) && !dp->mst.mst_active) { dp_display->post_open = dp_display_post_open; dp->dp_display.is_sst_connected = false; dp->ctrl->off(dp->ctrl); dp_display_host_deinit(dp); } Loading