disp: msm: provide API to query for panel enable state

This dsi_display_is_panel_enable(int panel_index) API will take in
panel_index equal 0 for Primary and 1 for Seconday display. It will
return TRUE if the panel is ON or FALSE when it's OFF

Port from: 255270c

Change-Id: Idbc4cc507336104d941a6b2868f9bdf47e5bdaa2
Signed-off-by: Bang Nguyen <bangnguyen@motorola.com>
Reviewed-on: https://gerrit.mot.com/1444402
SLTApproved: Slta Waiver
SME-Granted: SME Approvals Granted
Tested-by: Jira Key
Submit-Approved: Jira Key
Reviewed-on: https://gerrit.mot.com/1509805
Reviewed-by: Hua Tan <tanhua1@motorola.com>
This commit is contained in:
Bang Nguyen authored and Gilberto Gambugge committed 2023-06-01 00:43:20 -03:00
1 parent e51b9ece31
commit 56c5402186
1 file changed
+57
+57
View File
@@ -7844,6 +7844,59 @@ int dsi_display_pre_commit(void *display,
return rc;
}
/* start of MMI_STOPSHIP section */
struct dsi_enable_status {
struct dsi_display *display;
bool enable;
};
static struct dsi_enable_status enable_status[2];
static int dsi_display_enable_status (struct dsi_display *display, bool enable)
{
int ret = 0;
if (!strncmp("DSI-1", display->drm_conn->name, 5)) {
DSI_DEBUG("display->drm_conn->name=%s enable = %d MAIN_DISPLAY\n",
display->drm_conn->name, enable);
enable_status[0].display = display;
enable_status[0].enable = enable;
} else if (!strncmp("DSI-2", display->drm_conn->name, 5)) {
DSI_DEBUG("display->drm_conn->name=%s enable = %d CLI_DISPLAY\n",
display->drm_conn->name, enable);
enable_status[1].display = display;
enable_status[1].enable = enable;
} else {
DSI_ERR(" Invalid display->drm_conn->name = %s\n",
display->drm_conn->name);
ret = -EINVAL;
}
return ret;
}
bool dsi_display_is_panel_enable (int panel_index)
{
struct dsi_display *display;
bool enable = false;
if (panel_index > 1) {
pr_err("Invalid panel index =%d\n", panel_index);
return false;
}
display = enable_status[panel_index].display;
if (display) {
mutex_lock(&display->display_lock);
enable = enable_status[panel_index].enable;
mutex_unlock(&display->display_lock);
}
return enable;
}
EXPORT_SYMBOL(dsi_display_is_panel_enable);
/* end of MMI_STOPSHIP section */
int dsi_display_enable(struct dsi_display *display)
{
int rc = 0;
@@ -7898,6 +7951,8 @@ int dsi_display_enable(struct dsi_display *display)
display->name, rc);
goto error;
}
dsi_display_enable_status(display, true);
}
/* Block sending pps command if modeset is due to fps difference */
@@ -8064,6 +8119,8 @@ int dsi_display_disable(struct dsi_display *display)
if (rc)
DSI_ERR("[%s] display wake up failed, rc=%d\n",
display->name, rc);
else
dsi_display_enable_status(display, false);
if (display->config.panel_mode == DSI_OP_VIDEO_MODE) {
rc = dsi_display_vid_engine_disable(display);