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

Mark Millard <[email protected]> Fri, 5 Jun 2026 12:46:48 -0700
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
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 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