X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fi386%2Fpci%2Fdirect.c;fp=arch%2Fi386%2Fpci%2Fdirect.c;h=e3ac502bf2fbac541cf57f52bef2a5a7300b881f;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=5d81fb51037551b9ede92c2f0f7f785a2a6e4e2e;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/arch/i386/pci/direct.c b/arch/i386/pci/direct.c index 5d81fb510..e3ac502bf 100644 --- a/arch/i386/pci/direct.c +++ b/arch/i386/pci/direct.c @@ -4,7 +4,6 @@ #include #include -#include #include "pci.h" /* @@ -19,10 +18,8 @@ int pci_conf1_read(unsigned int seg, unsigned int bus, { unsigned long flags; - if ((bus > 255) || (devfn > 255) || (reg > 255)) { - *value = -1; + if (!value || (bus > 255) || (devfn > 255) || (reg > 255)) return -EINVAL; - } spin_lock_irqsave(&pci_config_lock, flags); @@ -94,10 +91,8 @@ static int pci_conf2_read(unsigned int seg, unsigned int bus, unsigned long flags; int dev, fn; - if ((bus > 255) || (devfn > 255) || (reg > 255)) { - *value = -1; + if (!value || (bus > 255) || (devfn > 255) || (reg > 255)) return -EINVAL; - } dev = PCI_SLOT(devfn); fn = PCI_FUNC(devfn); @@ -193,10 +188,6 @@ static int __init pci_sanity_check(struct pci_raw_ops *o) if (pci_probe & PCI_NO_CHECKS) return 1; - /* Assume Type 1 works for newer systems. - This handles machines that don't have anything on PCI Bus 0. */ - if (dmi_get_year(DMI_BIOS_DATE) >= 2001) - return 1; for (devfn = 0; devfn < 0x100; devfn++) { if (o->read(0, 0, devfn, PCI_CLASS_DEVICE, 2, &x)) @@ -254,7 +245,7 @@ static int __init pci_check_type2(void) return works; } -void __init pci_direct_init(void) +static int __init pci_direct_init(void) { struct resource *region, *region2; @@ -267,16 +258,16 @@ void __init pci_direct_init(void) if (pci_check_type1()) { printk(KERN_INFO "PCI: Using configuration type 1\n"); raw_pci_ops = &pci_direct_conf1; - return; + return 0; } release_resource(region); type2: if ((pci_probe & PCI_PROBE_CONF2) == 0) - return; + goto out; region = request_region(0xCF8, 4, "PCI conf2"); if (!region) - return; + goto out; region2 = request_region(0xC000, 0x1000, "PCI conf2"); if (!region2) goto fail2; @@ -284,10 +275,15 @@ void __init pci_direct_init(void) if (pci_check_type2()) { printk(KERN_INFO "PCI: Using configuration type 2\n"); raw_pci_ops = &pci_direct_conf2; - return; + return 0; } release_resource(region2); fail2: release_resource(region); + + out: + return 0; } + +arch_initcall(pci_direct_init);