Helios64: Added Auto Power On page

This commit is contained in:
Aditya Prayoga 2020-10-27 18:08:09 +07:00
parent 1f5b1539e4
commit ceb3ed0ccc
4 changed files with 80 additions and 0 deletions

View file

@ -0,0 +1,79 @@
Helios64 automatic power on circuitry when main power applied to the system so user does not need to press power button.
This is useful in case of loss of main power longer than UPS back up time. The system will automatically power on when main power return.
![!Auto power on State](/helios64/img/auto-poweron/flowchart.png)
U-Boot will enable Auto Power On and a [systemd-shutdown](https://www.freedesktop.org/software/systemd/man/systemd-shutdown.html) hook script to disable the Auto Power On during graceful shutdown.
By default the system need the user to press power button to power up. This behaviour can be changed by manipulating a set of GPIOs.
The circuitry uses [D Flip Flop](https://en.wikipedia.org/wiki/Flip-flop_(electronics)#D_flip-flop) and rely on RTC battery or UPS battery to keep the state.
![!Auto Power On Schematic](/helios64/img/auto-poweron/schematic_flip_flop.png)
| State | D | Clock |
|---------|-------|-------------|
| Enable | 1 | Rising edge |
| Disable | 0 | Rising edge |
## Auto Power On Control under Linux
*AUTO_ON_EN_D* pin and *AUTO_ON_EN_CLK* pin is assigned to gpio **153** and gpio **154** respectively.
After exporting and configure the GPIOs as output (refer to [GPIO Control](/helios64/gpio/#gpio-control)), we will do bit-banging to configure the D Flip Flop.
To enable the Auto Power On
```
echo 1 > /sys/class/gpio/gpio153/value
echo 0 > /sys/class/gpio/gpio154/value
sleep 0.1
echo 1 > /sys/class/gpio/gpio154/value
sleep 0.1
echo 0 > /sys/class/gpio/gpio154/value
```
To disable the Auto Power On
```
echo 0 > /sys/class/gpio/gpio153/value
echo 0 > /sys/class/gpio/gpio154/value
sleep 0.1
echo 1 > /sys/class/gpio/gpio154/value
sleep 0.1
echo 0 > /sys/class/gpio/gpio154/value
```
## Systemd-shutdown Script
We put a script to disable Auto Power On during shutdown, located on
`/lib/systemd/system-shutdown/disable_auto_poweron`.
The script content:
```bash
#!/bin/bash
# Export GPIO
# AUTO_ON_D
echo 153 > /sys/class/gpio/export
# AUTO_EN_CLK
echo 154 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio153/direction
echo out > /sys/class/gpio/gpio154/direction
# Toggling the D Flip-Flop
echo 0 > /sys/class/gpio/gpio153/value
echo 0 > /sys/class/gpio/gpio154/value
sleep 0.1
echo 1 > /sys/class/gpio/gpio154/value
sleep 0.1
echo 0 > /sys/class/gpio/gpio154/value
```
!!! Info
Current implementation does not check whether there is loss of power event.

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View file

@ -82,6 +82,7 @@ nav:
- First Start : 'helios64/install/first-start.md'
- Hardware:
- Overview: 'helios64/hardware.md'
- Auto Power On: 'helios64/auto_poweron.md'
- Button: 'helios64/button.md'
- Ethernet: 'helios64/ethernet.md'
- Front Panel: 'helios64/front-panel.md'