return;
        }
        if (dccg->ctx->dc->debug.root_clock_optimization.bits.dpstream)
-               REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+               REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                       DPSTREAMCLK_GATE_DISABLE, 1,
                        DPSTREAMCLK_ROOT_GATE_DISABLE, 1);
 }
 
        struct dcn_dccg *dccg_dcn = TO_DCN_DCCG(dccg);
 
        if (dccg->ctx->dc->debug.root_clock_optimization.bits.dpstream)
-               REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
-                               DPSTREAMCLK_ROOT_GATE_DISABLE, 0);
+               REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                               DPSTREAMCLK_ROOT_GATE_DISABLE, 0,
+                               DPSTREAMCLK_GATE_DISABLE, 0);
 
        switch (otg_inst) {
        case 0:
        switch (hpo_se_inst) {
        case 0:
                if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_se)
-                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE0_GATE_DISABLE, 1,
                                        SYMCLK32_ROOT_SE0_GATE_DISABLE, 1);
                REG_UPDATE_2(SYMCLK32_SE_CNTL,
                                SYMCLK32_SE0_SRC_SEL, phyd32clk,
                break;
        case 1:
                if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_se)
-                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE1_GATE_DISABLE, 1,
                                        SYMCLK32_ROOT_SE1_GATE_DISABLE, 1);
                REG_UPDATE_2(SYMCLK32_SE_CNTL,
                                SYMCLK32_SE1_SRC_SEL, phyd32clk,
                break;
        case 2:
                if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_se)
-                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE2_GATE_DISABLE, 1,
                                        SYMCLK32_ROOT_SE2_GATE_DISABLE, 1);
                REG_UPDATE_2(SYMCLK32_SE_CNTL,
                                SYMCLK32_SE2_SRC_SEL, phyd32clk,
                break;
        case 3:
                if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_se)
-                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE3_GATE_DISABLE, 1,
                                        SYMCLK32_ROOT_SE3_GATE_DISABLE, 1);
                REG_UPDATE_2(SYMCLK32_SE_CNTL,
                                SYMCLK32_SE3_SRC_SEL, phyd32clk,
                                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,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE0_GATE_DISABLE, 0,
                                        SYMCLK32_ROOT_SE0_GATE_DISABLE, 0);
                break;
        case 1:
                                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,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE1_GATE_DISABLE, 0,
                                        SYMCLK32_ROOT_SE1_GATE_DISABLE, 0);
                break;
        case 2:
                                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,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE2_GATE_DISABLE, 0,
                                        SYMCLK32_ROOT_SE2_GATE_DISABLE, 0);
                break;
        case 3:
                                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,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_SE3_GATE_DISABLE, 0,
                                        SYMCLK32_ROOT_SE3_GATE_DISABLE, 0);
                break;
        default:
        switch (hpo_le_inst) {
        case 0:
                if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_le)
-                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_LE0_GATE_DISABLE, 1,
                                        SYMCLK32_ROOT_LE0_GATE_DISABLE, 1);
                REG_UPDATE_2(SYMCLK32_LE_CNTL,
                                SYMCLK32_LE0_SRC_SEL, phyd32clk,
                break;
        case 1:
                if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_le)
-                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_LE1_GATE_DISABLE, 1,
                                        SYMCLK32_ROOT_LE1_GATE_DISABLE, 1);
                REG_UPDATE_2(SYMCLK32_LE_CNTL,
                                SYMCLK32_LE1_SRC_SEL, phyd32clk,
                                SYMCLK32_LE0_SRC_SEL, 0,
                                SYMCLK32_LE0_EN, 0);
                if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_le)
-                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_LE0_GATE_DISABLE, 0,
                                        SYMCLK32_ROOT_LE0_GATE_DISABLE, 0);
                break;
        case 1:
                                SYMCLK32_LE1_SRC_SEL, 0,
                                SYMCLK32_LE1_EN, 0);
                if (dccg->ctx->dc->debug.root_clock_optimization.bits.symclk32_le)
-                       REG_UPDATE(DCCG_GATE_DISABLE_CNTL3,
+                       REG_UPDATE_2(DCCG_GATE_DISABLE_CNTL3,
+                                       SYMCLK32_LE1_GATE_DISABLE, 0,
                                        SYMCLK32_ROOT_LE1_GATE_DISABLE, 0);
                break;
        default: