[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