aboutsummaryrefslogtreecommitdiffstats
path: root/arch/frv
diff options
context:
space:
mode:
authorBjorn Helgaas <bjorn.helgaas@hp.com>2008-10-15 11:50:48 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-10-16 18:06:54 -0400
commit9bd8f9c638c51313328d664a2f7a5e413cfd9044 (patch)
treeef26a00bcc5ebea843a5e0ae4afeb4518960d39d /arch/frv
parent1eee21abaf54338b379b33d85b28b495292c2211 (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')
-rw-r--r--arch/frv/mb93090-mb00/pci-frv.c32
-rw-r--r--arch/frv/mb93090-mb00/pci-frv.h1
-rw-r--r--arch/frv/mb93090-mb00/pci-vdk.c2
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
204int 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;
29extern unsigned int pcibios_max_latency; 29extern unsigned int pcibios_max_latency;
30 30
31void pcibios_resource_survey(void); 31void pcibios_resource_survey(void);
32int 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);