Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 May 2023 10:41:03 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        Doug Rabson <dfr@rabson.org>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: Raspberry Pi POE+ hat overlay
Message-ID:  <432A1A16-9FE5-4339-AB38-8F3E03A5D4EF@yahoo.com>
In-Reply-To: <77CD0716-3BC8-47EB-8743-F2BD9CA43D31@yahoo.com>
References:  <CACA0VUh9-7o55pXcyn=Ep9mPexAkgjKLEKUh6HqMovTxe2_R0Q@mail.gmail.com> <E615D3BE-C12D-4960-BB01-AD2D40CA90A5@yahoo.com> <CACA0VUjCyhPCxBTn6h_HMOGjdFnivi5bnq4jgcg4i0bKY%2BF0PA@mail.gmail.com> <D6869D48-5661-4054-90D8-2B394CA5D25E@yahoo.com> <77CD0716-3BC8-47EB-8743-F2BD9CA43D31@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On May 12, 2023, at 10:19, Mark Millard <marklmi@yahoo.com> wrote:

> On May 12, 2023, at 10:11, Mark Millard <marklmi@yahoo.com> wrote:
>=20
>> On May 12, 2023, at 09:38, Doug Rabson <dfr@rabson.org> wrote:
>>=20
>>> On Fri, 12 May 2023 at 17:27, Mark Millard <marklmi@yahoo.com> =
wrote:
>>> On May 12, 2023, at 08:43, Doug Rabson <dfr@rabson.org> wrote:
>>>=20
>>>> I have a pi4 with the official POE+ hat which I want to run FreeBSD =
on. One thing I noticed is that the fan doesn't run in FreeBSD so I =
decided to try and write a little driver for it. First step seems to be =
to load the corresponding devicetree overlay by adding something like =
this to /boot/msdos/config.txt:
>>>>=20
>>>> dtoverlay=3Drpi-poe-plus
>>>> dtparam=3Dpoe_fan_temp0=3D45000,dtparam=3Dpoe_fan_temp0_hyst=3D3000
>>>> dtparam=3Dpoe_fan_temp1=3D50000,dtparam=3Dpoe_fan_temp1_hyst=3D3000
>>>> dtparam=3Dpoe_fan_temp2=3D62000,dtparam=3Dpoe_fan_temp2_hyst=3D4000
>>>> dtparam=3Dpoe_fan_temp3=3D70000,dtparam=3Dpoe_fan_temp3_hyst=3D5000
>>>>=20
>>>> Unfortunately this is where I'm stuck - the overlay is not present =
in the final DTB given to the kernel so there isn't anything to hook a =
driver to. Are dtoverlays supposed to work on FreeBSD?
>>>=20
>>> The RPi* firwmare version that FreeBSD has in ports and uses
>>> in making snapshots and other images does not have that overlay:
>>>=20
>>> # ls -Tld /usr/local/share/rpi-firmware/overlays/rpi*
>>> -rw-r--r--  1 root  wheel   489 Mar  3 05:29:57 2021 =
/usr/local/share/rpi-firmware/overlays/rpi-backlight.dtbo
>>> -rw-r--r--  1 root  wheel  4081 Mar  3 05:29:57 2021 =
/usr/local/share/rpi-firmware/overlays/rpi-cirrus-wm5102.dtbo
>>> -rw-r--r--  1 root  wheel   643 Mar  3 05:29:57 2021 =
/usr/local/share/rpi-firmware/overlays/rpi-dac.dtbo
>>> -rw-r--r--  1 root  wheel  2574 Mar  3 05:29:57 2021 =
/usr/local/share/rpi-firmware/overlays/rpi-display.dtbo
>>> -rw-r--r--  1 root  wheel   842 Mar  3 05:29:57 2021 =
/usr/local/share/rpi-firmware/overlays/rpi-ft5406.dtbo
>>> -rw-r--r--  1 root  wheel  2937 Mar  3 05:29:57 2021 =
/usr/local/share/rpi-firmware/overlays/rpi-poe.dtbo
>>> -rw-r--r--  1 root  wheel   771 Mar  3 05:29:57 2021 =
/usr/local/share/rpi-firmware/overlays/rpi-proto.dtbo
>>> -rw-r--r--  1 root  wheel   893 Mar  3 05:29:57 2021 =
/usr/local/share/rpi-firmware/overlays/rpi-sense.dtbo
>>> -rw-r--r--  1 root  wheel   567 Mar  3 05:29:57 2021 =
/usr/local/share/rpi-firmware/overlays/rpi-tv.dtbo
>>> -rw-r--r--  1 root  wheel  1226 Mar  3 05:29:57 2021 =
/usr/local/share/rpi-firmware/overlays/rpivid-v4l2.dtbo
>>>=20
>>> You do not mention establishing a copy of overlays/rpi-poe-plus.dtbo =
.
>>>=20
>>> I copied the file from a rasbian install I had for another project. =
Perhaps I should find the corresponding source for it and build it with =
the device tree source from FreeBSD.
>>>=20
>>> You also do not mention what version of FreeBSD you are using
>>> on the RPi4B. The output of the command:
>>>=20
>>> I'm running 13.2-RELEASE-p0
>>=20
>> That limits the range of firmware you can experiment with
>> but the following tagged vintages should be compatible and
>> also have an overlays/rpi-poe-plus.dtbo present:
>>=20
>> 1.20210527/boot/overlays/rpi-poe-plus.dtbo
>> 1.20210727/boot/overlays/rpi-poe-plus.dtbo
>> 1.20210805/boot/overlays/rpi-poe-plus.dtbo
>>=20
>> So extracting a consistent/full set of firmware and trying
>> it is a possibility.
>>=20
>> The first 3 tags links on:
>>=20
>> https://github.com/raspberrypi/linux/tags?after=3D1.20210831

