[PATCH v2 3/5] cmd: mtd: Add total length of read operation

Miquel Raynal miquel.raynal at bootlin.com
Mon Nov 7 15:51:46 CET 2022


Hi Leo,

liangyanyu13 at gmail.com wrote on Wed,  2 Nov 2022 14:14:30 +0800:

> This patch bypasses the limitation of length for read operations
> in MTD test module. Thus, the total length of a read operation
> can be passed down to the continuous read operation in SPI NAND
> layer.
> 
> Signed-off-by: Leo Yu <liangyanyu13 at gmail.com>
> ---
>  cmd/mtd.c               | 2 ++
>  include/linux/mtd/mtd.h | 2 ++
>  2 files changed, 4 insertions(+)
> 
> diff --git a/cmd/mtd.c b/cmd/mtd.c
> index ad5cc9827d..0b601e08a3 100644
> --- a/cmd/mtd.c
> +++ b/cmd/mtd.c
> @@ -335,6 +335,8 @@ static int do_mtd_io(struct cmd_tbl *cmdtp, int flag, int argc,
>  	io_op.ooblen = woob ? mtd->oobsize : 0;
>  	io_op.datbuf = buf;
>  	io_op.oobbuf = woob ? &buf[len] : NULL;
> +	/* Total length of this read operation passed by user */
> +	io_op.totallen = len;

Where is this used?

> 
>  	/* Search for the first good block after the given offset */
>  	off = start_off;
> diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
> index ff635bd716..df8a231c82 100644
> --- a/include/linux/mtd/mtd.h
> +++ b/include/linux/mtd/mtd.h
> @@ -79,6 +79,7 @@ struct mtd_erase_region_info {
>   *		mode = MTD_OPS_PLACE_OOB or MTD_OPS_RAW)
>   * @datbuf:	data buffer - if NULL only oob data are read/written
>   * @oobbuf:	oob data buffer
> + * @totallen:   total number of data bytes to read in one read operation (for continuous read mode)
>   */
>  struct mtd_oob_ops {
>  	unsigned int	mode;
> @@ -89,6 +90,7 @@ struct mtd_oob_ops {
>  	uint32_t	ooboffs;
>  	uint8_t		*datbuf;
>  	uint8_t		*oobbuf;
> +	size_t		totallen;
>  };
> 
>  #ifdef CONFIG_SYS_NAND_MAX_OOBFREE
> --
> 2.17.1
> 


Thanks,
Miquèl


More information about the U-Boot mailing list