Merge "disp: msm: dsi: skip panel read for simulation panels"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
394040535c
@@ -63,6 +63,14 @@ bool is_skip_op_required(struct dsi_display *display)
|
|||||||
return (display->is_cont_splash_enabled || display->trusted_vm_env);
|
return (display->is_cont_splash_enabled || display->trusted_vm_env);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool is_sim_panel(struct dsi_display *display)
|
||||||
|
{
|
||||||
|
if (!display || !display->panel)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return display->panel->te_using_watchdog_timer;
|
||||||
|
}
|
||||||
|
|
||||||
static void dsi_display_mask_ctrl_error_interrupts(struct dsi_display *display,
|
static void dsi_display_mask_ctrl_error_interrupts(struct dsi_display *display,
|
||||||
u32 mask, bool enable)
|
u32 mask, bool enable)
|
||||||
{
|
{
|
||||||
@@ -966,9 +974,7 @@ int dsi_display_check_status(struct drm_connector *connector, void *display,
|
|||||||
|
|
||||||
status_mode = panel->esd_config.status_mode;
|
status_mode = panel->esd_config.status_mode;
|
||||||
|
|
||||||
if ((status_mode == ESD_MODE_SW_SIM_SUCCESS) ||
|
if ((status_mode == ESD_MODE_SW_SIM_SUCCESS) || is_sim_panel(display))
|
||||||
(dsi_display->sw_te_using_wd) ||
|
|
||||||
(dsi_display->panel->te_using_watchdog_timer))
|
|
||||||
goto release_panel_lock;
|
goto release_panel_lock;
|
||||||
|
|
||||||
if (status_mode == ESD_MODE_SW_SIM_FAILURE) {
|
if (status_mode == ESD_MODE_SW_SIM_FAILURE) {
|
||||||
@@ -1246,6 +1252,12 @@ int dsi_display_cmd_receive(void *display, const char *cmd_buf,
|
|||||||
cmd.msg.flags |= MIPI_DSI_MSG_UNICAST_COMMAND;
|
cmd.msg.flags |= MIPI_DSI_MSG_UNICAST_COMMAND;
|
||||||
|
|
||||||
mutex_lock(&dsi_display->display_lock);
|
mutex_lock(&dsi_display->display_lock);
|
||||||
|
|
||||||
|
if (is_sim_panel(display)) {
|
||||||
|
DSI_DEBUG("Simulation panel doesn't support read commands\n");
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
rc = dsi_display_ctrl_get_host_init_state(dsi_display, &state);
|
rc = dsi_display_ctrl_get_host_init_state(dsi_display, &state);
|
||||||
if (rc || !state) {
|
if (rc || !state) {
|
||||||
DSI_ERR("[DSI] Invalid host state = %d rc = %d\n",
|
DSI_ERR("[DSI] Invalid host state = %d rc = %d\n",
|
||||||
@@ -4122,7 +4134,7 @@ error:
|
|||||||
|
|
||||||
static bool dsi_display_validate_panel_resources(struct dsi_display *display)
|
static bool dsi_display_validate_panel_resources(struct dsi_display *display)
|
||||||
{
|
{
|
||||||
if (!display->panel->te_using_watchdog_timer) {
|
if (!is_sim_panel(display)) {
|
||||||
if (!gpio_is_valid(display->panel->reset_config.reset_gpio)) {
|
if (!gpio_is_valid(display->panel->reset_config.reset_gpio)) {
|
||||||
DSI_ERR("invalid reset gpio for the panel\n");
|
DSI_ERR("invalid reset gpio for the panel\n");
|
||||||
return false;
|
return false;
|
||||||
@@ -6633,9 +6645,7 @@ int dsi_display_get_info(struct drm_connector *connector,
|
|||||||
info->capabilities |= MSM_DISPLAY_CAP_CMD_MODE;
|
info->capabilities |= MSM_DISPLAY_CAP_CMD_MODE;
|
||||||
if (display->panel->panel_mode_switch_enabled)
|
if (display->panel->panel_mode_switch_enabled)
|
||||||
info->capabilities |= MSM_DISPLAY_CAP_VID_MODE;
|
info->capabilities |= MSM_DISPLAY_CAP_VID_MODE;
|
||||||
info->is_te_using_watchdog_timer =
|
info->is_te_using_watchdog_timer = is_sim_panel(display);
|
||||||
display->panel->te_using_watchdog_timer |
|
|
||||||
display->sw_te_using_wd;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
DSI_ERR("unknwown dsi panel mode %d\n",
|
DSI_ERR("unknwown dsi panel mode %d\n",
|
||||||
@@ -6643,8 +6653,7 @@ int dsi_display_get_info(struct drm_connector *connector,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (display->panel->esd_config.esd_enabled &&
|
if (display->panel->esd_config.esd_enabled && !is_sim_panel(display))
|
||||||
!display->sw_te_using_wd)
|
|
||||||
info->capabilities |= MSM_DISPLAY_ESD_ENABLED;
|
info->capabilities |= MSM_DISPLAY_ESD_ENABLED;
|
||||||
|
|
||||||
info->te_source = display->te_source;
|
info->te_source = display->te_source;
|
||||||
|
Reference in New Issue
Block a user