]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
mtd: rawnand: Pass a nand_chip object to chip->erase()
authorBoris Brezillon <boris.brezillon@bootlin.com>
Thu, 6 Sep 2018 12:05:30 +0000 (14:05 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Wed, 3 Oct 2018 09:12:25 +0000 (11:12 +0200)
Let's make the raw NAND API consistent by patching all helpers and
hooks to take a nand_chip object instead of an mtd_info one or
remove the mtd_info object when both are passed.

Let's tackle the chip->erase() hook.

Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/denali.c
drivers/mtd/nand/raw/docg4.c
drivers/mtd/nand/raw/nand_base.c
include/linux/mtd/rawnand.h

index 0c3fff9d65af8d0b33f7d56dd95693d277ba0a82..bb4ad3b822adfab87fc3242cedd0de59c600993e 100644 (file)
@@ -915,9 +915,9 @@ static int denali_waitfunc(struct nand_chip *chip)
        return irq_status & INTR__INT_ACT ? 0 : NAND_STATUS_FAIL;
 }
 
-static int denali_erase(struct mtd_info *mtd, int page)
+static int denali_erase(struct nand_chip *chip, int page)
 {
-       struct denali_nand_info *denali = mtd_to_denali(mtd);
+       struct denali_nand_info *denali = mtd_to_denali(nand_to_mtd(chip));
        uint32_t irq_status;
 
        denali_reset_irq(denali);
index ae20172f1b60bfdea474b07d3194649b591cf691..49500cae3d2fb88dce9afe9dd190ee4a6416a3d1 100644 (file)
@@ -892,9 +892,9 @@ static int docg4_read_oob(struct nand_chip *nand, int page)
        return 0;
 }
 
-static int docg4_erase_block(struct mtd_info *mtd, int page)
+static int docg4_erase_block(struct nand_chip *nand, int page)
 {
-       struct nand_chip *nand = mtd_to_nand(mtd);
+       struct mtd_info *mtd = nand_to_mtd(nand);
        struct docg4_priv *doc = nand_get_controller_data(nand);
        void __iomem *docptr = doc->virtadr;
        uint16_t g4_page;
index 9be0f98c12444f872f50dc9f4e2590b04452aa18..26be436eb8f110653ff7051cd440475148216840 100644 (file)
@@ -4623,14 +4623,13 @@ out:
 
 /**
  * single_erase - [GENERIC] NAND standard block erase command function
- * @mtd: MTD device structure
+ * @chip: NAND chip object
  * @page: the page address of the block which will be erased
  *
  * Standard erase command for NAND chips. Returns NAND status.
  */
-static int single_erase(struct mtd_info *mtd, int page)
+static int single_erase(struct nand_chip *chip, int page)
 {
-       struct nand_chip *chip = mtd_to_nand(mtd);
        unsigned int eraseblock;
 
        /* Send commands to erase a block */
@@ -4715,7 +4714,7 @@ int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr,
                    (page + pages_per_block))
                        chip->pagebuf = -1;
 
-               status = chip->erase(mtd, page & chip->pagemask);
+               status = chip->erase(chip, page & chip->pagemask);
 
                /* See if block erase succeeded */
                if (status) {
index c00e571d09cabe7fc06acc50d6233e7ccd13eeaf..8c8315d977de8719f6fcd0ccb3f3c3759a262e10 100644 (file)
@@ -1298,7 +1298,7 @@ struct nand_chip {
        int (*exec_op)(struct nand_chip *chip,
                       const struct nand_operation *op,
                       bool check_only);
-       int (*erase)(struct mtd_info *mtd, int page);
+       int (*erase)(struct nand_chip *chip, int page);
        int (*set_features)(struct mtd_info *mtd, struct nand_chip *chip,
                            int feature_addr, uint8_t *subfeature_para);
        int (*get_features)(struct mtd_info *mtd, struct nand_chip *chip,