diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2005-11-09 15:18:34 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-11-09 15:18:34 -0800 |
commit | b2edf684bfa576a0cb33370ddd3939fda3fe686c (patch) | |
tree | 71cc6ea5b23646566d5b646b9775a353abe0a38a /pci | |
parent | e49e0224b0b66758dd02090f752d1453aea94607 (diff) | |
download | patches-b2edf684bfa576a0cb33370ddd3939fda3fe686c.tar.gz |
added more pci patches
Diffstat (limited to 'pci')
-rw-r--r-- | pci/pci-arch-i386-pci-acpi.c-use-for_each_pci_dev.patch | 33 | ||||
-rw-r--r-- | pci/pci-arch-pci_find_device-remove-frv.patch | 31 | ||||
-rw-r--r-- | pci/pci-fix-for-toshiba-ohci1394-quirk.patch | 44 | ||||
-rw-r--r-- | pci/pci-pci_find_device-remove-pci-ebus.patch | 51 | ||||
-rw-r--r-- | pci/pci-pci_find_device-remove-pci-frv.patch | 42 | ||||
-rw-r--r-- | pci/pci-pci_find_device-remove-pci-mpc85xx_cds_common.patch | 60 | ||||
-rw-r--r-- | pci/pci-pci_find_device-remove-pci-ppc.patch | 62 | ||||
-rw-r--r-- | pci/pci-pci_find_device-remove-sys_alcor.patch | 37 | ||||
-rw-r--r-- | pci/pci-pci_find_device-remove-sys_sio.patch | 40 |
9 files changed, 400 insertions, 0 deletions
diff --git a/pci/pci-arch-i386-pci-acpi.c-use-for_each_pci_dev.patch b/pci/pci-arch-i386-pci-acpi.c-use-for_each_pci_dev.patch new file mode 100644 index 0000000000000..3a4030016322a --- /dev/null +++ b/pci/pci-arch-i386-pci-acpi.c-use-for_each_pci_dev.patch @@ -0,0 +1,33 @@ +From akpm@osdl.org Sun Nov 6 23:40:15 2005 +Message-Id: <200511070739.jA77diIo023296@shell0.pdx.osdl.net> +Subject: PCI: arch/i386/pci/acpi.c: use for_each_pci_dev +To: greg@kroah.com +Cc: akpm@osdl.org, hannal@us.ibm.com, adobriyan@gmail.com, domen@coderock.org, + janitor@sternwelten.at +From: akpm@osdl.org +Date: Sun, 06 Nov 2005 23:39:36 -0800 + + +From: Hanna Linder <hannal@us.ibm.com> + +Signed-off-by: Hanna Linder <hannal@us.ibm.com> +Signed-off-by: Maximilian Attems <janitor@sternwelten.at> +Signed-off-by: Domen Puncer <domen@coderock.org> +Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> +Signed-off-by: Andrew Morton <akpm@osdl.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +--- + arch/i386/pci/acpi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- gregkh-2.6.orig/arch/i386/pci/acpi.c ++++ gregkh-2.6/arch/i386/pci/acpi.c +@@ -53,7 +53,7 @@ static int __init pci_acpi_init(void) + * don't use pci_enable_device(). + */ + printk(KERN_INFO "PCI: Routing PCI interrupts for all devices because \"pci=routeirq\" specified\n"); +- while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) ++ for_each_pci_dev(dev) + acpi_pci_irq_enable(dev); + } else + printk(KERN_INFO "PCI: If a device doesn't work, try \"pci=routeirq\". If it helps, post a report\n"); diff --git a/pci/pci-arch-pci_find_device-remove-frv.patch b/pci/pci-arch-pci_find_device-remove-frv.patch new file mode 100644 index 0000000000000..85c14fd4d50ba --- /dev/null +++ b/pci/pci-arch-pci_find_device-remove-frv.patch @@ -0,0 +1,31 @@ +From akpm@osdl.org Sun Nov 6 23:40:12 2005 +Message-Id: <200511070739.jA77dfQt023280@shell0.pdx.osdl.net> +Subject: PCI: arch: pci_find_device remove (frv/mb93090-mb00/pci-irq.c) +To: greg@kroah.com +Cc: akpm@osdl.org, jirislaby@gmail.com, xslaby@fi.muni.cz +From: akpm@osdl.org +Date: Sun, 06 Nov 2005 23:39:33 -0800 + + +From: Jiri Slaby <jirislaby@gmail.com> + +Signed-off-by: Jiri Slaby <xslaby@fi.muni.cz> +Signed-off-by: Andrew Morton <akpm@osdl.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +--- + arch/frv/mb93090-mb00/pci-irq.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +--- gregkh-2.6.orig/arch/frv/mb93090-mb00/pci-irq.c ++++ gregkh-2.6/arch/frv/mb93090-mb00/pci-irq.c +@@ -48,9 +48,7 @@ void __init pcibios_fixup_irqs(void) + struct pci_dev *dev = NULL; + uint8_t line, pin; + +- while (dev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, dev), +- dev != NULL +- ) { ++ for_each_pci_dev(dev) { + pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin); + if (pin) { + dev->irq = pci_bus0_irq_routing[PCI_SLOT(dev->devfn)][pin - 1]; diff --git a/pci/pci-fix-for-toshiba-ohci1394-quirk.patch b/pci/pci-fix-for-toshiba-ohci1394-quirk.patch new file mode 100644 index 0000000000000..a06cc7aab2016 --- /dev/null +++ b/pci/pci-fix-for-toshiba-ohci1394-quirk.patch @@ -0,0 +1,44 @@ +From jbarnes@virtuousgeek.org Tue Nov 8 20:18:46 2005 +From: Jesse Barnes <jbarnes@virtuousgeek.org> +To: Stefan Richter <stefanr@s5r6.in-berlin.de>, Greg KH <greg@kroah.com> +Subject: PCI: fix for Toshiba ohci1394 quirk +Date: Tue, 8 Nov 2005 20:13:02 -0800 +Message-Id: <200511082013.02627.jbarnes@virtuousgeek.org> + +After much testing and agony, I've discovered that my previous ohci1394 +quirk for Toshiba laptops is not 100% reliable. It apparently fails to +do the interrupt line change either correctly or in time, since in about +2 out of 5 boots, the kernel's irqdebug code will *still* disable irq 11 +when the ohci1394 driver is loaded (at pci_enable_device time I think). + +This patch switches things around a little in the workaround. First, it +removes the mdelay. I didn't see a need for it and my testing has shown +that it's not necessary for the quirk to work. + +Secondly, instead of trying to change the interrupt line to what ACPI +tells us it should be, this patch makes the quirk use the value in the +PCI_INTERRUPT_LINE register. On this laptop at least, that seems to be +the right thing to do, though additional testing on other laptops and/or +with actual firewire devices would be appreciated. + +Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + + +--- + arch/i386/pci/fixup.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- gregkh-2.6.orig/arch/i386/pci/fixup.c ++++ gregkh-2.6/arch/i386/pci/fixup.c +@@ -433,9 +433,8 @@ static void __devinit pci_post_fixup_tos + return; /* only applies to certain Toshibas (so far) */ + + /* Restore config space on Toshiba laptops */ +- mdelay(10); + pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, toshiba_line_size); +- pci_write_config_word(dev, PCI_INTERRUPT_LINE, dev->irq); ++ pci_read_config_byte(dev, PCI_INTERRUPT_LINE, (u8 *)&dev->irq); + pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, + pci_resource_start(dev, 0)); + pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, diff --git a/pci/pci-pci_find_device-remove-pci-ebus.patch b/pci/pci-pci_find_device-remove-pci-ebus.patch new file mode 100644 index 0000000000000..10ca9fa9e7faf --- /dev/null +++ b/pci/pci-pci_find_device-remove-pci-ebus.patch @@ -0,0 +1,51 @@ +From akpm@osdl.org Sun Nov 6 23:40:13 2005 +Message-Id: <200511070739.jA77dhPf023293@shell0.pdx.osdl.net> +Subject: PCI: pci_find_device remove (sparc64/kernel/ebus.c) +To: greg@kroah.com +Cc: akpm@osdl.org, jirislaby@gmail.com, xslaby@fi.muni.cz +From: akpm@osdl.org +Date: Sun, 06 Nov 2005 23:39:35 -0800 + + +From: Jiri Slaby <jirislaby@gmail.com> + +Signed-off-by: Jiri Slaby <xslaby@fi.muni.cz> +Signed-off-by: Andrew Morton <akpm@osdl.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +--- + arch/sparc64/kernel/ebus.c | 15 +++++---------- + 1 file changed, 5 insertions(+), 10 deletions(-) + +--- gregkh-2.6.orig/arch/sparc64/kernel/ebus.c ++++ gregkh-2.6/arch/sparc64/kernel/ebus.c +@@ -527,18 +527,12 @@ static struct pci_dev *find_next_ebus(st + { + struct pci_dev *pdev = start; + +- do { +- pdev = pci_find_device(PCI_VENDOR_ID_SUN, PCI_ANY_ID, pdev); +- if (pdev && +- (pdev->device == PCI_DEVICE_ID_SUN_EBUS || +- pdev->device == PCI_DEVICE_ID_SUN_RIO_EBUS)) ++ while ((pdev = pci_get_device(PCI_VENDOR_ID_SUN, PCI_ANY_ID, pdev))) ++ if (pdev->device == PCI_DEVICE_ID_SUN_EBUS || ++ pdev->device == PCI_DEVICE_ID_SUN_RIO_EBUS) + break; +- } while (pdev != NULL); + +- if (pdev && (pdev->device == PCI_DEVICE_ID_SUN_RIO_EBUS)) +- *is_rio_p = 1; +- else +- *is_rio_p = 0; ++ *is_rio_p = !!(pdev && (pdev->device == PCI_DEVICE_ID_SUN_RIO_EBUS)); + + return pdev; + } +@@ -637,6 +631,7 @@ void __init ebus_init(void) + ebus->is_rio = is_rio; + ++num_ebus; + } ++ pci_dev_put(pdev); /* XXX for the case, when ebusnd is 0, is it OK? */ + + #ifdef CONFIG_SUN_AUXIO + auxio_probe(); diff --git a/pci/pci-pci_find_device-remove-pci-frv.patch b/pci/pci-pci_find_device-remove-pci-frv.patch new file mode 100644 index 0000000000000..696d080539ab6 --- /dev/null +++ b/pci/pci-pci_find_device-remove-pci-frv.patch @@ -0,0 +1,42 @@ +From akpm@osdl.org Sun Nov 6 23:40:10 2005 +Message-Id: <200511070739.jA77det8023277@shell0.pdx.osdl.net> +Subject: PCI: pci_find_device remove (frv/mb93090-mb00/pci-frv.c) +To: greg@kroah.com +Cc: akpm@osdl.org, jirislaby@gmail.com, xslaby@fi.muni.cz +From: akpm@osdl.org +Date: Sun, 06 Nov 2005 23:39:33 -0800 + + +From: Jiri Slaby <jirislaby@gmail.com> + +Signed-off-by: Jiri Slaby <xslaby@fi.muni.cz> +Signed-off-by: Andrew Morton <akpm@osdl.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +--- + arch/frv/mb93090-mb00/pci-frv.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +--- gregkh-2.6.orig/arch/frv/mb93090-mb00/pci-frv.c ++++ gregkh-2.6/arch/frv/mb93090-mb00/pci-frv.c +@@ -142,9 +142,7 @@ static void __init pcibios_allocate_reso + u16 command; + struct resource *r, *pr; + +- while (dev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, dev), +- dev != NULL +- ) { ++ for_each_pci_dev(dev) { + pci_read_config_word(dev, PCI_COMMAND, &command); + for(idx = 0; idx < 6; idx++) { + r = &dev->resource[idx]; +@@ -188,9 +186,7 @@ static void __init pcibios_assign_resour + int idx; + struct resource *r; + +- while (dev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, dev), +- dev != NULL +- ) { ++ for_each_pci_dev(dev) { + int class = dev->class >> 8; + + /* Don't touch classless devices and host bridges */ diff --git a/pci/pci-pci_find_device-remove-pci-mpc85xx_cds_common.patch b/pci/pci-pci_find_device-remove-pci-mpc85xx_cds_common.patch new file mode 100644 index 0000000000000..80b0f455f3250 --- /dev/null +++ b/pci/pci-pci_find_device-remove-pci-mpc85xx_cds_common.patch @@ -0,0 +1,60 @@ +From akpm@osdl.org Sun Nov 6 23:40:08 2005 +Message-Id: <200511070739.jA77dgWl023290@shell0.pdx.osdl.net> +Subject: PCI: pci_find_device remove (ppc/platforms/85xx/mpc85xx_cds_common.c) +To: greg@kroah.com +Cc: akpm@osdl.org, jirislaby@gmail.com, xslaby@fi.muni.cz +From: akpm@osdl.org +Date: Sun, 06 Nov 2005 23:39:35 -0800 + + +From: Jiri Slaby <jirislaby@gmail.com> + +Signed-off-by: Jiri Slaby <xslaby@fi.muni.cz> +Signed-off-by: Andrew Morton <akpm@osdl.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +--- + arch/ppc/platforms/85xx/mpc85xx_cds_common.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +--- gregkh-2.6.orig/arch/ppc/platforms/85xx/mpc85xx_cds_common.c ++++ gregkh-2.6/arch/ppc/platforms/85xx/mpc85xx_cds_common.c +@@ -350,10 +350,10 @@ mpc85xx_cds_fixup_via(struct pci_control + void __init + mpc85xx_cds_pcibios_fixup(void) + { +- struct pci_dev *dev = NULL; ++ struct pci_dev *dev; + u_char c; + +- if ((dev = pci_find_device(PCI_VENDOR_ID_VIA, ++ if ((dev = pci_get_device(PCI_VENDOR_ID_VIA, + PCI_DEVICE_ID_VIA_82C586_1, NULL))) { + /* + * U-Boot does not set the enable bits +@@ -370,21 +370,24 @@ mpc85xx_cds_pcibios_fixup(void) + */ + dev->irq = 14; + pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq); ++ pci_dev_put(dev); + } + + /* + * Force legacy USB interrupt routing + */ +- if ((dev = pci_find_device(PCI_VENDOR_ID_VIA, ++ if ((dev = pci_get_device(PCI_VENDOR_ID_VIA, + PCI_DEVICE_ID_VIA_82C586_2, NULL))) { + dev->irq = 10; + pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 10); ++ pci_dev_put(dev); + } + +- if ((dev = pci_find_device(PCI_VENDOR_ID_VIA, ++ if ((dev = pci_get_device(PCI_VENDOR_ID_VIA, + PCI_DEVICE_ID_VIA_82C586_2, dev))) { + dev->irq = 11; + pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 11); ++ pci_dev_put(dev); + } + } + #endif /* CONFIG_PCI */ diff --git a/pci/pci-pci_find_device-remove-pci-ppc.patch b/pci/pci-pci_find_device-remove-pci-ppc.patch new file mode 100644 index 0000000000000..437522aabe8d0 --- /dev/null +++ b/pci/pci-pci_find_device-remove-pci-ppc.patch @@ -0,0 +1,62 @@ +From akpm@osdl.org Sun Nov 6 23:40:04 2005 +Message-Id: <200511070739.jA77dfB4023284@shell0.pdx.osdl.net> +Subject: PCI: pci_find_device remove (ppc/kernel/pci.c) +To: greg@kroah.com +Cc: akpm@osdl.org, jirislaby@gmail.com, xslaby@fi.muni.cz +From: akpm@osdl.org +Date: Sun, 06 Nov 2005 23:39:34 -0800 + + +From: Jiri Slaby <jirislaby@gmail.com> + +Signed-off-by: Jiri Slaby <xslaby@fi.muni.cz> +Signed-off-by: Andrew Morton <akpm@osdl.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +--- + arch/ppc/kernel/pci.c | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +--- gregkh-2.6.orig/arch/ppc/kernel/pci.c ++++ gregkh-2.6/arch/ppc/kernel/pci.c +@@ -504,7 +504,7 @@ pcibios_allocate_resources(int pass) + u16 command; + struct resource *r; + +- while ((dev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { ++ for_each_pci_dev(dev) { + pci_read_config_word(dev, PCI_COMMAND, &command); + for (idx = 0; idx < 6; idx++) { + r = &dev->resource[idx]; +@@ -541,7 +541,7 @@ pcibios_assign_resources(void) + int idx; + struct resource *r; + +- while ((dev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { ++ for_each_pci_dev(dev) { + int class = dev->class >> 8; + + /* Don't touch classless devices and host bridges */ +@@ -869,14 +869,15 @@ pci_device_from_OF_node(struct device_no + */ + if (!pci_to_OF_bus_map) + return 0; +- while ((dev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { +- if (pci_to_OF_bus_map[dev->bus->number] != *bus) +- continue; +- if (dev->devfn != *devfn) +- continue; +- *bus = dev->bus->number; +- return 0; +- } ++ ++ for_each_pci_dev(dev) ++ if (pci_to_OF_bus_map[dev->bus->number] == *bus && ++ dev->devfn == *devfn) { ++ *bus = dev->bus->number; ++ pci_dev_put(dev); ++ return 0; ++ } ++ + return -ENODEV; + } + EXPORT_SYMBOL(pci_device_from_OF_node); diff --git a/pci/pci-pci_find_device-remove-sys_alcor.patch b/pci/pci-pci_find_device-remove-sys_alcor.patch new file mode 100644 index 0000000000000..a87b3792ba005 --- /dev/null +++ b/pci/pci-pci_find_device-remove-sys_alcor.patch @@ -0,0 +1,37 @@ +From akpm@osdl.org Sun Nov 6 23:40:06 2005 +Message-Id: <200511070739.jA77dcqh023271@shell0.pdx.osdl.net> +Subject: PCI: pci_find_device remove (alpha/kernel/sys_alcor.c) +To: greg@kroah.com +Cc: akpm@osdl.org, jirislaby@gmail.com, xslaby@fi.muni.cz +From: akpm@osdl.org +Date: Sun, 06 Nov 2005 23:39:30 -0800 + + +From: Jiri Slaby <jirislaby@gmail.com> + +Signed-off-by: Jiri Slaby <xslaby@fi.muni.cz> +Signed-off-by: Andrew Morton <akpm@osdl.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +--- + arch/alpha/kernel/sys_alcor.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- gregkh-2.6.orig/arch/alpha/kernel/sys_alcor.c ++++ gregkh-2.6/arch/alpha/kernel/sys_alcor.c +@@ -254,7 +254,7 @@ alcor_init_pci(void) + * motherboard, by looking for a 21040 TULIP in slot 6, which is + * built into XLT and BRET/MAVERICK, but not available on ALCOR. + */ +- dev = pci_find_device(PCI_VENDOR_ID_DEC, ++ dev = pci_get_device(PCI_VENDOR_ID_DEC, + PCI_DEVICE_ID_DEC_TULIP, + NULL); + if (dev && dev->devfn == PCI_DEVFN(6,0)) { +@@ -262,6 +262,7 @@ alcor_init_pci(void) + printk(KERN_INFO "%s: Detected AS500 or XLT motherboard.\n", + __FUNCTION__); + } ++ pci_dev_put(dev); + } + + diff --git a/pci/pci-pci_find_device-remove-sys_sio.patch b/pci/pci-pci_find_device-remove-sys_sio.patch new file mode 100644 index 0000000000000..db3eee8372a1a --- /dev/null +++ b/pci/pci-pci_find_device-remove-sys_sio.patch @@ -0,0 +1,40 @@ +From akpm@osdl.org Sun Nov 6 23:40:02 2005 +Message-Id: <200511070739.jA77ddmA023274@shell0.pdx.osdl.net> +Subject: PCI: pci_find_device remove (alpha/kernel/sys_sio.c) +To: greg@kroah.com +Cc: akpm@osdl.org, jirislaby@gmail.com, xslaby@fi.muni.cz +From: akpm@osdl.org +Date: Sun, 06 Nov 2005 23:39:32 -0800 + + +From: Jiri Slaby <jirislaby@gmail.com> + +Signed-off-by: Jiri Slaby <xslaby@fi.muni.cz> +Signed-off-by: Andrew Morton <akpm@osdl.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +--- + arch/alpha/kernel/sys_sio.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- gregkh-2.6.orig/arch/alpha/kernel/sys_sio.c ++++ gregkh-2.6/arch/alpha/kernel/sys_sio.c +@@ -105,7 +105,7 @@ sio_collect_irq_levels(void) + struct pci_dev *dev = NULL; + + /* Iterate through the devices, collecting IRQ levels. */ +- while ((dev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { ++ for_each_pci_dev(dev) { + if ((dev->class >> 16 == PCI_BASE_CLASS_BRIDGE) && + (dev->class >> 8 != PCI_CLASS_BRIDGE_PCMCIA)) + continue; +@@ -229,8 +229,8 @@ alphabook1_init_pci(void) + */ + + dev = NULL; +- while ((dev = pci_find_device(PCI_VENDOR_ID_NCR, PCI_ANY_ID, dev))) { +- if (dev->device == PCI_DEVICE_ID_NCR_53C810 ++ while ((dev = pci_get_device(PCI_VENDOR_ID_NCR, PCI_ANY_ID, dev))) { ++ if (dev->device == PCI_DEVICE_ID_NCR_53C810 + || dev->device == PCI_DEVICE_ID_NCR_53C815 + || dev->device == PCI_DEVICE_ID_NCR_53C820 + || dev->device == PCI_DEVICE_ID_NCR_53C825) { |