summaryrefslogtreecommitdiffstats
path: root/sys/dev/drm2
diff options
context:
space:
mode:
authordumbbell <dumbbell@FreeBSD.org>2013-09-14 17:22:34 +0000
committerdumbbell <dumbbell@FreeBSD.org>2013-09-14 17:22:34 +0000
commitbd9c6605694a70f599606cf248277cd634f496c2 (patch)
tree3a62a8aa46cebbc9899b057a3600afcc4af01707 /sys/dev/drm2
parenta39ae8127cb28e596f64d96636c0d11344cadc4b (diff)
downloadFreeBSD-src-bd9c6605694a70f599606cf248277cd634f496c2.zip
FreeBSD-src-bd9c6605694a70f599606cf248277cd634f496c2.tar.gz
drm/radeon: Fix usage of vga_pci_map_bios()
vga_pci_(un)map_bios() takes a vgapci device as argument, not a drmn one. This fixes a bug where the BIOS couldn't be mapped if the device wasn't the boot display. Approved by: re (kib; blanket for following drm2/radeon commits)
Diffstat (limited to 'sys/dev/drm2')
-rw-r--r--sys/dev/drm2/radeon/radeon_bios.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/dev/drm2/radeon/radeon_bios.c b/sys/dev/drm2/radeon/radeon_bios.c
index b9ee4d1..8f42f9f 100644
--- a/sys/dev/drm2/radeon/radeon_bios.c
+++ b/sys/dev/drm2/radeon/radeon_bios.c
@@ -100,14 +100,16 @@ static bool igp_read_bios_from_vram(struct radeon_device *rdev)
static bool radeon_read_bios(struct radeon_device *rdev)
{
+ device_t vga_dev;
uint8_t __iomem *bios;
size_t size;
DRM_INFO("%s: ===> Try PCI Expansion ROM...\n", __func__);
+ vga_dev = device_get_parent(rdev->dev);
rdev->bios = NULL;
/* XXX: some cards may return 0 for rom size? ddx has a workaround */
- bios = vga_pci_map_bios(rdev->dev, &size);
+ bios = vga_pci_map_bios(vga_dev, &size);
if (!bios) {
return false;
}
@@ -120,11 +122,11 @@ static bool radeon_read_bios(struct radeon_device *rdev)
DRM_INFO("%s: Incorrect BIOS signature: 0x%02X%02X\n",
__func__, bios[0], bios[1]);
}
- vga_pci_unmap_bios(rdev->dev, bios);
+ vga_pci_unmap_bios(vga_dev, bios);
}
rdev->bios = malloc(size, DRM_MEM_DRIVER, M_WAITOK);
memcpy(rdev->bios, bios, size);
- vga_pci_unmap_bios(rdev->dev, bios);
+ vga_pci_unmap_bios(vga_dev, bios);
return true;
}
OpenPOWER on IntegriCloud