PCI: add a new function to map BAR offsets
[deliverable/linux.git] / drivers / pci / setup-res.c
index 3c5203ff53c7381e79249e940b54a2006b3cff27..32e8d88a46192fcdd2ab2248f4feb71fe987ec1d 100644 (file)
@@ -31,6 +31,7 @@ void pci_update_resource(struct pci_dev *dev, int resno)
        struct pci_bus_region region;
        u32 new, check, mask;
        int reg;
+       enum pci_bar_type type;
        struct resource *res = dev->resource + resno;
 
        /*
@@ -62,17 +63,13 @@ void pci_update_resource(struct pci_dev *dev, int resno)
        else
                mask = (u32)PCI_BASE_ADDRESS_MEM_MASK;
 
-       if (resno < 6) {
-               reg = PCI_BASE_ADDRESS_0 + 4 * resno;
-       } else if (resno == PCI_ROM_RESOURCE) {
+       reg = pci_resource_bar(dev, resno, &type);
+       if (!reg)
+               return;
+       if (type != pci_bar_unknown) {
                if (!(res->flags & IORESOURCE_ROM_ENABLE))
                        return;
                new |= PCI_ROM_ADDRESS_ENABLE;
-               reg = dev->rom_base_reg;
-       } else {
-               /* Hmm, non-standard resource. */
-       
-               return;         /* kill uninitialised var warning */
        }
 
        pci_write_config_dword(dev, reg, new);
This page took 0.038335 seconds and 5 git commands to generate.