Loading drivers/ide/setup-pci.c +15 −32 Original line number Diff line number Diff line Loading @@ -22,42 +22,20 @@ /** * ide_match_hwif - match a PCI IDE against an ide_hwif * @io_base: I/O base of device * @bootable: set if its bootable * @name: name of device * ide_match_hwif - find free ide_hwifs[] slot * @bootable: bootable flag * * Match a PCI IDE port against an entry in ide_hwifs[], * based on io_base port if possible. Return the matching hwif, * or a new hwif. If we find an error (clashing, out of devices, etc) * return NULL * * FIXME: we need to handle mmio matches here too * Return the new hwif. If we are out of free slots return NULL. */ static ide_hwif_t *ide_match_hwif(unsigned long io_base, u8 bootable, const char *name) static ide_hwif_t *ide_match_hwif(u8 bootable) { int h; ide_hwif_t *hwif; int h; /* * Look for a hwif with matching io_base default value. * If chipset is "ide_unknown", then claim that hwif slot. * Otherwise, some other chipset has already claimed it.. :( */ for (h = 0; h < MAX_HWIFS; ++h) { hwif = &ide_hwifs[h]; if (hwif->io_ports[IDE_DATA_OFFSET] == io_base) { if (hwif->chipset == ide_unknown) return hwif; /* match */ printk(KERN_ERR "%s: port 0x%04lx already claimed by %s\n", name, io_base, hwif->name); return NULL; /* already claimed */ } } /* * Okay, there is no hwif matching our io_base, * so we'll just claim an unassigned slot. * Claim an unassigned slot. * * Give preference to claiming other slots before claiming ide0/ide1, * just in case there's another interface yet-to-be-scanned * which uses ports 1f0/170 (the ide0/ide1 defaults). Loading @@ -83,7 +61,7 @@ static ide_hwif_t *ide_match_hwif(unsigned long io_base, u8 bootable, const char if (hwif->chipset == ide_unknown) return hwif; /* pick an unused entry */ } printk(KERN_ERR "%s: too many IDE interfaces, no room in table\n", name); return NULL; } Loading Loading @@ -367,8 +345,13 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev, ctl = port ? 0x374 : 0x3f4; base = port ? 0x170 : 0x1f0; } if ((hwif = ide_match_hwif(base, bootable, d->name)) == NULL) return NULL; /* no room in ide_hwifs[] */ hwif = ide_match_hwif(bootable); if (hwif == NULL) { printk(KERN_ERR "%s: too many IDE interfaces, no room in " "table\n", d->name); return NULL; } memset(&hw, 0, sizeof(hw)); hw.irq = irq; Loading Loading
drivers/ide/setup-pci.c +15 −32 Original line number Diff line number Diff line Loading @@ -22,42 +22,20 @@ /** * ide_match_hwif - match a PCI IDE against an ide_hwif * @io_base: I/O base of device * @bootable: set if its bootable * @name: name of device * ide_match_hwif - find free ide_hwifs[] slot * @bootable: bootable flag * * Match a PCI IDE port against an entry in ide_hwifs[], * based on io_base port if possible. Return the matching hwif, * or a new hwif. If we find an error (clashing, out of devices, etc) * return NULL * * FIXME: we need to handle mmio matches here too * Return the new hwif. If we are out of free slots return NULL. */ static ide_hwif_t *ide_match_hwif(unsigned long io_base, u8 bootable, const char *name) static ide_hwif_t *ide_match_hwif(u8 bootable) { int h; ide_hwif_t *hwif; int h; /* * Look for a hwif with matching io_base default value. * If chipset is "ide_unknown", then claim that hwif slot. * Otherwise, some other chipset has already claimed it.. :( */ for (h = 0; h < MAX_HWIFS; ++h) { hwif = &ide_hwifs[h]; if (hwif->io_ports[IDE_DATA_OFFSET] == io_base) { if (hwif->chipset == ide_unknown) return hwif; /* match */ printk(KERN_ERR "%s: port 0x%04lx already claimed by %s\n", name, io_base, hwif->name); return NULL; /* already claimed */ } } /* * Okay, there is no hwif matching our io_base, * so we'll just claim an unassigned slot. * Claim an unassigned slot. * * Give preference to claiming other slots before claiming ide0/ide1, * just in case there's another interface yet-to-be-scanned * which uses ports 1f0/170 (the ide0/ide1 defaults). Loading @@ -83,7 +61,7 @@ static ide_hwif_t *ide_match_hwif(unsigned long io_base, u8 bootable, const char if (hwif->chipset == ide_unknown) return hwif; /* pick an unused entry */ } printk(KERN_ERR "%s: too many IDE interfaces, no room in table\n", name); return NULL; } Loading Loading @@ -367,8 +345,13 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev, ctl = port ? 0x374 : 0x3f4; base = port ? 0x170 : 0x1f0; } if ((hwif = ide_match_hwif(base, bootable, d->name)) == NULL) return NULL; /* no room in ide_hwifs[] */ hwif = ide_match_hwif(bootable); if (hwif == NULL) { printk(KERN_ERR "%s: too many IDE interfaces, no room in " "table\n", d->name); return NULL; } memset(&hw, 0, sizeof(hw)); hw.irq = irq; Loading