Loading drivers/gpu/drm/msm/dsi-staging/dsi_display.c +11 −3 Original line number Diff line number Diff line Loading @@ -733,7 +733,7 @@ int dsi_display_check_status(struct drm_connector *connector, void *display, } /* Prevent another ESD check,when ESD recovery is underway */ if (panel->esd_recovery_pending) { if (atomic_read(&panel->esd_recovery_pending)) { dsi_panel_release_panel_lock(panel); return rc; } Loading Loading @@ -769,7 +769,7 @@ int dsi_display_check_status(struct drm_connector *connector, void *display, false); } else { /* Handle Panel failures during display disable sequence */ panel->esd_recovery_pending = true; atomic_set(&panel->esd_recovery_pending, 1); } dsi_display_clk_ctrl(dsi_display->dsi_clk_handle, Loading Loading @@ -2566,7 +2566,7 @@ static int dsi_host_detach(struct mipi_dsi_host *host, static ssize_t dsi_host_transfer(struct mipi_dsi_host *host, const struct mipi_dsi_msg *msg) { struct dsi_display *display = to_dsi_display(host); struct dsi_display *display; int rc = 0, ret = 0; if (!host || !msg) { Loading @@ -2574,6 +2574,14 @@ static ssize_t dsi_host_transfer(struct mipi_dsi_host *host, return 0; } display = to_dsi_display(host); /* Avoid sending DCS commands when ESD recovery is pending */ if (atomic_read(&display->panel->esd_recovery_pending)) { pr_debug("ESD recovery pending\n"); return 0; } rc = dsi_display_clk_ctrl(display->dsi_clk_handle, DSI_ALL_CLKS, DSI_CLK_ON); if (rc) { Loading drivers/gpu/drm/msm/dsi-staging/dsi_drm.c +1 −1 Original line number Diff line number Diff line Loading @@ -156,7 +156,7 @@ static void dsi_bridge_pre_enable(struct drm_bridge *bridge) return; } c_bridge->display->panel->esd_recovery_pending = false; atomic_set(&c_bridge->display->panel->esd_recovery_pending, 0); /* By this point mode should have been validated through mode_fixup */ rc = dsi_display_set_mode(c_bridge->display, Loading drivers/gpu/drm/msm/dsi-staging/dsi_panel.c +2 −2 Original line number Diff line number Diff line Loading @@ -3718,7 +3718,7 @@ int dsi_panel_disable(struct dsi_panel *panel) mutex_lock(&panel->panel_lock); /* Avoid sending panel off commands when ESD recovery is underway */ if (!panel->esd_recovery_pending) { if (!atomic_read(&panel->esd_recovery_pending)) { rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_OFF); if (rc) { pr_err("[%s] failed to send DSI_CMD_SET_OFF cmds, rc=%d\n", Loading drivers/gpu/drm/msm/dsi-staging/dsi_panel.h +1 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,7 @@ struct dsi_panel { bool ulps_enabled; bool ulps_suspend_enabled; bool allow_phy_power_off; bool esd_recovery_pending; atomic_t esd_recovery_pending; bool panel_initialized; bool te_using_watchdog_timer; Loading Loading
drivers/gpu/drm/msm/dsi-staging/dsi_display.c +11 −3 Original line number Diff line number Diff line Loading @@ -733,7 +733,7 @@ int dsi_display_check_status(struct drm_connector *connector, void *display, } /* Prevent another ESD check,when ESD recovery is underway */ if (panel->esd_recovery_pending) { if (atomic_read(&panel->esd_recovery_pending)) { dsi_panel_release_panel_lock(panel); return rc; } Loading Loading @@ -769,7 +769,7 @@ int dsi_display_check_status(struct drm_connector *connector, void *display, false); } else { /* Handle Panel failures during display disable sequence */ panel->esd_recovery_pending = true; atomic_set(&panel->esd_recovery_pending, 1); } dsi_display_clk_ctrl(dsi_display->dsi_clk_handle, Loading Loading @@ -2566,7 +2566,7 @@ static int dsi_host_detach(struct mipi_dsi_host *host, static ssize_t dsi_host_transfer(struct mipi_dsi_host *host, const struct mipi_dsi_msg *msg) { struct dsi_display *display = to_dsi_display(host); struct dsi_display *display; int rc = 0, ret = 0; if (!host || !msg) { Loading @@ -2574,6 +2574,14 @@ static ssize_t dsi_host_transfer(struct mipi_dsi_host *host, return 0; } display = to_dsi_display(host); /* Avoid sending DCS commands when ESD recovery is pending */ if (atomic_read(&display->panel->esd_recovery_pending)) { pr_debug("ESD recovery pending\n"); return 0; } rc = dsi_display_clk_ctrl(display->dsi_clk_handle, DSI_ALL_CLKS, DSI_CLK_ON); if (rc) { Loading
drivers/gpu/drm/msm/dsi-staging/dsi_drm.c +1 −1 Original line number Diff line number Diff line Loading @@ -156,7 +156,7 @@ static void dsi_bridge_pre_enable(struct drm_bridge *bridge) return; } c_bridge->display->panel->esd_recovery_pending = false; atomic_set(&c_bridge->display->panel->esd_recovery_pending, 0); /* By this point mode should have been validated through mode_fixup */ rc = dsi_display_set_mode(c_bridge->display, Loading
drivers/gpu/drm/msm/dsi-staging/dsi_panel.c +2 −2 Original line number Diff line number Diff line Loading @@ -3718,7 +3718,7 @@ int dsi_panel_disable(struct dsi_panel *panel) mutex_lock(&panel->panel_lock); /* Avoid sending panel off commands when ESD recovery is underway */ if (!panel->esd_recovery_pending) { if (!atomic_read(&panel->esd_recovery_pending)) { rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_OFF); if (rc) { pr_err("[%s] failed to send DSI_CMD_SET_OFF cmds, rc=%d\n", Loading
drivers/gpu/drm/msm/dsi-staging/dsi_panel.h +1 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,7 @@ struct dsi_panel { bool ulps_enabled; bool ulps_suspend_enabled; bool allow_phy_power_off; bool esd_recovery_pending; atomic_t esd_recovery_pending; bool panel_initialized; bool te_using_watchdog_timer; Loading