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.

Required properties:
- compatible : should be "gpio-restart".
- gpios : 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".

Optional properties:
- open-source : 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 : A priority ranging from 0 to 255 (default 128) 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
- active-delay: Delay (default 100) to wait after driving gpio active [ms]
- inactive-delay: Delay (default 100) to wait after driving gpio inactive [ms]
- wait-delay: Delay (default 3000) to wait after completing restart
  sequence [ms]

Examples:

gpio-restart {
	compatible = "gpio-restart";
	gpios = <&gpio 4 0>;
	priority = <128>;
	active-delay = <100>;
	inactive-delay = <100>;
	wait-delay = <3000>;
};
