]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm/amd/display: Do not double-buffer DTO adjustments
authorWesley Chalmers <Wesley.Chalmers@amd.com>
Mon, 16 Sep 2019 20:42:38 +0000 (15:42 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 3 Oct 2019 14:10:45 +0000 (09:10 -0500)
[WHY]
When changing DPP global ref clock, DTO adjustments must take effect
immediately, or else underflow may occur.
It appears the original decision to double-buffer DTO adjustments was made to
prevent underflows that occur when raising DPP ref clock (which is not
double-buffered), but that same decision causes similar issues when
lowering DPP global ref clock. The better solution is to order the
adjustments according to whether clocks are being raised or lowered.

Signed-off-by: Wesley Chalmers <Wesley.Chalmers@amd.com>
Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Acked-by: Anthony Koo <Anthony.Koo@amd.com>
Acked-by: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.c

index 16476ed255363d88cfdb37aa1405c03140125bf3..2064366322755249c506977f351f23df5e3ff7d6 100644 (file)
@@ -119,32 +119,6 @@ void dccg2_get_dccg_ref_freq(struct dccg *dccg,
 
 void dccg2_init(struct dccg *dccg)
 {
-       struct dcn_dccg *dccg_dcn = TO_DCN_DCCG(dccg);
-
-       // Fallthrough intentional to program all available dpp_dto's
-       switch (dccg_dcn->base.ctx->dc->res_pool->pipe_count) {
-       case 6:
-               REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[5], 1);
-               /* Fall through */
-       case 5:
-               REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[4], 1);
-               /* Fall through */
-       case 4:
-               REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[3], 1);
-               /* Fall through */
-       case 3:
-               REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[2], 1);
-               /* Fall through */
-       case 2:
-               REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[1], 1);
-               /* Fall through */
-       case 1:
-               REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[0], 1);
-               break;
-       default:
-               ASSERT(false);
-               break;
-       }
 }
 
 static const struct dccg_funcs dccg2_funcs = {