[PATCH] rk3399: boot_devices fix spinor node name
Art Nikpal
email2tema at gmail.com
Wed Jun 2 04:19:06 CEST 2021
hi
> why "/spi at ff1d0000" is not work, this drivers should be work for other boards before.
i`m sure now is not work (maybe nobody test it ) i have test it and
can see its doesn't works properly
because /spi at ff1d0000 just spi bus node - its not SPINOR-Flash node as
was written before
if we check u-boot,spl-boot-order for rk3399 boards is must be
bootable devices list (for example &norflash | &spi_flash | &spliflash
is alias for /spi at ff1d0000/flash at 0 )
grep same-as-spl arch/arm/dts/*rk3399* | grep flash
arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi:
u-boot,spl-boot-order = "same-as-spl", &sdhci, &spiflash, &sdmmc;
arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi: "same-as-spl",
&norflash, &sdhci, &sdmmc;
arch/arm/dts/rk3399-rockpro64-u-boot.dtsi:
u-boot,spl-boot-order = "same-as-spl", &spi_flash, &sdmmc, &sdhci;
arch/arm/dts/rk3399-roc-pc-u-boot.dtsi: u-boot,spl-boot-order =
"same-as-spl", &spi_flash, &sdhci, &sdmmc;
"same-as-spl" same must be translated to same devices ( &spi_flash,
&sdhci, &sdmmc )
grep "same device the SPL was" -A22 arch/arm/mach-rockchip/spl-boot-order.c
/* Handle the case of 'same device the SPL was loaded from' */
if (strncmp(conf, "same-as-spl", 11) == 0) {
conf = board_spl_was_booted_from();
if (!conf)
continue;
}
/* First check if the list element is an alias */
alias = fdt_get_alias(blob, conf);
if (alias)
conf = alias;
/* Try to resolve the config item (or alias) as a path */
node = fdt_path_offset(blob, conf);
if (node < 0) {
debug("%s: could not find %s in FDT\n", __func__, conf);
continue;
}
/* Try to map this back onto SPL boot devices */
boot_device = spl_node_to_boot_device(node);
if (boot_device < 0) {
debug("%s: could not map node @%x to a boot-device\n",
grep "UCLASS_SPI_FLASH" arch/arm/mach-rockchip/spl-boot-order.c
} else if (!uclass_get_device_by_of_offset(UCLASS_SPI_FLASH, node,
if (!uclass_get_device_by_of_offset(UCLASS_SPI_FLASH, node, &parent))
grep SPINOR arch/arm/mach-rockchip/rk3399/rk3399.c
[BROM_BOOTSOURCE_SPINOR] = "/spi at ff1d0000",
but its not SPI_FLASH and spl_node_to_boot_device(/spi at ff1d0000)
return always -1 and
u-boot,spl-boot-order = "same-as-spl" never works properly for spinorflash
PS: i have test spi at ff1d0000/flash at 0 works properly as expected
On Tue, Jun 1, 2021 at 8:09 PM Kever Yang <kever.yang at rock-chips.com> wrote:
>
> Hi Artem,
>
> On 2021/5/26 下午5:32, Artem Lapkin wrote:
> > Problem: board_spl_was_booted_from return wrong boot_devices[3] value
> > /spi at ff1d0000 and same-as-spl dont work properly for SPINOR flash
> > because arch/arm/mach-rockchip/spl-boot-order.c spl_node_to_boot_device
> > need parse SPINOR flash node as UCLASS_SPI_FLASH
> >
> > spl-boot-order: same-as-spl > *** BOOT_SOURCE_ID 3 (2:emmc 3:spi 5:sd ...
> > /spi at ff1d0000 > board_boot_order: could not map node @618 to a boot-device
> > /sdhci at fe330000 > /mmc at fe320000
> >
> > Solution: just change it to /spi at ff1d0000/flash at 0
>
> I don't understand why the solution is add "/flash at 0" and why
> "/spi at ff1d0000 " is not work, this drivers should be work for other
> boards before.
>
>
> Thanks,
>
> - Kever
>
> >
> > spl-boot-order: same-as-spl > *** BOOT_SOURCE_ID 3 (2:emmc 3:spi 5:sd ...
> > /spi at ff1d0000/flash at 0 > /sdhci at fe330000 > /mmc at fe320000
> >
> > Signed-off-by: Artem Lapkin <art at khadas.com>
> > ---
> > arch/arm/mach-rockchip/rk3399/rk3399.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/arch/arm/mach-rockchip/rk3399/rk3399.c b/arch/arm/mach-rockchip/rk3399/rk3399.c
> > index 869d2159..69e0c8c2 100644
> > --- a/arch/arm/mach-rockchip/rk3399/rk3399.c
> > +++ b/arch/arm/mach-rockchip/rk3399/rk3399.c
> > @@ -28,7 +28,7 @@ DECLARE_GLOBAL_DATA_PTR;
> >
> > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
> > [BROM_BOOTSOURCE_EMMC] = "/sdhci at fe330000",
> > - [BROM_BOOTSOURCE_SPINOR] = "/spi at ff1d0000",
> > + [BROM_BOOTSOURCE_SPINOR] = "/spi at ff1d0000/flash at 0",
> > [BROM_BOOTSOURCE_SD] = "/mmc at fe320000",
> > };
> >
>
>
More information about the U-Boot
mailing list