diff options
Diffstat (limited to 'drivers/ide/ide-probe.c')
-rw-r--r-- | drivers/ide/ide-probe.c | 30 |
1 files changed, 4 insertions, 26 deletions
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 80967307f2bb..ebc328c2e7ee 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
@@ -1070,14 +1070,9 @@ static void drive_release_dev (struct device *dev) | |||
1070 | 1070 | ||
1071 | static int hwif_init(ide_hwif_t *hwif) | 1071 | static int hwif_init(ide_hwif_t *hwif) |
1072 | { | 1072 | { |
1073 | int old_irq; | ||
1074 | |||
1075 | if (!hwif->irq) { | 1073 | if (!hwif->irq) { |
1076 | hwif->irq = __ide_default_irq(hwif->io_ports.data_addr); | 1074 | printk(KERN_ERR "%s: disabled, no IRQ\n", hwif->name); |
1077 | if (!hwif->irq) { | 1075 | return 0; |
1078 | printk(KERN_ERR "%s: disabled, no IRQ\n", hwif->name); | ||
1079 | return 0; | ||
1080 | } | ||
1081 | } | 1076 | } |
1082 | 1077 | ||
1083 | if (register_blkdev(hwif->major, hwif->name)) | 1078 | if (register_blkdev(hwif->major, hwif->name)) |
@@ -1095,29 +1090,12 @@ static int hwif_init(ide_hwif_t *hwif) | |||
1095 | 1090 | ||
1096 | sg_init_table(hwif->sg_table, hwif->sg_max_nents); | 1091 | sg_init_table(hwif->sg_table, hwif->sg_max_nents); |
1097 | 1092 | ||
1098 | if (init_irq(hwif) == 0) | ||
1099 | goto done; | ||
1100 | |||
1101 | old_irq = hwif->irq; | ||
1102 | /* | ||
1103 | * It failed to initialise. Find the default IRQ for | ||
1104 | * this port and try that. | ||
1105 | */ | ||
1106 | hwif->irq = __ide_default_irq(hwif->io_ports.data_addr); | ||
1107 | if (!hwif->irq) { | ||
1108 | printk(KERN_ERR "%s: disabled, unable to get IRQ %d\n", | ||
1109 | hwif->name, old_irq); | ||
1110 | goto out; | ||
1111 | } | ||
1112 | if (init_irq(hwif)) { | 1093 | if (init_irq(hwif)) { |
1113 | printk(KERN_ERR "%s: probed IRQ %d and default IRQ %d failed\n", | 1094 | printk(KERN_ERR "%s: disabled, unable to get IRQ %d\n", |
1114 | hwif->name, old_irq, hwif->irq); | 1095 | hwif->name, hwif->irq); |
1115 | goto out; | 1096 | goto out; |
1116 | } | 1097 | } |
1117 | printk(KERN_WARNING "%s: probed IRQ %d failed, using default\n", | ||
1118 | hwif->name, hwif->irq); | ||
1119 | 1098 | ||
1120 | done: | ||
1121 | blk_register_region(MKDEV(hwif->major, 0), MAX_DRIVES << PARTN_BITS, | 1099 | blk_register_region(MKDEV(hwif->major, 0), MAX_DRIVES << PARTN_BITS, |
1122 | THIS_MODULE, ata_probe, ata_lock, hwif); | 1100 | THIS_MODULE, ata_probe, ata_lock, hwif); |
1123 | return 1; | 1101 | return 1; |