int pipe_cnt = 0;
        display_e2e_pipe_params_st *pipes = kzalloc(dc->res_pool->pipe_count * sizeof(display_e2e_pipe_params_st), GFP_KERNEL);
        struct mall_temp_config mall_temp_config;
+
+       /* To handle Freesync properly, setting FreeSync DML parameters
+        * to its default state for the first stage of validation
+        */
+       context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching = false;
+       context->bw_ctx.dml.soc.dram_clock_change_requirement_final = true;
+
        DC_LOGGER_INIT(dc->ctx->logger);
 
        /* For fast validation, there are situations where a shallow copy of
 
        int i, pipe_idx, vlevel_temp = 0;
        double dcfclk = dcn3_2_soc.clock_limits[0].dcfclk_mhz;
        double dcfclk_from_validation = context->bw_ctx.dml.vba.DCFCLKState[vlevel][context->bw_ctx.dml.vba.maxMpcComb];
+       double dcfclk_from_fw_based_mclk_switching = dcfclk_from_validation;
        bool pstate_en = context->bw_ctx.dml.vba.DRAMClockChangeSupport[vlevel][context->bw_ctx.dml.vba.maxMpcComb] !=
                        dm_dram_clock_change_unsupported;
        unsigned int dummy_latency_index = 0;
                                        dc->clk_mgr->bw_params->wm_table.nv_entries[WM_A].dml_input.pstate_latency_us;
                        dcn32_internal_validate_bw(dc, context, pipes, &pipe_cnt, &vlevel, false);
                        maxMpcComb = context->bw_ctx.dml.vba.maxMpcComb;
-                       dcfclk = context->bw_ctx.dml.vba.DCFCLKState[vlevel][context->bw_ctx.dml.vba.maxMpcComb];
+                       dcfclk_from_fw_based_mclk_switching = context->bw_ctx.dml.vba.DCFCLKState[vlevel][context->bw_ctx.dml.vba.maxMpcComb];
                        pstate_en = context->bw_ctx.dml.vba.DRAMClockChangeSupport[vlevel][maxMpcComb] !=
                                        dm_dram_clock_change_unsupported;
                }
        pipes[0].clks_cfg.dcfclk_mhz = dcfclk_from_validation;
        pipes[0].clks_cfg.socclk_mhz = context->bw_ctx.dml.soc.clock_limits[vlevel].socclk_mhz;
 
+       if (context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching) {
+               pipes[0].clks_cfg.dcfclk_mhz = dcfclk_from_fw_based_mclk_switching;
+       }
+
        if (dc->clk_mgr->bw_params->wm_table.nv_entries[WM_C].valid) {
                min_dram_speed_mts = context->bw_ctx.dml.vba.DRAMSpeed;
                min_dram_speed_mts_margin = 160;