[PATCH v4 0/2] mtd: spi: nor: force mtd name to "nor%d"
Patrick DELAUNAY
patrick.delaunay at foss.st.com
Thu Sep 23 11:04:28 CEST 2021
Hi,
On 9/23/21 3:32 AM, Marek Vasut wrote:
> On 9/22/21 10:00 PM, Tom Rini wrote:
>> On Wed, Sep 22, 2021 at 09:56:26PM +0200, Marek Vasut wrote:
>>> On 9/22/21 9:46 PM, Tom Rini wrote:
>>>> On Wed, Sep 22, 2021 at 09:24:24PM +0200, Marek Vasut wrote:
>>>>
>>>>> I am talking about using nor%d in MTDIDS in U-Boot UBI code to
>>>>> look up from
>>>>> which device to attach UBI in U-Boot.
>>>>
>>>> OK, so are we not able to pass in the correct name now? Or just
>>>> worried
>>>> about old environment and new U-Boot?
>>>
>>> Say you have the following in board config:
>>>
>>> CONFIG_MTDIDS_DEFAULT="nor0=ff705000.spi.0"
>>> CONFIG_MTDPARTS_DEFAULT="mtdparts=ff705000.spi.0:-(fs);"
>>>
>>> Then run "=> ubi part fs", which will fail to find nor0, because now
>>> that
>>> nor0 is called something else. That is what this series tries to fix.
>>
>> Yes, and what is nor0 now, and what happens if you use it?
>
> Now it is "mt25ql02g", for all mt25ql02g on the board, so ... I cannot
> even select the one SPI NOR I want to use, since they are not even
> enumerated in any way, they are all the same. You might want to look
> at get_mtd_device_nm() in drivers/mtd/mtdcore.c .
To comple me use case, on EV1 board can boot from NOR / NAND / SPI-NAND
so mtdparts and mtdids are buidl dynamically with
CONFIG_SYS_MTDPARTS_RUNTIME in
afraided board/st/common/stm32mp_mtdparts.c::board_mtdparts_default()
I don't use MTDIDS_DEFAULT / MTDPARTS_DEFAULT.
For example, when I force NOR / NAND presence, I create the MTD variables:
mtdids=nand0=nand0,nor0=nor0
mtdparts=mtdparts=nand0:2m(fsbl),2m(ssbl1),2m(ssbl2),-(UBI);nor0:256k(fsbl1),256k(fsbl2),2m(ssbl),512k(u-boot-env),-(nor_user)
The command "mtdparts" is working in previous U-Boot releaseafraided
and it is not more working as the name of MTD device change
Today, without my patch I have
STM32MP> mtd list
SF: Detected mx66l51235l with page size 256 Bytes, erase size 64 KiB,
total 64 MiB
Could not find a valid device for nor0
List of MTD devices:
* nand0
- type: NAND flash
- block size: 0x40000 bytes
- min I/O: 0x1000 bytes
- OOB size: 224 bytes
- OOB available: 118 bytes
- ECC strength: 8 bits
- ECC step size: 512 bytes
- bitflip threshold: 6 bits
- 0x000000000000-0x000040000000 : "nand0"
- 0x000000000000-0x000000200000 : "fsbl"
- 0x000000200000-0x000000400000 : "ssbl1"
- 0x000000400000-0x000000600000 : "ssbl2"
- 0x000000600000-0x000040000000 : "UBI"
* mx66l51235l
- device: mx66l51235l at 0
- parent: spi at 58003000
- driver: jedec_spi_nor
- path: /soc/spi at 58003000/mx66l51235l at 0
- type: NOR flash
- block size: 0x10000 bytes
- min I/O: 0x1 bytes
- 0x000000000000-0x000004000000 : "mx66l51235l"
* mx66l51235l
- device: mx66l51235l at 1
- parent: spi at 58003000
- driver: jedec_spi_nor
- path: /soc/spi at 58003000/mx66l51235l at 1
- type: NOR flash
- block size: 0x10000 bytes
- min I/O: 0x1 bytes
- 0x000000000000-0x000004000000 : "mx66l51235l"
before my patch, Ihave always the error "Device nor0 not found!" on
mtdparts command
=> get_mtd_info
==> get_mtd_device_nm("nor0") build with MTD_DEV_TYPE(type)
===> mtd_device_matches_name()
and here "nor0" must be mtd->name acoring the code
or I miss something...
I don't found any way to solve my issue only with "mtdids" variable.
so I restore the previous behavior as I expect the mtd name
modification can impact many other boards.
A other solution can be change get_mtd_info(),
but I was also afraid of side effect.
Patrick
More information about the U-Boot
mailing list