diff options
| -rw-r--r-- | arch/i386/pci/common.c | 1 | ||||
| -rw-r--r-- | arch/i386/pci/i386.c | 49 | ||||
| -rw-r--r-- | drivers/pci/setup-bus.c | 2 |
3 files changed, 17 insertions, 35 deletions
diff --git a/arch/i386/pci/common.c b/arch/i386/pci/common.c index ade5bc57c34c..c96bea14b98f 100644 --- a/arch/i386/pci/common.c +++ b/arch/i386/pci/common.c | |||
| @@ -165,7 +165,6 @@ static int __init pcibios_init(void) | |||
| 165 | if ((pci_probe & PCI_BIOS_SORT) && !(pci_probe & PCI_NO_SORT)) | 165 | if ((pci_probe & PCI_BIOS_SORT) && !(pci_probe & PCI_NO_SORT)) |
| 166 | pcibios_sort(); | 166 | pcibios_sort(); |
| 167 | #endif | 167 | #endif |
| 168 | pci_assign_unassigned_resources(); | ||
| 169 | return 0; | 168 | return 0; |
| 170 | } | 169 | } |
| 171 | 170 | ||
diff --git a/arch/i386/pci/i386.c b/arch/i386/pci/i386.c index 93a364c82150..3cc480998a47 100644 --- a/arch/i386/pci/i386.c +++ b/arch/i386/pci/i386.c | |||
| @@ -170,43 +170,26 @@ static void __init pcibios_allocate_resources(int pass) | |||
| 170 | static int __init pcibios_assign_resources(void) | 170 | static int __init pcibios_assign_resources(void) |
| 171 | { | 171 | { |
| 172 | struct pci_dev *dev = NULL; | 172 | struct pci_dev *dev = NULL; |
| 173 | int idx; | 173 | struct resource *r, *pr; |
| 174 | struct resource *r; | ||
| 175 | |||
| 176 | for_each_pci_dev(dev) { | ||
| 177 | int class = dev->class >> 8; | ||
| 178 | |||
| 179 | /* Don't touch classless devices and host bridges */ | ||
| 180 | if (!class || class == PCI_CLASS_BRIDGE_HOST) | ||
| 181 | continue; | ||
| 182 | |||
| 183 | for(idx=0; idx<6; idx++) { | ||
| 184 | r = &dev->resource[idx]; | ||
| 185 | |||
| 186 | /* | ||
| 187 | * Don't touch IDE controllers and I/O ports of video cards! | ||
| 188 | */ | ||
| 189 | if ((class == PCI_CLASS_STORAGE_IDE && idx < 4) || | ||
| 190 | (class == PCI_CLASS_DISPLAY_VGA && (r->flags & IORESOURCE_IO))) | ||
| 191 | continue; | ||
| 192 | |||
| 193 | /* | ||
| 194 | * We shall assign a new address to this resource, either because | ||
| 195 | * the BIOS forgot to do so or because we have decided the old | ||
| 196 | * address was unusable for some reason. | ||
| 197 | */ | ||
| 198 | if (!r->start && r->end) | ||
| 199 | pci_assign_resource(dev, idx); | ||
| 200 | } | ||
| 201 | 174 | ||
| 202 | if (pci_probe & PCI_ASSIGN_ROMS) { | 175 | if (!(pci_probe & PCI_ASSIGN_ROMS)) { |
| 176 | /* Try to use BIOS settings for ROMs, otherwise let | ||
| 177 | pci_assign_unassigned_resources() allocate the new | ||
| 178 | addresses. */ | ||
| 179 | for_each_pci_dev(dev) { | ||
| 203 | r = &dev->resource[PCI_ROM_RESOURCE]; | 180 | r = &dev->resource[PCI_ROM_RESOURCE]; |
| 204 | r->end -= r->start; | 181 | if (!r->flags || !r->start) |
| 205 | r->start = 0; | 182 | continue; |
| 206 | if (r->end) | 183 | pr = pci_find_parent_resource(dev, r); |
| 207 | pci_assign_resource(dev, PCI_ROM_RESOURCE); | 184 | if (!pr || request_resource(pr, r) < 0) { |
| 185 | r->end -= r->start; | ||
| 186 | r->start = 0; | ||
| 187 | } | ||
| 208 | } | 188 | } |
| 209 | } | 189 | } |
| 190 | |||
| 191 | pci_assign_unassigned_resources(); | ||
| 192 | |||
| 210 | return 0; | 193 | return 0; |
| 211 | } | 194 | } |
| 212 | 195 | ||
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index 6d864c502a1f..6b0e6464eb39 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c | |||
| @@ -40,7 +40,7 @@ | |||
| 40 | * FIXME: IO should be max 256 bytes. However, since we may | 40 | * FIXME: IO should be max 256 bytes. However, since we may |
| 41 | * have a P2P bridge below a cardbus bridge, we need 4K. | 41 | * have a P2P bridge below a cardbus bridge, we need 4K. |
| 42 | */ | 42 | */ |
| 43 | #define CARDBUS_IO_SIZE (256) | 43 | #define CARDBUS_IO_SIZE (4*1024) |
| 44 | #define CARDBUS_MEM_SIZE (32*1024*1024) | 44 | #define CARDBUS_MEM_SIZE (32*1024*1024) |
| 45 | 45 | ||
| 46 | static void __devinit | 46 | static void __devinit |
