| # SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/power/reset/gpio-restart.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: GPIO controlled reset |
| |
| maintainers: |
| - Sebastian Reichel <sre@kernel.org> |
| |
| description: > |
| Drive a GPIO line that can be used to restart the system from a restart handler. |
| |
| This binding supports level and edge triggered reset. At driver load time, the driver will |
| request the given gpio line and install a restart handler. If the optional properties |
| 'open-source' is not found, the GPIO line will be driven in the inactive state. Otherwise its |
| not driven until the restart is initiated. |
| |
| When the system is restarted, the restart handler will be invoked in priority order. The GPIO |
| is configured as an output, and driven active, triggering a level triggered reset condition. |
| This will also cause an inactive->active edge condition, triggering positive edge triggered |
| reset. After a delay specified by active-delay, the GPIO is set to inactive, thus causing an |
| active->inactive edge, triggering negative edge triggered reset. After a delay specified by |
| inactive-delay, the GPIO is driven active again. After a delay specified by wait-delay, the |
| restart handler completes allowing other restart handlers to be attempted. |
| |
| properties: |
| compatible: |
| const: gpio-restart |
| |
| gpios: |
| description: The GPIO to set high/low, see "gpios property" in |
| Documentation/devicetree/bindings/gpio/gpio.txt. If the pin should be low to reset the board |
| set it to "Active Low", otherwise set GPIO to "Active High". |
| |
| open-source: |
| $ref: /schemas/types.yaml#/definitions/flag |
| description: Treat the GPIO as being open source and defer driving it to when the restart is |
| initiated. If this optional property is not specified, the GPIO is initialized as an output |
| in its inactive state. |
| |
| priority: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: | |
| A priority ranging from 0 to 255 (default 129) according to the following guidelines: |
| |
| 0: Restart handler of last resort, with limited restart capabilities. |
| 128: Default restart handler; use if no other restart handler is expected to be available, |
| and/or if restart functionality is sufficient to restart the entire system. |
| 255: Highest priority restart handler, will preempt all other restart handlers. |
| minimum: 0 |
| maximum: 255 |
| default: 129 |
| |
| active-delay: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: Delay (default 100) to wait after driving gpio active [ms] |
| default: 100 |
| |
| inactive-delay: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: Delay (default 100) to wait after driving gpio inactive [ms] |
| default: 100 |
| |
| wait-delay: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: Delay (default 3000) to wait after completing restart sequence [ms] |
| default: 100 |
| |
| additionalProperties: false |
| |
| required: |
| - compatible |
| - gpios |
| |
| examples: |
| - | |
| gpio-restart { |
| compatible = "gpio-restart"; |
| gpios = <&gpio 4 0>; |
| priority = <128>; |
| active-delay = <100>; |
| inactive-delay = <100>; |
| wait-delay = <3000>; |
| }; |