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

Commit e7ac403f authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drm/msm/dsi-staging: optimise TE status check sequence"

parents 7ffe4d2c 277c5f9d
Loading
Loading
Loading
Loading
+16 −12
Original line number Diff line number Diff line
@@ -822,6 +822,11 @@ int dsi_display_check_status(struct drm_connector *connector, void *display,
	if (te_check_override && gpio_is_valid(dsi_display->disp_te_gpio))
		status_mode = ESD_MODE_PANEL_TE;

	if (status_mode == ESD_MODE_PANEL_TE) {
		rc = dsi_display_status_check_te(dsi_display);
		goto exit;
	}

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

@@ -834,26 +839,25 @@ int dsi_display_check_status(struct drm_connector *connector, void *display,
		rc = dsi_display_status_reg_read(dsi_display);
	} else if (status_mode == ESD_MODE_SW_BTA) {
		rc = dsi_display_status_bta_request(dsi_display);
	} else if (status_mode == ESD_MODE_PANEL_TE) {
		rc = dsi_display_status_check_te(dsi_display);
	} else {
		pr_warn("unsupported check status mode\n");
		pr_warn("Unsupported ESD check mode: %d\n", status_mode);
		panel->esd_config.esd_enabled = false;
	}

	/* Unmask error interrupts */
	/* Unmask error interrupts if check passed */
	if (rc > 0) {
		dsi_display_set_ctrl_esd_check_flag(dsi_display, false);
		dsi_display_mask_ctrl_error_interrupts(dsi_display, mask,
							false);
	} else {
		/* Handle Panel failures during display disable sequence */
		atomic_set(&panel->esd_recovery_pending, 1);
		dsi_display_mask_ctrl_error_interrupts(dsi_display,
						       mask, false);
	}

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

exit:
	/* Handle Panel failures during display disable sequence */
	if (rc <= 0)
		atomic_set(&panel->esd_recovery_pending, 1);

release_panel_lock:
	dsi_panel_release_panel_lock(panel);
	SDE_EVT32(SDE_EVTLOG_FUNC_EXIT);