summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2020-08-12 04:58:50 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2020-08-12 04:58:50 +0000
commit4c58285dda3f96098f8749bb7a1ae60428fb3572 (patch)
tree8fccce49db75dd20d2061fb71a6968c55fef8c29 /sys
parent5ce16db384b557d6495314b37ea1f15896ddc113 (diff)
skip trying to read disabled bios on RV610
Reading the disabled bios on two Dell machines with RV610 passes initial checks but later fails atombios specific checks. This occurs when running amd64 but not i386. Returning early when reading the disabled bios will result in calling radeon_read_platform_bios() and using the bios at 0xc0000 which works for both systems this was reported for semarie@ on Dell OptiPlex 755 RV610 0x1002:0x94C3 0x1028:0x0402 0x00 Andy Bradford on Dell DXP051 RV610 0x1002:0x94C1 0x1028:0x0D02 0x00
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pci/drm/radeon/radeon_bios.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/dev/pci/drm/radeon/radeon_bios.c b/sys/dev/pci/drm/radeon/radeon_bios.c
index 2e796527f4d..f0282c83240 100644
--- a/sys/dev/pci/drm/radeon/radeon_bios.c
+++ b/sys/dev/pci/drm/radeon/radeon_bios.c
@@ -523,6 +523,16 @@ static bool r600_read_disabled_bios(struct radeon_device *rdev)
uint32_t ctxsw_vid_lower_gpio_cntl;
uint32_t lower_gpio_enable;
bool r;
+
+ /*
+ * Some machines with RV610 running amd64 pass initial checks but later
+ * fail atombios specific checks. Return early here so the bios will be
+ * read from 0xc0000 in radeon_read_platform_bios() instead.
+ * RV610 0x1002:0x94C3 0x1028:0x0402 0x00
+ * RV610 0x1002:0x94C1 0x1028:0x0D02 0x00
+ */
+ if (rdev->family == CHIP_RV610)
+ return false;
viph_control = RREG32(RADEON_VIPH_CONTROL);
bus_cntl = RREG32(R600_BUS_CNTL);