xref: /linux/Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.yaml (revision 4abae5b6af811ab2b53aa761bf9ae2139757d594)
1a6564a55SFlorian Fainelli# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2a6564a55SFlorian Fainelli%YAML 1.2
3a6564a55SFlorian Fainelli---
4a6564a55SFlorian Fainelli$id: http://devicetree.org/schemas/gpio/brcm,brcmstb-gpio.yaml#
5a6564a55SFlorian Fainelli$schema: http://devicetree.org/meta-schemas/core.yaml#
6a6564a55SFlorian Fainelli
7a6564a55SFlorian Fainellititle: Broadcom STB "UPG GIO" GPIO controller
8a6564a55SFlorian Fainelli
9a6564a55SFlorian Fainellidescription: >
10a6564a55SFlorian Fainelli  The controller's registers are organized as sets of eight 32-bit
11a6564a55SFlorian Fainelli  registers with each set controlling a bank of up to 32 pins.  A single
12a6564a55SFlorian Fainelli  interrupt is shared for all of the banks handled by the controller.
13a6564a55SFlorian Fainelli
14a6564a55SFlorian Fainellimaintainers:
15a6564a55SFlorian Fainelli  - Doug Berger <opendmb@gmail.com>
16a6564a55SFlorian Fainelli  - Florian Fainelli <f.fainelli@gmail.com>
17a6564a55SFlorian Fainelli
18a6564a55SFlorian Fainelliproperties:
19a6564a55SFlorian Fainelli  compatible:
20a6564a55SFlorian Fainelli    items:
21a6564a55SFlorian Fainelli      - enum:
22a6564a55SFlorian Fainelli          - brcm,bcm7445-gpio
23a6564a55SFlorian Fainelli      - const: brcm,brcmstb-gpio
24a6564a55SFlorian Fainelli
25a6564a55SFlorian Fainelli  reg:
26a6564a55SFlorian Fainelli    maxItems: 1
27a6564a55SFlorian Fainelli    description: >
28a6564a55SFlorian Fainelli      Define the base and range of the I/O address space containing
29a6564a55SFlorian Fainelli      the brcmstb GPIO controller registers
30a6564a55SFlorian Fainelli
31a6564a55SFlorian Fainelli  "#gpio-cells":
32a6564a55SFlorian Fainelli    const: 2
33a6564a55SFlorian Fainelli    description: >
34a6564a55SFlorian Fainelli      The first cell is the pin number (within the controller's
35a6564a55SFlorian Fainelli      pin space), and the second is used for the following:
36a6564a55SFlorian Fainelli      bit[0]: polarity (0 for active-high, 1 for active-low)
37a6564a55SFlorian Fainelli
38a6564a55SFlorian Fainelli  gpio-controller: true
39a6564a55SFlorian Fainelli
40a6564a55SFlorian Fainelli  brcm,gpio-bank-widths:
41a6564a55SFlorian Fainelli    $ref: /schemas/types.yaml#/definitions/uint32-array
42a6564a55SFlorian Fainelli    description: >
43a6564a55SFlorian Fainelli      Number of GPIO lines for each bank.  Number of elements must
44a6564a55SFlorian Fainelli      correspond to number of banks suggested by the 'reg' property.
45a6564a55SFlorian Fainelli
46a6564a55SFlorian Fainelli  interrupts:
47a6564a55SFlorian Fainelli    maxItems: 1
48a6564a55SFlorian Fainelli    description: >
49a6564a55SFlorian Fainelli      The interrupt shared by all GPIO lines for this controller.
50a6564a55SFlorian Fainelli
51a6564a55SFlorian Fainelli  "#interrupt-cells":
52a6564a55SFlorian Fainelli    const: 2
53a6564a55SFlorian Fainelli    description: |
54a6564a55SFlorian Fainelli      The first cell is the GPIO number, the second should specify
55a6564a55SFlorian Fainelli      flags.  The following subset of flags is supported:
56a6564a55SFlorian Fainelli      - bits[3:0] trigger type and level flags
57a6564a55SFlorian Fainelli        1 = low-to-high edge triggered
58a6564a55SFlorian Fainelli        2 = high-to-low edge triggered
59a6564a55SFlorian Fainelli        4 = active high level-sensitive
60a6564a55SFlorian Fainelli        8 = active low level-sensitive
61a6564a55SFlorian Fainelli      Valid combinations are 1, 2, 3, 4, 8.
62a6564a55SFlorian Fainelli
63a6564a55SFlorian Fainelli  interrupt-controller: true
64a6564a55SFlorian Fainelli
657c66f817SDoug Berger  gpio-ranges: true
667c66f817SDoug Berger
67*83a97527SDave Stevenson  gpio-line-names:
68*83a97527SDave Stevenson    minItems: 1
69*83a97527SDave Stevenson    maxItems: 128
70*83a97527SDave Stevenson
71a6564a55SFlorian Fainelli  wakeup-source:
72a6564a55SFlorian Fainelli    type: boolean
73a6564a55SFlorian Fainelli    description: >
74a6564a55SFlorian Fainelli      GPIOs for this controller can be used as a wakeup source
75a6564a55SFlorian Fainelli
76a6564a55SFlorian Fainellirequired:
77a6564a55SFlorian Fainelli  - compatible
78a6564a55SFlorian Fainelli  - reg
79a6564a55SFlorian Fainelli  - gpio-controller
80a6564a55SFlorian Fainelli  - "#gpio-cells"
81e6d71c78SRob Herring  - brcm,gpio-bank-widths
82a6564a55SFlorian Fainelli
83a6564a55SFlorian FainelliadditionalProperties: false
84a6564a55SFlorian Fainelli
85a6564a55SFlorian Fainelliexamples:
86a6564a55SFlorian Fainelli  - |
87a6564a55SFlorian Fainelli    upg_gio: gpio@f040a700 {
88a6564a55SFlorian Fainelli        #gpio-cells = <2>;
89a6564a55SFlorian Fainelli        #interrupt-cells = <2>;
90a6564a55SFlorian Fainelli        compatible = "brcm,bcm7445-gpio", "brcm,brcmstb-gpio";
91a6564a55SFlorian Fainelli        gpio-controller;
92a6564a55SFlorian Fainelli        interrupt-controller;
93a6564a55SFlorian Fainelli        reg = <0xf040a700 0x80>;
94a6564a55SFlorian Fainelli        interrupt-parent = <&irq0_intc>;
95a6564a55SFlorian Fainelli        interrupts = <0x6>;
96a6564a55SFlorian Fainelli        brcm,gpio-bank-widths = <32 32 32 24>;
977c66f817SDoug Berger        gpio-ranges = <&pinctrl 0 0 120>;
98a6564a55SFlorian Fainelli    };
99a6564a55SFlorian Fainelli
100a6564a55SFlorian Fainelli    upg_gio_aon: gpio@f04172c0 {
101a6564a55SFlorian Fainelli        #gpio-cells = <2>;
102a6564a55SFlorian Fainelli        #interrupt-cells = <2>;
103a6564a55SFlorian Fainelli        compatible = "brcm,bcm7445-gpio", "brcm,brcmstb-gpio";
104a6564a55SFlorian Fainelli        gpio-controller;
105a6564a55SFlorian Fainelli        interrupt-controller;
106a6564a55SFlorian Fainelli        reg = <0xf04172c0 0x40>;
107a6564a55SFlorian Fainelli        interrupt-parent = <&irq0_aon_intc>;
108a6564a55SFlorian Fainelli        interrupts = <0x6>;
109a6564a55SFlorian Fainelli        wakeup-source;
110a6564a55SFlorian Fainelli        brcm,gpio-bank-widths = <18 4>;
111a6564a55SFlorian Fainelli    };
112