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

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

Merge "msm: mdss: return error if dynamic refresh interrupt is timeout"

parents fa5da903 f7df3883
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -1154,6 +1154,8 @@ static int __mdss_dsi_dfps_update_clks(struct mdss_panel_data *pdata,

		if (mdss_dsi_is_ctrl_clk_slave(ctrl_pdata)) {
			pr_debug("%s DFPS already updated.\n", __func__);
			ctrl_pdata->panel_data.panel_info.mipi.frame_rate =
				new_fps;
			return rc;
		}

@@ -1182,7 +1184,7 @@ static int __mdss_dsi_dfps_update_clks(struct mdss_panel_data *pdata,
			return rc;
		}

		mdss_dsi_en_wait4dynamic_done(ctrl_pdata);
		rc = mdss_dsi_en_wait4dynamic_done(ctrl_pdata);
		MIPI_OUTP((ctrl_pdata->ctrl_base) + DSI_DYNAMIC_REFRESH_CTRL,
							0x00);

@@ -1195,7 +1197,10 @@ static int __mdss_dsi_dfps_update_clks(struct mdss_panel_data *pdata,
				ctrl_pdata->pll_pixel_clk);
		clk_disable_unprepare(ctrl_pdata->pll_byte_clk);
		clk_disable_unprepare(ctrl_pdata->pll_pixel_clk);
		ctrl_pdata->panel_data.panel_info.mipi.frame_rate = new_fps;

		if (!rc)
			ctrl_pdata->panel_data.panel_info.mipi.frame_rate =
				new_fps;
	} else {
		ctrl_pdata->pclk_rate =
			pdata->panel_info.mipi.dsi_pclk_rate;
+1 −1
Original line number Diff line number Diff line
@@ -470,7 +470,7 @@ void mdss_dsi_ctrl_init(struct device *ctrl_dev,
			struct mdss_dsi_ctrl_pdata *ctrl);
void mdss_dsi_cmd_mdp_busy(struct mdss_dsi_ctrl_pdata *ctrl);
void mdss_dsi_wait4video_done(struct mdss_dsi_ctrl_pdata *ctrl);
void mdss_dsi_en_wait4dynamic_done(struct mdss_dsi_ctrl_pdata *ctrl);
int mdss_dsi_en_wait4dynamic_done(struct mdss_dsi_ctrl_pdata *ctrl);
int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp);
void mdss_dsi_cmdlist_kickoff(int intf);
int mdss_dsi_bta_status_check(struct mdss_dsi_ctrl_pdata *ctrl);
+8 −2
Original line number Diff line number Diff line
@@ -1903,10 +1903,12 @@ static int mdss_dsi_cmd_dma_rx(struct mdss_dsi_ctrl_pdata *ctrl,
	return rx_byte;
}

void mdss_dsi_en_wait4dynamic_done(struct mdss_dsi_ctrl_pdata *ctrl)
int mdss_dsi_en_wait4dynamic_done(struct mdss_dsi_ctrl_pdata *ctrl)
{
	unsigned long flag;
	u32 data;
	int rc = 0;

	/* DSI_INTL_CTRL */
	data = MIPI_INP((ctrl->ctrl_base) + 0x0110);
	data &= DSI_INTR_TOTAL_MASK;
@@ -1921,13 +1923,17 @@ void mdss_dsi_en_wait4dynamic_done(struct mdss_dsi_ctrl_pdata *ctrl)
			(BIT(8) | BIT(0)));

	if (!wait_for_completion_timeout(&ctrl->dynamic_comp,
				msecs_to_jiffies(VSYNC_PERIOD * 4)))
			msecs_to_jiffies(VSYNC_PERIOD * 4))) {
		pr_err("Dynamic interrupt timedout\n");
		rc = -EINVAL;
	}

	data = MIPI_INP((ctrl->ctrl_base) + 0x0110);
	data &= DSI_INTR_TOTAL_MASK;
	data &= ~DSI_INTR_DYNAMIC_REFRESH_MASK;
	MIPI_OUTP((ctrl->ctrl_base) + 0x0110, data);

	return rc;
}

void mdss_dsi_wait4video_done(struct mdss_dsi_ctrl_pdata *ctrl)