From f4bb978a663eca853446a84c6b56b86bdbaccc08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-S=C3=A9bastien=20P=C3=A9dron?= Date: Sat, 14 Sep 2013 17:22:34 +0000 Subject: [PATCH] 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) --- sys/dev/drm2/radeon/radeon_bios.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/dev/drm2/radeon/radeon_bios.c b/sys/dev/drm2/radeon/radeon_bios.c index b9ee4d166fa..8f42f9f1f55 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; }