From 58c4d046b4d1d5b84875eb73115f3ef092abccce Mon Sep 17 00:00:00 2001 From: Ondrej Zary Date: Tue, 17 Nov 2015 19:23:52 +0100 Subject: atp870u: Remove ugly gotos #4 Signed-off-by: Ondrej Zary Reviewed-by: Hannes Reinicke Acked-by: Christoph Hellwig Signed-off-by: Martin K. Petersen --- drivers/scsi/atp870u.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) (limited to 'drivers/scsi/atp870u.c') diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c index b3d4e9db3c10..68afe1125166 100644 --- a/drivers/scsi/atp870u.c +++ b/drivers/scsi/atp870u.c @@ -970,19 +970,19 @@ static void tscam(struct Scsi_Host *host) } else { outb(0x00, dev->ioport[0] + 0x1b); } -wait_rdyok: - outb(0x09, dev->ioport[0] + 0x18); - - while ((inb(dev->ioport[0] + 0x1f) & 0x80) == 0x00) - cpu_relax(); - k = inb(dev->ioport[0] + 0x17); - if (k != 0x16) { - if ((k == 0x85) || (k == 0x42)) { - continue; - } - outb(0x41, dev->ioport[0] + 0x10); - goto wait_rdyok; - } + do { + outb(0x09, dev->ioport[0] + 0x18); + + while ((inb(dev->ioport[0] + 0x1f) & 0x80) == 0x00) + cpu_relax(); + k = inb(dev->ioport[0] + 0x17); + if ((k == 0x85) || (k == 0x42)) + break; + if (k != 0x16) + outb(0x41, dev->ioport[0] + 0x10); + } while (k != 0x16); + if ((k == 0x85) || (k == 0x42)) + continue; assignid_map |= m; } @@ -1003,10 +1003,8 @@ wait_rdyok: mdelay(128); val &= 0x00fb; /* after 1ms no msg */ outw(val, dev->ioport[0] + 0x1c); -wait_nomsg: - if ((inb(dev->ioport[0] + 0x1c) & 0x04) != 0) { - goto wait_nomsg; - } + while ((inb(dev->ioport[0] + 0x1c) & 0x04) != 0) + ; outb(1, 0x80); udelay(100); for (n = 0; n < 0x30000; n++) { -- cgit