Boards might use the same GPIO line to control several external devices. Add section to document on how a shared GPIO pin can be described. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@xxxxxx> --- .../devicetree/bindings/gpio/gpio.txt | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt index a8895d339bfe..644e6513607c 100644 --- a/Documentation/devicetree/bindings/gpio/gpio.txt +++ b/Documentation/devicetree/bindings/gpio/gpio.txt @@ -228,6 +228,72 @@ Example of two SOC GPIO banks defined as gpio-controller nodes: #gpio-cells = <2>; }; +On boards one GPIO line might be connected to multiple devices as reset, enable +or other control pins. In order to make it safer for this usage of a GPIO line +one can describe the shared GPIO pin. + +Each shared GPIO pin definition is represented as a child node of the GPIO +controller. + +Required properties: +- gpio-shared: A property specifying that this child node represents a shared + GPIO pin. +- gpios: Store the GPIO information (id, flags, ...) for each GPIO to + affect. Shall contain an integer multiple of the number of cells + specified in its parent node (GPIO controller node). +Only one of the following properties scanned in the order shown below. +This means that when multiple properties are present they will be searched +in the order presented below and the first match is taken as the intended +configuration. +- output-low: A property specifying to set the GPIO direction as output with + the value low initially. +- output-high: A property specifying to set the GPIO direction as output with + the value high initially. +The shared GPIO line management strategy can be selected with either of the +following properties: +- refcounted-low: The line must be kept low as long as there is at least one + request asking it to be low. +- refcounted-high: The line must be kept high as long as there is at least one + request asking it to be high. +If neither of the refcounting strategy was selected then the shared GPIO is +handled as pass through. In this mode all user requests will be forwarded to the +shared GPIO pin without refcounting. + +Optional properties: +- line-name: The GPIO label name. If not present the node name is used. + +Example of shared GPIO use: + + qe_pio_a: gpio-controller@1400 { + compatible = "fsl,qe-pario-bank-a", "fsl,qe-pario-bank"; + reg = <0x1400 0x18>; + gpio-controller; + #gpio-cells = <2>; + + line_a { + gpio-shared; + gpios = <5 0>; + output-low; + refcounted-high; + line-name = "enable-for-devices"; + }; + }; + + device@0 { + compatible = "some,device"; + enable-gpios = <&qe_pio_a 5 0>; + }; + + device@1 { + compatible = "some,device"; + enable-gpios = <&qe_pio_a 5 0>; + }; + + component@0 { + compatible = "some,component"; + select-gpios = <&qe_pio_a 5 0>; + }; + 2.1) gpio- and pin-controller interaction ----------------------------------------- -- Peter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki