rk3328 broken between v2022.04 and v2022.07 - still not working with v2023.01
Janpieter Sollie
janpieter.sollie at kabelmail.de
Fri Feb 10 20:02:14 CET 2023
Op 10/02/2023 om 17:02 schreef Jonas Karlman:
> Hi,
> On 2023-02-10 16:32, Janpieter Sollie wrote:
>> Op 10/02/2023 om 13:41 schreef Peter Robinson:
>>> On Fri, Feb 10, 2023 at 12:31 PM Janpieter Sollie
>>> <janpieter.sollie at kabelmail.de> wrote:
>>>> Hello,
>>>>
>>>> After a few years, I tried updating my u-boot 2021 to a more recent version, as the linux kernel
>>>> complained "ATF needs update".
>>>> The device I'm using is a nanopi neo3 2GB (more or less the same compared to NanoPi R2S, both
>>>> RK3328 platform).
>>>>
>>>> Starting from 2023.04-rc1, I couldn't get it running: in TPL, it complained "out of memory".
>>>> A hint on IRC made me pull back to v2022.04, which works with a few mods, but there's one
>>>> (minor) thing not working:
>>>> board_misc_init() causes a function call failed. Probably because efuse isn't working properly?
>>>> I also had to modify the device tree a bit:
>>> I have the Rock64 running 2022.10 without issues.
>>>
>> On your advice, I tested these as well 2022.10 and 2023.1.
>> seems to work when the patches are applied. However, still no misc_init():
>>
>> initcall sequence 000000007ffcf0b0 failed at call 0000000000202ff8 (err=-1)
>> ### ERROR ### Please RESET the board ###
>>
>> in the map file I see this points to misc_init()
>> but I guess your advice already obsoletes my statement, it's only "2023.04-rc1" now.
>> make oldconfig seems to be a bad idea, simply defconfig and make modifications again seems to be
>> a much safer choice.
>>
>> Any way I could help fixing the misc_init_f()?
> Try with CONFIG_ROCKCHIP_EFUSE disabled. misc_init_f will try to read cpuid from efuse/otp
> and use that to have a persistent ethaddr, should probably not hard fail when there is
> no efuse/otp to read cpuid from.
>
> Regards,
> Jonas
>
>> kind regards,
>>
>> Janpieter Sollie
>
I think we'd better close the discussion here. Whether keeping misc_init_r() is useful for the
rockchip boards is up to the devs, not to me.
If anyone would like to take a look at my modifications to make u-boot 2023.1 run on my nanopi
neo3, that would maybe be helpful for other ones.
Kind regards,
Janpieter Sollie
diff --git a/arch/arm/dts/rk3328-nanopi-r2s.dts b/arch/arm/dts/rk3328-nanopi-r2s.dts
index 3857d487ab..914b085e64 100644
--- a/arch/arm/dts/rk3328-nanopi-r2s.dts
+++ b/arch/arm/dts/rk3328-nanopi-r2s.dts
@@ -166,6 +166,35 @@
};
};
+&saradc {
+ status = "okay";
+};
+
+&efuse {
+ status = "okay";
+};
+
+
+&spi0 {
+ status = "okay";
+
+ spiflash at 0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+
+// maximum speed for Rockchip SPI
+ spi-max-frequency = <50000000>;
+ };
+};
+
+&rng {
+ status = "okay";
+};
+
+&pdm {
+ status = "okay";
+};
+
&i2c1 {
status = "okay";
@@ -400,6 +429,7 @@
};
};
+
&usb_host0_ehci {
status = "okay";
};
diff --git a/arch/arm/dts/rk3328.dtsi b/arch/arm/dts/rk3328.dtsi
index 27e45d5886..5e7f0f7db9 100644
--- a/arch/arm/dts/rk3328.dtsi
+++ b/arch/arm/dts/rk3328.dtsi
@@ -279,6 +279,17 @@
status = "disabled";
};
+ rng: rng at ff060000 {
+ compatible = "rockchip,cryptov1-rng";
+ reg = <0x0 0xff060000 0x0 0x4000>;
+
+ clocks = <&cru SCLK_CRYPTO>, <&cru HCLK_CRYPTO_SLV>;
+ clock-names = "clk_crypto", "hclk_crypto";
+ assigned-clocks = <&cru SCLK_CRYPTO>, <&cru HCLK_CRYPTO_SLV>;
+ assigned-clock-rates = <150000000>, <100000000>;
+ status = "disabled";
+ };
+
grf: syscon at ff100000 {
compatible = "rockchip,rk3328-grf", "syscon", "simple-mfd";
reg = <0x0 0xff100000 0x0 0x1000>;
diff --git a/drivers/ram/rockchip/sdram_rk3328.c b/drivers/ram/rockchip/sdram_rk3328.c
index 9c6798f816..5324ba8ed8 100644
--- a/drivers/ram/rockchip/sdram_rk3328.c
+++ b/drivers/ram/rockchip/sdram_rk3328.c
@@ -561,7 +561,7 @@ static int rk3328_dmc_of_to_plat(struct udevice *dev)
__func__, ret);
return ret;
}
- ret = regmap_init_mem(dev, &plat->map);
+ ret = regmap_init_mem(dev->node_, &plat->map);
if (ret)
printf("%s: regmap failed %d\n", __func__, ret);
#endif
diff --git a/drivers/spi/rk_spi.c b/drivers/spi/rk_spi.c
index cb80be77ae..38e55a6dd5 100644
--- a/drivers/spi/rk_spi.c
+++ b/drivers/spi/rk_spi.c
@@ -566,3 +566,4 @@ U_BOOT_DRIVER(rockchip_rk3288_spi) = {
};
DM_DRIVER_ALIAS(rockchip_rk3288_spi, rockchip_rk3368_spi)
+DM_DRIVER_ALIAS(rockchip_rk3288_spi, rockchip_rk3328_spi)
diff --git a/drivers/spi/rockchip_sfc.c b/drivers/spi/rockchip_sfc.c
index 851a648298..1037460f78 100644
--- a/drivers/spi/rockchip_sfc.c
+++ b/drivers/spi/rockchip_sfc.c
@@ -18,6 +18,7 @@
#include <linux/iopoll.h>
#include <spi.h>
#include <spi-mem.h>
+#include <dm/device_compat.h>
/* System control */
#define SFC_CTRL 0x0
More information about the U-Boot
mailing list