1Driver a GPIO line that can be used to turn the power off. 2 3The driver supports both level triggered and edge triggered power off. 4At driver load time, the driver will request the given gpio line and 5install a handler to power off the system. If the optional properties 6'input' is not found, the GPIO line will be driven in the inactive 7state. Otherwise its configured as an input. 8 9When the power-off handler is called, the gpio is configured as an 10output, and drive active, so triggering a level triggered power off 11condition. This will also cause an inactive->active edge condition, so 12triggering positive edge triggered power off. After a delay of 100ms, 13the GPIO is set to inactive, thus causing an active->inactive edge, 14triggering negative edge triggered power off. After another 100ms 15delay the GPIO is driver active again. If the power is still on and 16the CPU still running after a 3000ms delay, a WARN_ON(1) is emitted. 17 18Required properties: 19- compatible : should be "gpio-poweroff". 20- gpios : The GPIO to set high/low, see "gpios property" in 21 Documentation/devicetree/bindings/gpio/gpio.txt. If the pin should be 22 low to power down the board set it to "Active Low", otherwise set 23 gpio to "Active High". 24 25Optional properties: 26- input : Initially configure the GPIO line as an input. Only reconfigure 27 it to an output when the power-off handler is called. If this optional 28 property is not specified, the GPIO is initialized as an output in its 29 inactive state. 30- active-delay-ms: Delay (default 100) to wait after driving gpio active 31- inactive-delay-ms: Delay (default 100) to wait after driving gpio inactive 32- timeout-ms: Time to wait before asserting a WARN_ON(1). If nothing is 33 specified, 3000 ms is used. 34 35Examples: 36 37gpio-poweroff { 38 compatible = "gpio-poweroff"; 39 gpios = <&gpio 4 0>; 40 timeout-ms = <3000>; 41}; 42