|
@@ -467,23 +467,27 @@ bool radeon_card_posted(struct radeon_device *rdev)
|
|
|
{
|
|
|
uint32_t reg;
|
|
|
|
|
|
+ /* required for EFI mode on macbook2,1 which uses an r5xx asic */
|
|
|
if (efi_enabled(EFI_BOOT) &&
|
|
|
- rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE)
|
|
|
+ (rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE) &&
|
|
|
+ (rdev->family < CHIP_R600))
|
|
|
return false;
|
|
|
|
|
|
+ if (ASIC_IS_NODCE(rdev))
|
|
|
+ goto check_memsize;
|
|
|
+
|
|
|
/* first check CRTCs */
|
|
|
- if (ASIC_IS_DCE41(rdev)) {
|
|
|
+ if (ASIC_IS_DCE4(rdev)) {
|
|
|
reg = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET) |
|
|
|
RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET);
|
|
|
- if (reg & EVERGREEN_CRTC_MASTER_EN)
|
|
|
- return true;
|
|
|
- } else if (ASIC_IS_DCE4(rdev)) {
|
|
|
- reg = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET) |
|
|
|
- RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET) |
|
|
|
- RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET) |
|
|
|
- RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET) |
|
|
|
- RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET) |
|
|
|
- RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET);
|
|
|
+ if (rdev->num_crtc >= 4) {
|
|
|
+ reg |= RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET) |
|
|
|
+ RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET);
|
|
|
+ }
|
|
|
+ if (rdev->num_crtc >= 6) {
|
|
|
+ reg |= RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET) |
|
|
|
+ RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET);
|
|
|
+ }
|
|
|
if (reg & EVERGREEN_CRTC_MASTER_EN)
|
|
|
return true;
|
|
|
} else if (ASIC_IS_AVIVO(rdev)) {
|
|
@@ -500,6 +504,7 @@ bool radeon_card_posted(struct radeon_device *rdev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+check_memsize:
|
|
|
/* then check MEM_SIZE, in case the crtcs are off */
|
|
|
if (rdev->family >= CHIP_R600)
|
|
|
reg = RREG32(R600_CONFIG_MEMSIZE);
|