[PATCH v4 01/13] mtd: spi-nor: core: Don't use mtd_info in the NOR's probe sequence of calls
Pratyush Yadav
p.yadav at ti.com
Tue Nov 30 01:56:26 PST 2021
On 22/11/21 11:50AM, Tudor Ambarus wrote:
> Use NOR parameters in the probe's sequence of calls, thus
> nor->params->size instead of nor->mtd.size and let the mtd_info
> fields be used by the mtd calls (mtd->_erase, mtd->_read, mtd->_write).
> mtd_info fields should not be used during probe because we haven't
> registered mtd yet.
These changes look good to me, but there is one thing this seems to be
missing. In xlinx.c, I see that xilinx_setup() sets nor->mtd.size. I
think it should be updated to set nor->params->size instead otherwise
functions like spi_nor_set_addr_width() might end up using the wrong
value.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus at microchip.com>
> ---
> v4: new patch
>
> drivers/mtd/spi-nor/core.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
> index 88dd0908d172..5b9c827d411c 100644
> --- a/drivers/mtd/spi-nor/core.c
> +++ b/drivers/mtd/spi-nor/core.c
> @@ -2115,7 +2115,7 @@ static int spi_nor_spimem_check_op(struct spi_nor *nor,
> */
> op->addr.nbytes = 4;
> if (!spi_mem_supports_op(nor->spimem, op)) {
> - if (nor->mtd.size > SZ_16M)
> + if (nor->params->size > SZ_16M)
> return -EOPNOTSUPP;
>
> /* If flash size <= 16MB, 3 address bytes are sufficient */
> @@ -3011,7 +3011,7 @@ static int spi_nor_set_addr_width(struct spi_nor *nor)
> nor->addr_width = 3;
> }
>
> - if (nor->addr_width == 3 && nor->mtd.size > 0x1000000) {
> + if (nor->addr_width == 3 && nor->params->size > 0x1000000) {
> /* enable 4-byte addressing if the device exceeds 16MiB */
> nor->addr_width = 4;
> }
> @@ -3245,7 +3245,7 @@ static int spi_nor_create_read_dirmap(struct spi_nor *nor)
> SPI_MEM_OP_DUMMY(nor->read_dummy, 0),
> SPI_MEM_OP_DATA_IN(0, NULL, 0)),
> .offset = 0,
> - .length = nor->mtd.size,
> + .length = nor->params->size,
> };
> struct spi_mem_op *op = &info.op_tmpl;
>
> @@ -3276,7 +3276,7 @@ static int spi_nor_create_write_dirmap(struct spi_nor *nor)
> SPI_MEM_OP_NO_DUMMY,
> SPI_MEM_OP_DATA_OUT(0, NULL, 0)),
> .offset = 0,
> - .length = nor->mtd.size,
> + .length = nor->params->size,
> };
> struct spi_mem_op *op = &info.op_tmpl;
>
> --
> 2.25.1
>
--
Regards,
Pratyush Yadav
Texas Instruments Inc.
More information about the linux-mtd
mailing list