[PATCH] mtd: spi-nor: spansion: Modify addr_mode_nbytes for DTR mode
Takahiro Kuwano
tkuw584924 at gmail.com
Mon Sep 8 02:28:26 PDT 2025
On 9/4/2025 10:13 PM, Santhosh Kumar K wrote:
> The nor->params->addr_mode_nbytes parameter defines the address byte
> count for the current addressing mode. When transitioning between SDR
> and DDR modes, this parameter must be properly updated to maintain the
> correct addressing behavior. So, implement the necessary updates to
> nor->params->addr_mode_nbytes during both DDR mode enablement and
> disablement operations to ensure address byte counts remain consistent
> with the active transfer mode.
>
The address byte count for the current addressing mode is defined as
params->addr_nbytes. The params->addr_mode_nbytes tracks flash's internal
addressing mode and is not used in octal DDR mode.
> Signed-off-by: Santhosh Kumar K <s-k6 at ti.com>
> ---
>
> Tested on TI's AM62x SK
> Logs: https://gist.github.com/santhosh21/8d69756bd54605d79086b00850e1083a
>
> ---
> drivers/mtd/spi-nor/spansion.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c
> index a0296c871634..678f7f4052c9 100644
> --- a/drivers/mtd/spi-nor/spansion.c
> +++ b/drivers/mtd/spi-nor/spansion.c
> @@ -230,6 +230,8 @@ static int cypress_nor_octal_dtr_en(struct spi_nor *nor)
> return ret;
> }
>
> + nor->params->addr_mode_nbytes = 4;
> +
Are there any problems if we don't do this?
> /* Read flash ID to make sure the switch was successful. */
> ret = spi_nor_read_id(nor, nor->addr_nbytes, 3, buf,
> SNOR_PROTO_8_8_8_DTR);
> @@ -275,6 +277,8 @@ static int cypress_nor_octal_dtr_dis(struct spi_nor *nor)
> return ret;
> }
>
> + nor->params->addr_mode_nbytes = 3;
> +
This doesn't work in case flash's internal address mode is 4.
> /* Read flash ID to make sure the switch was successful. */
> ret = spi_nor_read_id(nor, 0, 0, buf, SNOR_PROTO_1_1_1);
> if (ret) {
Thanks,
Takahiro
More information about the linux-mtd
mailing list