mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
ide: remove hwif->present manipulations from hwif_init()
* Call hwif_init() only if hwif->present is set. * If hwif_init() fails clear hwif->present. * Remove hwif->present manipulations from hwif_init(). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
c860a8f2d2
commit
48535651f6
@ -1245,28 +1245,21 @@ static int hwif_init(ide_hwif_t *hwif)
|
||||
{
|
||||
int old_irq;
|
||||
|
||||
/* Return success if no device is connected */
|
||||
if (!hwif->present)
|
||||
return 1;
|
||||
|
||||
if (!hwif->irq) {
|
||||
if (!(hwif->irq = ide_default_irq(hwif->io_ports[IDE_DATA_OFFSET])))
|
||||
{
|
||||
printk("%s: DISABLED, NO IRQ\n", hwif->name);
|
||||
return (hwif->present = 0);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#ifdef CONFIG_BLK_DEV_HD
|
||||
if (hwif->irq == HD_IRQ && hwif->io_ports[IDE_DATA_OFFSET] != HD_DATA) {
|
||||
printk("%s: CANNOT SHARE IRQ WITH OLD "
|
||||
"HARDDISK DRIVER (hd.c)\n", hwif->name);
|
||||
return (hwif->present = 0);
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_BLK_DEV_HD */
|
||||
|
||||
/* we set it back to 1 if all is ok below */
|
||||
hwif->present = 0;
|
||||
|
||||
if (register_blkdev(hwif->major, hwif->name))
|
||||
return 0;
|
||||
|
||||
@ -1305,10 +1298,7 @@ static int hwif_init(ide_hwif_t *hwif)
|
||||
|
||||
done:
|
||||
init_gendisk(hwif);
|
||||
|
||||
ide_acpi_init(hwif);
|
||||
|
||||
hwif->present = 1; /* success */
|
||||
return 1;
|
||||
|
||||
out:
|
||||
@ -1352,9 +1342,13 @@ int ide_device_add_all(u8 *idx)
|
||||
|
||||
hwif = &ide_hwifs[idx[i]];
|
||||
|
||||
if (!hwif->present)
|
||||
continue;
|
||||
|
||||
if (hwif_init(hwif) == 0) {
|
||||
printk(KERN_INFO "%s: failed to initialize IDE "
|
||||
"interface\n", hwif->name);
|
||||
hwif->present = 0;
|
||||
rc = -1;
|
||||
continue;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user