diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index ba39abc53f..e7ff31802e 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -3736,6 +3736,8 @@ static int dsi_display_res_init(struct dsi_display *display) goto error_ctrl_put; } + display->is_active = true; + return 0; error_ctrl_put: for (i = i - 1; i >= 0; i--) { @@ -5385,6 +5387,16 @@ int dsi_display_get_active_displays(void **display_array, u32 max_display_count) return count; } +void dsi_display_set_active_state(struct dsi_display *display, bool is_active) +{ + if (!display) + return; + + mutex_lock(&display->display_lock); + display->is_active = is_active; + mutex_unlock(&display->display_lock); +} + int dsi_display_drm_bridge_init(struct dsi_display *display, struct drm_encoder *enc) { @@ -5924,7 +5936,7 @@ int dsi_display_get_info(struct drm_connector *connector, for (i = 0; i < info->num_of_h_tiles; i++) info->h_tile_instance[i] = display->ctrl[i].ctrl->cell_index; - info->is_connected = true; + info->is_connected = display->is_active; if (!strcmp(display->display_type, "primary")) info->display_type = SDE_CONNECTOR_PRIMARY; diff --git a/msm/dsi/dsi_display.h b/msm/dsi/dsi_display.h index a287f4fe3a..20734dca40 100644 --- a/msm/dsi/dsi_display.h +++ b/msm/dsi/dsi_display.h @@ -186,6 +186,7 @@ struct dsi_display_ext_bridge { * @queue_cmd_waits Indicates if wait for dma commands done has to be queued. * @dma_cmd_workq: Pointer to the workqueue of DMA command transfer done * wait sequence. + * @is_active: status of the display */ struct dsi_display { struct platform_device *pdev; @@ -278,6 +279,7 @@ struct dsi_display { /* panel id of the display */ u64 panel_id; + bool is_active; }; int dsi_display_dev_probe(struct platform_device *pdev);