That was likely a wasteful reference for me to supply. Trying
again:

https://github.com/raspberrypi/firmware/tags?after=3D1.20210831

likely avoids ending up with a full set of linux materials
to go along with the firmware (smaller download with a smaller
expansion).

>> are for the above 3 firmware versions.
>>=20
>> Anything newer will lead to a FreeBSD kernel crash for
>> 13.2-RELEASE-p0 due to mishandling the .dtb file that
>> would be used.
>>=20
>> As an example of what is in . . ./boot/ from one of those 3:
>>=20
>> # ls -Tld firmware-1.20210805/boot/*
>> -rw-rw-r--  1 root  wheel    18693 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/COPYING.linux
>> -rw-rw-r--  1 root  wheel     1594 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/LICENCE.broadcom
>> -rw-rw-r--  1 root  wheel    26401 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2708-rpi-b-plus.dtb
>> -rw-rw-r--  1 root  wheel    25749 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2708-rpi-b-rev1.dtb
>> -rw-rw-r--  1 root  wheel    26138 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2708-rpi-b.dtb
>> -rw-rw-r--  1 root  wheel    26060 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2708-rpi-cm.dtb
>> -rw-rw-r--  1 root  wheel    27076 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2708-rpi-zero-w.dtb
>> -rw-rw-r--  1 root  wheel    25883 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2708-rpi-zero.dtb
>> -rw-rw-r--  1 root  wheel    27276 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2709-rpi-2-b.dtb
>> -rw-rw-r--  1 root  wheel    27425 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2710-rpi-2-b.dtb
>> -rw-rw-r--  1 root  wheel    29542 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2710-rpi-3-b-plus.dtb
>> -rw-rw-r--  1 root  wheel    28923 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2710-rpi-3-b.dtb
>> -rw-rw-r--  1 root  wheel    27421 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2710-rpi-cm3.dtb
>> -rw-rw-r--  1 root  wheel    49825 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2711-rpi-4-b.dtb
>> -rw-rw-r--  1 root  wheel    49821 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2711-rpi-400.dtb
>> -rw-rw-r--  1 root  wheel    50499 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bcm2711-rpi-cm4.dtb
>> -rw-rw-r--  1 root  wheel    52456 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/bootcode.bin
>> -rw-rw-r--  1 root  wheel     7278 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/fixup.dat
>> -rw-rw-r--  1 root  wheel     5407 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/fixup4.dat
>> -rw-rw-r--  1 root  wheel     3211 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/fixup4cd.dat
>> -rw-rw-r--  1 root  wheel     8416 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/fixup4db.dat
>> -rw-rw-r--  1 root  wheel     8418 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/fixup4x.dat
>> -rw-rw-r--  1 root  wheel     3211 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/fixup_cd.dat
>> -rw-rw-r--  1 root  wheel    10262 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/fixup_db.dat
>> -rw-rw-r--  1 root  wheel    10262 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/fixup_x.dat
>> drwxrwxr-x  2 root  wheel      236 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/overlays
>> -rw-rw-r--  1 root  wheel  2959904 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/start.elf
>> -rw-rw-r--  1 root  wheel  2235712 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/start4.elf
>> -rw-rw-r--  1 root  wheel   799964 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/start4cd.elf
>> -rw-rw-r--  1 root  wheel  3731528 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/start4db.elf
>> -rw-rw-r--  1 root  wheel  2987720 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/start4x.elf
>> -rw-rw-r--  1 root  wheel   799964 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/start_cd.elf
>> -rw-rw-r--  1 root  wheel  4803496 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/start_db.elf
>> -rw-rw-r--  1 root  wheel  3711432 Aug  5 04:11:18 2021 =
firmware-1.20210805/boot/start_x.elf
>=20
> Note the lack of config.txt , armstub8-gic.bin , and
> armstub8.bin .
>=20
>> (I'll not list the overlays/* .)
>>=20
>> I've no clue to the consequences of mixing and matching
>> materials from different vintages of the firmware. It
>> does appear that:
>>=20
>> 1.20210727/boot/overlays/rpi-poe-plus.dtbo
>> 1.20210805/boot/overlays/rpi-poe-plus.dtbo
>>=20
>> (the newer 2 of th3 3) are the same by content but that:
>>=20
>> 1.20210527/boot/overlays/rpi-poe-plus.dtbo
>>=20
>> is distinct in its older content.
>=20
> Be warned that the sys-utils/rpi-firmware port installs a
> couple of files that are not based on
> https://github.com/raspberrypi/ materials:
>=20
> # ls -Tld /boot/efi/armstub8*
> -rwxr-xr-x  1 root  wheel  5888 Apr 20 19:25:22 2022 =
/boot/efi/armstub8-gic.bin
> -rwxr-xr-x  1 root  wheel  5888 Apr 20 19:25:22 2022 =
/boot/efi/armstub8.bin
>=20
> Be sure to keep those 2 files in place (for at least
> armstub8-gic.bin ). A similar point goes for your
> config.txt .


=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?432A1A16-9FE5-4339-AB38-8F3E03A5D4EF>