summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/aha1542.c58
1 files changed, 19 insertions, 39 deletions
diff --git a/drivers/scsi/aha1542.c b/drivers/scsi/aha1542.c
index 7bf4604ede47..af2c69e1a697 100644
--- a/drivers/scsi/aha1542.c
+++ b/drivers/scsi/aha1542.c
@@ -198,17 +198,16 @@ static int aha1542_in(unsigned int base, u8 *cmdp, int len, int timeout)
spin_lock_irqsave(&aha1542_lock, flags);
while (len--) {
- if (!wait_mask(STATUS(base), DF, DF, 0, timeout))
- goto fail;
+ if (!wait_mask(STATUS(base), DF, DF, 0, timeout)) {
+ spin_unlock_irqrestore(&aha1542_lock, flags);
+ if (timeout == 0)
+ printk(KERN_ERR "aha1542_in failed(%d): ", len + 1);
+ return 1;
+ }
*cmdp++ = inb(DATA(base));
}
spin_unlock_irqrestore(&aha1542_lock, flags);
return 0;
-fail:
- spin_unlock_irqrestore(&aha1542_lock, flags);
- if (timeout == 0)
- printk(KERN_ERR "aha1542_in failed(%d): ", len + 1);
- return 1;
}
static int makecode(unsigned hosterr, unsigned scsierr)
@@ -292,12 +291,12 @@ static int aha1542_test_port(int bse, struct Scsi_Host *shpnt)
debug = 1;
/* Expect INIT and IDLE, any of the others are bad */
if (!wait_mask(STATUS(bse), STATMASK, INIT | IDLE, STST | DIAGF | INVDCMD | DF | CDF, 0))
- goto fail;
+ return 0;
debug = 2;
/* Shouldn't have generated any interrupts during reset */
if (inb(INTRFLAGS(bse)) & INTRMASK)
- goto fail;
+ return 0;
/* Perform a host adapter inquiry instead so we do not need to set
@@ -311,19 +310,19 @@ static int aha1542_test_port(int bse, struct Scsi_Host *shpnt)
while (len--) {
if (!wait_mask(STATUS(bse), DF, DF, 0, 0))
- goto fail;
+ return 0;
*cmdp++ = inb(DATA(bse));
}
debug = 8;
/* Reading port should reset DF */
if (inb(STATUS(bse)) & DF)
- goto fail;
+ return 0;
debug = 9;
/* When HACC, command is completed, and we're though testing */
if (!wait_mask(INTRFLAGS(bse), HACC, HACC, 0, 0))
- goto fail;
+ return 0;
/* now initialize adapter */
debug = 10;
@@ -333,8 +332,6 @@ static int aha1542_test_port(int bse, struct Scsi_Host *shpnt)
debug = 11;
return debug; /* 1 = ok */
-fail:
- return 0; /* 0 = not ok */
}
static int aha1542_restart(struct Scsi_Host *shost)
@@ -692,11 +689,7 @@ static void setup_mailboxes(int bse, struct Scsi_Host *shpnt)
any2scsi((cmd + 2), isa_virt_to_bus(mb));
aha1542_out(bse, cmd, 5);
if (!wait_mask(INTRFLAGS(bse), INTRMASK, HACC, 0, 0))
- goto fail;
- while (0) {
-fail:
printk(KERN_ERR "aha1542_detect: failed setting up mailboxes\n");
- }
aha1542_intr_reset(bse);
}
@@ -711,11 +704,7 @@ static int aha1542_getconfig(int base_io, unsigned char *irq_level, unsigned cha
aha1542_outb(base_io, CMD_RETCONF);
aha1542_in(base_io, inquiry_result, 3, 0);
if (!wait_mask(INTRFLAGS(base_io), INTRMASK, HACC, 0, 0))
- goto fail;
- while (0) {
-fail:
printk(KERN_ERR "aha1542_detect: query board settings\n");
- }
aha1542_intr_reset(base_io);
switch (inquiry_result[0]) {
case 0x80:
@@ -816,11 +805,7 @@ static int aha1542_query(int base_io, int *transl)
aha1542_outb(base_io, CMD_INQUIRY);
aha1542_in(base_io, inquiry_result, 4, 0);
if (!wait_mask(INTRFLAGS(base_io), INTRMASK, HACC, 0, 0))
- goto fail;
- while (0) {
-fail:
printk(KERN_ERR "aha1542_detect: query card type\n");
- }
aha1542_intr_reset(base_io);
*transl = BIOS_TRANSLATION_6432; /* Default case */
@@ -1147,8 +1132,10 @@ static int aha1542_bus_reset(Scsi_Cmnd * SCpnt)
spin_lock_irq(SCpnt->device->host->host_lock);
if (!wait_mask(STATUS(SCpnt->device->host->io_port),
- STATMASK, INIT | IDLE, STST | DIAGF | INVDCMD | DF | CDF, 0))
- goto fail;
+ STATMASK, INIT | IDLE, STST | DIAGF | INVDCMD | DF | CDF, 0)) {
+ spin_unlock_irq(SCpnt->device->host->host_lock);
+ return FAILED;
+ }
/*
* Now try to pick up the pieces. For all pending commands,
@@ -1182,10 +1169,6 @@ static int aha1542_bus_reset(Scsi_Cmnd * SCpnt)
spin_unlock_irq(SCpnt->device->host->host_lock);
return SUCCESS;
-
-fail:
- spin_unlock_irq(SCpnt->device->host->host_lock);
- return FAILED;
}
static int aha1542_host_reset(Scsi_Cmnd * SCpnt)
@@ -1212,9 +1195,10 @@ static int aha1542_host_reset(Scsi_Cmnd * SCpnt)
spin_lock_irq(SCpnt->device->host->host_lock);
if (!wait_mask(STATUS(SCpnt->device->host->io_port),
- STATMASK, INIT | IDLE, STST | DIAGF | INVDCMD | DF | CDF, 0))
- goto fail;
-
+ STATMASK, INIT | IDLE, STST | DIAGF | INVDCMD | DF | CDF, 0)) {
+ spin_unlock_irq(SCpnt->device->host->host_lock);
+ return FAILED;
+ }
/*
* We need to do this too before the 1542 can interact with
* us again.
@@ -1252,10 +1236,6 @@ static int aha1542_host_reset(Scsi_Cmnd * SCpnt)
spin_unlock_irq(SCpnt->device->host->host_lock);
return SUCCESS;
-
-fail:
- spin_unlock_irq(SCpnt->device->host->host_lock);
- return FAILED;
}
static int aha1542_biosparam(struct scsi_device *sdev,