aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-04-21 18:58:35 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-21 18:58:35 -0400
commitbda0c0afa7a694bb1459fd023515aca681e4d79a (patch)
treecd8b9d9811463de2065cbe79d59689082d6c53cf /arch/ia64
parent904e0ab54b7591b9cb01cfc0dbbedcc8bc0d949b (diff)
parentaf40b485ea2d957ae2f237ab0e33539ae8f29562 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6: (42 commits) PCI: Change PCI subsystem MAINTAINER PCI: pci-iommu-iotlb-flushing-speedup PCI: pci_setup_bridge() mustn't be __devinit PCI: pci_bus_size_cardbus() mustn't be __devinit PCI: pci_scan_device() mustn't be __devinit PCI: pci_alloc_child_bus() mustn't be __devinit PCI: replace remaining __FUNCTION__ occurrences PCI: Hotplug: fakephp: Return success, not ENODEV, when bus rescan is triggered PCI: Hotplug: Fix leaks in IBM Hot Plug Controller Driver - ibmphp_init_devno() PCI: clean up resource alignment management PCI: aerdrv_acpi.c: remove unneeded NULL check PCI: Update VIA CX700 quirk PCI: Expose PCI VPD through sysfs PCI: iommu: iotlb flushing PCI: simplify quirk debug output PCI: iova RB tree setup tweak PCI: parisc: use generic pci_enable_resources() PCI: ppc: use generic pci_enable_resources() PCI: powerpc: use generic pci_enable_resources() PCI: ia64: use generic pci_enable_resources() ...
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/pci/pci.c44
1 files changed, 1 insertions, 43 deletions
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 53d0a8ee35d7..77b15f80f101 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -504,54 +504,12 @@ pcibios_update_irq (struct pci_dev *dev, int irq)
504 /* ??? FIXME -- record old value for shutdown. */ 504 /* ??? FIXME -- record old value for shutdown. */
505} 505}
506 506
507static inline int
508pcibios_enable_resources (struct pci_dev *dev, int mask)
509{
510 u16 cmd, old_cmd;
511 int idx;
512 struct resource *r;
513 unsigned long type_mask = IORESOURCE_IO | IORESOURCE_MEM;
514
515 if (!dev)
516 return -EINVAL;
517
518 pci_read_config_word(dev, PCI_COMMAND, &cmd);
519 old_cmd = cmd;
520 for (idx=0; idx<PCI_NUM_RESOURCES; idx++) {
521 /* Only set up the desired resources. */
522 if (!(mask & (1 << idx)))
523 continue;
524
525 r = &dev->resource[idx];
526 if (!(r->flags & type_mask))
527 continue;
528 if ((idx == PCI_ROM_RESOURCE) &&
529 (!(r->flags & IORESOURCE_ROM_ENABLE)))
530 continue;
531 if (!r->start && r->end) {
532 printk(KERN_ERR
533 "PCI: Device %s not available because of resource collisions\n",
534 pci_name(dev));
535 return -EINVAL;
536 }
537 if (r->flags & IORESOURCE_IO)
538 cmd |= PCI_COMMAND_IO;
539 if (r->flags & IORESOURCE_MEM)
540 cmd |= PCI_COMMAND_MEMORY;
541 }
542 if (cmd != old_cmd) {
543 printk("PCI: Enabling device %s (%04x -> %04x)\n", pci_name(dev), old_cmd, cmd);
544 pci_write_config_word(dev, PCI_COMMAND, cmd);
545 }
546 return 0;
547}
548
549int 507int
550pcibios_enable_device (struct pci_dev *dev, int mask) 508pcibios_enable_device (struct pci_dev *dev, int mask)
551{ 509{
552 int ret; 510 int ret;
553 511
554 ret = pcibios_enable_resources(dev, mask); 512 ret = pci_enable_resources(dev, mask);
555 if (ret < 0) 513 if (ret < 0)
556 return ret; 514 return ret;
557 515