FYI: Example RPi4B 8GiByte "B0T" (3 GiByte limitation) vs. 8 GiByte "C0T" device tree differences

Mark Millard <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
I’ve now got access to a RPi4B with a “C0T” part, an 8 GiByte one. It is a Rev 1.5
as well, the only such that I’ve access to. (There are such things as Rev 1.4 “C0T”
RPi4B’s as I understand.) Showing various differences vs. the old Rev 1.4 8 GiByte
RPi4B:

-       model = "Raspberry Pi 4 Model B Rev 1.4";
+       model = "Raspberry Pi 4 Model B Rev 1.5”;
. . .
        system {
-               linux,serial = <0x10000000 REDACTED>;
-               linux,revision = <0x00d03114>;
+               linux,serial = <0x10000000 REDACTED>;
+               linux,revision = <0x00d03115>;
        };
. . .
        emmc2bus {
                compatible = "simple-bus";
                #address-cells = <0x00000002>;
                #size-cells = <0x00000001>;
                ranges = <0x00000000 0x7e000000 0x00000000 0xfe000000 0x01800000>;
-               dma-ranges = <0x00000000 0xc0000000 0x00000000 0x00000000 0x40000000>;
+               dma-ranges = <0x00000000 0x00000000 0x00000000 0x00000000 0xfc000000>;
. . .
                pcie@7d500000 {
-                       compatible = "brcm,bcm2711-pcie";
+                       compatible = "brcm,bcm2711-pcie", "brcm,bcm7445-pcie";
. . .
-                       dma-ranges = <0x02000000 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0xc0000000>;
+                       dma-ranges = <0x02000000 0x00000004 0x00000000 0x00000000 0x00000000 0x00000002 0x00000000>;
. . .

I ignored ethernet addresses, serial numbers, and the like.

I had updated the RPi4B's to have the same EEPROM image defaults/critical
vintage in order to make things more comparable (2022-Apr content vintage).
For reference:

                bootloader {
                        version = "507b2360eb46af23c05844b289dc5ae4ecfc3cca";
                        capabilities = <0x0000007f>;
-                       update-timestamp = <0x6381074a>;
+                       update-timestamp = <0x6380a03c>;
                        build-timestamp = <0x6267c85c>;
                };

Notes:

I get the information via a sequence that involves booting and looking
at the likes of the text:

Using DTB provided by EFI at 0x7ef0000.

(FYI: prior to the 1st boot this area is not filled in. So a reboot is involved
in preparing it for availability at U-Boot time. It survives.)

After that I "shutdown -r now” and stop it in U-Boot and use (in this case):

U-Boot> fdt addr 0x7ef0000
U-Boot> fdt print
/ {
. . .

I record the serial console’s output for later reference.

Doing this for both RPi4B types, allows me to use diff like utilities.

As I understand, this sequence is showing the device tree as it was given
to the FreeBSD kernel, not some earlier stage. (The RPi* firmware makes
adjustments before handing information over to U-Boot. U-Boot might do
similarly before handling information over to the FreeBSD loader. That
loader might before handing the above over to the kernel.)

===
Mark Millard
marklmi at yahoo.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.