atp870u: Remove ugly gotos #4
authorOndrej Zary <linux@rainbow-software.org>
Tue, 17 Nov 2015 18:23:52 +0000 (19:23 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 26 Nov 2015 03:08:35 +0000 (22:08 -0500)
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>
drivers/scsi/atp870u.c

index b3d4e9d..68afe11 100644 (file)
@@ -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++) {