aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2013-03-25 12:47:23 -0400
committerAlex Deucher <alexander.deucher@amd.com>2013-06-27 19:16:40 -0400
commit2abba66e7af70825734eaf9fdea37c97f9e7b6ff (patch)
tree35376bc5322224f66f07d0ca4f9109dd590dcede /drivers
parent4489cd62e5a2a4900422424457c6e8dca875056b (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.c4
-rw-r--r--drivers/gpu/drm/radeon/radeon_atombios.c11
-rw-r--r--drivers/gpu/drm/radeon/radeon_mode.h2
-rw-r--r--drivers/gpu/drm/radeon/rv6xx_dpm.c4
-rw-r--r--drivers/gpu/drm/radeon/rv770_dpm.c4
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
2272void radeon_atombios_get_default_voltages(struct radeon_device *rdev, 2272void 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);
610extern enum radeon_tv_std 610extern enum radeon_tv_std
611radeon_atombios_get_tv_info(struct radeon_device *rdev); 611radeon_atombios_get_tv_info(struct radeon_device *rdev);
612extern void radeon_atombios_get_default_voltages(struct radeon_device *rdev, 612extern void radeon_atombios_get_default_voltages(struct radeon_device *rdev,
613 u16 *vddc, u16 *vddci); 613 u16 *vddc, u16 *vddci, u16 *mvdd);
614 614
615extern struct drm_connector * 615extern struct drm_connector *
616radeon_get_connector_for_encoder(struct drm_encoder *encoder); 616radeon_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;