lkml.org 
[lkml]   [2021]   [Jul]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 5.13 106/266] drm/amd/display: Cover edge-case when changing DISPCLK WDIVIDER
    Hi

    On 2021-07-15, Greg Kroah-Hartman wrote:
    > From: Wesley Chalmers <Wesley.Chalmers@amd.com>
    >
    > [ 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
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2021-07-15 23:14    [W:4.069 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site