Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Sep 2022 15:00:48 +1000
From:      Peter Jeremy <peterj@freebsd.org>
To:        freebsd-arm@freebsd.org
Subject:   Pine H64 won't boot with DTB version 5.13
Message-ID:  <YxwaAOj2EzjunhNM@server.rulingia.com>

next in thread | raw e-mail | index | archive | help

--qRNmYJpGmYjsY6ts
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

I have updated my Pine H64 to -current and the kernel advises me:
WARNING: DTB version is 5.9 while kernel expects 5.13, please update the DT=
B in the ESP
unfortunately, when I do so, it fails to attach mmc1 to aw_mmc0 (the
microSD slot) and therefore there's no root device.  The onboard
flash mmc0 connected to aw_mmc1 probes normally.

I've compared the boot messages and the critical difference seems to be
that with the newer DTB, the following device is missing:
aw_r_intc_gicp0: <Allwinner R INTC> mem 0x7021000-0x70213ff irq 48 on simpl=
ebus0
Instead, I get:
simplebus0: <interrupt-controller@7021000> mem 0x7021000-0x70213ff irq 51 c=
ompat allwinner,sun50i-h6-r-intc (no driver attached)

Looking through the DTS changes the crucial difference is:

--- /tmp/zzz/5def4c47d4bd/sys/contrib/device-tree/src/arm64/allwinner/sun50=
i-h6.dtsi    2022-09-10 12:49:39.000000000 +1000
+++ /tmp/zzz/src/sys/contrib/device-tree/src/arm64/allwinner/sun50i-h6.dtsi=
     2022-09-10 13:24:13.751345000 +1000
=2E..
@@ -927,10 +929,9 @@
                };
=20
                r_intc: interrupt-controller@7021000 {
-                       compatible =3D "allwinner,sun50i-h6-r-intc",
-                                    "allwinner,sun6i-a31-r-intc";
+                       compatible =3D "allwinner,sun50i-h6-r-intc";
                        interrupt-controller;
-                       #interrupt-cells =3D <2>;
+                       #interrupt-cells =3D <3>;
                        reg =3D <0x07021000 0x400>;
                        interrupts =3D <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
                };

The problem is that the FreeBSD interrupt controller drivers
(sys/arm/allwinner/aw_nmi.c and sys/arm/allwinner/aw_r_intc.c) only
recognize "allwinner,sun6i-a31-r-intc".

I tried adding "allwinner,sun6i-a31-r-intc" back in and the resultant
DTB works.

I'm not sure if the correct fix is to locally patch sun50i-h6.dtsi
or fix the interrupt controller drivers.

--=20
Peter Jeremy

--qRNmYJpGmYjsY6ts
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEE7rKYbDBnHnTmXCJ+FqWXoOSiCzQFAmMcGflfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEVF
QjI5ODZDMzA2NzFFNzRFNjVDMjI3RTE2QTU5N0EwRTRBMjBCMzQACgkQFqWXoOSi
CzSYSA/8D70JQQFngxOs7501NCyUVuR6w8Tr4E0Ib9l8WqSfTwKOH6X17OZEyBpv
+SJOGwKUn6VsEm37IfxvQPe2VmbVMwCa/4dC3p3YNjt/MigQKNy2khveco+y4L2J
LDiBwZJnHvF0QWT1ZYES2/esy2cPpLDiIa7V8hYP9qxRdkEVw+noZVIJQ7fb/00c
gTFiaELCj1qw7GfHQKEXQjgDqN4N04gfTo1l9u5QnUGBXOS5V3nuP7aMBj6nIpzv
3qQh7PnooWl9QTL+NDuKifB472lBJ0LOoNaMCfJ4ae/G2wNmQu1Feexj387lFh3c
yXTpmU1KyvmfoEwIK5px6mFnBzSgdejlVuAkezIWus0CHbtL51xOjl8hyaN+H7f5
HlmxxZvL3Z73Y+G6bMHy92vO9sZLausurC9udeZt7oVoFWMJ/T2j69HWZZdE3FGc
niQvPNITXTN5t/FMIfyc5mVIqBXHNDxO0/cMKqbY0OEpfV0sFr5dG4aU0WUTKeFK
NwkgKg6tr3Kbyjjtb4JPGKQlv80lBswlBQ+87E+J6lMznRT3bQ5Cc6RcArY4DMvn
Duob46O5S3xTZW1ly3ZJttcEyukKK18KmKDI5xwhYfzXPZ5u0fkoPtDU0575cvWI
1kCzqSgJ1wetXZiY693Ex8yX6mhVqD3C2/YVizAx9wXm7T/5DYk=
=rtLH
-----END PGP SIGNATURE-----

--qRNmYJpGmYjsY6ts--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?YxwaAOj2EzjunhNM>