[PATCH] mtd: spi-nor: Set address mode in SEMPER flash when SFDP is skipped
Takahiro Kuwano
tkuw584924 at gmail.com
Tue Oct 21 09:41:39 CEST 2025
Hi Tudor,
On 10/21/2025 3:36 AM, Tudor Ambarus wrote:
> Hi, Takahiro,
>
> On 10/20/25 8:25 AM, tkuw584924 at gmail.com wrote:
>> From: Takahiro Kuwano <Takahiro.Kuwano at infineon.com>
>>
>> nor->addr_mode_nbytes is set during SFDP parse. Infineon SEMPER flash
>> family relies on that parameter to read and write registers. To support
>> use cases of skipping SFDP, set address mode in device specific setup()
>> function.
>>
>> Tested-by: Hiroyuki Saito <Hiroyuki.Saito2 at infineon.com>
>> Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano at infineon.com>
>> ---
>> drivers/mtd/spi/spi-nor-core.c | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c
>> index 6f352c5c0e2..e382a518a34 100644
>> --- a/drivers/mtd/spi/spi-nor-core.c
>> +++ b/drivers/mtd/spi/spi-nor-core.c
>> @@ -3794,6 +3794,16 @@ static int s25_s28_setup(struct spi_nor *nor, const struct flash_info *info,
>> #ifdef CONFIG_SPI_FLASH_BAR
>> return -ENOTSUPP; /* Bank Address Register is not supported */
>> #endif
>> +
>> + /* Setup address mode here, in case SFDP is skipped. */
>
> Under which conditions is the SFDP skipped?
>
In u-boot, SFDP is config option and some defconfig do not use it.
>> + if (!nor->addr_mode_nbytes) {
>> + ret = set_4byte(nor, nor->info, 1);
>
> why do you need this call? Isn't enough the one done in spi_nor_init()?
>
The addr_mode_nbytes is refereed in spansion_read_any_reg() during
setup().
> Cheers,
> ta> + if (ret)
>> + return ret;
>> +
>> + nor->addr_mode_nbytes = 4;
>> + }
>> +
>> /*
>> * S25FS256T has multiple sector architecture options, with selection of
>> * count and location of 128KB and 64KB sectors. This driver supports
More information about the U-Boot
mailing list