On 21.02.19 10:15, Miquel Raynal wrote: > From: Boris Brezillon <bbrezillon@xxxxxxxxxx> > > The generic NAND layer provides abstraction of NAND devices no matter > the bus that is used to communicate with the chip. Basing the raw NAND > core on this generic layer should avoid duplication of common > operations, like iterating over all pages/blocks for MTD IO/erase > operations. > > In order to re-use this layer, we must first inherit from nand_device > and then initialize the nand_device struct appropriately. This patch > is taking care of the former. > > Signed-off-by: Boris Brezillon <bbrezillon@xxxxxxxxxx> > Signed-off-by: Miquel Raynal <miquel.raynal@xxxxxxxxxxx> Reviewed-by: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx> > --- > include/linux/mtd/rawnand.h | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/include/linux/mtd/rawnand.h b/include/linux/mtd/rawnand.h > index c20ea012aab6..dfeedfe2f3e0 100644 > --- a/include/linux/mtd/rawnand.h > +++ b/include/linux/mtd/rawnand.h > @@ -22,6 +22,7 @@ > #include <linux/mtd/flashchip.h> > #include <linux/mtd/bbm.h> > #include <linux/mtd/jedec.h> > +#include <linux/mtd/nand.h> > #include <linux/mtd/onfi.h> > #include <linux/of.h> > #include <linux/types.h> > @@ -861,6 +862,7 @@ struct nand_operation { > int nand_op_parser_exec_op(struct nand_chip *chip, > const struct nand_op_parser *parser, > const struct nand_operation *op, bool check_only); > + > /** > * struct nand_controller_ops - Controller operations > * > @@ -973,7 +975,7 @@ struct nand_legacy { > > /** > * struct nand_chip - NAND Private Flash Chip Data > - * @mtd: MTD device registered to the MTD framework > + * @base: Inherit from the generic NAND device > * @legacy: All legacy fields/hooks. If you develop a new driver, > * don't even try to use any of these fields/hooks, and if > * you're modifying an existing driver that is using those > @@ -1050,7 +1052,7 @@ struct nand_legacy { > */ > > struct nand_chip { > - struct mtd_info mtd; > + struct nand_device base; > > struct nand_legacy legacy; > > @@ -1115,12 +1117,12 @@ extern const struct mtd_ooblayout_ops nand_ooblayout_lp_ops; > > static inline struct nand_chip *mtd_to_nand(struct mtd_info *mtd) > { > - return container_of(mtd, struct nand_chip, mtd); > + return container_of(mtd, struct nand_chip, base.mtd); > } > > static inline struct mtd_info *nand_to_mtd(struct nand_chip *chip) > { > - return &chip->mtd; > + return &chip->base.mtd; > } > > static inline void *nand_get_controller_data(struct nand_chip *chip) > ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/