NVIDIA Tegra186 GPIO controllers

Tegra186 contains two GPIO controllers; a main controller and an "AON"
controller. This binding document applies to both controllers. The register
layouts for the controllers share many similarities, but also some significant
differences. Hence, this document describes closely related but different
bindings and compatible values.

The Tegra186 GPIO controller allows software to set the IO direction of, and
read/write the value of, numerous GPIO signals. Routing of GPIO signals to
package balls is under the control of a separate pin controller HW block. Two
major sets of registers exist:

a) Security registers, which allow configuration of allowed access to the GPIO
register set. These registers exist in a single contiguous block of physical
address space. The size of this block, and the security features available,
varies between the different GPIO controllers.

Access to this set of registers is not necessary in all circumstances. Code
that wishes to configure access to the GPIO registers needs access to these
registers to do so. Code which simply wishes to read or write GPIO data does not
need access to these registers.

b) GPIO registers, which allow manipulation of the GPIO signals. In some GPIO
controllers, these registers are exposed via multiple "physical aliases" in
address space, each of which access the same underlying state. See the hardware
documentation for rationale. Any particular GPIO client is expected to access
just one of these physical aliases.

Tegra HW documentation describes a unified naming convention for all GPIOs
implemented by the SoC. Each GPIO is assigned to a port, and a port may control
a number of GPIOs. Thus, each GPIO is named according to an alphabetical port
name and an integer GPIO name within the port. For example, GPIO_PA0, GPIO_PN6,
or GPIO_PCC3.

The number of ports implemented by each GPIO controller varies. The number of
implemented GPIOs within each port varies. GPIO registers within a controller
are grouped and laid out according to the port they affect.

The mapping from port name to the GPIO controller that implements that port, and
the mapping from port name to register offset within a controller, are both
extremely non-linear. The header file <dt-bindings/gpio/tegra186-gpio.h>
describes the port-level mapping. In that file, the naming convention for ports
matches the HW documentation. The values chosen for the names are alphabetically
sorted within a particular controller. Drivers need to map between the DT GPIO
IDs and HW register offsets using a lookup table.

Each GPIO controller can generate a number of interrupt signals. Each signal
represents the aggregate status for all GPIOs within a set of ports. Thus, the
number of interrupt signals generated by a controller varies as a rough function
of the number of ports it implements. Note that the HW documentation refers to
both the overall controller HW module and the sets-of-ports as "controllers".

Each GPIO controller in fact generates multiple interrupts signals for each set
of ports. Each GPIO may be configured to feed into a specific one of the
interrupt signals generated by a set-of-ports. The intent is for each generated
signal to be routed to a different CPU, thus allowing different CPUs to each
handle subsets of the interrupts within a port. The status of each of these
per-port-set signals is reported via a separate register. Thus, a driver needs
to know which status register to observe. This binding currently defines no
configuration mechanism for this. By default, drivers should use register
GPIO_${port}_INTERRUPT_STATUS_G1_0. Future revisions to the binding could
define a property to configure this.

Required properties:
- compatible
    Array of strings.
    One of:
    - "nvidia,tegra186-gpio".
    - "nvidia,tegra186-gpio-aon".
    - "nvidia,tegra194-gpio".
    - "nvidia,tegra194-gpio-aon".
- reg-names
    Array of strings.
    Contains a list of names for the register spaces described by the reg
    property. May contain the following entries, in any order:
    - "gpio": Mandatory. GPIO control registers. This may cover either:
        a) The single physical alias that this OS should use.
        b) All physical aliases that exist in the controller. This is
           appropriate when the OS is responsible for managing assignment of
           the physical aliases.
    - "security": Optional. Security configuration registers.
    Users of this binding MUST look up entries in the reg property by name,
    using this reg-names property to do so.
- reg
    Array of (physical base address, length) tuples.
    Must contain one entry per entry in the reg-names property, in a matching
    order.
- interrupts
    Array of interrupt specifiers.
    The interrupt outputs from the HW block, one per set of ports, in the
    order the HW manual describes them. The number of entries required varies
    depending on compatible value:
    - "nvidia,tegra186-gpio": 6 entries.
    - "nvidia,tegra186-gpio-aon": 1 entry.
    - "nvidia,tegra194-gpio": 6 entries.
    - "nvidia,tegra194-gpio-aon": 1 entry.
- gpio-controller
    Boolean.
    Marks the device node as a GPIO controller/provider.
- #gpio-cells
    Single-cell integer.
    Must be <2>.
    Indicates how many cells are used in a consumer's GPIO specifier.
    In the specifier:
    - The first cell is the pin number.
        See <dt-bindings/gpio/tegra186-gpio.h>.
    - The second cell contains flags:
        - Bit 0 specifies polarity
            - 0: Active-high (normal).
            - 1: Active-low (inverted).
- interrupt-controller
    Boolean.
    Marks the device node as an interrupt controller/provider.
- #interrupt-cells
    Single-cell integer.
    Must be <2>.
    Indicates how many cells are used in a consumer's interrupt specifier.
    In the specifier:
    - The first cell is the GPIO number.
        See <dt-bindings/gpio/tegra186-gpio.h>.
    - The second cell is contains flags:
        - Bits [3:0] indicate trigger type and level:
            - 1: Low-to-high edge triggered.
            - 2: High-to-low edge triggered.
            - 4: Active high level-sensitive.
            - 8: Active low level-sensitive.
            Valid combinations are 1, 2, 3, 4, 8.

Example:

#include <dt-bindings/interrupt-controller/irq.h>

gpio@2200000 {
	compatible = "nvidia,tegra186-gpio";
	reg-names = "security", "gpio";
	reg =
		<0x0 0x2200000 0x0 0x10000>,
		<0x0 0x2210000 0x0 0x10000>;
	interrupts =
		<0 47 IRQ_TYPE_LEVEL_HIGH>,
		<0 50 IRQ_TYPE_LEVEL_HIGH>,
		<0 53 IRQ_TYPE_LEVEL_HIGH>,
		<0 56 IRQ_TYPE_LEVEL_HIGH>,
		<0 59 IRQ_TYPE_LEVEL_HIGH>,
		<0 180 IRQ_TYPE_LEVEL_HIGH>;
	gpio-controller;
	#gpio-cells = <2>;
	interrupt-controller;
	#interrupt-cells = <2>;
};

gpio@c2f0000 {
	compatible = "nvidia,tegra186-gpio-aon";
	reg-names = "security", "gpio";
	reg =
		<0x0 0xc2f0000 0x0 0x1000>,
		<0x0 0xc2f1000 0x0 0x1000>;
	interrupts =
		<0 60 IRQ_TYPE_LEVEL_HIGH>;
	gpio-controller;
	#gpio-cells = <2>;
	interrupt-controller;
	#interrupt-cells = <2>;
};
