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