mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-28 15:20:41 +00:00
atp870u: Remove ugly gotos
Signed-off-by: Ondrej Zary <linux@rainbow-software.org> Reviewed-by: Hannes Reinicke <hare@suse.de> Acked-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
c2bab4031b
commit
78614ecdda
1 changed files with 30 additions and 54 deletions
|
@ -55,20 +55,17 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
#ifdef ED_DBGP
|
||||
unsigned long l;
|
||||
#endif
|
||||
int errstus;
|
||||
struct Scsi_Host *host = dev_id;
|
||||
struct atp_unit *dev = (struct atp_unit *)&host->hostdata;
|
||||
|
||||
for (c = 0; c < 2; c++) {
|
||||
j = inb(dev->ioport[c] + 0x1f);
|
||||
if ((j & 0x80) != 0)
|
||||
{
|
||||
goto ch_sel;
|
||||
}
|
||||
break;
|
||||
dev->in_int[c] = 0;
|
||||
}
|
||||
if ((j & 0x80) == 0)
|
||||
return IRQ_NONE;
|
||||
ch_sel:
|
||||
#ifdef ED_DBGP
|
||||
printk("atp870u_intr_handle enter\n");
|
||||
#endif
|
||||
|
@ -82,15 +79,12 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
if ((inb(dev->pciport[c]) & 0x08) != 0)
|
||||
{
|
||||
for (k=0; k < 1000; k++) {
|
||||
if ((inb(dev->pciport[c] + 2) & 0x08) == 0) {
|
||||
goto stop_dma;
|
||||
}
|
||||
if ((inb(dev->pciport[c] + 2) & 0x01) == 0) {
|
||||
goto stop_dma;
|
||||
if ((inb(dev->pciport[c] + 2) & 0x08) == 0)
|
||||
break;
|
||||
if ((inb(dev->pciport[c] + 2) & 0x01) == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
stop_dma:
|
||||
outb(0x00, dev->pciport[c]);
|
||||
|
||||
i = inb(dev->ioport[c] + 0x17);
|
||||
|
@ -170,13 +164,13 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
#ifdef ED_DBGP
|
||||
printk("Status 0x85 return\n");
|
||||
#endif
|
||||
goto handled;
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
if (i == 0x40) {
|
||||
dev->last_cmd[c] |= 0x40;
|
||||
dev->in_int[c] = 0;
|
||||
goto handled;
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
if (i == 0x21) {
|
||||
|
@ -194,7 +188,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
outb(0x41, dev->ioport[c] + 0x10);
|
||||
outb(0x08, dev->ioport[c] + 0x18);
|
||||
dev->in_int[c] = 0;
|
||||
goto handled;
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
if (dev->dev_id == ATP885_DEVID) {
|
||||
|
@ -231,7 +225,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
dev->id[c][target_id].last_len = adrcnt;
|
||||
outb(0x08, dev->ioport[c] + 0x18);
|
||||
dev->in_int[c] = 0;
|
||||
goto handled;
|
||||
return IRQ_HANDLED;
|
||||
} else {
|
||||
#ifdef ED_DBGP
|
||||
printk("cmdp != 0x41\n");
|
||||
|
@ -243,7 +237,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
outb(0x00, dev->ioport[c] + 0x14);
|
||||
outb(0x08, dev->ioport[c] + 0x18);
|
||||
dev->in_int[c] = 0;
|
||||
goto handled;
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
}
|
||||
if (dev->last_cmd[c] != 0xff) {
|
||||
|
@ -336,7 +330,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
#ifdef ED_DBGP
|
||||
printk("dev->id[c][target_id].last_len = 0\n");
|
||||
#endif
|
||||
goto handled;
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
#ifdef ED_DBGP
|
||||
printk("target_id = %d adrcnt = %d\n",target_id,adrcnt);
|
||||
|
@ -382,7 +376,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
#ifdef ED_DBGP
|
||||
printk("status 0x80 return dirct != 0\n");
|
||||
#endif
|
||||
goto handled;
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
outb(0x08, dev->ioport[c] + 0x18);
|
||||
outb(0x09, dev->pciport[c]);
|
||||
|
@ -390,7 +384,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
#ifdef ED_DBGP
|
||||
printk("status 0x80 return dirct = 0\n");
|
||||
#endif
|
||||
goto handled;
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -399,27 +393,19 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
|
||||
workreq = dev->id[c][target_id].curr_req;
|
||||
|
||||
if (i == 0x42) {
|
||||
if ((dev->last_cmd[c] & 0xf0) != 0x40)
|
||||
{
|
||||
dev->last_cmd[c] = 0xff;
|
||||
}
|
||||
errstus = 0x02;
|
||||
workreq->result = errstus;
|
||||
goto go_42;
|
||||
}
|
||||
if (i == 0x16) {
|
||||
if (i == 0x42 || i == 0x16) {
|
||||
if ((dev->last_cmd[c] & 0xf0) != 0x40) {
|
||||
dev->last_cmd[c] = 0xff;
|
||||
}
|
||||
errstus = 0;
|
||||
errstus = inb(dev->ioport[c] + 0x0f);
|
||||
if (i == 0x16) {
|
||||
workreq->result = inb(dev->ioport[c] + 0x0f);
|
||||
if (((dev->r1f[c][target_id] & 0x10) != 0)&&(dev->dev_id==ATP885_DEVID)) {
|
||||
printk(KERN_WARNING "AEC67162 CRC ERROR !\n");
|
||||
errstus = 0x02;
|
||||
workreq->result = 0x02;
|
||||
}
|
||||
workreq->result = errstus;
|
||||
go_42:
|
||||
} else
|
||||
workreq->result = 0x02;
|
||||
|
||||
if (dev->dev_id == ATP885_DEVID) {
|
||||
j = inb(dev->baseport + 0x29) | 0x01;
|
||||
outb(j, dev->baseport + 0x29);
|
||||
|
@ -462,7 +448,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
}
|
||||
spin_unlock_irqrestore(dev->host->host_lock, flags);
|
||||
dev->in_int[c] = 0;
|
||||
goto handled;
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
if ((dev->last_cmd[c] & 0xf0) != 0x40) {
|
||||
dev->last_cmd[c] = 0xff;
|
||||
|
@ -488,7 +474,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
outb(0x08, dev->ioport[c] + 0x18);
|
||||
outb(0x09, dev->pciport[c]);
|
||||
dev->in_int[c] = 0;
|
||||
goto handled;
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
if (i == 0x08) {
|
||||
outl(dev->id[c][target_id].prdaddr, dev->pciport[c] + 4);
|
||||
|
@ -506,7 +492,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
outb(0x08, dev->ioport[c] + 0x18);
|
||||
outb(0x01, dev->pciport[c]);
|
||||
dev->in_int[c] = 0;
|
||||
goto handled;
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
if (i == 0x0a) {
|
||||
outb(0x30, dev->ioport[c] + 0x10);
|
||||
|
@ -518,19 +504,9 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
|
|||
outb(0x00, dev->ioport[c] + 0x13);
|
||||
outb(0x00, dev->ioport[c] + 0x14);
|
||||
outb(0x08, dev->ioport[c] + 0x18);
|
||||
dev->in_int[c] = 0;
|
||||
goto handled;
|
||||
} else {
|
||||
// inb(dev->ioport[c] + 0x17);
|
||||
// dev->working[c] = 0;
|
||||
dev->in_int[c] = 0;
|
||||
goto handled;
|
||||
}
|
||||
dev->in_int[c] = 0;
|
||||
|
||||
handled:
|
||||
#ifdef ED_DBGP
|
||||
printk("atp870u_intr_handle exit\n");
|
||||
#endif
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue