type DTBCLK_P1_GATE_DISABLE;\
        type DTBCLK_P2_GATE_DISABLE;\
        type DTBCLK_P3_GATE_DISABLE;\
+       type DSCCLK0_ROOT_GATE_DISABLE;\
+       type DSCCLK1_ROOT_GATE_DISABLE;\
+       type DSCCLK2_ROOT_GATE_DISABLE;\
+       type DSCCLK3_ROOT_GATE_DISABLE;\
+       type SYMCLKA_FE_ROOT_GATE_DISABLE;\
+       type SYMCLKB_FE_ROOT_GATE_DISABLE;\
+       type SYMCLKC_FE_ROOT_GATE_DISABLE;\
+       type SYMCLKD_FE_ROOT_GATE_DISABLE;\
+       type SYMCLKE_FE_ROOT_GATE_DISABLE;\
+       type DPPCLK0_ROOT_GATE_DISABLE;\
+       type DPPCLK1_ROOT_GATE_DISABLE;\
+       type DPPCLK2_ROOT_GATE_DISABLE;\
+       type DPPCLK3_ROOT_GATE_DISABLE;\
+       type HDMISTREAMCLK0_ROOT_GATE_DISABLE;\
+       type SYMCLKA_ROOT_GATE_DISABLE;\
+       type SYMCLKB_ROOT_GATE_DISABLE;\
+       type SYMCLKC_ROOT_GATE_DISABLE;\
+       type SYMCLKD_ROOT_GATE_DISABLE;\
+       type SYMCLKE_ROOT_GATE_DISABLE;\
+       type PHYA_REFCLK_ROOT_GATE_DISABLE;\
+       type PHYB_REFCLK_ROOT_GATE_DISABLE;\
+       type PHYC_REFCLK_ROOT_GATE_DISABLE;\
+       type PHYD_REFCLK_ROOT_GATE_DISABLE;\
+       type PHYE_REFCLK_ROOT_GATE_DISABLE;\
+       type DPSTREAMCLK0_ROOT_GATE_DISABLE;\
+       type DPSTREAMCLK1_ROOT_GATE_DISABLE;\
+       type DPSTREAMCLK2_ROOT_GATE_DISABLE;\
+       type DPSTREAMCLK3_ROOT_GATE_DISABLE;\
+       type DPSTREAMCLK0_GATE_DISABLE;\
+       type DPSTREAMCLK1_GATE_DISABLE;\
+       type DPSTREAMCLK2_GATE_DISABLE;\
+       type DPSTREAMCLK3_GATE_DISABLE;\
 
 struct dccg_shift {
        DCCG_REG_FIELD_LIST(uint8_t)
 
        dccg->dpp_clock_gated[dpp_inst] = !clock_on;
 }
 
+static void dccg35_disable_symclk32_se(
+               struct dccg *dccg,
+               int hpo_se_inst)
+{
+       struct dcn_dccg *dccg_dcn = TO_DCN_DCCG(dccg);
+
+       /* set refclk as the source for symclk32_se */
+       switch (hpo_se_inst) {
+       case 0:
+               REG_UPDATE_2(SYMCLK32_SE_CNTL,
+                               SYMCLK32_SE0_SRC_SEL, 0,
+                               SYMCLK32_SE0_EN, 0);
+               if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_se) {
+                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE0_GATE_DISABLE, 0);
+//                     REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+//                                     SYMCLK32_ROOT_SE0_GATE_DISABLE, 0);
+               }
+               break;
+       case 1:
+               REG_UPDATE_2(SYMCLK32_SE_CNTL,
+                               SYMCLK32_SE1_SRC_SEL, 0,
+                               SYMCLK32_SE1_EN, 0);
+               if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_se) {
+                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE1_GATE_DISABLE, 0);
+//                     REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+//                                     SYMCLK32_ROOT_SE1_GATE_DISABLE, 0);
+               }
+               break;
+       case 2:
+               REG_UPDATE_2(SYMCLK32_SE_CNTL,
+                               SYMCLK32_SE2_SRC_SEL, 0,
+                               SYMCLK32_SE2_EN, 0);
+               if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_se) {
+                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE2_GATE_DISABLE, 0);
+//                     REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+//                                     SYMCLK32_ROOT_SE2_GATE_DISABLE, 0);
+               }
+               break;
+       case 3:
+               REG_UPDATE_2(SYMCLK32_SE_CNTL,
+                               SYMCLK32_SE3_SRC_SEL, 0,
+                               SYMCLK32_SE3_EN, 0);
+               if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_se) {
+                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE3_GATE_DISABLE, 0);
+//                     REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+//                                     SYMCLK32_ROOT_SE3_GATE_DISABLE, 0);
+               }
+               break;
+       default:
+               BREAK_TO_DEBUGGER();
+               return;
+       }
+}
+
 void dccg35_init(struct dccg *dccg)
 {
        int otg_inst;
         * will cause DCN to hang.
         */
        for (otg_inst = 0; otg_inst < 4; otg_inst++)
-               dccg31_disable_symclk32_se(dccg, otg_inst);
+               dccg35_disable_symclk32_se(dccg, otg_inst);
 
        if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_le)
                for (otg_inst = 0; otg_inst < 2; otg_inst++)
        .dccg_init = dccg35_init,
        .set_dpstreamclk = dccg35_set_dpstreamclk,
        .enable_symclk32_se = dccg31_enable_symclk32_se,
