Re: Raspberry Pi POE+ hat overlay

Doug Rabson <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <CACA0VUhDwx+RmHU_OSFfGhjfbbbiy6HpurGL7WjM_i+0U7UpBQ@mail.gmail.com>
I was able to build an updated rpi-firmware port based on 1.20210805 and
this boots successfully on pi400 as well as rpi4. With this, I can load the
rpi-poe-plus overlay and I just need to try and reverse engineer the
undocumented mailbox API by reading the Linux code.

diff --git a/sysutils/rpi-firmware/Makefile b/sysutils/rpi-firmware/Makefile
index e82ab20ebc74..4fbb5df6d743 100644
--- a/sysutils/rpi-firmware/Makefile
+++ b/sysutils/rpi-firmware/Makefile
@@ -1,5 +1,5 @@
 PORTNAME= rpi-firmware
-PORTVERSION= 1.20210303.g20210303
+PORTVERSION= 1.20210805.g20210805
 CATEGORIES= sysutils

 MAINTAINER= [email protected]
@@ -17,7 +17,7 @@ USE_GITHUB= yes

 GH_ACCOUNT= raspberrypi gonzoua:pscimon
 GH_PROJECT= firmware rpi3-psci-monitor:pscimon
-FW_TAG= fcf8d2f
+FW_TAG= 8939bde
 PSCI_TAG= 558620c
 GH_TAGNAME= ${FW_TAG} ${PSCI_TAG}:pscimon

diff --git a/sysutils/rpi-firmware/distinfo b/sysutils/rpi-firmware/distinfo
index 2e1e0c92066a..27a0eb8c9fa3 100644
--- a/sysutils/rpi-firmware/distinfo
+++ b/sysutils/rpi-firmware/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1614939753
-SHA256 (raspberrypi-firmware-1.20210303.g20210303-fcf8d2f_GH0.tar.gz) =
5a0d7247490e0207f0fc32baabcec25a0e97ebdab9cbee216bf9537a1de22e69
-SIZE (raspberrypi-firmware-1.20210303.g20210303-fcf8d2f_GH0.tar.gz) =
192233875
+TIMESTAMP = 1683975782
+SHA256 (raspberrypi-firmware-1.20210805.g20210805-8939bde_GH0.tar.gz) =
2069df5b1dff340c78e393e4cc10feba395524d26cf5db475876d62b7a0507b2
+SIZE (raspberrypi-firmware-1.20210805.g20210805-8939bde_GH0.tar.gz) =
193244754
 SHA256 (gonzoua-rpi3-psci-monitor-558620c_GH0.tar.gz) =
7621db7933eedaa17a03c282ef8a50be597bd14366149dfa93172d1b3985dbb7
 SIZE (gonzoua-rpi3-psci-monitor-558620c_GH0.tar.gz) = 5614
diff --git a/sysutils/rpi-firmware/pkg-plist
b/sysutils/rpi-firmware/pkg-plist
index 7661a0a13cb2..02a41640a0be 100644
--- a/sysutils/rpi-firmware/pkg-plist
+++ b/sysutils/rpi-firmware/pkg-plist
@@ -183,6 +183,7 @@
 %%DATADIR%%/overlays/rpi-display.dtbo
 %%DATADIR%%/overlays/rpi-ft5406.dtbo
 %%DATADIR%%/overlays/rpi-poe.dtbo
+%%DATADIR%%/overlays/rpi-poe-plus.dtbo
 %%DATADIR%%/overlays/rpi-proto.dtbo
 %%DATADIR%%/overlays/rpi-sense.dtbo
 %%DATADIR%%/overlays/rpi-tv.dtbo

On Fri, 12 May 2023 at 18:41, Mark Millard <[email protected]> wrote:

> On May 12, 2023, at 10:19, Mark Millard <[email protected]> wrote:
>
> > On May 12, 2023, at 10:11, Mark Millard <[email protected]> wrote:
> >
> >> On May 12, 2023, at 09:38, Doug Rabson <[email protected]> wrote:
> >>
> >>> On Fri, 12 May 2023 at 17:27, Mark Millard <[email protected]> wrote:
> >>> On May 12, 2023, at 08:43, Doug Rabson <[email protected]> wrote:
> >>>
> >>>> 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:
> >>>>
> >>>> dtoverlay=rpi-poe-plus
> >>>> dtparam=poe_fan_temp0=45000,dtparam=poe_fan_temp0_hyst=3000
> >>>> dtparam=poe_fan_temp1=50000,dtparam=poe_fan_temp1_hyst=3000
> >>>> dtparam=poe_fan_temp2=62000,dtparam=poe_fan_temp2_hyst=4000
> >>>> dtparam=poe_fan_temp3=70000,dtparam=poe_fan_temp3_hyst=5000
> >>>>
> >>>> 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?
> >>>
> >>> The RPi* firwmare version that FreeBSD has in ports and uses
> >>> in making snapshots and other images does not have that overlay:
> >>>
> >>> # 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
> >>>
> >>> You do not mention establishing a copy of overlays/rpi-poe-plus.dtbo .
> >>>
> >>> 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.
> >>>
> >>> You also do not mention what version of FreeBSD you are using
> >>> on the RPi4B. The output of the command:
> >>>
> >>> I'm running 13.2-RELEASE-p0
> >>
> >> 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:
> >>
> >> 1.20210527/boot/overlays/rpi-poe-plus.dtbo
> >> 1.20210727/boot/overlays/rpi-poe-plus.dtbo
> >> 1.20210805/boot/overlays/rpi-poe-plus.dtbo
> >>
> >> So extracting a consistent/full set of firmware and trying
> >> it is a possibility.
> >>
> >> The first 3 tags links on:
> >>
> >> https://github.com/raspberrypi/linux/tags?after=1.20210831
>
> That was likely a wasteful reference for me to supply. Trying
> again:
>
> https://github.com/raspberrypi/firmware/tags?after=1.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.
> >>
> >> Anything newer will lead to a FreeBSD kernel crash for
> >> 13.2-RELEASE-p0 due to mishandling the .dtb file that
> >> would be used.
> >>
> >> As an example of what is in . . ./boot/ from one of those 3:
> >>
> >> # 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
> >
> > Note the lack of config.txt , armstub8-gic.bin , and
> > armstub8.bin .
> >
> >> (I'll not list the overlays/* .)
> >>
> >> I've no clue to the consequences of mixing and matching
> >> materials from different vintages of the firmware. It
> >> does appear that:
> >>
> >> 1.20210727/boot/overlays/rpi-poe-plus.dtbo
> >> 1.20210805/boot/overlays/rpi-poe-plus.dtbo
> >>
> >> (the newer 2 of th3 3) are the same by content but that:
> >>
> >> 1.20210527/boot/overlays/rpi-poe-plus.dtbo
> >>
> >> is distinct in its older content.
> >
> > Be warned that the sys-utils/rpi-firmware port installs a
> > couple of files that are not based on
> > https://github.com/raspberrypi/ materials:
> >
> > # 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
> >
> > Be sure to keep those 2 files in place (for at least
> > armstub8-gic.bin ). A similar point goes for your
> > config.txt .
>
>
> ===
> 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.