Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/display: Apply 60us prefetch for DCFCLK <= 300Mhz

[Description]
- Previously we wanted to apply extra 60us of prefetch for min DCFCLK
(200Mhz), but DCFCLK can be calculated to be 201Mhz which underflows
also without the extra prefetch
- Instead, apply the the extra 60us prefetch for any DCFCLK freq <=
300Mhz

Reviewed-by: Nevenko Stupar <nevenko.stupar@amd.com>
Reviewed-by: Jun Lei <jun.lei@amd.com>
Acked-by: Tom Chung <chiahsuan.chung@amd.com>
Signed-off-by: Alvin Lee <alvin.lee2@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Alvin Lee and committed by
Alex Deucher
7e60ab4e de231189

+3 -3
+2 -2
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c
··· 811 811 v->SwathHeightC[k], 812 812 TWait, 813 813 (v->DRAMSpeedPerState[mode_lib->vba.VoltageLevel] <= MEM_STROBE_FREQ_MHZ || 814 - v->DCFCLKPerState[mode_lib->vba.VoltageLevel] <= MIN_DCFCLK_FREQ_MHZ) ? 814 + v->DCFCLKPerState[mode_lib->vba.VoltageLevel] <= DCFCLK_FREQ_EXTRA_PREFETCH_REQ_MHZ) ? 815 815 mode_lib->vba.ip.min_prefetch_in_strobe_us : 0, 816 816 /* Output */ 817 817 &v->DSTXAfterScaler[k], ··· 3315 3315 v->swath_width_chroma_ub_this_state[k], 3316 3316 v->SwathHeightYThisState[k], 3317 3317 v->SwathHeightCThisState[k], v->TWait, 3318 - (v->DRAMSpeedPerState[i] <= MEM_STROBE_FREQ_MHZ || v->DCFCLKState[i][j] <= MIN_DCFCLK_FREQ_MHZ) ? 3318 + (v->DRAMSpeedPerState[i] <= MEM_STROBE_FREQ_MHZ || v->DCFCLKState[i][j] <= DCFCLK_FREQ_EXTRA_PREFETCH_REQ_MHZ) ? 3319 3319 mode_lib->vba.ip.min_prefetch_in_strobe_us : 0, 3320 3320 3321 3321 /* Output */
+1 -1
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.h
··· 53 53 #define BPP_BLENDED_PIPE 0xffffffff 54 54 55 55 #define MEM_STROBE_FREQ_MHZ 1600 56 - #define MIN_DCFCLK_FREQ_MHZ 200 56 + #define DCFCLK_FREQ_EXTRA_PREFETCH_REQ_MHZ 300 57 57 #define MEM_STROBE_MAX_DELIVERY_TIME_US 60.0 58 58 59 59 struct display_mode_lib;