]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/mips/pci/fixup-loongson3.c
Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[karo-tx-linux.git] / arch / mips / pci / fixup-loongson3.c
index d708ae46d32532a38f5e3356ca291106524990a6..2b6d5e196f9990255eb5d35de3e6580a69f6003f 100644 (file)
@@ -40,20 +40,25 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
 
 static void pci_fixup_radeon(struct pci_dev *pdev)
 {
-       if (pdev->resource[PCI_ROM_RESOURCE].start)
+       struct resource *res = &pdev->resource[PCI_ROM_RESOURCE];
+
+       if (res->start)
                return;
 
        if (!loongson_sysconf.vgabios_addr)
                return;
 
-       pdev->resource[PCI_ROM_RESOURCE].start =
-               loongson_sysconf.vgabios_addr;
-       pdev->resource[PCI_ROM_RESOURCE].end   =
-               loongson_sysconf.vgabios_addr + 256*1024 - 1;
-       pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_COPY;
+       pci_disable_rom(pdev);
+       if (res->parent)
+               release_resource(res);
+
+       res->start = virt_to_phys((void *) loongson_sysconf.vgabios_addr);
+       res->end   = res->start + 256*1024 - 1;
+       res->flags = IORESOURCE_MEM | IORESOURCE_ROM_SHADOW |
+                    IORESOURCE_PCI_FIXED;
 
        dev_info(&pdev->dev, "BAR %d: assigned %pR for Radeon ROM\n",
-                       PCI_ROM_RESOURCE, &pdev->resource[PCI_ROM_RESOURCE]);
+                PCI_ROM_RESOURCE, res);
 }
 
 DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_ATI, PCI_ANY_ID,