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

From: Mark Millard <marklmi_at_yahoo.com>
Date: Fri, 25 Nov 2022 23:18:34 UTC
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