| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/gpio/gpio-mmio.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Generic MMIO GPIO |
| |
| maintainers: |
| - Linus Walleij <linus.walleij@linaro.org> |
| - Bartosz Golaszewski <brgl@bgdev.pl> |
| |
| description: |
| Some simple GPIO controllers may consist of a single data register or a pair |
| of set/clear-bit registers. Such controllers are common for glue logic in |
| FPGAs or ASICs. Commonly, these controllers are accessed over memory-mapped |
| NAND-style parallel busses. |
| |
| properties: |
| compatible: |
| enum: |
| - brcm,bcm6345-gpio |
| - ni,169445-nand-gpio |
| - wd,mbl-gpio # Western Digital MyBook Live memory-mapped GPIO controller |
| |
| big-endian: true |
| |
| '#gpio-cells': |
| const: 2 |
| |
| gpio-controller: true |
| |
| little-endian: true |
| |
| reg: |
| minItems: 1 |
| description: |
| A list of registers in the controller. The width of each register is |
| determined by its size. All registers must have the same width. The number |
| of GPIOs is set by the width, with bit 0 corresponding to GPIO 0. |
| items: |
| - description: |
| Register to READ the value of the GPIO lines. If GPIO line is high, |
| the bit will be set. If the GPIO line is low, the bit will be cleared. |
| This register may also be used to drive GPIOs if the SET register is |
| omitted. |
| - description: |
| Register to SET the value of the GPIO lines. Setting a bit in this |
| register will drive the GPIO line high. |
| - description: |
| Register to CLEAR the value of the GPIO lines. Setting a bit in this |
| register will drive the GPIO line low. If this register is omitted, |
| the SET register will be used to clear the GPIO lines as well, by |
| actively writing the line with 0. |
| - description: |
| Register to set the line as OUTPUT. Setting a bit in this register |
| will turn that line into an output line. Conversely, clearing a bit |
| will turn that line into an input. |
| - description: |
| Register to set this line as INPUT. Setting a bit in this register |
| will turn that line into an input line. Conversely, clearing a bit |
| will turn that line into an output. |
| |
| reg-names: |
| minItems: 1 |
| maxItems: 5 |
| items: |
| enum: |
| - dat |
| - set |
| - clr |
| - dirout |
| - dirin |
| |
| native-endian: true |
| |
| no-output: |
| $ref: /schemas/types.yaml#/definitions/flag |
| description: |
| If this property is present, the controller cannot drive the GPIO lines. |
| |
| required: |
| - compatible |
| - reg |
| - reg-names |
| - '#gpio-cells' |
| - gpio-controller |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| gpio@1f300010 { |
| compatible = "ni,169445-nand-gpio"; |
| reg = <0x1f300010 0x4>; |
| reg-names = "dat"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| }; |
| |
| gpio@e0100000 { |
| compatible = "wd,mbl-gpio"; |
| reg-names = "dat"; |
| reg = <0xe0100000 0x1>; |
| #gpio-cells = <2>; |
| gpio-controller; |
| no-output; |
| }; |
| |
| gpio@fffe0406 { |
| compatible = "brcm,bcm6345-gpio"; |
| reg-names = "dirout", "dat"; |
| reg = <0xfffe0406 2>, <0xfffe040a 2>; |
| native-endian; |
| gpio-controller; |
| #gpio-cells = <2>; |
| }; |