diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/ni.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/r600.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_pm.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/si.c | 10 |
4 files changed, 26 insertions, 10 deletions
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c index 12cebe46e34f..ccb4f8b54852 100644 --- a/drivers/gpu/drm/radeon/ni.c +++ b/drivers/gpu/drm/radeon/ni.c | |||
| @@ -794,9 +794,13 @@ int ni_init_microcode(struct radeon_device *rdev) | |||
| 794 | if ((rdev->family >= CHIP_BARTS) && (rdev->family <= CHIP_CAYMAN)) { | 794 | if ((rdev->family >= CHIP_BARTS) && (rdev->family <= CHIP_CAYMAN)) { |
| 795 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name); | 795 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name); |
| 796 | err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); | 796 | err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); |
| 797 | if (err) | 797 | if (err) { |
| 798 | goto out; | 798 | printk(KERN_ERR |
| 799 | if (rdev->smc_fw->size != smc_req_size) { | 799 | "smc: error loading firmware \"%s\"\n", |
| 800 | fw_name); | ||
| 801 | release_firmware(rdev->smc_fw); | ||
| 802 | rdev->smc_fw = NULL; | ||
| 803 | } else if (rdev->smc_fw->size != smc_req_size) { | ||
| 800 | printk(KERN_ERR | 804 | printk(KERN_ERR |
| 801 | "ni_mc: Bogus length %zu in firmware \"%s\"\n", | 805 | "ni_mc: Bogus length %zu in firmware \"%s\"\n", |
| 802 | rdev->mc_fw->size, fw_name); | 806 | rdev->mc_fw->size, fw_name); |
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index af848045670c..e66e72077350 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c | |||
| @@ -2299,9 +2299,13 @@ int r600_init_microcode(struct radeon_device *rdev) | |||
| 2299 | if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_HEMLOCK)) { | 2299 | if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_HEMLOCK)) { |
| 2300 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", smc_chip_name); | 2300 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", smc_chip_name); |
| 2301 | err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); | 2301 | err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); |
| 2302 | if (err) | 2302 | if (err) { |
| 2303 | goto out; | 2303 | printk(KERN_ERR |
| 2304 | if (rdev->smc_fw->size != smc_req_size) { | 2304 | "smc: error loading firmware \"%s\"\n", |
| 2305 | fw_name); | ||
| 2306 | release_firmware(rdev->smc_fw); | ||
| 2307 | rdev->smc_fw = NULL; | ||
| 2308 | } else if (rdev->smc_fw->size != smc_req_size) { | ||
| 2305 | printk(KERN_ERR | 2309 | printk(KERN_ERR |
| 2306 | "smc: Bogus length %zu in firmware \"%s\"\n", | 2310 | "smc: Bogus length %zu in firmware \"%s\"\n", |
| 2307 | rdev->smc_fw->size, fw_name); | 2311 | rdev->smc_fw->size, fw_name); |
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c index 6a7a80b8a00a..c557850cd345 100644 --- a/drivers/gpu/drm/radeon/radeon_pm.c +++ b/drivers/gpu/drm/radeon/radeon_pm.c | |||
| @@ -1176,9 +1176,13 @@ int radeon_pm_init(struct radeon_device *rdev) | |||
| 1176 | case CHIP_VERDE: | 1176 | case CHIP_VERDE: |
| 1177 | case CHIP_OLAND: | 1177 | case CHIP_OLAND: |
| 1178 | case CHIP_HAINAN: | 1178 | case CHIP_HAINAN: |
| 1179 | /* DPM requires the RLC */ | 1179 | /* DPM requires the RLC, RV770+ dGPU requires SMC */ |
| 1180 | if (!rdev->rlc_fw) | 1180 | if (!rdev->rlc_fw) |
| 1181 | rdev->pm.pm_method = PM_METHOD_PROFILE; | 1181 | rdev->pm.pm_method = PM_METHOD_PROFILE; |
| 1182 | else if ((rdev->family >= CHIP_RV770) && | ||
| 1183 | (!(rdev->flags & RADEON_IS_IGP)) && | ||
| 1184 | (!rdev->smc_fw)) | ||
| 1185 | rdev->pm.pm_method = PM_METHOD_PROFILE; | ||
| 1182 | else if (radeon_dpm == 1) | 1186 | else if (radeon_dpm == 1) |
| 1183 | rdev->pm.pm_method = PM_METHOD_DPM; | 1187 | rdev->pm.pm_method = PM_METHOD_DPM; |
| 1184 | else | 1188 | else |
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c index 6a2dca4acfc1..daa8d2df8ec5 100644 --- a/drivers/gpu/drm/radeon/si.c +++ b/drivers/gpu/drm/radeon/si.c | |||
| @@ -1663,9 +1663,13 @@ static int si_init_microcode(struct radeon_device *rdev) | |||
| 1663 | 1663 | ||
| 1664 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name); | 1664 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name); |
| 1665 | err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); | 1665 | err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); |
| 1666 | if (err) | 1666 | if (err) { |
| 1667 | goto out; | 1667 | printk(KERN_ERR |
| 1668 | if (rdev->smc_fw->size != smc_req_size) { | 1668 | "smc: error loading firmware \"%s\"\n", |
| 1669 | fw_name); | ||
| 1670 | release_firmware(rdev->smc_fw); | ||
| 1671 | rdev->smc_fw = NULL; | ||
| 1672 | } else if (rdev->smc_fw->size != smc_req_size) { | ||
| 1669 | printk(KERN_ERR | 1673 | printk(KERN_ERR |
| 1670 | "si_smc: Bogus length %zu in firmware \"%s\"\n", | 1674 | "si_smc: Bogus length %zu in firmware \"%s\"\n", |
| 1671 | rdev->smc_fw->size, fw_name); | 1675 | rdev->smc_fw->size, fw_name); |
