return ret;
                        }
                }
+               if (power_info->pplib4.usMvddDependencyOnMCLKOffset) {
+                       dep_table = (ATOM_PPLIB_Clock_Voltage_Dependency_Table *)
+                               (mode_info->atom_context->bios + data_offset +
+                                le16_to_cpu(power_info->pplib4.usMvddDependencyOnMCLKOffset));
+                       ret = r600_parse_clk_voltage_dep_table(&rdev->pm.dpm.dyn_state.mvdd_dependency_on_mclk,
+                                                              dep_table);
+                       if (ret) {
+                               kfree(rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk.entries);
+                               kfree(rdev->pm.dpm.dyn_state.vddci_dependency_on_mclk.entries);
+                               kfree(rdev->pm.dpm.dyn_state.vddc_dependency_on_mclk.entries);
+                               return ret;
+                       }
+               }
                if (power_info->pplib4.usMaxClockVoltageOnDCOffset) {
                        ATOM_PPLIB_Clock_Voltage_Limit_Table *clk_v =
                                (ATOM_PPLIB_Clock_Voltage_Limit_Table *)
                                kfree(rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk.entries);
                                kfree(rdev->pm.dpm.dyn_state.vddci_dependency_on_mclk.entries);
                                kfree(rdev->pm.dpm.dyn_state.vddc_dependency_on_mclk.entries);
+                               kfree(rdev->pm.dpm.dyn_state.mvdd_dependency_on_mclk.entries);
                                return -ENOMEM;
                        }
 
                                kfree(rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk.entries);
                                kfree(rdev->pm.dpm.dyn_state.vddci_dependency_on_mclk.entries);
                                kfree(rdev->pm.dpm.dyn_state.vddc_dependency_on_mclk.entries);
+                               kfree(rdev->pm.dpm.dyn_state.mvdd_dependency_on_mclk.entries);
                                return -ENOMEM;
                        }
                        for (i = 0; i < cac_table->ucNumEntries; i++) {
                                kfree(rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk.entries);
                                kfree(rdev->pm.dpm.dyn_state.vddci_dependency_on_mclk.entries);
                                kfree(rdev->pm.dpm.dyn_state.vddc_dependency_on_mclk.entries);
+                               kfree(rdev->pm.dpm.dyn_state.mvdd_dependency_on_mclk.entries);
                                kfree(rdev->pm.dpm.dyn_state.cac_leakage_table.entries);
                                return -ENOMEM;
                        }
                                kfree(rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk.entries);
                                kfree(rdev->pm.dpm.dyn_state.vddci_dependency_on_mclk.entries);
                                kfree(rdev->pm.dpm.dyn_state.vddc_dependency_on_mclk.entries);
+                               kfree(rdev->pm.dpm.dyn_state.mvdd_dependency_on_mclk.entries);
                                kfree(rdev->pm.dpm.dyn_state.cac_leakage_table.entries);
                                kfree(rdev->pm.dpm.dyn_state.ppm_table);
                                return -ENOMEM;
                kfree(rdev->pm.dpm.dyn_state.vddci_dependency_on_mclk.entries);
        if (rdev->pm.dpm.dyn_state.vddc_dependency_on_mclk.entries)
                kfree(rdev->pm.dpm.dyn_state.vddc_dependency_on_mclk.entries);
+       if (rdev->pm.dpm.dyn_state.mvdd_dependency_on_mclk.entries)
+               kfree(rdev->pm.dpm.dyn_state.mvdd_dependency_on_mclk.entries);
        if (rdev->pm.dpm.dyn_state.cac_leakage_table.entries)
                kfree(rdev->pm.dpm.dyn_state.cac_leakage_table.entries);
        if (rdev->pm.dpm.dyn_state.phase_shedding_limits_table.entries)
 
        struct radeon_clock_voltage_dependency_table vddc_dependency_on_sclk;
        struct radeon_clock_voltage_dependency_table vddci_dependency_on_mclk;
        struct radeon_clock_voltage_dependency_table vddc_dependency_on_mclk;
+       struct radeon_clock_voltage_dependency_table mvdd_dependency_on_mclk;
        struct radeon_clock_voltage_dependency_table vddc_dependency_on_dispclk;
        struct radeon_uvd_clock_voltage_dependency_table uvd_clock_voltage_dependency_table;
        struct radeon_clock_array valid_sclk_values;