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: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent c860a8f2
...@@ -1245,28 +1245,21 @@ static int hwif_init(ide_hwif_t *hwif) ...@@ -1245,28 +1245,21 @@ static int hwif_init(ide_hwif_t *hwif)
{ {
int old_irq; int old_irq;
/* Return success if no device is connected */
if (!hwif->present)
return 1;
if (!hwif->irq) { if (!hwif->irq) {
if (!(hwif->irq = ide_default_irq(hwif->io_ports[IDE_DATA_OFFSET]))) if (!(hwif->irq = ide_default_irq(hwif->io_ports[IDE_DATA_OFFSET])))
{ {
printk("%s: DISABLED, NO IRQ\n", hwif->name); printk("%s: DISABLED, NO IRQ\n", hwif->name);
return (hwif->present = 0); return 0;
} }
} }
#ifdef CONFIG_BLK_DEV_HD #ifdef CONFIG_BLK_DEV_HD
if (hwif->irq == HD_IRQ && hwif->io_ports[IDE_DATA_OFFSET] != HD_DATA) { if (hwif->irq == HD_IRQ && hwif->io_ports[IDE_DATA_OFFSET] != HD_DATA) {
printk("%s: CANNOT SHARE IRQ WITH OLD " printk("%s: CANNOT SHARE IRQ WITH OLD "
"HARDDISK DRIVER (hd.c)\n", hwif->name); "HARDDISK DRIVER (hd.c)\n", hwif->name);
return (hwif->present = 0); return 0;
} }
#endif /* CONFIG_BLK_DEV_HD */ #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)) if (register_blkdev(hwif->major, hwif->name))
return 0; return 0;
...@@ -1305,10 +1298,7 @@ static int hwif_init(ide_hwif_t *hwif) ...@@ -1305,10 +1298,7 @@ static int hwif_init(ide_hwif_t *hwif)
done: done:
init_gendisk(hwif); init_gendisk(hwif);
ide_acpi_init(hwif); ide_acpi_init(hwif);
hwif->present = 1; /* success */
return 1; return 1;
out: out:
...@@ -1352,9 +1342,13 @@ int ide_device_add_all(u8 *idx) ...@@ -1352,9 +1342,13 @@ int ide_device_add_all(u8 *idx)
hwif = &ide_hwifs[idx[i]]; hwif = &ide_hwifs[idx[i]];
if (!hwif->present)
continue;
if (hwif_init(hwif) == 0) { if (hwif_init(hwif) == 0) {
printk(KERN_INFO "%s: failed to initialize IDE " printk(KERN_INFO "%s: failed to initialize IDE "
"interface\n", hwif->name); "interface\n", hwif->name);
hwif->present = 0;
rc = -1; rc = -1;
continue; continue;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment