diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_device.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_device.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index c90f8d37026..c224c1d944e 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c | |||
@@ -182,7 +182,16 @@ bool radeon_card_posted(struct radeon_device *rdev) | |||
182 | uint32_t reg; | 182 | uint32_t reg; |
183 | 183 | ||
184 | /* first check CRTCs */ | 184 | /* first check CRTCs */ |
185 | if (ASIC_IS_AVIVO(rdev)) { | 185 | if (ASIC_IS_DCE4(rdev)) { |
186 | reg = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET) | | ||
187 | RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET) | | ||
188 | RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET) | | ||
189 | RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET) | | ||
190 | RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET) | | ||
191 | RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET); | ||
192 | if (reg & EVERGREEN_CRTC_MASTER_EN) | ||
193 | return true; | ||
194 | } else if (ASIC_IS_AVIVO(rdev)) { | ||
186 | reg = RREG32(AVIVO_D1CRTC_CONTROL) | | 195 | reg = RREG32(AVIVO_D1CRTC_CONTROL) | |
187 | RREG32(AVIVO_D2CRTC_CONTROL); | 196 | RREG32(AVIVO_D2CRTC_CONTROL); |
188 | if (reg & AVIVO_CRTC_EN) { | 197 | if (reg & AVIVO_CRTC_EN) { |
@@ -310,7 +319,7 @@ void radeon_register_accessor_init(struct radeon_device *rdev) | |||
310 | rdev->mc_rreg = &rs600_mc_rreg; | 319 | rdev->mc_rreg = &rs600_mc_rreg; |
311 | rdev->mc_wreg = &rs600_mc_wreg; | 320 | rdev->mc_wreg = &rs600_mc_wreg; |
312 | } | 321 | } |
313 | if (rdev->family >= CHIP_R600) { | 322 | if ((rdev->family >= CHIP_R600) && (rdev->family <= CHIP_RV740)) { |
314 | rdev->pciep_rreg = &r600_pciep_rreg; | 323 | rdev->pciep_rreg = &r600_pciep_rreg; |
315 | rdev->pciep_wreg = &r600_pciep_wreg; | 324 | rdev->pciep_wreg = &r600_pciep_wreg; |
316 | } | 325 | } |
@@ -387,6 +396,13 @@ int radeon_asic_init(struct radeon_device *rdev) | |||
387 | case CHIP_RV740: | 396 | case CHIP_RV740: |
388 | rdev->asic = &rv770_asic; | 397 | rdev->asic = &rv770_asic; |
389 | break; | 398 | break; |
399 | case CHIP_CEDAR: | ||
400 | case CHIP_REDWOOD: | ||
401 | case CHIP_JUNIPER: | ||
402 | case CHIP_CYPRESS: | ||
403 | case CHIP_HEMLOCK: | ||
404 | rdev->asic = &evergreen_asic; | ||
405 | break; | ||
390 | default: | 406 | default: |
391 | /* FIXME: not supported yet */ | 407 | /* FIXME: not supported yet */ |
392 | return -EINVAL; | 408 | return -EINVAL; |