|
@@ -532,6 +532,7 @@ int pp_atomfwctrl_get_vbios_bootup_values(struct pp_hwmgr *hwmgr,
|
|
|
boot_values->usVddci = info->bootup_vddci_mv;
|
|
|
boot_values->usMvddc = info->bootup_mvddc_mv;
|
|
|
boot_values->usVddGfx = info->bootup_vddgfx_mv;
|
|
|
+ boot_values->ucCoolingID = info->coolingsolution_id;
|
|
|
boot_values->ulSocClk = 0;
|
|
|
boot_values->ulDCEFClk = 0;
|
|
|
|
|
@@ -543,3 +544,89 @@ int pp_atomfwctrl_get_vbios_bootup_values(struct pp_hwmgr *hwmgr,
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
+int pp_atomfwctrl_get_smc_dpm_information(struct pp_hwmgr *hwmgr,
|
|
|
+ struct pp_atomfwctrl_smc_dpm_parameters *param)
|
|
|
+{
|
|
|
+ struct atom_smc_dpm_info_v4_1 *info;
|
|
|
+ uint16_t ix;
|
|
|
+
|
|
|
+ ix = GetIndexIntoMasterDataTable(smc_dpm_info);
|
|
|
+ info = (struct atom_smc_dpm_info_v4_1 *)
|
|
|
+ cgs_atom_get_data_table(hwmgr->device,
|
|
|
+ ix, NULL, NULL, NULL);
|
|
|
+ if (!info) {
|
|
|
+ pr_info("Error retrieving BIOS Table Address!");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ param->liquid1_i2c_address = info->liquid1_i2c_address;
|
|
|
+ param->liquid2_i2c_address = info->liquid2_i2c_address;
|
|
|
+ param->vr_i2c_address = info->vr_i2c_address;
|
|
|
+ param->plx_i2c_address = info->plx_i2c_address;
|
|
|
+
|
|
|
+ param->liquid_i2c_linescl = info->liquid_i2c_linescl;
|
|
|
+ param->liquid_i2c_linesda = info->liquid_i2c_linesda;
|
|
|
+ param->vr_i2c_linescl = info->vr_i2c_linescl;
|
|
|
+ param->vr_i2c_linesda = info->vr_i2c_linesda;
|
|
|
+
|
|
|
+ param->plx_i2c_linescl = info->plx_i2c_linescl;
|
|
|
+ param->plx_i2c_linesda = info->plx_i2c_linesda;
|
|
|
+ param->vrsensorpresent = info->vrsensorpresent;
|
|
|
+ param->liquidsensorpresent = info->liquidsensorpresent;
|
|
|
+
|
|
|
+ param->maxvoltagestepgfx = info->maxvoltagestepgfx;
|
|
|
+ param->maxvoltagestepsoc = info->maxvoltagestepsoc;
|
|
|
+
|
|
|
+ param->vddgfxvrmapping = info->vddgfxvrmapping;
|
|
|
+ param->vddsocvrmapping = info->vddsocvrmapping;
|
|
|
+ param->vddmem0vrmapping = info->vddmem0vrmapping;
|
|
|
+ param->vddmem1vrmapping = info->vddmem1vrmapping;
|
|
|
+
|
|
|
+ param->gfxulvphasesheddingmask = info->gfxulvphasesheddingmask;
|
|
|
+ param->soculvphasesheddingmask = info->soculvphasesheddingmask;
|
|
|
+
|
|
|
+ param->gfxmaxcurrent = info->gfxmaxcurrent;
|
|
|
+ param->gfxoffset = info->gfxoffset;
|
|
|
+ param->padding_telemetrygfx = info->padding_telemetrygfx;
|
|
|
+
|
|
|
+ param->socmaxcurrent = info->socmaxcurrent;
|
|
|
+ param->socoffset = info->socoffset;
|
|
|
+ param->padding_telemetrysoc = info->padding_telemetrysoc;
|
|
|
+
|
|
|
+ param->mem0maxcurrent = info->mem0maxcurrent;
|
|
|
+ param->mem0offset = info->mem0offset;
|
|
|
+ param->padding_telemetrymem0 = info->padding_telemetrymem0;
|
|
|
+
|
|
|
+ param->mem1maxcurrent = info->mem1maxcurrent;
|
|
|
+ param->mem1offset = info->mem1offset;
|
|
|
+ param->padding_telemetrymem1 = info->padding_telemetrymem1;
|
|
|
+
|
|
|
+ param->acdcgpio = info->acdcgpio;
|
|
|
+ param->acdcpolarity = info->acdcpolarity;
|
|
|
+ param->vr0hotgpio = info->vr0hotgpio;
|
|
|
+ param->vr0hotpolarity = info->vr0hotpolarity;
|
|
|
+
|
|
|
+ param->vr1hotgpio = info->vr1hotgpio;
|
|
|
+ param->vr1hotpolarity = info->vr1hotpolarity;
|
|
|
+ param->padding1 = info->padding1;
|
|
|
+ param->padding2 = info->padding2;
|
|
|
+
|
|
|
+ param->ledpin0 = info->ledpin0;
|
|
|
+ param->ledpin1 = info->ledpin1;
|
|
|
+ param->ledpin2 = info->ledpin2;
|
|
|
+
|
|
|
+ param->gfxclkspreadenabled = info->gfxclkspreadenabled;
|
|
|
+ param->gfxclkspreadpercent = info->gfxclkspreadpercent;
|
|
|
+ param->gfxclkspreadfreq = info->gfxclkspreadfreq;
|
|
|
+
|
|
|
+ param->uclkspreadenabled = info->uclkspreadenabled;
|
|
|
+ param->uclkspreadpercent = info->uclkspreadpercent;
|
|
|
+ param->uclkspreadfreq = info->uclkspreadfreq;
|
|
|
+
|
|
|
+ param->socclkspreadenabled = info->socclkspreadenabled;
|
|
|
+ param->socclkspreadpercent = info->socclkspreadpercent;
|
|
|
+ param->socclkspreadfreq = info->socclkspreadfreq;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|