Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: [PATCH] PCI quirk: VIA IRQ fixup should only run for VIA southbridges [PATCH] PCI: fix potential resource leak in drivers/pci/msi.c [PATCH] PCI: Documentation: no more device ids [PATCH] PCI: fix via irq SATA patch
This commit is contained in:
commit
94b1661d08
4 changed files with 18 additions and 5 deletions
|
@ -259,7 +259,17 @@ on the bus need to be capable of doing it, so this is something which needs
|
|||
to be handled by platform and generic code, not individual drivers.
|
||||
|
||||
|
||||
8. Obsolete functions
|
||||
8. Vendor and device identifications
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
For the future, let's avoid adding device ids to include/linux/pci_ids.h.
|
||||
|
||||
PCI_VENDOR_ID_xxx for vendors, and a hex constant for device ids.
|
||||
|
||||
Rationale: PCI_VENDOR_ID_xxx constants are re-used, but device ids are not.
|
||||
Further, device ids are arbitrary hex numbers, normally used only in a
|
||||
single location, the pci_device_id table.
|
||||
|
||||
9. Obsolete functions
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
There are several functions which you might come across when trying to
|
||||
port an old driver to the new PCI interface. They are no longer present
|
||||
|
|
|
@ -591,7 +591,6 @@ static __init int via_router_probe(struct irq_router *r,
|
|||
case PCI_DEVICE_ID_VIA_8233A:
|
||||
case PCI_DEVICE_ID_VIA_8235:
|
||||
case PCI_DEVICE_ID_VIA_8237:
|
||||
case PCI_DEVICE_ID_VIA_8237_SATA:
|
||||
/* FIXME: add new ones for 8233/5 */
|
||||
r->name = "VIA";
|
||||
r->get = pirq_via_get;
|
||||
|
|
|
@ -793,8 +793,10 @@ static int msix_capability_init(struct pci_dev *dev,
|
|||
if (!entry)
|
||||
break;
|
||||
vector = get_msi_vector(dev);
|
||||
if (vector < 0)
|
||||
if (vector < 0) {
|
||||
kmem_cache_free(msi_cachep, entry);
|
||||
break;
|
||||
}
|
||||
|
||||
j = entries[i].entry;
|
||||
entries[i].vector = vector;
|
||||
|
|
|
@ -642,13 +642,15 @@ static void quirk_via_irq(struct pci_dev *dev)
|
|||
new_irq = dev->irq & 0xf;
|
||||
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
|
||||
if (new_irq != irq) {
|
||||
printk(KERN_INFO "PCI: Via IRQ fixup for %s, from %d to %d\n",
|
||||
printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n",
|
||||
pci_name(dev), irq, new_irq);
|
||||
udelay(15); /* unknown if delay really needed */
|
||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq);
|
||||
}
|
||||
}
|
||||
DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_via_irq);
|
||||
DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq);
|
||||
DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq);
|
||||
DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq);
|
||||
|
||||
/*
|
||||
* VIA VT82C598 has its device ID settable and many BIOSes
|
||||
|
|
Loading…
Reference in a new issue