disp: msm: reset connector panel_dead during dsi bridge post disable
This change resets panel_dead property at the end of dsi bridge post disable. Currently as part of the ESD recvoery sequence, dsi_bridge_enable resets this property, but WD vsync source is selected before this point based on the older panel_dead status. With this change, panel_dead will be in a proper state and the correct vsync source will be selected during recovery. Change-Id: I6d614113cfb0ae8a857974bb4d4f8ceb5988a0c8 Signed-off-by: Samantha Tran <samtran@codeaurora.org>
This commit is contained in:
@@ -310,6 +310,7 @@ static void dsi_bridge_disable(struct drm_bridge *bridge)
|
|||||||
static void dsi_bridge_post_disable(struct drm_bridge *bridge)
|
static void dsi_bridge_post_disable(struct drm_bridge *bridge)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
struct dsi_display *display;
|
||||||
struct dsi_bridge *c_bridge = to_dsi_bridge(bridge);
|
struct dsi_bridge *c_bridge = to_dsi_bridge(bridge);
|
||||||
|
|
||||||
if (!bridge) {
|
if (!bridge) {
|
||||||
@@ -317,6 +318,8 @@ static void dsi_bridge_post_disable(struct drm_bridge *bridge)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
display = c_bridge->display;
|
||||||
|
|
||||||
SDE_ATRACE_BEGIN("dsi_bridge_post_disable");
|
SDE_ATRACE_BEGIN("dsi_bridge_post_disable");
|
||||||
SDE_ATRACE_BEGIN("dsi_display_disable");
|
SDE_ATRACE_BEGIN("dsi_display_disable");
|
||||||
rc = dsi_display_disable(c_bridge->display);
|
rc = dsi_display_disable(c_bridge->display);
|
||||||
@@ -328,6 +331,9 @@ static void dsi_bridge_post_disable(struct drm_bridge *bridge)
|
|||||||
}
|
}
|
||||||
SDE_ATRACE_END("dsi_display_disable");
|
SDE_ATRACE_END("dsi_display_disable");
|
||||||
|
|
||||||
|
if (display && display->drm_conn)
|
||||||
|
sde_connector_helper_bridge_post_disable(display->drm_conn);
|
||||||
|
|
||||||
rc = dsi_display_unprepare(c_bridge->display);
|
rc = dsi_display_unprepare(c_bridge->display);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
DSI_ERR("[%d] DSI display unprepare failed, rc=%d\n",
|
DSI_ERR("[%d] DSI display unprepare failed, rc=%d\n",
|
||||||
|
@@ -1054,6 +1054,14 @@ void sde_connector_helper_bridge_disable(struct drm_connector *connector)
|
|||||||
c_conn->allow_bl_update = false;
|
c_conn->allow_bl_update = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sde_connector_helper_bridge_post_disable(struct drm_connector *connector)
|
||||||
|
{
|
||||||
|
struct sde_connector *c_conn = NULL;
|
||||||
|
c_conn = to_sde_connector(connector);
|
||||||
|
|
||||||
|
c_conn->panel_dead = false;
|
||||||
|
}
|
||||||
|
|
||||||
void sde_connector_helper_bridge_enable(struct drm_connector *connector)
|
void sde_connector_helper_bridge_enable(struct drm_connector *connector)
|
||||||
{
|
{
|
||||||
struct sde_connector *c_conn = NULL;
|
struct sde_connector *c_conn = NULL;
|
||||||
@@ -1086,7 +1094,6 @@ void sde_connector_helper_bridge_enable(struct drm_connector *connector)
|
|||||||
c_conn->bl_device->props.state &= ~BL_CORE_FBBLANK;
|
c_conn->bl_device->props.state &= ~BL_CORE_FBBLANK;
|
||||||
backlight_update_status(c_conn->bl_device);
|
backlight_update_status(c_conn->bl_device);
|
||||||
}
|
}
|
||||||
c_conn->panel_dead = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int sde_connector_clk_ctrl(struct drm_connector *connector, bool enable)
|
int sde_connector_clk_ctrl(struct drm_connector *connector, bool enable)
|
||||||
|
@@ -1160,6 +1160,12 @@ void sde_conn_timeline_status(struct drm_connector *conn);
|
|||||||
*/
|
*/
|
||||||
void sde_connector_helper_bridge_disable(struct drm_connector *connector);
|
void sde_connector_helper_bridge_disable(struct drm_connector *connector);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sde_connector_helper_bridge_post_disable - helper function for drm bridge post disable
|
||||||
|
* @connector: Pointer to DRM connector object
|
||||||
|
*/
|
||||||
|
void sde_connector_helper_bridge_post_disable(struct drm_connector *connector);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sde_connector_destroy - destroy drm connector object
|
* sde_connector_destroy - destroy drm connector object
|
||||||
* @connector: Pointer to DRM connector object
|
* @connector: Pointer to DRM connector object
|
||||||
|
Reference in New Issue
Block a user