Hi On 2021-07-15, Greg Kroah-Hartman wrote: > From: Wesley Chalmers > > [ Upstream commit 78ebca321999699f30ea19029726d1a3908b395f ] > > [WHY] > When changing the DISPCLK_WDIVIDER value from 126 to 127, the change in > clock rate is too great for the FIFOs to handle. This can cause visible > corruption during clock change. > > HW has handed down this register sequence to fix the issue. > > [HOW] > The sequence, from HW: > a. 127 -> 126 > Read DIG_FIFO_CAL_AVERAGE_LEVEL > FIFO level N = DIG_FIFO_CAL_AVERAGE_LEVEL / 4 > Set DCCG_FIFO_ERRDET_OVR_EN = 1 > Write 1 to OTGx_DROP_PIXEL for (N-4) times > Set DCCG_FIFO_ERRDET_OVR_EN = 0 > Write DENTIST_DISPCLK_RDIVIDER = 126 > > Because of frequency stepping, sequence a can be executed to change the > divider from 127 to any other divider value. > > b. 126 -> 127 > Read DIG_FIFO_CAL_AVERAGE_LEVEL > FIFO level N = DIG_FIFO_CAL_AVERAGE_LEVEL / 4 > Set DCCG_FIFO_ERRDET_OVR_EN = 1 > Write 1 to OTGx_ADD_PIXEL for (12-N) times > Set DCCG_FIFO_ERRDET_OVR_EN = 0 > Write DENTIST_DISPCLK_RDIVIDER = 127 > > Because of frequency stepping, divider must first be set from any other > divider value to 126 before executing sequence b. [...] This patch seem to introduce a build regression for x86_64: CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.o /build/linux-5.13/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c: In function 'dcn20_update_clocks_update_dentist': /build/linux-5.13/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c:154:26: error: 'const struct stream_encoder_funcs' has no member named 'get_fifo_cal_average_level' 154 | if (!stream_enc->funcs->get_fifo_cal_average_level) | ^~ /build/linux-5.13/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c:156:34: error: 'const struct stream_encoder_funcs' has no member named 'get_fifo_cal_average_level' 156 | fifo_level = stream_enc->funcs->get_fifo_cal_average_level( | ^~ /build/linux-5.13/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c:159:15: error: 'const struct dccg_funcs' has no member named 'set_fifo_errdet_ovr_en' 159 | dccg->funcs->set_fifo_errdet_ovr_en( | ^~ /build/linux-5.13/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c:163:16: error: 'const struct dccg_funcs' has no member named 'otg_drop_pixel' 163 | dccg->funcs->otg_drop_pixel( | ^~ /build/linux-5.13/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c:166:15: error: 'const struct dccg_funcs' has no member named 'set_fifo_errdet_ovr_en' 166 | dccg->funcs->set_fifo_errdet_ovr_en( | ^~ /build/linux-5.13/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c:185:26: error: 'const struct stream_encoder_funcs' has no member named 'get_fifo_cal_average_level' 185 | if (!stream_enc->funcs->get_fifo_cal_average_level) | ^~ /build/linux-5.13/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c:187:34: error: 'const struct stream_encoder_funcs' has no member named 'get_fifo_cal_average_level' 187 | fifo_level = stream_enc->funcs->get_fifo_cal_average_level( | ^~ /build/linux-5.13/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c:190:15: error: 'const struct dccg_funcs' has no member named 'set_fifo_errdet_ovr_en' 190 | dccg->funcs->set_fifo_errdet_ovr_en(dccg, true); | ^~ /build/linux-5.13/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c:192:16: error: 'const struct dccg_funcs' has no member named 'otg_add_pixel' 192 | dccg->funcs->otg_add_pixel(dccg, | ^~ /build/linux-5.13/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c:194:15: error: 'const struct dccg_funcs' has no member named 'set_fifo_errdet_ovr_en' 194 | dccg->funcs->set_fifo_errdet_ovr_en(dccg, false); | ^~ make[5]: *** [/build/linux-aptosid-5.13/scripts/Makefile.build:273: drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.o] Error 1 make[4]: *** [/build/linux-aptosid-5.13/scripts/Makefile.build:516: drivers/gpu/drm/amd/amdgpu] Error 2 make[3]: *** [/build/linux-aptosid-5.13/scripts/Makefile.build:516: drivers/gpu/drm] Error 2 make[2]: *** [/build/linux-aptosid-5.13/scripts/Makefile.build:516: drivers/gpu] Error 2 make[1]: *** [/build/linux-aptosid-5.13/Makefile:1864: drivers] Error 2 make: *** [/build/linux-aptosid-5.13/Makefile:215: __sub-make] Error 2 Regards Stefan Lippers-Hollmann