diff options
author | Bjorn Helgaas <bjorn.helgaas@hp.com> | 2008-10-15 11:50:48 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-16 18:06:54 -0400 |
commit | 9bd8f9c638c51313328d664a2f7a5e413cfd9044 (patch) | |
tree | ef26a00bcc5ebea843a5e0ae4afeb4518960d39d /arch/frv/mb93090-mb00 | |
parent | 1eee21abaf54338b379b33d85b28b495292c2211 (diff) |
frv: use generic pci_enable_resources()
Use the generic pci_enable_resources() instead of the arch-specific code.
Unlike this arch-specific code, the generic version:
- checks PCI_NUM_RESOURCES (11), not 6, resources
- skips resources that have neither IORESOURCE_IO nor IORESOURCE_MEM set
- skips ROM resources unless IORESOURCE_ROM_ENABLE is set
- checks for resource collisions with "!r->parent"
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/frv/mb93090-mb00')
-rw-r--r-- | arch/frv/mb93090-mb00/pci-frv.c | 32 | ||||
-rw-r--r-- | arch/frv/mb93090-mb00/pci-frv.h | 1 | ||||
-rw-r--r-- | arch/frv/mb93090-mb00/pci-vdk.c | 2 |
3 files changed, 1 insertions, 34 deletions
diff --git a/arch/frv/mb93090-mb00/pci-frv.c b/arch/frv/mb93090-mb00/pci-frv.c index edae117fcc2b..43d67534c712 100644 --- a/arch/frv/mb93090-mb00/pci-frv.c +++ b/arch/frv/mb93090-mb00/pci-frv.c | |||
@@ -201,38 +201,6 @@ void __init pcibios_resource_survey(void) | |||
201 | pcibios_assign_resources(); | 201 | pcibios_assign_resources(); |
202 | } | 202 | } |
203 | 203 | ||
204 | int pcibios_enable_resources(struct pci_dev *dev, int mask) | ||
205 | { | ||
206 | u16 cmd, old_cmd; | ||
207 | int idx; | ||
208 | struct resource *r; | ||
209 | |||
210 | pci_read_config_word(dev, PCI_COMMAND, &cmd); | ||
211 | old_cmd = cmd; | ||
212 | for(idx=0; idx<6; idx++) { | ||
213 | /* Only set up the requested stuff */ | ||
214 | if (!(mask & (1<<idx))) | ||
215 | continue; | ||
216 | |||
217 | r = &dev->resource[idx]; | ||
218 | if (!r->start && r->end) { | ||
219 | printk(KERN_ERR "PCI: Device %s not available because of resource collisions\n", pci_name(dev)); | ||
220 | return -EINVAL; | ||
221 | } | ||
222 | if (r->flags & IORESOURCE_IO) | ||
223 | cmd |= PCI_COMMAND_IO; | ||
224 | if (r->flags & IORESOURCE_MEM) | ||
225 | cmd |= PCI_COMMAND_MEMORY; | ||
226 | } | ||
227 | if (dev->resource[PCI_ROM_RESOURCE].start) | ||
228 | cmd |= PCI_COMMAND_MEMORY; | ||
229 | if (cmd != old_cmd) { | ||
230 | printk("PCI: Enabling device %s (%04x -> %04x)\n", pci_name(dev), old_cmd, cmd); | ||
231 | pci_write_config_word(dev, PCI_COMMAND, cmd); | ||
232 | } | ||
233 | return 0; | ||
234 | } | ||
235 | |||
236 | /* | 204 | /* |
237 | * If we set up a device for bus mastering, we need to check the latency | 205 | * If we set up a device for bus mastering, we need to check the latency |
238 | * timer as certain crappy BIOSes forget to set it properly. | 206 | * timer as certain crappy BIOSes forget to set it properly. |
diff --git a/arch/frv/mb93090-mb00/pci-frv.h b/arch/frv/mb93090-mb00/pci-frv.h index 0c7bf39dc729..f3fe55914793 100644 --- a/arch/frv/mb93090-mb00/pci-frv.h +++ b/arch/frv/mb93090-mb00/pci-frv.h | |||
@@ -29,7 +29,6 @@ extern unsigned int __nongpreldata pci_probe; | |||
29 | extern unsigned int pcibios_max_latency; | 29 | extern unsigned int pcibios_max_latency; |
30 | 30 | ||
31 | void pcibios_resource_survey(void); | 31 | void pcibios_resource_survey(void); |
32 | int pcibios_enable_resources(struct pci_dev *, int); | ||
33 | 32 | ||
34 | /* pci-vdk.c */ | 33 | /* pci-vdk.c */ |
35 | 34 | ||
diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c index f003cfa68b7a..0f41c3a72da5 100644 --- a/arch/frv/mb93090-mb00/pci-vdk.c +++ b/arch/frv/mb93090-mb00/pci-vdk.c | |||
@@ -412,7 +412,7 @@ int pcibios_enable_device(struct pci_dev *dev, int mask) | |||
412 | { | 412 | { |
413 | int err; | 413 | int err; |
414 | 414 | ||
415 | if ((err = pcibios_enable_resources(dev, mask)) < 0) | 415 | if ((err = pci_enable_resources(dev, mask)) < 0) |
416 | return err; | 416 | return err; |
417 | if (!dev->msi_enabled) | 417 | if (!dev->msi_enabled) |
418 | pcibios_enable_irq(dev); | 418 | pcibios_enable_irq(dev); |