disp: msm: dsi: update MDP/DSI transfer time calculation
This change ensure that in cases panel transfer time is specified, the final transfer time is calculated in accordance with the minimum threshold time allowed. Change-Id: I3442d4d3e8a27ec30d93725cb96b229bb94f2ce2 Signed-off-by: Satya Rama Aditya Pinapala <psraditya30@codeaurora.org>
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
b41ee8cf11
commit
ab5d2638de
@@ -3646,7 +3646,7 @@ void dsi_panel_calc_dsi_transfer_time(struct dsi_host_common_cfg *config,
|
|||||||
struct dsi_mode_info *timing = &mode->timing;
|
struct dsi_mode_info *timing = &mode->timing;
|
||||||
struct dsi_display_mode *display_mode;
|
struct dsi_display_mode *display_mode;
|
||||||
u32 jitter_numer, jitter_denom, prefill_lines;
|
u32 jitter_numer, jitter_denom, prefill_lines;
|
||||||
u32 min_threshold_us, prefill_time_us;
|
u32 min_threshold_us, prefill_time_us, max_transfer_us;
|
||||||
u16 bpp;
|
u16 bpp;
|
||||||
|
|
||||||
/* Packet overlead in bits,2 bytes header + 2 bytes checksum
|
/* Packet overlead in bits,2 bytes header + 2 bytes checksum
|
||||||
@@ -3687,6 +3687,26 @@ void dsi_panel_calc_dsi_transfer_time(struct dsi_host_common_cfg *config,
|
|||||||
|
|
||||||
timing->min_dsi_clk_hz = min_bitclk_hz;
|
timing->min_dsi_clk_hz = min_bitclk_hz;
|
||||||
|
|
||||||
|
min_threshold_us = mult_frac(frame_time_us,
|
||||||
|
jitter_numer, (jitter_denom * 100));
|
||||||
|
/*
|
||||||
|
* Increase the prefill_lines proportionately as recommended
|
||||||
|
* 35lines for 60fps, 52 for 90fps, 70lines for 120fps.
|
||||||
|
*/
|
||||||
|
prefill_lines = mult_frac(MIN_PREFILL_LINES,
|
||||||
|
timing->refresh_rate, 60);
|
||||||
|
|
||||||
|
prefill_time_us = mult_frac(frame_time_us, prefill_lines,
|
||||||
|
(timing->v_active));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Threshold is sum of panel jitter time, prefill line time
|
||||||
|
* plus 64usec buffer time.
|
||||||
|
*/
|
||||||
|
min_threshold_us = min_threshold_us + 64 + prefill_time_us;
|
||||||
|
|
||||||
|
DSI_DEBUG("min threshold time=%d\n", min_threshold_us);
|
||||||
|
|
||||||
if (timing->clk_rate_hz) {
|
if (timing->clk_rate_hz) {
|
||||||
/* adjust the transfer time proportionately for bit clk*/
|
/* adjust the transfer time proportionately for bit clk*/
|
||||||
dsi_transfer_time_us = frame_time_us * min_bitclk_hz;
|
dsi_transfer_time_us = frame_time_us * min_bitclk_hz;
|
||||||
@@ -3694,30 +3714,13 @@ void dsi_panel_calc_dsi_transfer_time(struct dsi_host_common_cfg *config,
|
|||||||
timing->dsi_transfer_time_us = dsi_transfer_time_us;
|
timing->dsi_transfer_time_us = dsi_transfer_time_us;
|
||||||
|
|
||||||
} else if (mode->priv_info->mdp_transfer_time_us) {
|
} else if (mode->priv_info->mdp_transfer_time_us) {
|
||||||
|
max_transfer_us = frame_time_us - min_threshold_us;
|
||||||
|
mode->priv_info->mdp_transfer_time_us = min(
|
||||||
|
mode->priv_info->mdp_transfer_time_us,
|
||||||
|
max_transfer_us);
|
||||||
timing->dsi_transfer_time_us =
|
timing->dsi_transfer_time_us =
|
||||||
mode->priv_info->mdp_transfer_time_us;
|
mode->priv_info->mdp_transfer_time_us;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
min_threshold_us = mult_frac(frame_time_us,
|
|
||||||
jitter_numer, (jitter_denom * 100));
|
|
||||||
/*
|
|
||||||
* Increase the prefill_lines proportionately as recommended
|
|
||||||
* 35lines for 60fps, 52 for 90fps, 70lines for 120fps.
|
|
||||||
*/
|
|
||||||
prefill_lines = mult_frac(MIN_PREFILL_LINES,
|
|
||||||
timing->refresh_rate, 60);
|
|
||||||
|
|
||||||
prefill_time_us = mult_frac(frame_time_us, prefill_lines,
|
|
||||||
(timing->v_active));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Threshold is sum of panel jitter time, prefill line time
|
|
||||||
* plus 100usec buffer time.
|
|
||||||
*/
|
|
||||||
min_threshold_us = min_threshold_us + 100 + prefill_time_us;
|
|
||||||
|
|
||||||
DSI_DEBUG("min threshold time=%d\n", min_threshold_us);
|
|
||||||
|
|
||||||
if (min_threshold_us > frame_threshold_us)
|
if (min_threshold_us > frame_threshold_us)
|
||||||
frame_threshold_us = min_threshold_us;
|
frame_threshold_us = min_threshold_us;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user