]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mtd: cfi_cmdset_0002: Remove goto statement from do_write_buffer()
authorTokunori Ikegami <ikegami.t@gmail.com>
Mon, 5 Aug 2019 19:03:19 +0000 (04:03 +0900)
committerVignesh Raghavendra <vigneshr@ti.com>
Tue, 27 Aug 2019 12:25:52 +0000 (17:55 +0530)
Remove goto statement from do_write_buffer() to simplify the code flow.

Cc: Fabio Bettoni <fbettoni@gmail.com>
Co: Hauke Mehrtens <hauke@hauke-m.de>
Cc: Chris Packham <chris.packham@alliedtelesis.co.nz>
Cc: Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
Cc: linux-mtd@lists.infradead.org
Signed-off-by: Tokunori Ikegami <ikegami.t@gmail.com>
[vigneshr@ti.com: Reword commit message]
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
drivers/mtd/chips/cfi_cmdset_0002.c

index 7d29f596bc9e3bb8f203aab860b96fd833045e88..bac7c82e227a990f82b9db783db784cc3dea6ce6 100644 (file)
@@ -1979,41 +1979,42 @@ static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
                 * the failure due to scheduling.
                 */
                if (time_after(jiffies, timeo) &&
-                   !chip_good(map, chip, adr, datum))
+                   !chip_good(map, chip, adr, datum)) {
+                       ret = -EIO;
                        break;
-
-               if (chip_good(map, chip, adr, datum)) {
-                       xip_enable(map, chip, adr);
-                       goto op_done;
                }
 
+               if (chip_good(map, chip, adr, datum))
+                       break;
+
                /* Latency issues. Drop the lock, wait a while and retry */
                UDELAY(map, chip, adr, 1);
        }
 
-       /*
-        * Recovery from write-buffer programming failures requires
-        * the write-to-buffer-reset sequence.  Since the last part
-        * of the sequence also works as a normal reset, we can run
-        * the same commands regardless of why we are here.
-        * See e.g.
-        * http://www.spansion.com/Support/Application%20Notes/MirrorBit_Write_Buffer_Prog_Page_Buffer_Read_AN.pdf
-        */
-       cfi_check_err_status(map, chip, adr);
-       cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi,
-                        cfi->device_type, NULL);
-       cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi,
-                        cfi->device_type, NULL);
-       cfi_send_gen_cmd(0xF0, cfi->addr_unlock1, chip->start, map, cfi,
-                        cfi->device_type, NULL);
-       xip_enable(map, chip, adr);
-       /* FIXME - should have reset delay before continuing */
+       if (ret) {
+               /*
+                * Recovery from write-buffer programming failures requires
+                * the write-to-buffer-reset sequence.  Since the last part
+                * of the sequence also works as a normal reset, we can run
+                * the same commands regardless of why we are here.
+                * See e.g.
+                * http://www.spansion.com/Support/Application%20Notes/MirrorBit_Write_Buffer_Prog_Page_Buffer_Read_AN.pdf
+                */
+               cfi_check_err_status(map, chip, adr);
+               cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi,
+                                cfi->device_type, NULL);
+               cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi,
+                                cfi->device_type, NULL);
+               cfi_send_gen_cmd(0xF0, cfi->addr_unlock1, chip->start, map, cfi,
+                                cfi->device_type, NULL);
+               /* FIXME - should have reset delay before continuing */
+
+               pr_err("MTD %s(): software timeout, address:0x%.8lx.\n",
+                      __func__, adr);
+       }
 
-       printk(KERN_WARNING "MTD %s(): software timeout, address:0x%.8lx.\n",
-              __func__, adr);
+       xip_enable(map, chip, adr);
 
-       ret = -EIO;
- op_done:
        chip->state = FL_READY;
        DISABLE_VPP(map);
        put_chip(map, chip, adr);