Re: Need testers for ALPHA RPi-5 fan control, GE NIC, WiFi drivers for FreeBSD-CURRENT

Mark Millard <[email protected]> Mon, 8 Jun 2026 12:16:32 -0700
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On 6/5/26 14:22, Mark Millard wrote:
> On 6/5/26 12:46, Mark Millard wrote:
>> On 6/4/26 20:56, Mark Millard wrote:
>>> On 6/4/26 20:12, Mark Millard wrote:
>>>> On 6/4/26 19:39, Mark Millard wrote:
>>>>> On 5/29/26 17:42, Jeremy McMillan wrote:
>>>>>>
>>>>>>
>>>>>> If anyone has a Raspberry Pi 5 that's not dedicated to anything
>>>>>> important, I'd appreciate some help testing this:
>>>>>>
>>>>>> https://github.com/aphor/FreeBSD15-RPi5-modules <https://github.com/
>>>>>> aphor/FreeBSD15-RPi5-modules>
>>>>>>
>>>>>> The README.md is up to date, but other docs in there might be stale.
>>>>>>
>>>>>> IDK if I should try to implement Bluetooth yet. I haven't tried using
>>>>>> FreeBSD bluetooth with working known-good drivers on supported hardware,
>>>>>> but when this is relatively complete I'm planning to do some bug fixing
>>>>>> and performance improvements where necessary in a BETA phase, then a
>>>>>> rewrite from scratch for maintainability that can be submitted to
>>>>>> FreeBSD-CURRENT. I know the repo says FreeBSD15, but I'm currently
>>>>>> building against FreeBSD-16-CURRENT. I've had feedback that the fan
>>>>>> control works fine on FreeBSD-15.
>>>>>>
>>>>>> I also don't know what I should do about GPIO testing. I'd appreciate
>>>>>> any pointers if other people work with RPi hardware and have any
>>>>>> pointers for testing GPIO stuff. I think there's a few pins that can do
>>>>>> DAC and ADC and others that can do PWM (like the ones used for the fan
>>>>>> header) when programmed to different modes. I have an oscilloscope, but
>>>>>> I'd like to automate testing as much as possible because my spare time
>>>>>> is precious.
>>>>>>
>>>>>> It seems like RPi-5 will be around for a while under the current market
>>>>>> conditions for the semiconductor business, and it is my hope that
>>>>>> FreeBSD can deserve and get more attention and support from Broadcom and
>>>>>> Raspberry Pi. Also, I have my own projects :)
>>>>>>
>>>>>> Thanks in advance for your attention!
>>>>>
>>>>> QUOTE
>>>>> Add to your FreeBSD device tree (typically at
>>>>> /usr/src/sys/arm64/broadcom/bcm2712-rpi-5-b.dts):
>>>>> END QUOTE
>>>>>
>>>>> FreeBSD has never used RPi* device trees based on the ones in the
>>>>> FreeBSD /usr/src/sys/ area (copied from linux mainline): only binary
>>>>> ones copied directly or indirectly from the RPi* folks (the RPi*
>>>>> upstream). (The sources are available.) The same is true for what the
>>>>> two RPi5 EDK2's provide: *.dtb files and *.dtbo files from the RPi*
>>>>> upstream, both in binary form.
>>>>>
>>>>> My limited understanding is that they are (were?) not the same in
>>>>> various ways --but I do not know the details.
>>>>>
>>>>> The modern RPi5 *.dtb files include the RPi* folks RP1 description.
>>>>> (I have converted the live representation of the time to text in the
>>>>> past, not that I remember the details.)
>>>>>
>>>>> I've no clue what the consequences of mixing such might be or if use of
>>>>> a device tree overlay might help avoid such questions.
>>>>>
>>>>> I'll also note that the RPi* firmware makes some live adjustments to
>>>>> what is handed to EDK2 and EDK2 may well make more for what is handed to
>>>>> the FreeBSD EFI loader. Some of that is not from overlays.
>>>>>
>>>>> Anyway, I was surprised at the reference to the copy of the linux
>>>>> upstream *.dts .
>>>>>
>>>>
>>>> I do still have the files from 2025-Nov-04. Looking . . .
>>>>
>>>> /  {
>>>> . . .
>>>>         __symbols__ {
>>>> . . .
>>>>                 pwm = "/axi/pcie@1000120000/rp1/pwm@98000";
>>>>                 pwm0 = "/axi/pcie@1000120000/rp1/pwm@98000";
>>>>                 pwm1 = "/axi/pcie@1000120000/rp1/pwm@9c000";
>>>> . . .
>>>>                 rp1_pwm0 = "/axi/pcie@1000120000/rp1/pwm@98000";
>>>>                 rp1_pwm1 = "/axi/pcie@1000120000/rp1/pwm@9c000";
>>>> . . .
>>>>         axi {
>>>> . . .
>>>>                 pcie@1000120000 {
>>>>                         rp1 {
>>>> . . .
>>>>                                 pwm@98000 {
>>>>
>>>>                                         #pwm-cells = <0x3>;
>>>>                                         assigned-clock-rates = <0x2faf080>;
>>>>                                         assigned-clocks = <0x2 0x11>;
>>>>                                         clocks = <0x2 0x11>;
>>>>                                         compatible = "raspberrypi,rp1-pwm";
>>>>                                         phandle = <0xb9>;
>>>>                                         reg = <0xc0 0x40098000 0x0 0x100>;
>>>>                                         status = "disabled";
>>>>                                 };
>>>>                                 pwm@9c000 {
>>>>
>>>>                                         #pwm-cells = <0x3>;
>>>>                                         assigned-clock-rates = <0x2faf080>;
>>>>                                         assigned-clocks = <0x2 0x12>;
>>>>                                         clocks = <0x2 0x12>;
>>>>                                         compatible = "raspberrypi,rp1-pwm";
>>>>                                         phandle = <0x61>;
>>>>                                         pinctrl-0 = <0x39>;
>>>>                                         pinctrl-names = "default";
>>>>                                         reg = <0xc0 0x4009c000 0x0 0x100>;
>>>>                                         status = "okay";
>>>>                                 };
>>>> . . .
>>>>         cooling_fan {
>>>>                 compatible = "pwm-fan";
>>>>                 pwms = <0x61 0x3 0xa25e 0x1>;
>>>>         };
>>>
>>> cooling_fan was from a grep output. More complete:
>>>
>>>         cooling_fan {
>>>
>>>                 #cooling-cells = <0x2>;
>>>                 compatible = "pwm-fan";
>>>                 cooling-levels = <0x0 0x4b 0x7d 0xaf 0xfa>;
>>>                 cooling-max-state = <0x3>;
>>>                 cooling-min-state = <0x0>;
>>>                 phandle = <0x54>;
>>>                 pwms = <0x61 0x3 0xa25e 0x1>;
>>>                 rpm-offset = <0x3c>;
>>>                 rpm-regmap = <0x61>;
>>>                 status = "okay";
>>>         };
>>>
>>>> . . .
>>>>
>>>> Now I just have to remember how I generated that file from hw.fdt so I
>>>> can see what modern looks like.
>>>>
>>>
>>> And the only differences were (summarized as what had a different value,
>>> not what the value was, using indentation for nesting):
>>>
>>> memreserve
>>> choosen
>>>   bootargs, kaslr-seed, log, rng-seed
>>>   NEW: rpi-machine-id, rpi-min-boot-ver, rpi-sdram-size-gbit
>>>   bootloader
>>>     build-timestamp, count,  update-timestamp, version
>>>   power
>>>     NEW: sd_overcurrent
>>> reserved-memory
>>>   nvram@0
>>>     reg
>>>
>>> Nothing else was different.
>>>
>>>
>>> The magic command was (given that EDK2 was exporting a DeviceTree as well):
>>>
>>> # sysctl -b hw.fdt.dtb | dtc -I dtb -s > ~/RPi5B-D0-live-newer.dts
> 
> I switched to the *.dtb's ( and the *.dtbo ) from the RaspiOS64 (my
> abbr.) I used to upgrade the EEPROM contents. It shows a lot more
> differences to prior ones that I'd looked at.
> 
> I'll note some. The '-' lines are ~/RPi5B-D0-live-newer.dts and the '+'
> lines are ~/RPi5B-D0-live-newer2.dts (the most recent). But first, I used:
> 
> # diff -u ~/RPi5B-D0-live-newer*.dts \
> | grep '^[-+]' \
> | grep -v 'phandle = '
> 
> which removed the lots of changed phandle value lines.
> 
> I did add some blank lines to separate somethings for clarity. I also
> added comments of my own, somethings just naming something not detailed.
> 
> The first difference is the overall:
> 
> -       #size-cells = <0x1>;
> +       #size-cells = <0x2>;
> 
> There are now eee, eth_max_speed, and watchdog in: __overrides__
> 
> There is now a watchdog in: __symbols__
> 
> -               bsc_irq = "/soc@107c000000/intc@7d508380";
> +               bsc_irq = "/soc@107c000000/interrupt-controller@7d508380";
> 
> (So changes in that naming convention.)
> 
> -               hdmi0 = "/soc@107c000000/hdmi@7ef00700";
> -               hdmi1 = "/soc@107c000000/hdmi@7ef05700";
> +               hdmi0 = "/soc@107c000000/hdmi@7c701400";
> +               hdmi1 = "/soc@107c000000/hdmi@7c706400";
> 
> -               l2_cache_l0 = "/cpus/cpu@0/l2-cache-l0";
> -               l2_cache_l1 = "/cpus/cpu@1/l2-cache-l1";
> -               l2_cache_l2 = "/cpus/cpu@2/l2-cache-l2";
> -               l2_cache_l3 = "/cpus/cpu@3/l2-cache-l3";
> +               l2_cache_l0 = "/cpus/cpu@0/l2-cache";
> +               l2_cache_l1 = "/cpus/cpu@1/l2-cache";
> +               l2_cache_l2 = "/cpus/cpu@2/l2-cache";
> +               l2_cache_l3 = "/cpus/cpu@3/l2-cache";
> 
> (So: another naming change.)
> 
> -               local_intc =
> "/soc@107c000000/interrupt-controller@7cd00000";
> 
> (So something deleted.)
> 
> -               main_irq = "/soc@107c000000/intc@7d508400";
> +               main_irq = "/soc@107c000000/interrupt-controller@7d508400";
> 
> +               watchdog = "/soc@107c000000/watchdog@7d200000";
> +               watchdog = "/soc@107c000000/watchdog@7d200000";
> 
> The 1st is in: __symbols__
> The 2nd is in: aliases
> 
> +                       aperture-size = <0x1 0x0>;
> 
> That new thing is in: iommu@5100
> 
> -                                       snps,axi-max-burst-len = <0x4>;
> +                                       snps,axi-max-burst-len = <0x8
> 0x8 0x4 0x4 0x4 0x4 0x4 0x4>;
> 
> +                                       snps,chan-flags = <0x100 0x100
> 0x0 0x0 0x0 0x0 0x0 0x0>;
> 
> -                                       dmas = <0x2b 0x38 0x2b 0x39 0x2b
> 0x3a 0x2b 0x3b 0x2b 0x3c 0x2b 0x3d 0x2b 0x3e 0x2b 0x3f>;
> +                                       dmas = <0x2b 0x138 0x2b 0x139
> 0x2b 0x13a 0x2b 0x13b 0x2b 0x13c 0x2b 0x13d 0x2b 0x13e 0x2b 0x13f>;
> 
> bootargs has (old then new):
> nvme.max_host_mem_size_mb=0 vs. nvme.max_host_mem_size_mb=32
> 
> -                       l2-cache-l0 {
> +                       l2-cache {
> -                       l2-cache-l1 {
> +                       l2-cache {
> -                       l2-cache-l2 {
> +                       l2-cache {
> -                       l2-cache-l3 {
> +                       l2-cache {
> -               reg = <0x10 0x7c580000 0x1a000>;
> +               reg = <0x10 0x7c580000 0x0 0x1a000>;
> -               #size-cells = <0x1>;
> +               #size-cells = <0x2>;
> -                       reg = <0x0 0x0 0x80000>;
> +                       reg = <0x0 0x0 0x0 0x80000>;
> -                       alloc-ranges = <0x0 0x0 0x40000000>;
> +                       alloc-ranges = <0x0 0x0 0x0 0x40000000>;
> -                       size = <0x4000000>;
> +                       size = <0x0 0x4000000>;
> -                       reg = <0x0 0x3fd233a0 0x38>;
> +                       reg = <0x0 0x3fd233a0 0x0 0x38>;
> -                       reg = <0x0 0x0 0x0>;
> +                       reg = <0x0 0x0 0x0 0x0>;
> -               hdmi@7ef00700 {
> +               hdmi@7c701400 {
> -               hdmi@7ef05700 {
> +               hdmi@7c706400 {
> 
> -               intc@7d508380 {
> -
> -                       #interrupt-cells = <0x1>;
> -                       compatible = "brcm,bcm7271-l2-intc";
> -                       interrupt-controller;
> -                       interrupts = <0x0 0xf2 0x4>;
> -                       reg = <0x7d508380 0x10>;
> -               };
> 
> -               intc@7d508400 {
> -
> -                       #interrupt-cells = <0x1>;
> -                       compatible = "brcm,bcm7271-l2-intc";
> -                       interrupt-controller;
> -                       interrupts = <0x0 0xf4 0x4>;
> -                       reg = <0x7d508400 0x10>;
> -               };
> 
> -               interrupt-controller@7cd00000 {
> +               interrupt-controller@7d508380 {
> -                       compatible = "brcm,bcm2836-l1-intc";
> -                       reg = <0x7cd00000 0x100>;
> +                       #interrupt-cells = <0x1>;
> 
> The below starts inside : interrupt-controller@7d508380
> 
> +                       compatible = "brcm,bcm7271-l2-intc";
> +                       interrupt-controller;
> +                       interrupts = <0x0 0xf2 0x4>;
> +                       reg = <0x7d508380 0x10>;
> 
> +               interrupt-controller@7d508400 {
> +
> +                       #interrupt-cells = <0x1>;
> +                       compatible = "brcm,bcm7271-l2-intc";
> +                       interrupt-controller;
> +                       interrupts = <0x0 0xf4 0x4>;
> +                       reg = <0x7d508400 0x10>;
> +               };
> 
> +                       #address-cells = <0x0>;
> 
> The above line was inside: interrupt-controller@7fff9000
> 
> The below was inside: serial@7d001000
> 
> -                       compatible = "arm,pl011", "arm,primecell";
> +                       compatible = "arm,pl011-axi", "arm,pl011",
> "arm,primecell";

Below I contrast the bcm2712-rpi-5-b.dtb file source generated to the
live fdt's FreeBSD OS reported source, with the bcm2712-rpi-5-b.dtb
source obtained via:

# cat /mnt/bcm2712-rpi-5-b.dtb | dtc -I dtb -s > ~/RPi5B-D0-dtb-newer2.dts

bcm2712-rpi-5-b.dtb material is "-" and live is "+" below.

Note: The memreserve range reference to 0x3fc00000 below later shows up
under vc_mem as well.

. . .
-       model = "Raspberry Pi 5";
. . .
+       memreserve = <0x3fc00000 0x400000>;
+       model = "Raspberry Pi 5 Model B Rev 1.1";
+       serial-number = REDACTED;
. . .
                dma@10600 {

                        #dma-cells = <0x1>;
-                       brcm,dma-channel-mask = <0x7c0>;
+                       brcm,dma-channel-mask = <0xf80>;
                        compatible = "brcm,bcm2712-dma";
+                       dma-channel-mask = <0xf80>;
                        interrupt-names = "dma6", "dma7", "dma8",
"dma9", "dma10", "dma11";
                        interrupts = <0x0 0x56 0x4 0x0 0x57 0x4 0x0 0x58
0x4 0x0 0x59 0x4 0x0 0x5a 0x4 0x0 0x5b 0x4>;
                        phandle = <0x16>;
                        reg = <0x10 0x10600 0x0 0x600>;
                };
. . .

There are things like local-mac-address that I'll not give details for.
Also, later, local-bd-address for bluetooth.

. . .
                pcie@1000110000 {

                        #address-cells = <0x3>;
                        #interrupt-cells = <0x1>;
                        #size-cells = <0x2>;
                        brcm,clkreq-mode = "safe";
                        brcm,fifo-qos-map = <0x3030303>;
                        compatible = "brcm,bcm2712-pcie";
                        device_type = "pci";
                        dma-ranges = <0x3000000 0x10 0x0 0x0 0x0 0x10
0x0 0x3000000 0xff 0xfffff000 0x10 0x131000 0x0 0x1000>;
                        interrupt-map = <0x0 0x0 0x0 0x1 0x1 0x0 0xdb
0x4 0x0 0x0 0x0 0x2 0x1 0x0 0xdc 0x4 0x0 0x0 0x0 0x3 0x1 0x0 0xdd 0x4
0x0 0x0 0x0 0x4 0x1 0x0 0xde 0x4>;
                        interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-names = "pcie", "msi";
                        interrupt-parent = <0x1>;
                        interrupts = <0x0 0xdf 0x4 0x0 0xe0 0x4>;
                        linux,pci-domain = <0x1>;
                        max-link-speed = <0x2>;
                        msi-controller;
                        msi-parent = <0x26>;
                        num-lanes = <0x1>;
                        phandle = <0x67>;
                        ranges = <0x2000000 0x0 0x80000000 0x1b
0x80000000 0x0 0x80000000 0x43000000 0x4 0x0 0x18 0x0 0x3 0x80000000>;
                        reg = <0x10 0x110000 0x0 0x9310>;
                        reset-names = "rescal", "bridge";
                        resets = <0x23 0x24 0x2b>;
-                       status = "disabled";
+                       status = "okay";
                };

. . .
                                pwm@9c000 {

                                        #pwm-cells = <0x3>;
                                        assigned-clock-rates = <0x2faf080>;
                                        assigned-clocks = <0x2 0x12>;
                                        clocks = <0x2 0x12>;
                                        compatible = "raspberrypi,rp1-pwm";
                                        phandle = <0x61>;
                                        pinctrl-0 = <0x39>;
                                        pinctrl-names = "default";
                                        reg = <0xc0 0x4009c000 0x0 0x100>;
-                                       status = "disabled";
+                                       status = "okay";
                                };
. . .
+               vc_mem {
+
+                       reg = <0x3fc00000 0x40000000 0xc0000000>;
+               };
. . .

bootargs is different

NEW: fixup_applied, kasle-seed, log, os_prefix, overlay_prefix, and a
bunch more, including bootloader and power.

. . .
                clk-uart {

                        #clock-cells = <0x0>;
-                       clock-frequency = <0x8ca000>;
+                       clock-frequency = <0x2a30000>;
                        clock-output-names = "uart-clock";
                        compatible = "fixed-clock";
                        phandle = <0xe>;
                };
. . .
        cooling_fan {

                #cooling-cells = <0x2>;
                compatible = "pwm-fan";
                cooling-levels = <0x0 0x4b 0x7d 0xaf 0xfa>;
                cooling-max-state = <0x3>;
                cooling-min-state = <0x0>;
                phandle = <0x54>;
                pwms = <0x61 0x3 0xa25e 0x1>;
                rpm-offset = <0x3c>;
                rpm-regmap = <0x61>;
-               status = "disabled";
+               status = "okay";
        };
. . .
-       memory@0 {
-
-               device_type = "memory";
-               reg = <0x0 0x0 0x0 0x28000000>;
-       };
. . .

nvram@0 reg and status are different.

. . .
                gpio@7d517c00 {

                        #gpio-cells = <0x2>;
-                       brcm,gpio-bank-widths = <0x11 0x6>;
+                       brcm,gpio-bank-widths = <0xf 0x6>;
. . .
                hdmi@7c701400 {

                        clock-names = "hdmi", "bvb", "audio", "cec";
                        clocks = <0x17 0xd 0x17 0xe 0x13 0x0 0x18>;
                        compatible = "brcm,bcm2712-hdmi0";
                        ddc = <0x15>;
                        dma-names = "audio-rx";
-                       dmas = <0x16 0x41fa000a>;
+                       dmas = <0x16 0x41fa000c>;
. . .
                hdmi@7c706400 {

                        clock-names = "hdmi", "bvb", "audio", "cec";
                        clocks = <0x17 0xd 0x17 0xe 0x13 0x1 0x18>;
                        compatible = "brcm,bcm2712-hdmi1";
                        ddc = <0x19>;
                        dma-names = "audio-rx";
-                       dmas = <0x16 0x41fa0011>;
+                       dmas = <0x16 0x41fa000d>;
. . .
                pinctrl@7d504100 {

-                       compatible = "brcm,bcm2712c0-pinctrl";
+                       compatible = "brcm,bcm2712d0-pinctrl";
                        phandle = <0x8f>;
-                       reg = <0x7d504100 0x30>;
+                       reg = <0x7d504100 0x20>;
. . .
                pinctrl@7d510700 {

-                       compatible = "brcm,bcm2712c0-aon-pinctrl";
+                       compatible = "brcm,bcm2712d0-aon-pinctrl";
                        phandle = <0x91>;
-                       reg = <0x7d510700 0x20>;
+                       reg = <0x7d510700 0x1c>;
. . .
                serial@7d001000 {

                        arm,primecell-periphid = <0x341011>;
                        clock-names = "uartclk", "apb_pclk";
                        clocks = <0xe 0xf>;
                        compatible = "arm,pl011-axi", "arm,pl011",
"arm,primecell";
-                       interrupts = <0x0 0x79 0x4>;
+                       interrupts = <0x0 0x78 0x4>;
                        phandle = <0x85>;
                        reg = <0x7d001000 0x200>;
                        status = "okay";
                };
. . .
                spi@7d004000 {

                        #address-cells = <0x1>;
                        #size-cells = <0x0>;
                        clocks = <0xf>;
                        compatible = "brcm,bcm2835-spi";
                        cs-gpios = <0x1b 0x1 0x1>;
                        dma-names = "tx", "rx";
-                       dmas = <0x16 0x6 0x16 0x7>;
+                       dmas = <0x16 0x3 0x16 0x4>;
. . .
+       system {
+
+               linux,revision = <0xe04171>;
+               linux,serial = REDACTED;
+       };
. . .

That was all.

The overlay's .dtbo file source generated is probably just easier to
list to indicate what is changed by it for C0 stepping to the D0 stepping:

# less ~/RPi5B-D0-dtbo-newer2.dts
/dts-v1/;

/  {

        compatible = "brcm,bcm2712";
        __fixups__ {

                dma40 = "/fragment@5/__overlay__:dmas:0",
"/fragment@5/__overlay__:dmas:8", "/fragment@6/__overlay__:dmas:0",
"/fragment@7/__overlay__:dmas:0";
                gio = "/fragment@0:target:0";
                gio_aon = "/fragment@1:target:0";
                hdmi0 = "/fragment@6:target:0";
                hdmi1 = "/fragment@7:target:0";
                pinctrl = "/fragment@2:target:0";
                pinctrl_aon = "/fragment@3:target:0";
                spi10 = "/fragment@5:target:0";
                uart10 = "/fragment@4:target:0";
        };
        fragment@0 {

                target = <0xffffffff>;
                __overlay__ {

                        brcm,gpio-bank-widths = <0x20 0x4>;
                };
        };
        fragment@1 {

                target = <0xffffffff>;
                __overlay__ {

                        brcm,gpio-bank-widths = <0xf 0x6>;
                };
        };
        fragment@2 {

                target = <0xffffffff>;
                __overlay__ {

                        compatible = "brcm,bcm2712d0-pinctrl";
                        reg = <0x7d504100 0x20>;
                };
        };
        fragment@3 {

                target = <0xffffffff>;
                __overlay__ {

                        compatible = "brcm,bcm2712d0-aon-pinctrl";
                        reg = <0x7d510700 0x1c>;
                };
        };
        fragment@4 {

                target = <0xffffffff>;
                __overlay__ {

                        interrupts = <0x0 0x78 0x4>;
                };
        };
        fragment@5 {

                target = <0xffffffff>;
                __overlay__ {

                        dmas = <0xffffffff 0x3 0xffffffff 0x4>;
                };
        };
        fragment@6 {

                target = <0xffffffff>;
                __overlay__ {

                        dmas = <0xffffffff 0x41fa000c>;
                };
        };
        fragment@7 {

                target = <0xffffffff>;
                __overlay__ {

                        dmas = <0xffffffff 0x41fa000d>;
                };
        };
};

> 
> 
>>>
>>>
>>
>> I found (from 2026-Mar-20):
>>
>> <https://github.com/raspberrypi/firmware/issues/2018#issuecomment-4099774849>
>>
>> that is explicit about the RPi* folks bcm2712d0-rpi-5-b.dts file that
>> they provided (and the matching *.dtb that they provide):
>>
>> "The discussion in the PR that added bcm2712d0-rpi-5-b.dts
>> ( https://github.com/raspberrypi/linux/pull/5847 ) shows that it was
>> really only there as an example for the upstream kernel devs. It's not
>> been kept in line with the main Pi 5 dts. The upstream D0 support
>> doesn't have all the tweaks included in the overlay, but it's been
>> enough for them up to now."
>>
>> There is also this earlier in exchange:
>>
>> "The downstream kernel uses a modified bcm2712-rpi-5-b.dts for C0, with
>> the firmware applying the bcm2712d0 overlay as needed. The upstream
>> kernels uses bcm2712-rpi-5-b.dts (unmodified) for C0, and bcm2712-d-
>> rpi-5-b.dts for D0."
>>
>>
> 
> 


-- 
===
Mark Millard
marklmi at yahoo.com