|
@@ -4365,18 +4365,19 @@ static void _dsi_display_calc_pipe_delay(struct dsi_display *display,
|
|
struct dsi_display_ctrl *m_ctrl;
|
|
struct dsi_display_ctrl *m_ctrl;
|
|
struct dsi_ctrl *dsi_ctrl;
|
|
struct dsi_ctrl *dsi_ctrl;
|
|
struct dsi_phy_cfg *cfg;
|
|
struct dsi_phy_cfg *cfg;
|
|
|
|
+ int phy_ver;
|
|
|
|
|
|
m_ctrl = &display->ctrl[display->clk_master_idx];
|
|
m_ctrl = &display->ctrl[display->clk_master_idx];
|
|
dsi_ctrl = m_ctrl->ctrl;
|
|
dsi_ctrl = m_ctrl->ctrl;
|
|
|
|
|
|
cfg = &(m_ctrl->phy->cfg);
|
|
cfg = &(m_ctrl->phy->cfg);
|
|
|
|
|
|
- esc_clk_rate_hz = dsi_ctrl->clk_freq.esc_clk_rate * 1000;
|
|
|
|
- pclk_to_esc_ratio = ((dsi_ctrl->clk_freq.pix_clk_rate * 1000) /
|
|
|
|
|
|
+ esc_clk_rate_hz = dsi_ctrl->clk_freq.esc_clk_rate;
|
|
|
|
+ pclk_to_esc_ratio = (dsi_ctrl->clk_freq.pix_clk_rate /
|
|
esc_clk_rate_hz);
|
|
esc_clk_rate_hz);
|
|
- byte_to_esc_ratio = ((dsi_ctrl->clk_freq.byte_clk_rate * 1000) /
|
|
|
|
|
|
+ byte_to_esc_ratio = (dsi_ctrl->clk_freq.byte_clk_rate /
|
|
esc_clk_rate_hz);
|
|
esc_clk_rate_hz);
|
|
- hr_bit_to_esc_ratio = ((dsi_ctrl->clk_freq.byte_clk_rate * 4 * 1000) /
|
|
|
|
|
|
+ hr_bit_to_esc_ratio = ((dsi_ctrl->clk_freq.byte_clk_rate * 4) /
|
|
esc_clk_rate_hz);
|
|
esc_clk_rate_hz);
|
|
|
|
|
|
hsync_period = dsi_h_total_dce(&mode->timing);
|
|
hsync_period = dsi_h_total_dce(&mode->timing);
|
|
@@ -4402,8 +4403,17 @@ static void _dsi_display_calc_pipe_delay(struct dsi_display *display,
|
|
((cfg->timing.lane_v3[4] >> 1) + 1)) /
|
|
((cfg->timing.lane_v3[4] >> 1) + 1)) /
|
|
hr_bit_to_esc_ratio);
|
|
hr_bit_to_esc_ratio);
|
|
|
|
|
|
- /* 130 us pll delay recommended by h/w doc */
|
|
|
|
- delay->pll_delay = ((130 * esc_clk_rate_hz) / 1000000) * 2;
|
|
|
|
|
|
+ /*
|
|
|
|
+ * 100us pll delay recommended for phy ver 2.0 and 3.0
|
|
|
|
+ * 25us pll delay recommended for phy ver 4.0
|
|
|
|
+ */
|
|
|
|
+ phy_ver = dsi_phy_get_version(m_ctrl->phy);
|
|
|
|
+ if (phy_ver <= DSI_PHY_VERSION_3_0)
|
|
|
|
+ delay->pll_delay = 100;
|
|
|
|
+ else
|
|
|
|
+ delay->pll_delay = 25;
|
|
|
|
+
|
|
|
|
+ delay->pll_delay = ((delay->pll_delay * esc_clk_rate_hz) / 1000000);
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|