[PATCH 1/2] rockchip: rk3588: Add SPINAND as boot device

Jonas Karlman jonas at kwiboo.se
Fri Nov 3 11:03:27 CET 2023


On 2023-11-03 10:34, Slawomir Stepien wrote:
> Hi Jonas and Kever
> 
> Thanks for clarifying the situation Kever! Please see below my proposition. What do you think?

Yes, this matches my proposition at [1], and I have a series queued now
that we have gotten the answer.

Have included your commit to enable ROCKCHIP_SPI_IMAGE on Orange Pi 5
Plus, John Clark's commit to enable on NanoPC-T6 my own to enable on
Orange Pi 5.

Should hit the list later today after full runtime testing.

> 
> On lis 02, 2023 15:27, Kever Yang wrote:
>> Hi Jonas,
>>
>> On 2023/11/1 00:45, Jonas Karlman wrote:
>>> On 2023-10-31 17:13, Slawomir Stepien wrote:
>>>> Mark the flash at 0 as BROM_BOOTSOURCE_SPINAND.
>>>> Fixes use of same-as-spl in u-boot,spl-boot-order prop on Orange Pi 5
>>>> Plus.
>>>>
>>>> Signed-off-by: Slawomir Stepien <sst at poczta.fm>
>>>> ---
>>>>   arch/arm/mach-rockchip/rk3588/rk3588.c | 1 +
>>>>   1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/arch/arm/mach-rockchip/rk3588/rk3588.c b/arch/arm/mach-rockchip/rk3588/rk3588.c
>>>> index b1f535fad5..0c8f10a97c 100644
>>>> --- a/arch/arm/mach-rockchip/rk3588/rk3588.c
>>>> +++ b/arch/arm/mach-rockchip/rk3588/rk3588.c
>>>> @@ -42,6 +42,7 @@ const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
>>>>   	[BROM_BOOTSOURCE_SPINOR] = "/spi at fe2b0000/flash at 0",
>>>>   	[BROM_BOOTSOURCE_SD] = "/mmc at fe2c0000",
>>>>   	[BROM_BOOTSOURCE_SPINOR_RK3588] = "/spi at fe2b0000/flash at 0",
>>>> +	[BROM_BOOTSOURCE_SPINAND] = "/spi at fe2b0000/flash at 0",
>>> This is not correct, please see [1] for an open discussion on this issue.
>>>
>>> Kever: Do you have any more insights into the question on [1].
>>
>> As I reply in another mail, the FSPI M0~M2 is all the option for SPI
>> NAND/NOR in rk3588.
> 
> So based on that info, something like this?:
> 
> 1. BROM_BOOTSOURCE_SPINAND - removed (not used at all).

Should not be removed, because this is still valid for old generation
SoCs.

> 2. BROM_BOOTSOURCE_SPINOR_RK3588 - removed (not needed after this patch).

Yes, this should be replaced with FSPI_M2.

> 3. Updated also the rk3568.c since it also has FSPI M0 (only this one mux), so I would assume it
> will be value of 3 there too.

No need to change this, the RK356x does not have iomux on fspi, so lets
treat this as an old generation SoCs.

> 4. The BROM_BOOTSOURCE_SPINOR is still there, since the rk3399 does not use the FSPI (that is my
> understanding after checking the TRM doc).

Agreed, should not be changed for same reasons as SPINAND.

> 
> diff --git a/arch/arm/include/asm/arch-rockchip/bootrom.h b/arch/arm/include/asm/arch-rockchip/bootrom.h
> index 7dab18fbc3..9f16d28aec 100644
> --- a/arch/arm/include/asm/arch-rockchip/bootrom.h
> +++ b/arch/arm/include/asm/arch-rockchip/bootrom.h
> @@ -46,9 +46,10 @@ enum {
>  	BROM_BOOTSOURCE_NAND = 1,
>  	BROM_BOOTSOURCE_EMMC = 2,
>  	BROM_BOOTSOURCE_SPINOR = 3,
> -	BROM_BOOTSOURCE_SPINAND = 4,
> +	BROM_BOOTSOURCE_FSPI_M0 = 3,
> +	BROM_BOOTSOURCE_FSPI_M1 = 4,
>  	BROM_BOOTSOURCE_SD = 5,
> -	BROM_BOOTSOURCE_SPINOR_RK3588 = 6,
> +	BROM_BOOTSOURCE_FSPI_M2 = 6,
>  	BROM_BOOTSOURCE_USB = 10,
>  	BROM_LAST_BOOTSOURCE = BROM_BOOTSOURCE_USB
>  };
> diff --git a/arch/arm/mach-rockchip/rk3568/rk3568.c b/arch/arm/mach-rockchip/rk3568/rk3568.c
> index 69ef19cc85..ccb63c6a88 100644
> --- a/arch/arm/mach-rockchip/rk3568/rk3568.c
> +++ b/arch/arm/mach-rockchip/rk3568/rk3568.c
> @@ -83,7 +83,7 @@ static struct mm_region rk3568_mem_map[] = {
>  
>  const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
>  	[BROM_BOOTSOURCE_EMMC] = "/mmc at fe310000",
> -	[BROM_BOOTSOURCE_SPINOR] = "/spi at fe300000/flash at 0",
> +	[BROM_BOOTSOURCE_FSPI_M0] = "/spi at fe300000/flash at 0",
>  	[BROM_BOOTSOURCE_SD] = "/mmc at fe2b0000",
>  };
>  
> diff --git a/arch/arm/mach-rockchip/rk3588/rk3588.c b/arch/arm/mach-rockchip/rk3588/rk3588.c
> index b1f535fad5..c36f783d29 100644
> --- a/arch/arm/mach-rockchip/rk3588/rk3588.c
> +++ b/arch/arm/mach-rockchip/rk3588/rk3588.c
> @@ -39,9 +39,10 @@ DECLARE_GLOBAL_DATA_PTR;
>  
>  const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
>  	[BROM_BOOTSOURCE_EMMC] = "/mmc at fe2e0000",
> -	[BROM_BOOTSOURCE_SPINOR] = "/spi at fe2b0000/flash at 0",
> +	[BROM_BOOTSOURCE_FSPI_M0] = "/spi at fe2b0000/flash at 0",
>  	[BROM_BOOTSOURCE_SD] = "/mmc at fe2c0000",
> -	[BROM_BOOTSOURCE_SPINOR_RK3588] = "/spi at fe2b0000/flash at 0",
> +	[BROM_BOOTSOURCE_FSPI_M1] = "/spi at fe2b0000/flash at 0",
> +	[BROM_BOOTSOURCE_FSPI_M2] = "/spi at fe2b0000/flash at 0",

Fully agree with this change, and have made same/similar. However, the
logic for boot_devices will possible have to be changed/updated if there
is a board using SPI NAND with a different node name in the future.

Regards,
Jonas

>  };
>  
>  static struct mm_region rk3588_mem_map[] = {
> 
>>> Is my assessment about the value BootRom writes to bootsource reg
>>> correct, see [1]?
>>>
>>> - FSPI (M0): 3
>>> - FSPI (M1): 4
>>> - FSPI (M2): 6
>>>
>>> [1] https://lore.kernel.org/u-boot/b82c02c0-0a37-8553-f498-b03f85394d59@kwiboo.se/
>>>
>>> Regards,
>>> Jonas
>>>
>>>>   };
>>>>   static struct mm_region rk3588_mem_map[] = {
> 



More information about the U-Boot mailing list