| Driver a GPIO line that can be used to turn the power off. |
| |
| The driver supports both level triggered and edge triggered power off. |
| At driver load time, the driver will request the given gpio line and |
| install a handler to power off the system. If the optional properties |
| 'input' is not found, the GPIO line will be driven in the inactive |
| state. Otherwise its configured as an input. |
| |
| When the power-off handler is called, the gpio is configured as an |
| output, and drive active, so triggering a level triggered power off |
| condition. This will also cause an inactive->active edge condition, so |
| triggering positive edge triggered power off. After a delay of 100ms, |
| the GPIO is set to inactive, thus causing an active->inactive edge, |
| triggering negative edge triggered power off. After another 100ms |
| delay the GPIO is driver active again. If the power is still on and |
| the CPU still running after a 3000ms delay, a WARN_ON(1) is emitted. |
| |
| Required properties: |
| - compatible : should be "gpio-poweroff". |
| - gpios : The GPIO to set high/low, see "gpios property" in |
| Documentation/devicetree/bindings/gpio/gpio.txt. If the pin should be |
| low to power down the board set it to "Active Low", otherwise set |
| gpio to "Active High". |
| |
| Optional properties: |
| - input : Initially configure the GPIO line as an input. Only reconfigure |
| it to an output when the power-off handler is called. If this optional |
| property is not specified, the GPIO is initialized as an output in its |
| inactive state. |
| - timeout-ms: Time to wait before asserting a WARN_ON(1). If nothing is |
| specified, 3000 ms is used. |
| |
| Examples: |
| |
| gpio-poweroff { |
| compatible = "gpio-poweroff"; |
| gpios = <&gpio 4 0>; |
| timeout-ms = <3000>; |
| }; |