diff options
| -rw-r--r-- | drivers/ide/ide-probe.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index b812b98744e8..00b2b07f63be 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
| @@ -1245,28 +1245,21 @@ static int hwif_init(ide_hwif_t *hwif) | |||
| 1245 | { | 1245 | { |
| 1246 | int old_irq; | 1246 | int old_irq; |
| 1247 | 1247 | ||
| 1248 | /* Return success if no device is connected */ | ||
| 1249 | if (!hwif->present) | ||
| 1250 | return 1; | ||
| 1251 | |||
| 1252 | if (!hwif->irq) { | 1248 | if (!hwif->irq) { |
| 1253 | if (!(hwif->irq = ide_default_irq(hwif->io_ports[IDE_DATA_OFFSET]))) | 1249 | if (!(hwif->irq = ide_default_irq(hwif->io_ports[IDE_DATA_OFFSET]))) |
| 1254 | { | 1250 | { |
| 1255 | printk("%s: DISABLED, NO IRQ\n", hwif->name); | 1251 | printk("%s: DISABLED, NO IRQ\n", hwif->name); |
| 1256 | return (hwif->present = 0); | 1252 | return 0; |
| 1257 | } | 1253 | } |
| 1258 | } | 1254 | } |
| 1259 | #ifdef CONFIG_BLK_DEV_HD | 1255 | #ifdef CONFIG_BLK_DEV_HD |
| 1260 | if (hwif->irq == HD_IRQ && hwif->io_ports[IDE_DATA_OFFSET] != HD_DATA) { | 1256 | if (hwif->irq == HD_IRQ && hwif->io_ports[IDE_DATA_OFFSET] != HD_DATA) { |
| 1261 | printk("%s: CANNOT SHARE IRQ WITH OLD " | 1257 | printk("%s: CANNOT SHARE IRQ WITH OLD " |
| 1262 | "HARDDISK DRIVER (hd.c)\n", hwif->name); | 1258 | "HARDDISK DRIVER (hd.c)\n", hwif->name); |
| 1263 | return (hwif->present = 0); | 1259 | return 0; |
| 1264 | } | 1260 | } |
| 1265 | #endif /* CONFIG_BLK_DEV_HD */ | 1261 | #endif /* CONFIG_BLK_DEV_HD */ |
| 1266 | 1262 | ||
| 1267 | /* we set it back to 1 if all is ok below */ | ||
| 1268 | hwif->present = 0; | ||
| 1269 | |||
| 1270 | if (register_blkdev(hwif->major, hwif->name)) | 1263 | if (register_blkdev(hwif->major, hwif->name)) |
| 1271 | return 0; | 1264 | return 0; |
| 1272 | 1265 | ||
| @@ -1305,10 +1298,7 @@ static int hwif_init(ide_hwif_t *hwif) | |||
| 1305 | 1298 | ||
| 1306 | done: | 1299 | done: |
| 1307 | init_gendisk(hwif); | 1300 | init_gendisk(hwif); |
| 1308 | |||
| 1309 | ide_acpi_init(hwif); | 1301 | ide_acpi_init(hwif); |
| 1310 | |||
| 1311 | hwif->present = 1; /* success */ | ||
| 1312 | return 1; | 1302 | return 1; |
| 1313 | 1303 | ||
| 1314 | out: | 1304 | out: |
| @@ -1352,9 +1342,13 @@ int ide_device_add_all(u8 *idx) | |||
| 1352 | 1342 | ||
| 1353 | hwif = &ide_hwifs[idx[i]]; | 1343 | hwif = &ide_hwifs[idx[i]]; |
| 1354 | 1344 | ||
| 1345 | if (!hwif->present) | ||
| 1346 | continue; | ||
| 1347 | |||
| 1355 | if (hwif_init(hwif) == 0) { | 1348 | if (hwif_init(hwif) == 0) { |
| 1356 | printk(KERN_INFO "%s: failed to initialize IDE " | 1349 | printk(KERN_INFO "%s: failed to initialize IDE " |
| 1357 | "interface\n", hwif->name); | 1350 | "interface\n", hwif->name); |
| 1351 | hwif->present = 0; | ||
| 1358 | rc = -1; | 1352 | rc = -1; |
| 1359 | continue; | 1353 | continue; |
| 1360 | } | 1354 | } |
