|
@@ -3946,6 +3946,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 default_prefill_lines, actual_prefill_lines;
|
|
u32 min_threshold_us, prefill_time_us, max_transfer_us, packet_overhead;
|
|
u32 min_threshold_us, prefill_time_us, max_transfer_us, packet_overhead;
|
|
u16 bpp;
|
|
u16 bpp;
|
|
|
|
|
|
@@ -4009,8 +4010,12 @@ void dsi_panel_calc_dsi_transfer_time(struct dsi_host_common_cfg *config,
|
|
* Increase the prefill_lines proportionately as recommended
|
|
* Increase the prefill_lines proportionately as recommended
|
|
* 40lines for 60fps, 60 for 90fps, 120lines for 120fps, and so on.
|
|
* 40lines for 60fps, 60 for 90fps, 120lines for 120fps, and so on.
|
|
*/
|
|
*/
|
|
- prefill_lines = mult_frac(MIN_PREFILL_LINES,
|
|
|
|
- timing->refresh_rate, 60);
|
|
|
|
|
|
+ default_prefill_lines = mult_frac(MIN_PREFILL_LINES, timing->refresh_rate, 60);
|
|
|
|
+
|
|
|
|
+ actual_prefill_lines = timing->v_back_porch + timing->v_front_porch + timing->v_sync_width;
|
|
|
|
+
|
|
|
|
+ /* consider the max of default prefill lines and actual prefill lines */
|
|
|
|
+ prefill_lines = max(actual_prefill_lines, default_prefill_lines);
|
|
|
|
|
|
prefill_time_us = mult_frac(frame_time_us, prefill_lines,
|
|
prefill_time_us = mult_frac(frame_time_us, prefill_lines,
|
|
(timing->v_active));
|
|
(timing->v_active));
|