diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2013-03-25 12:47:23 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2013-06-27 19:16:40 -0400 |
commit | 2abba66e7af70825734eaf9fdea37c97f9e7b6ff (patch) | |
tree | 35376bc5322224f66f07d0ca4f9109dd590dcede /drivers | |
parent | 4489cd62e5a2a4900422424457c6e8dca875056b (diff) |
drm/radeon: update radeon_atombios_get_default_voltages for mvdd
Add a way to look up the bootup mvdd. Required for DPM on SI.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/radeon/ni_dpm.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_atombios.c | 11 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_mode.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rv6xx_dpm.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rv770_dpm.c | 4 |
5 files changed, 14 insertions, 11 deletions
diff --git a/drivers/gpu/drm/radeon/ni_dpm.c b/drivers/gpu/drm/radeon/ni_dpm.c index 21c064badaa2..86f98db4716d 100644 --- a/drivers/gpu/drm/radeon/ni_dpm.c +++ b/drivers/gpu/drm/radeon/ni_dpm.c | |||
@@ -3800,8 +3800,8 @@ static void ni_parse_pplib_clock_info(struct radeon_device *rdev, | |||
3800 | 3800 | ||
3801 | /* patch up boot state */ | 3801 | /* patch up boot state */ |
3802 | if (rps->class & ATOM_PPLIB_CLASSIFICATION_BOOT) { | 3802 | if (rps->class & ATOM_PPLIB_CLASSIFICATION_BOOT) { |
3803 | u16 vddc, vddci; | 3803 | u16 vddc, vddci, mvdd; |
3804 | radeon_atombios_get_default_voltages(rdev, &vddc, &vddci); | 3804 | radeon_atombios_get_default_voltages(rdev, &vddc, &vddci, &mvdd); |
3805 | pl->mclk = rdev->clock.default_mclk; | 3805 | pl->mclk = rdev->clock.default_mclk; |
3806 | pl->sclk = rdev->clock.default_sclk; | 3806 | pl->sclk = rdev->clock.default_sclk; |
3807 | pl->vddc = vddc; | 3807 | pl->vddc = vddc; |
diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c index c707ed034713..54b8e8c1f731 100644 --- a/drivers/gpu/drm/radeon/radeon_atombios.c +++ b/drivers/gpu/drm/radeon/radeon_atombios.c | |||
@@ -2270,7 +2270,7 @@ static void radeon_atombios_add_pplib_thermal_controller(struct radeon_device *r | |||
2270 | } | 2270 | } |
2271 | 2271 | ||
2272 | void radeon_atombios_get_default_voltages(struct radeon_device *rdev, | 2272 | void radeon_atombios_get_default_voltages(struct radeon_device *rdev, |
2273 | u16 *vddc, u16 *vddci) | 2273 | u16 *vddc, u16 *vddci, u16 *mvdd) |
2274 | { | 2274 | { |
2275 | struct radeon_mode_info *mode_info = &rdev->mode_info; | 2275 | struct radeon_mode_info *mode_info = &rdev->mode_info; |
2276 | int index = GetIndexIntoMasterTable(DATA, FirmwareInfo); | 2276 | int index = GetIndexIntoMasterTable(DATA, FirmwareInfo); |
@@ -2280,6 +2280,7 @@ void radeon_atombios_get_default_voltages(struct radeon_device *rdev, | |||
2280 | 2280 | ||
2281 | *vddc = 0; | 2281 | *vddc = 0; |
2282 | *vddci = 0; | 2282 | *vddci = 0; |
2283 | *mvdd = 0; | ||
2283 | 2284 | ||
2284 | if (atom_parse_data_header(mode_info->atom_context, index, NULL, | 2285 | if (atom_parse_data_header(mode_info->atom_context, index, NULL, |
2285 | &frev, &crev, &data_offset)) { | 2286 | &frev, &crev, &data_offset)) { |
@@ -2287,8 +2288,10 @@ void radeon_atombios_get_default_voltages(struct radeon_device *rdev, | |||
2287 | (union firmware_info *)(mode_info->atom_context->bios + | 2288 | (union firmware_info *)(mode_info->atom_context->bios + |
2288 | data_offset); | 2289 | data_offset); |
2289 | *vddc = le16_to_cpu(firmware_info->info_14.usBootUpVDDCVoltage); | 2290 | *vddc = le16_to_cpu(firmware_info->info_14.usBootUpVDDCVoltage); |
2290 | if ((frev == 2) && (crev >= 2)) | 2291 | if ((frev == 2) && (crev >= 2)) { |
2291 | *vddci = le16_to_cpu(firmware_info->info_22.usBootUpVDDCIVoltage); | 2292 | *vddci = le16_to_cpu(firmware_info->info_22.usBootUpVDDCIVoltage); |
2293 | *mvdd = le16_to_cpu(firmware_info->info_22.usBootUpMVDDCVoltage); | ||
2294 | } | ||
2292 | } | 2295 | } |
2293 | } | 2296 | } |
2294 | 2297 | ||
@@ -2299,9 +2302,9 @@ static void radeon_atombios_parse_pplib_non_clock_info(struct radeon_device *rde | |||
2299 | int j; | 2302 | int j; |
2300 | u32 misc = le32_to_cpu(non_clock_info->ulCapsAndSettings); | 2303 | u32 misc = le32_to_cpu(non_clock_info->ulCapsAndSettings); |
2301 | u32 misc2 = le16_to_cpu(non_clock_info->usClassification); | 2304 | u32 misc2 = le16_to_cpu(non_clock_info->usClassification); |
2302 | u16 vddc, vddci; | 2305 | u16 vddc, vddci, mvdd; |
2303 | 2306 | ||
2304 | radeon_atombios_get_default_voltages(rdev, &vddc, &vddci); | 2307 | radeon_atombios_get_default_voltages(rdev, &vddc, &vddci, &mvdd); |
2305 | 2308 | ||
2306 | rdev->pm.power_state[state_index].misc = misc; | 2309 | rdev->pm.power_state[state_index].misc = misc; |
2307 | rdev->pm.power_state[state_index].misc2 = misc2; | 2310 | rdev->pm.power_state[state_index].misc2 = misc2; |
diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h index 0a4b50fa9c59..b568cb19a7fa 100644 --- a/drivers/gpu/drm/radeon/radeon_mode.h +++ b/drivers/gpu/drm/radeon/radeon_mode.h | |||
@@ -610,7 +610,7 @@ radeon_combios_get_tv_info(struct radeon_device *rdev); | |||
610 | extern enum radeon_tv_std | 610 | extern enum radeon_tv_std |
611 | radeon_atombios_get_tv_info(struct radeon_device *rdev); | 611 | radeon_atombios_get_tv_info(struct radeon_device *rdev); |
612 | extern void radeon_atombios_get_default_voltages(struct radeon_device *rdev, | 612 | extern void radeon_atombios_get_default_voltages(struct radeon_device *rdev, |
613 | u16 *vddc, u16 *vddci); | 613 | u16 *vddc, u16 *vddci, u16 *mvdd); |
614 | 614 | ||
615 | extern struct drm_connector * | 615 | extern struct drm_connector * |
616 | radeon_get_connector_for_encoder(struct drm_encoder *encoder); | 616 | radeon_get_connector_for_encoder(struct drm_encoder *encoder); |
diff --git a/drivers/gpu/drm/radeon/rv6xx_dpm.c b/drivers/gpu/drm/radeon/rv6xx_dpm.c index cc2a7c2477e7..2beb3d7cf77a 100644 --- a/drivers/gpu/drm/radeon/rv6xx_dpm.c +++ b/drivers/gpu/drm/radeon/rv6xx_dpm.c | |||
@@ -1821,8 +1821,8 @@ static void rv6xx_parse_pplib_clock_info(struct radeon_device *rdev, | |||
1821 | 1821 | ||
1822 | /* patch up boot state */ | 1822 | /* patch up boot state */ |
1823 | if (rps->class & ATOM_PPLIB_CLASSIFICATION_BOOT) { | 1823 | if (rps->class & ATOM_PPLIB_CLASSIFICATION_BOOT) { |
1824 | u16 vddc, vddci; | 1824 | u16 vddc, vddci, mvdd; |
1825 | radeon_atombios_get_default_voltages(rdev, &vddc, &vddci); | 1825 | radeon_atombios_get_default_voltages(rdev, &vddc, &vddci, &mvdd); |
1826 | pl->mclk = rdev->clock.default_mclk; | 1826 | pl->mclk = rdev->clock.default_mclk; |
1827 | pl->sclk = rdev->clock.default_sclk; | 1827 | pl->sclk = rdev->clock.default_sclk; |
1828 | pl->vddc = vddc; | 1828 | pl->vddc = vddc; |
diff --git a/drivers/gpu/drm/radeon/rv770_dpm.c b/drivers/gpu/drm/radeon/rv770_dpm.c index aa387647a7dd..2039802e8829 100644 --- a/drivers/gpu/drm/radeon/rv770_dpm.c +++ b/drivers/gpu/drm/radeon/rv770_dpm.c | |||
@@ -2175,8 +2175,8 @@ static void rv7xx_parse_pplib_clock_info(struct radeon_device *rdev, | |||
2175 | 2175 | ||
2176 | /* patch up boot state */ | 2176 | /* patch up boot state */ |
2177 | if (rps->class & ATOM_PPLIB_CLASSIFICATION_BOOT) { | 2177 | if (rps->class & ATOM_PPLIB_CLASSIFICATION_BOOT) { |
2178 | u16 vddc, vddci; | 2178 | u16 vddc, vddci, mvdd; |
2179 | radeon_atombios_get_default_voltages(rdev, &vddc, &vddci); | 2179 | radeon_atombios_get_default_voltages(rdev, &vddc, &vddci, &mvdd); |
2180 | pl->mclk = rdev->clock.default_mclk; | 2180 | pl->mclk = rdev->clock.default_mclk; |
2181 | pl->sclk = rdev->clock.default_sclk; | 2181 | pl->sclk = rdev->clock.default_sclk; |
2182 | pl->vddc = vddc; | 2182 | pl->vddc = vddc; |