}
 
 
+void hubbub1_wm_change_req_wa(struct hubbub *hubbub)
+{
+       REG_UPDATE_SEQ(DCHUBBUB_ARB_WATERMARK_CHANGE_CNTL,
+                       DCHUBBUB_ARB_WATERMARK_CHANGE_REQUEST, 0, 1);
+}
+
 void hubbub1_program_watermarks(
                struct hubbub *hubbub,
                struct dcn_watermark_set *watermarks,
         */
        uint32_t prog_wm_value;
 
-       REG_UPDATE(DCHUBBUB_ARB_WATERMARK_CHANGE_CNTL,
-                       DCHUBBUB_ARB_WATERMARK_CHANGE_REQUEST, 0);
 
        /* Repeat for water mark set A, B, C and D. */
        /* clock state A */
                        watermarks->d.cstate_pstate.pstate_change_ns, prog_wm_value);
        }
 
-       REG_UPDATE(DCHUBBUB_ARB_WATERMARK_CHANGE_CNTL,
-                       DCHUBBUB_ARB_WATERMARK_CHANGE_REQUEST, 1);
-
        REG_UPDATE(DCHUBBUB_ARB_SAT_LEVEL,
                        DCHUBBUB_ARB_SAT_LEVEL, 60 * refclk_mhz);
        REG_UPDATE(DCHUBBUB_ARB_DF_REQ_OUTSTAND,
 
 bool hubbub1_verify_allow_pstate_change_high(
        struct hubbub *hubbub);
 
+void hubbub1_wm_change_req_wa(struct hubbub *hubbub);
+
 void hubbub1_program_watermarks(
                struct hubbub *hubbub,
                struct dcn_watermark_set *watermarks,
 
                hubbub1_program_watermarks(dc->res_pool->hubbub,
                                &context->bw.dcn.watermarks, ref_clk_mhz, true);
 
+               if (dc->hwseq->wa.DEGVIDCN10_254)
+                       hubbub1_wm_change_req_wa(dc->res_pool->hubbub);
+
                if (dc->debug.sanity_checks) {
                        /* pstate stuck check after watermark update */
                        dcn10_verify_allow_pstate_change_high(dc);