-       .disable_symclk32_se = dccg31_disable_symclk32_se,
+       .disable_symclk32_se = dccg35_disable_symclk32_se,
        .enable_symclk32_le = dccg31_enable_symclk32_le,
        .disable_symclk32_le = dccg31_disable_symclk32_le,
        .set_symclk32_le_root_clock_gating = dccg31_set_symclk32_le_root_clock_gating,
 
 #define DCCG_REG_LIST_DCN35() \
        DCCG_REG_LIST_DCN314(),\
        SR(DPPCLK_CTRL),\
+       SR(DCCG_GATE_DISABLE_CNTL4),\
        SR(DCCG_GATE_DISABLE_CNTL5),\
        SR(DCCG_GATE_DISABLE_CNTL6),\
        SR(DCCG_GLOBAL_FGCG_REP_CNTL),\
        DCCG_SF(DCCG_GATE_DISABLE_CNTL5, DTBCLK_P1_GATE_DISABLE, mask_sh),\
        DCCG_SF(DCCG_GATE_DISABLE_CNTL5, DTBCLK_P2_GATE_DISABLE, mask_sh),\
        DCCG_SF(DCCG_GATE_DISABLE_CNTL5, DTBCLK_P3_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL6, DSCCLK0_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL6, DSCCLK1_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL6, DSCCLK2_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL6, DSCCLK3_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, SYMCLKA_FE_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, SYMCLKB_FE_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, SYMCLKC_FE_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, SYMCLKD_FE_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, SYMCLKE_FE_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL6, DPPCLK0_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL6, DPPCLK1_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL6, DPPCLK2_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL6, DPPCLK3_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL2, HDMICHARCLK0_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL4, HDMICHARCLK0_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL6, HDMISTREAMCLK0_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, SYMCLKA_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, SYMCLKB_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, SYMCLKC_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, SYMCLKD_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, SYMCLKE_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_ROOT_SE0_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_ROOT_SE1_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_ROOT_SE2_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_ROOT_SE3_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_ROOT_LE0_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_ROOT_LE1_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_SE0_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_SE1_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_SE2_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_SE3_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_LE0_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, SYMCLK32_LE1_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL4, PHYA_REFCLK_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL4, PHYB_REFCLK_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL4, PHYC_REFCLK_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL4, PHYD_REFCLK_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL4, PHYE_REFCLK_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, DPSTREAMCLK0_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, DPSTREAMCLK1_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, DPSTREAMCLK2_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, DPSTREAMCLK3_ROOT_GATE_DISABLE, mask_sh),\
+       DCCG_SF(HDMISTREAMCLK0_DTO_PARAM, HDMISTREAMCLK0_DTO_PHASE, mask_sh),\
+       DCCG_SF(HDMISTREAMCLK0_DTO_PARAM, HDMISTREAMCLK0_DTO_MODULO, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL, DISPCLK_DCCG_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL3, HDMISTREAMCLK0_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, DPSTREAMCLK0_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, DPSTREAMCLK1_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, DPSTREAMCLK2_GATE_DISABLE, mask_sh),\
+       DCCG_SF(DCCG_GATE_DISABLE_CNTL5, DPSTREAMCLK3_GATE_DISABLE, mask_sh),\
 
 struct dccg *dccg35_create(
                struct dc_context *ctx,