# Copyright (c) 2019, Linaro Limited
# SPDX-License-Identifier: Apache-2.0

# Common fields for GPIO controllers

properties:
  "gpio-controller":
    type: boolean
    required: true
    description: Convey's this node is a GPIO controller
  "#gpio-cells":
    type: int
    required: true
    description: Number of items to expect in a GPIO specifier
  ngpios:
    type: int
    default: 32
    description: |
        This property indicates the number of in-use slots of available slots
        for GPIOs. The typical example is something like this: the hardware
        register is 32 bits wide, but only 18 of the bits have a physical
        counterpart. The driver is generally written so that all 32 bits can
        be used, but the IP block is reused in a lot of designs, some using
        all 32 bits, some using 18 and some using 12. In this case, setting
        "ngpios = <18>;" informs the driver that only the first 18 GPIOs, at
        local offset 0 .. 17, are in use.  For cases in which there might be
        holes in the slot range, this value should be the max slot number-1.
  gpio-reserved-ranges:
    type: array
    description: |
        If not all the GPIOs at offsets 0...N-1 are usable for ngpios = <N>, then
        this property contains an additional set of tuples which specify which GPIOs
        are unusable. This property indicates the start and size of the GPIOs
        that can't be used.

        For example, setting "gpio-reserved-ranges = <3 2>, <10 1>;" means that
        GPIO offsets 3, 4, and 10 are not usable, even if ngpios = <18>.
  gpio-line-names:
    type: string-array
    description: |
        This is an array of strings defining the names of the GPIO lines
        going out of the GPIO controller
