dg2_cdclk_squash_program(dev_priv, waveform);
 
        val = bxt_cdclk_cd2x_div_sel(dev_priv, clock, vco) |
-               bxt_cdclk_cd2x_pipe(dev_priv, pipe) |
-               skl_cdclk_decimal(cdclk);
+               bxt_cdclk_cd2x_pipe(dev_priv, pipe);
 
        /*
         * Disable SSA Precharge when CD clock frequency < 500 MHz,
        if ((IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) &&
            cdclk >= 500000)
                val |= BXT_CDCLK_SSA_PRECHARGE_ENABLE;
+
+       if (DISPLAY_VER(dev_priv) >= 20)
+               val |= MDCLK_SOURCE_SEL_CDCLK_PLL;
+       else
+               val |= skl_cdclk_decimal(cdclk);
+
        intel_de_write(dev_priv, CDCLK_CTL, val);
 
        if (pipe != INVALID_PIPE)
 
 #define  CDCLK_FREQ_540                REG_FIELD_PREP(CDCLK_FREQ_SEL_MASK, 1)
 #define  CDCLK_FREQ_337_308            REG_FIELD_PREP(CDCLK_FREQ_SEL_MASK, 2)
 #define  CDCLK_FREQ_675_617            REG_FIELD_PREP(CDCLK_FREQ_SEL_MASK, 3)
+#define  MDCLK_SOURCE_SEL_CDCLK_PLL    REG_BIT(25)
 #define  BXT_CDCLK_CD2X_DIV_SEL_MASK   REG_GENMASK(23, 22)
 #define  BXT_CDCLK_CD2X_DIV_SEL_1      REG_FIELD_PREP(BXT_CDCLK_CD2X_DIV_SEL_MASK, 0)
 #define  BXT_CDCLK_CD2X_DIV_SEL_1_5    REG_FIELD_PREP(BXT_CDCLK_CD2X_DIV_SEL_MASK, 1)