mtd: nand: use usual return values for the ->erase() hook
authorMiquel Raynal <miquel.raynal@free-electrons.com>
Thu, 30 Nov 2017 17:01:28 +0000 (18:01 +0100)
committerBoris Brezillon <boris.brezillon@free-electrons.com>
Fri, 1 Dec 2017 08:45:30 +0000 (09:45 +0100)
Avoid using specific defined values for checking returned status of the
->erase() hook. Instead, use usual negative error values on failure,
zero otherwise.

Signed-off-by: Miquel Raynal <miquel.raynal@free-electrons.com>
Acked-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
drivers/mtd/nand/denali.c
drivers/mtd/nand/docg4.c
drivers/mtd/nand/nand_base.c

index 34008a02ddb0ef9ba0f5fe6c7427751d42543a55..3e19861a46c600bad55f32834ec2b721e2388852 100644 (file)
@@ -951,7 +951,7 @@ static int denali_erase(struct mtd_info *mtd, int page)
        irq_status = denali_wait_for_irq(denali,
                                         INTR__ERASE_COMP | INTR__ERASE_FAIL);
 
-       return irq_status & INTR__ERASE_COMP ? 0 : NAND_STATUS_FAIL;
+       return irq_status & INTR__ERASE_COMP ? 0 : -EIO;
 }
 
 static int denali_setup_data_interface(struct mtd_info *mtd, int chipnr,
index 2436cbc71662dc0bd4dbd7fed5d702b557634792..45c01b4b34c72bc6a74e02df55fad3756bd08f2f 100644 (file)
@@ -900,6 +900,7 @@ static int docg4_erase_block(struct mtd_info *mtd, int page)
        struct docg4_priv *doc = nand_get_controller_data(nand);
        void __iomem *docptr = doc->virtadr;
        uint16_t g4_page;
+       int status;
 
        dev_dbg(doc->dev, "%s: page %04x\n", __func__, page);
 
@@ -939,7 +940,11 @@ static int docg4_erase_block(struct mtd_info *mtd, int page)
        poll_status(doc);
        write_nop(docptr);
 
-       return nand->waitfunc(mtd, nand);
+       status = nand->waitfunc(mtd, nand);
+       if (status < 0)
+               return status;
+
+       return status & NAND_STATUS_FAIL ? -EIO : 0;
 }
 
 static int write_page(struct mtd_info *mtd, struct nand_chip *nand,
index 630048f5abdc0e639c65307709e520424cdc3e18..eacc3f39cafd3f3e892d65721e36da5887650662 100644 (file)
@@ -2989,11 +2989,17 @@ out:
 static int single_erase(struct mtd_info *mtd, int page)
 {
        struct nand_chip *chip = mtd_to_nand(mtd);
+       int status;
+
        /* Send commands to erase a block */
        chip->cmdfunc(mtd, NAND_CMD_ERASE1, -1, page);
        chip->cmdfunc(mtd, NAND_CMD_ERASE2, -1, -1);
 
-       return chip->waitfunc(mtd, chip);
+       status = chip->waitfunc(mtd, chip);
+       if (status < 0)
+               return status;
+
+       return status & NAND_STATUS_FAIL ? -EIO : 0;
 }
 
 /**
@@ -3077,7 +3083,7 @@ int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr,
                status = chip->erase(mtd, page & chip->pagemask);
 
                /* See if block erase succeeded */
-               if (status & NAND_STATUS_FAIL) {
+               if (status) {
                        pr_debug("%s: failed erase, page 0x%08x\n",
                                        __func__, page);
                        instr->state = MTD_ERASE_FAILED;