xref: /openbmc/linux/Documentation/devicetree/bindings/pinctrl/microchip,sparx5-sgpio.yaml (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1ce4d7816SLars Povlsen# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2ce4d7816SLars Povlsen%YAML 1.2
3ce4d7816SLars Povlsen---
4ce4d7816SLars Povlsen$id: http://devicetree.org/schemas/pinctrl/microchip,sparx5-sgpio.yaml#
5ce4d7816SLars Povlsen$schema: http://devicetree.org/meta-schemas/core.yaml#
6ce4d7816SLars Povlsen
7ce4d7816SLars Povlsentitle: Microsemi/Microchip Serial GPIO controller
8ce4d7816SLars Povlsen
9ce4d7816SLars Povlsenmaintainers:
10ce4d7816SLars Povlsen  - Lars Povlsen <lars.povlsen@microchip.com>
11ce4d7816SLars Povlsen
12ce4d7816SLars Povlsendescription: |
13ce4d7816SLars Povlsen  By using a serial interface, the SIO controller significantly extend
14ce4d7816SLars Povlsen  the number of available GPIOs with a minimum number of additional
15ce4d7816SLars Povlsen  pins on the device. The primary purpose of the SIO controllers is to
16ce4d7816SLars Povlsen  connect control signals from SFP modules and to act as an LED
17ce4d7816SLars Povlsen  controller.
18ce4d7816SLars Povlsen
19ce4d7816SLars Povlsenproperties:
20ce4d7816SLars Povlsen  $nodename:
21ce4d7816SLars Povlsen    pattern: "^gpio@[0-9a-f]+$"
22ce4d7816SLars Povlsen
23ce4d7816SLars Povlsen  compatible:
24ce4d7816SLars Povlsen    enum:
25ce4d7816SLars Povlsen      - microchip,sparx5-sgpio
26ce4d7816SLars Povlsen      - mscc,ocelot-sgpio
27ce4d7816SLars Povlsen      - mscc,luton-sgpio
28ce4d7816SLars Povlsen
29ce4d7816SLars Povlsen  "#address-cells":
30ce4d7816SLars Povlsen    const: 1
31ce4d7816SLars Povlsen
32ce4d7816SLars Povlsen  "#size-cells":
33ce4d7816SLars Povlsen    const: 0
34ce4d7816SLars Povlsen
35ce4d7816SLars Povlsen  reg:
36ce4d7816SLars Povlsen    maxItems: 1
37ce4d7816SLars Povlsen
38ce4d7816SLars Povlsen  clocks:
39ce4d7816SLars Povlsen    maxItems: 1
40ce4d7816SLars Povlsen
41ce4d7816SLars Povlsen  microchip,sgpio-port-ranges:
42ce4d7816SLars Povlsen    description: This is a sequence of tuples, defining intervals of
43ce4d7816SLars Povlsen      enabled ports in the serial input stream. The enabled ports must
44ce4d7816SLars Povlsen      match the hardware configuration in order for signals to be
45ce4d7816SLars Povlsen      properly written/read to/from the controller holding
46ce4d7816SLars Povlsen      registers. Being tuples, then number of arguments must be
47ce4d7816SLars Povlsen      even. The tuples mast be ordered (low, high) and are
48ce4d7816SLars Povlsen      inclusive.
49ce4d7816SLars Povlsen    $ref: /schemas/types.yaml#/definitions/uint32-matrix
50ce4d7816SLars Povlsen    items:
51ce4d7816SLars Povlsen      items:
52ce4d7816SLars Povlsen        - description: |
53ce4d7816SLars Povlsen            "low" indicates start bit number of range
54ce4d7816SLars Povlsen          minimum: 0
55ce4d7816SLars Povlsen          maximum: 31
56ce4d7816SLars Povlsen        - description: |
57ce4d7816SLars Povlsen            "high" indicates end bit number of range
58ce4d7816SLars Povlsen          minimum: 0
59ce4d7816SLars Povlsen          maximum: 31
60ce4d7816SLars Povlsen    minItems: 1
61ce4d7816SLars Povlsen    maxItems: 32
62ce4d7816SLars Povlsen
63ce4d7816SLars Povlsen  bus-frequency:
64ce4d7816SLars Povlsen    description: The sgpio controller frequency (Hz). This dictates
65ce4d7816SLars Povlsen      the serial bitstream speed, which again affects the latency in
66ce4d7816SLars Povlsen      getting control signals back and forth between external shift
67ce4d7816SLars Povlsen      registers. The speed must be no larger than half the system
68ce4d7816SLars Povlsen      clock, and larger than zero.
69ce4d7816SLars Povlsen    default: 12500000
70ce4d7816SLars Povlsen
718a097ff4SHoratiu Vultur  resets:
728a097ff4SHoratiu Vultur    maxItems: 1
738a097ff4SHoratiu Vultur
748a097ff4SHoratiu Vultur  reset-names:
758a097ff4SHoratiu Vultur    items:
768a097ff4SHoratiu Vultur      - const: switch
778a097ff4SHoratiu Vultur
78ce4d7816SLars PovlsenpatternProperties:
79ce4d7816SLars Povlsen  "^gpio@[0-1]$":
80ce4d7816SLars Povlsen    type: object
81ce4d7816SLars Povlsen    properties:
82ce4d7816SLars Povlsen      compatible:
83ce4d7816SLars Povlsen        const: microchip,sparx5-sgpio-bank
84ce4d7816SLars Povlsen
85ce4d7816SLars Povlsen      reg:
86ce4d7816SLars Povlsen        description: |
87ce4d7816SLars Povlsen          The GPIO bank number. "0" is designates the input pin bank,
88ce4d7816SLars Povlsen          "1" the output bank.
89ce4d7816SLars Povlsen        maxItems: 1
90ce4d7816SLars Povlsen
91ce4d7816SLars Povlsen      gpio-controller: true
92ce4d7816SLars Povlsen
93ce4d7816SLars Povlsen      '#gpio-cells':
94ce4d7816SLars Povlsen        description: |
95ce4d7816SLars Povlsen         Specifies the pin (port and bit) and flags. Note that the
96ce4d7816SLars Povlsen         SGIO pin is defined by *2* numbers, a port number between 0
97ce4d7816SLars Povlsen         and 31, and a bit index, 0 to 3. The maximum bit number is
98ce4d7816SLars Povlsen         controlled indirectly by the "ngpios" property: (ngpios/32).
99ce4d7816SLars Povlsen        const: 3
100ce4d7816SLars Povlsen
10101a9350bSLars Povlsen      interrupts:
10201a9350bSLars Povlsen        description: Specifies the sgpio IRQ (in parent controller)
10301a9350bSLars Povlsen        maxItems: 1
10401a9350bSLars Povlsen
10501a9350bSLars Povlsen      interrupt-controller: true
10601a9350bSLars Povlsen
10701a9350bSLars Povlsen      '#interrupt-cells':
10801a9350bSLars Povlsen        description:
10901a9350bSLars Povlsen          Specifies the pin (port and bit) and flags, as defined in
11001a9350bSLars Povlsen          defined in include/dt-bindings/interrupt-controller/irq.h
11101a9350bSLars Povlsen        const: 3
11201a9350bSLars Povlsen
113ce4d7816SLars Povlsen      ngpios:
114ce4d7816SLars Povlsen        description: The numbers of GPIO's exposed. This must be a
115ce4d7816SLars Povlsen          multiple of 32.
116ce4d7816SLars Povlsen        minimum: 32
117ce4d7816SLars Povlsen        maximum: 128
118ce4d7816SLars Povlsen
119ce4d7816SLars Povlsen    required:
120ce4d7816SLars Povlsen      - compatible
121ce4d7816SLars Povlsen      - reg
122ce4d7816SLars Povlsen      - gpio-controller
123ce4d7816SLars Povlsen      - '#gpio-cells'
124ce4d7816SLars Povlsen      - ngpios
125ce4d7816SLars Povlsen
126ce4d7816SLars Povlsen    additionalProperties: false
127ce4d7816SLars Povlsen
128ce4d7816SLars PovlsenadditionalProperties: false
129ce4d7816SLars Povlsen
130ce4d7816SLars Povlsenrequired:
131ce4d7816SLars Povlsen  - compatible
132ce4d7816SLars Povlsen  - reg
133ce4d7816SLars Povlsen  - clocks
134ce4d7816SLars Povlsen  - microchip,sgpio-port-ranges
135ce4d7816SLars Povlsen  - "#address-cells"
136ce4d7816SLars Povlsen  - "#size-cells"
137ce4d7816SLars Povlsen
138ce4d7816SLars Povlsenexamples:
139ce4d7816SLars Povlsen  - |
14001a9350bSLars Povlsen    #include <dt-bindings/interrupt-controller/arm-gic.h>
141ce4d7816SLars Povlsen    sgpio2: gpio@1101059c {
142ce4d7816SLars Povlsen      #address-cells = <1>;
143ce4d7816SLars Povlsen      #size-cells = <0>;
144ce4d7816SLars Povlsen      compatible = "microchip,sparx5-sgpio";
145ce4d7816SLars Povlsen      clocks = <&sys_clk>;
146ce4d7816SLars Povlsen      pinctrl-0 = <&sgpio2_pins>;
147ce4d7816SLars Povlsen      pinctrl-names = "default";
148*a6ff90f3SHoratiu Vultur      reg = <0x1101059c 0x118>;
149ce4d7816SLars Povlsen      microchip,sgpio-port-ranges = <0 0>, <16 18>, <28 31>;
150ce4d7816SLars Povlsen      bus-frequency = <25000000>;
151ce4d7816SLars Povlsen      sgpio_in2: gpio@0 {
152ce4d7816SLars Povlsen        reg = <0>;
153ce4d7816SLars Povlsen        compatible = "microchip,sparx5-sgpio-bank";
154ce4d7816SLars Povlsen        gpio-controller;
155ce4d7816SLars Povlsen        #gpio-cells = <3>;
156ce4d7816SLars Povlsen        ngpios = <96>;
15701a9350bSLars Povlsen        interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
15801a9350bSLars Povlsen        interrupt-controller;
15901a9350bSLars Povlsen        #interrupt-cells = <3>;
160ce4d7816SLars Povlsen      };
161ce4d7816SLars Povlsen      sgpio_out2: gpio@1 {
162ce4d7816SLars Povlsen        compatible = "microchip,sparx5-sgpio-bank";
163ce4d7816SLars Povlsen        reg = <1>;
164ce4d7816SLars Povlsen        gpio-controller;
165ce4d7816SLars Povlsen        #gpio-cells = <3>;
166ce4d7816SLars Povlsen        ngpios = <96>;
167ce4d7816SLars Povlsen      };
168ce4d7816SLars Povlsen    };
169