Created attachment 191641 [details] 'shar' archive for port New port 'misc/raspberrypi-gpioshutdown' provides a kernel module 'gpioshutdown' that effectively 'shuts down' I/O pins at the point where the operating system is halted, by re-configuring them as input pins with no pullup/pulldown. This is similar to the "powerup" state, and somewhat duplicates what Linux does already. Additionally, it provides 2 'sysctl' variables "kern.gpioshutdown.led_gpio" and "kern.gpioshutdown.led_gpio_set" by which you can optionally define the GPIO pin of an LED that you want kept as an output (instead of changing it to an input), and its 'on' polarity (0 or 1), which will be set to an 'on' state before sync'ing the disks, and then to an 'off' when it's safe to power off. (This is a workaround due to some odd behavior from the led driver, that seems to be easier to implement than any other idea I had) It also includes an rc.d script "gpioshutdown" to generically configure a Raspberry Pi to use the power LED [or in the case of Model 1, the "ok" LED] as a shutdown indicator. By loading this kernel module, all output GPIO pins (other than the one identified by the sysctl variable) are effectively placed into a high impedance state once it is safe to turn off the device. An external hardware 'power control' device (or an indicator LED) could then be used to determine that it is safe to power off after shutdown, specifically for a headless system. Many such external devices (such as the ATXRaspi) exist already. This kernel driver, or one like it, would be necessary for these external power control boards to be compatible with FreeBSD. Additionally this port attempts to correct the issues brought up in problem report 211979. Additionally, it is marked for armv6 architecture only, and is specifically targeted for the Raspberry Pi (and named a such).
IMHO this should be ONLY_FOR_ARCHS= armv6 armv7
thanks, but I don't have an armv7 device to test it with. I understand that you can build for armv7 in '-CURRENT' but it's not released yet. However, by the time 12 has an RC I'll probably be testing this port with an appropriate device. again, thanks for that info.
Created attachment 193576 [details] updated shar archive for port updated shar for port, now includes armv7 [tested with -CURRENT] and has minor changes in the service script to accomodate specific differences between 11 and -CURRENT
(In reply to Mark Linimon from comment #1) made the recommended change (see new patch)
A commit references this bug: Author: swills Date: Wed Aug 29 17:30:05 UTC 2018 New revision: 478362 URL: https://svnweb.freebsd.org/changeset/ports/478362 Log: misc/raspberrypi-gpioshutdown: create port GPIO 'shutdown' Kernel module for the Raspberry Pi Model 1B and Model 2 The purpose of this module is to shut down all GPIOs prior to powering off or rebooting a Raspberry Pi. PR: 226787 Submitted by: Bob Frazier <bobf@mrp3.com> Changes: head/misc/Makefile head/misc/raspberrypi-gpioshutdown/ head/misc/raspberrypi-gpioshutdown/Makefile head/misc/raspberrypi-gpioshutdown/distinfo head/misc/raspberrypi-gpioshutdown/files/ head/misc/raspberrypi-gpioshutdown/files/gpioshutdown.in head/misc/raspberrypi-gpioshutdown/pkg-descr head/misc/raspberrypi-gpioshutdown/pkg-message head/misc/raspberrypi-gpioshutdown/pkg-plist
Committed, thanks!