disp: msm: only set nolp command when panel in LP1/LP2 mode

DSI driver sends nolp commands when DSI connector power
modes is set SDE_MODE_DPMS_ON or SDE_MODE_DPMS_OFF. This
is invalid panel configuration. It should only send nolp
commmand to panel when it is in LP1/LP2 mode.

Change-Id: Ie94eaef6899d292fd20f42c1b7ef2c7a99178d13
Signed-off-by: Wenjun Zhang <wjzhan@codeaurora.org>
Signed-off-by: Yuan Zhao <yzhao@codeaurora.org>
This commit is contained in:
Yuan Zhao 2019-05-15 16:36:24 +08:00 committed by Gerrit - the friendly Code Review server
parent daf414d4cf
commit f2873cd69f
3 changed files with 16 additions and 2 deletions

View File

@ -1060,10 +1060,22 @@ int dsi_display_set_power(struct drm_connector *connector,
case SDE_MODE_DPMS_LP2:
rc = dsi_panel_set_lp2(display->panel);
break;
default:
rc = dsi_panel_set_nolp(display->panel);
case SDE_MODE_DPMS_ON:
if ((display->panel->power_mode == SDE_MODE_DPMS_LP1) ||
(display->panel->power_mode == SDE_MODE_DPMS_LP2))
rc = dsi_panel_set_nolp(display->panel);
break;
case SDE_MODE_DPMS_OFF:
default:
return rc;
}
DSI_DEBUG("Power mode transition from %d to %d %s",
display->panel->power_mode, power_mode,
rc ? "failed" : "successful");
if (!rc)
display->panel->power_mode = power_mode;
return rc;
}

View File

@ -3306,6 +3306,7 @@ struct dsi_panel *dsi_panel_get(struct device *parent,
if (rc)
DSI_DEBUG("failed to parse esd config, rc=%d\n", rc);
panel->power_mode = SDE_MODE_DPMS_OFF;
drm_panel_init(&panel->drm_panel);
panel->drm_panel.dev = &panel->mipi_device.dev;
panel->mipi_device.dev.of_node = of_node;

View File

@ -198,6 +198,7 @@ struct dsi_panel {
bool sync_broadcast_en;
int panel_test_gpio;
int power_mode;
};
static inline bool dsi_panel_ulps_feature_enabled(struct dsi_panel *panel)