mtd: nand: sunxi: Improve sunxi_nfc_cmd_ctrl()
authorBoris Brezillon <boris.brezillon@free-electrons.com>
Fri, 6 Jan 2017 09:42:07 +0000 (10:42 +0100)
committerBoris Brezillon <boris.brezillon@free-electrons.com>
Mon, 6 Feb 2017 08:35:19 +0000 (09:35 +0100)
We only need to call sunxi_nfc_wait_cmd_fifo_empty() if we want to send
a new command. Move the sunxi_nfc_wait_cmd_fifo_empty() call to right
place to avoid extra register reads.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
drivers/mtd/nand/sunxi_nand.c

index 76449f79d4c5c1885534ce357bf5d05de7df5c2f..0eeeb8b889ea8af83a12126ded319e84f0389618 100644 (file)
@@ -604,10 +604,6 @@ static void sunxi_nfc_cmd_ctrl(struct mtd_info *mtd, int dat,
        struct sunxi_nfc *nfc = to_sunxi_nfc(sunxi_nand->nand.controller);
        int ret;
 
-       ret = sunxi_nfc_wait_cmd_fifo_empty(nfc);
-       if (ret)
-               return;
-
        if (dat == NAND_CMD_NONE && (ctrl & NAND_NCE) &&
            !(ctrl & (NAND_CLE | NAND_ALE))) {
                u32 cmd = 0;
@@ -637,6 +633,10 @@ static void sunxi_nfc_cmd_ctrl(struct mtd_info *mtd, int dat,
                        writel(sunxi_nand->addr[1],
                               nfc->regs + NFC_REG_ADDR_HIGH);
 
+               ret = sunxi_nfc_wait_cmd_fifo_empty(nfc);
+               if (ret)
+                       return;
+
                writel(cmd, nfc->regs + NFC_REG_CMD);
                sunxi_nand->addr[0] = 0;
                sunxi_nand->addr[1] = 0;