Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0364b310 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drm/msm/dsi-staging: fix ESD check scheduling sequence"

parents e7d24e4b 318cff16
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -376,7 +376,7 @@ int dsi_display_check_status(void *display)
	struct dsi_display *dsi_display = display;
	struct dsi_panel *panel;
	u32 status_mode;
	int rc = 0;
	int rc = 0x1;

	if (dsi_display == NULL)
		return -EINVAL;
@@ -385,6 +385,14 @@ int dsi_display_check_status(void *display)

	status_mode = panel->esd_config.status_mode;

	mutex_lock(&dsi_display->display_lock);

	if (!panel->panel_initialized) {
		pr_debug("Panel not initialized\n");
		mutex_unlock(&dsi_display->display_lock);
		return rc;
	}

	dsi_display_clk_ctrl(dsi_display->dsi_clk_handle,
		DSI_ALL_CLKS, DSI_CLK_ON);

@@ -401,6 +409,7 @@ int dsi_display_check_status(void *display)

	dsi_display_clk_ctrl(dsi_display->dsi_clk_handle,
		DSI_ALL_CLKS, DSI_CLK_OFF);
	mutex_unlock(&dsi_display->display_lock);

	return rc;
}
+1 −10
Original line number Diff line number Diff line
@@ -4059,10 +4059,6 @@ static void sde_crtc_disable(struct drm_crtc *crtc)

	SDE_DEBUG("crtc%d\n", crtc->base.id);

	for (i = 0; i < cstate->num_connectors; i++)
		sde_connector_schedule_status_work(cstate->connectors[i],
							false);

	if (sde_kms_is_suspend_state(crtc->dev))
		_sde_crtc_set_suspend(crtc, true);

@@ -4159,15 +4155,13 @@ static void sde_crtc_enable(struct drm_crtc *crtc)
	struct sde_crtc_irq_info *node = NULL;
	struct drm_event event;
	u32 power_on;
	int ret, i;
	struct sde_crtc_state *cstate;
	int ret;

	if (!crtc || !crtc->dev || !crtc->dev->dev_private) {
		SDE_ERROR("invalid crtc\n");
		return;
	}
	priv = crtc->dev->dev_private;
	cstate = to_sde_crtc_state(crtc->state);

	SDE_DEBUG("crtc%d\n", crtc->base.id);
	SDE_EVT32_VERBOSE(DRMID(crtc));
@@ -4231,9 +4225,6 @@ static void sde_crtc_enable(struct drm_crtc *crtc)
		SDE_POWER_EVENT_POST_ENABLE | SDE_POWER_EVENT_POST_DISABLE |
		SDE_POWER_EVENT_PRE_DISABLE,
		sde_crtc_handle_power_event, crtc, sde_crtc->name);

	for (i = 0; i < cstate->num_connectors; i++)
		sde_connector_schedule_status_work(cstate->connectors[i], true);
}

struct plane_state {
+10 −0
Original line number Diff line number Diff line
@@ -2267,6 +2267,7 @@ static void sde_encoder_virt_enable(struct drm_encoder *drm_enc)
	struct msm_compression_info *comp_info = NULL;
	struct drm_display_mode *cur_mode = NULL;
	struct msm_mode_info mode_info;
	struct drm_connector *drm_conn = NULL;

	if (!drm_enc) {
		SDE_ERROR("invalid encoder\n");
@@ -2342,6 +2343,10 @@ static void sde_encoder_virt_enable(struct drm_encoder *drm_enc)
		sde_enc->cur_master->ops.enable(sde_enc->cur_master);

	_sde_encoder_virt_enable_helper(drm_enc);

	/* Enable ESD thread */
	drm_conn = sde_enc->cur_master->connector;
	sde_connector_schedule_status_work(drm_conn, true);
}

static void sde_encoder_virt_disable(struct drm_encoder *drm_enc)
@@ -2349,6 +2354,7 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc)
	struct sde_encoder_virt *sde_enc = NULL;
	struct msm_drm_private *priv;
	struct sde_kms *sde_kms;
	struct drm_connector *drm_conn = NULL;
	int i = 0;

	if (!drm_enc) {
@@ -2370,6 +2376,10 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc)

	SDE_EVT32(DRMID(drm_enc));

	/* Disable ESD thread */
	drm_conn = sde_enc->cur_master->connector;
	sde_connector_schedule_status_work(drm_conn, false);

	/* wait for idle */
	sde_encoder_wait_for_event(drm_enc, MSM_ENC_TX_COMPLETE);