Implement powerdown. This involves writing a magic bit somewhere in the
authorkettenis <kettenis@openbsd.org>
Thu, 13 Jan 2022 08:59:10 +0000 (08:59 +0000)
committerkettenis <kettenis@openbsd.org>
Thu, 13 Jan 2022 08:59:10 +0000 (08:59 +0000)
commita5505455aa34289baf431f3db58b1893b79fc8b6
tree487ccaabd4fa9f9a7c0ad03f8079a12c8068c403
parentfaa1737afaeebb88761db57b0a21f0273339ac8a
Implement powerdown.  This involves writing a magic bit somewhere in the
address space of the SPMI PMU to prevent the machine from immediately
starting up again.

The implementaton makes aplpmu(4) provide powerdownfn(), which sets the
magic bit and then chains into cpuresetfn().  It also makes aplsmc(4)
provide cpuresetfn() to reset the machine via the SMC.  Resetting via
the watchdog works as well (and will powerdown the machine if the magic
bit is set) but letting the SMC handle things might do some other
required steps.

ok patrick@
sys/arch/arm64/dev/apldog.c
sys/arch/arm64/dev/aplpmu.c
sys/arch/arm64/dev/aplsmc.c