Re: [PATCH 06/15] mtd: rawnand: Prepare things to reuse the generic NAND layer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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/



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux