[PATCH] arm: dts: orangepi: Fix Orange Pi R1 and Plus LTS boot issue
Jonas Karlman
jonas at kwiboo.se
Wed Jul 31 17:38:44 CEST 2024
Hi,
On 2024-07-31 13:49, Pugemon wrote:
> Orange Pi R1 Plus and LTS don't have eMMC
> (default mmc0 in rk3328-u-boot.dtsi).
> The device is equipped with SPI flash memory, which U-Boot tries to use for
> reading configuration. However, the manufacturer has not provided any means
> to utilize SPI flash memory. There is no documentation,
> or software available for this purpose.
The U-Boot documentation contain limited information on how you can
write the generated rockchip-u-boot-spi.bin to SPI flash, after that it
will load U-Boot from the SPI flash instead.
https://docs.u-boot.org/en/latest/board/rockchip/rockchip.html#spi
>
> As a result, during OpenWRT sysupgrade, the board fails to boot because the
> script that switches the boot_device to an available one does not trigger.
This sounds more like an issue in your script?
>
> This patch changes the alias of mmc0 from &emmc to &sdmmc,
> ensuring the board boots correctly,
> and sysupgrade completes successfully.
There are aspects of the rockchip U-Boot code that depend on that mmc0
is emmc and mmc1 is sdmmc, so this change may introduce new issues and
should be avoided.
I have no issues booting my OrangePi R1 Plus LTS without this. Please
explain what the issue is and what script you are referring too. Is this
a U-Boot script or linux userspace script? also what version of U-Boot
have you had issue with? Does your SPI flash come with a vendor U-Boot
that is interfering with your sysupdate?
> Additionally, this allows saving the U-Boot environment
> by using saveenv with uboot-envtool.
U-Boot will expect the environment on the mmc device that U-Boot was
loaded from, and fallback on what U-Boot consider is the SD-card (mmc1).
saveenv from U-Boot CLI should work as intended and already save the env
to the sdmmc, unless there is other issues/modifications in your U-Boot.
So this may also be an issue in userspace tool?
>
> Signed-off-by: Pugemon <islavaivanov76 at gmail.com>
> Cc: Tianling Shen <cnsztl at gmail.com>
> ---
> arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi | 12 ++++++++++++
> arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi | 12 ++++++++++++
> 2 files changed, 24 insertions(+)
>
> diff --git a/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi
> b/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi
> index b50c1332b8..7063b188f2 100644
> --- a/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi
> +++ b/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi
> @@ -2,11 +2,23 @@
> /*
> * (C) Copyright 2018-2019 Rockchip Electronics Co., Ltd
> * (C) Copyright 2020 David Bauer
> + * (C) Copyright 2024 Pugemon
> */
>
> #include "rk3328-u-boot.dtsi"
> #include "rk3328-sdram-lpddr3-666.dtsi"
>
> +/ {
> + aliases {
> + mmc0 = &sdmmc;
> + spi0 = &spi0;
This is already defined in rk3328-u-boot.dtsi, no need to re-define it
here.
> + };
> +
> + chosen {
> + u-boot,spl-boot-order = "same-as-spl", &sdmmc;
It should not be needed to change this, if the emmc node is disabled
U-Boot should just skip it. Also the "same-as-spl" should already
refer to the SPI flash or the SD-card depending on where TPL/SPL
was loaded from.
> + };
> +};
> +
> &spi0 {
> flash at 0 {
> bootph-pre-ram;
> diff --git a/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi
> b/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi
> index 8ae003bbef..0374172527 100644
> --- a/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi
> +++ b/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi
> @@ -2,11 +2,23 @@
> /*
> * (C) Copyright 2018-2019 Rockchip Electronics Co., Ltd
> * (C) Copyright 2020 David Bauer
> + * (C) Copyright 2024 Pugemon
> */
>
> #include "rk3328-u-boot.dtsi"
> #include "rk3328-sdram-ddr4-666.dtsi"
>
> +/ {
> + aliases {
> + mmc0 = &sdmmc;
> + spi0 = &spi0;
Same as above.
> + };
> +
> + chosen {
> + u-boot,spl-boot-order = "same-as-spl", &sdmmc;
Same as above.
Regards,
Jonas
> + };
> +};
> +
> &spi0 {
> flash at 0 {
> bootph-pre-ram;
More information about the U-Boot
mailing list