xref: /openbmc/linux/Documentation/devicetree/bindings/gpio/gpio.txt (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1d524dac9SGrant LikelySpecifying GPIO information for devices
225db30c3SLinus Walleij=======================================
3d524dac9SGrant Likely
4d524dac9SGrant Likely1) gpios property
5d524dac9SGrant Likely-----------------
6d524dac9SGrant Likely
72071d096SAlexandre CourbotGPIO properties should be named "[<name>-]gpios", with <name> being the purpose
82071d096SAlexandre Courbotof this GPIO for the device. While a non-existent <name> is considered valid
92071d096SAlexandre Courbotfor compatibility reasons (resolving to the "gpios" property), it is not allowed
10e7ae65ceSJavier Martinez Canillasfor new bindings. Also, GPIO properties named "[<name>-]gpio" are valid and old
11e7ae65ceSJavier Martinez Canillasbindings use it, but are only supported for compatibility reasons and should not
12e7ae65ceSJavier Martinez Canillasbe used for newer bindings since it has been deprecated.
13bf859f84SGrant Likely
142071d096SAlexandre CourbotGPIO properties can contain one or more GPIO phandles, but only in exceptional
152071d096SAlexandre Courbotcases should they contain more than one. If your device uses several GPIOs with
162071d096SAlexandre Courbotdistinct functions, reference each of them under its own property, giving it a
172071d096SAlexandre Courbotmeaningful name. The only case where an array of GPIOs is accepted is when
182071d096SAlexandre Courbotseveral GPIOs serve the same function (e.g. a parallel data line).
192071d096SAlexandre Courbot
202071d096SAlexandre CourbotThe exact purpose of each gpios property must be documented in the device tree
212071d096SAlexandre Courbotbinding of the device.
222071d096SAlexandre Courbot
232071d096SAlexandre CourbotThe following example could be used to describe GPIO pins used as device enable
242071d096SAlexandre Courbotand bit-banged data signals:
25bf859f84SGrant Likely
26bf859f84SGrant Likely	gpio1: gpio1 {
278734fae6SWolfram Sang		gpio-controller;
28bf859f84SGrant Likely		#gpio-cells = <2>;
29bf859f84SGrant Likely	};
30bf859f84SGrant Likely	[...]
312071d096SAlexandre Courbot
322071d096SAlexandre Courbot	data-gpios = <&gpio1 12 0>,
33bf859f84SGrant Likely		     <&gpio1 13 0>,
342071d096SAlexandre Courbot		     <&gpio1 14 0>,
352071d096SAlexandre Courbot		     <&gpio1 15 0>;
36bf859f84SGrant Likely
37c02980d6SLinus WalleijIn the above example, &gpio1 uses 2 cells to specify a gpio. The first cell is
38c02980d6SLinus Walleija local offset to the GPIO line and the second cell represent consumer flags,
39c02980d6SLinus Walleijsuch as if the consumer desire the line to be active low (inverted) or open
40c02980d6SLinus Walleijdrain. This is the recommended practice.
41d524dac9SGrant Likely
42c02980d6SLinus WalleijThe exact meaning of each specifier cell is controller specific, and must be
43c02980d6SLinus Walleijdocumented in the device tree binding for the device, but it is strongly
44c02980d6SLinus Walleijrecommended to use the two-cell approach.
4569d301fdSLinus Walleij
46c02980d6SLinus WalleijMost controllers are specifying a generic flag bitfield in the last cell, so
47c02980d6SLinus Walleijfor these, use the macros defined in
4869d301fdSLinus Walleijinclude/dt-bindings/gpio/gpio.h whenever possible:
49d524dac9SGrant Likely
5051e8afc1SStephen WarrenExample of a node using GPIOs:
51d524dac9SGrant Likely
52d524dac9SGrant Likely	node {
532071d096SAlexandre Courbot		enable-gpios = <&qe_pio_e 18 GPIO_ACTIVE_HIGH>;
54d524dac9SGrant Likely	};
55d524dac9SGrant Likely
562071d096SAlexandre CourbotGPIO_ACTIVE_HIGH is 0, so in this example gpio-specifier is "18 0" and encodes
572071d096SAlexandre CourbotGPIO pin number, and GPIO flags as accepted by the "qe_pio_e" gpio-controller.
5851e8afc1SStephen Warren
5969d301fdSLinus WalleijOptional standard bitfield specifiers for the last cell:
6069d301fdSLinus Walleij
6169d301fdSLinus Walleij- Bit 0: 0 means active high, 1 means active low
62f9e3a419SCharles Keepax- Bit 1: 0 mean push-pull wiring, see:
63f9e3a419SCharles Keepax           https://en.wikipedia.org/wiki/Push-pull_output
64f9e3a419SCharles Keepax         1 means single-ended wiring, see:
6569d301fdSLinus Walleij           https://en.wikipedia.org/wiki/Single-ended_triode
66f9e3a419SCharles Keepax- Bit 2: 0 means open-source, 1 means open drain, see:
6769d301fdSLinus Walleij           https://en.wikipedia.org/wiki/Open_collector
68ca379784SCharles Keepax- Bit 3: 0 means the output should be maintained during sleep/low-power mode
69ca379784SCharles Keepax         1 means the output state can be lost during sleep/low-power mode
70ede033e1SThomas Petazzoni- Bit 4: 0 means no pull-up resistor should be enabled
71ede033e1SThomas Petazzoni         1 means a pull-up resistor should be enabled
72ede033e1SThomas Petazzoni         This setting only applies to hardware with a simple on/off
73ede033e1SThomas Petazzoni         control for pull-up configuration. If the hardware has more
74ede033e1SThomas Petazzoni         elaborate pull-up configuration, it should be represented
75ede033e1SThomas Petazzoni         using a pin control binding.
76ede033e1SThomas Petazzoni- Bit 5: 0 means no pull-down resistor should be enabled
77ede033e1SThomas Petazzoni         1 means a pull-down resistor should be enabled
78ede033e1SThomas Petazzoni         This setting only applies to hardware with a simple on/off
79ede033e1SThomas Petazzoni         control for pull-down configuration. If the hardware has more
80ede033e1SThomas Petazzoni         elaborate pull-down configuration, it should be represented
81ede033e1SThomas Petazzoni         using a pin control binding.
8269d301fdSLinus Walleij
8351e8afc1SStephen Warren1.1) GPIO specifier best practices
8451e8afc1SStephen Warren----------------------------------
8551e8afc1SStephen Warren
8651e8afc1SStephen WarrenA gpio-specifier should contain a flag indicating the GPIO polarity; active-
8774981fb8SMasahiro Yamadahigh or active-low. If it does, the following best practices should be
8874981fb8SMasahiro Yamadafollowed:
8951e8afc1SStephen Warren
9051e8afc1SStephen WarrenThe gpio-specifier's polarity flag should represent the physical level at the
9151e8afc1SStephen WarrenGPIO controller that achieves (or represents, for inputs) a logically asserted
9251e8afc1SStephen Warrenvalue at the device. The exact definition of logically asserted should be
9351e8afc1SStephen Warrendefined by the binding for the device. If the board inverts the signal between
9451e8afc1SStephen Warrenthe GPIO controller and the device, then the gpio-specifier will represent the
9551e8afc1SStephen Warrenopposite physical level than the signal at the device's pin.
9651e8afc1SStephen Warren
9751e8afc1SStephen WarrenWhen the device's signal polarity is configurable, the binding for the
9851e8afc1SStephen Warrendevice must either:
9951e8afc1SStephen Warren
10051e8afc1SStephen Warrena) Define a single static polarity for the signal, with the expectation that
10151e8afc1SStephen Warrenany software using that binding would statically program the device to use
10251e8afc1SStephen Warrenthat signal polarity.
10351e8afc1SStephen Warren
10451e8afc1SStephen WarrenThe static choice of polarity may be either:
10551e8afc1SStephen Warren
10651e8afc1SStephen Warrena1) (Preferred) Dictated by a binding-specific DT property.
10751e8afc1SStephen Warren
10851e8afc1SStephen Warrenor:
10951e8afc1SStephen Warren
11051e8afc1SStephen Warrena2) Defined statically by the DT binding itself.
11151e8afc1SStephen Warren
11251e8afc1SStephen WarrenIn particular, the polarity cannot be derived from the gpio-specifier, since
11351e8afc1SStephen Warrenthat would prevent the DT from separately representing the two orthogonal
11451e8afc1SStephen Warrenconcepts of configurable signal polarity in the device, and possible board-
11551e8afc1SStephen Warrenlevel signal inversion.
11651e8afc1SStephen Warren
11751e8afc1SStephen Warrenor:
11851e8afc1SStephen Warren
11951e8afc1SStephen Warrenb) Pick a single option for device signal polarity, and document this choice
12051e8afc1SStephen Warrenin the binding. The gpio-specifier should represent the polarity of the signal
12151e8afc1SStephen Warren(at the GPIO controller) assuming that the device is configured for this
12251e8afc1SStephen Warrenparticular signal polarity choice. If software chooses to program the device
12351e8afc1SStephen Warrento generate or receive a signal of the opposite polarity, software will be
12451e8afc1SStephen Warrenresponsible for correctly interpreting (inverting) the GPIO signal at the GPIO
12551e8afc1SStephen Warrencontroller.
126d524dac9SGrant Likely
127d524dac9SGrant Likely2) gpio-controller nodes
128d524dac9SGrant Likely------------------------
129d524dac9SGrant Likely
13051e8afc1SStephen WarrenEvery GPIO controller node must contain both an empty "gpio-controller"
13151e8afc1SStephen Warrenproperty, and a #gpio-cells integer property, which indicates the number of
13251e8afc1SStephen Warrencells in a gpio-specifier.
133d524dac9SGrant Likely
13475c004dfSLinus WalleijSome system-on-chips (SoCs) use the concept of GPIO banks. A GPIO bank is an
13575c004dfSLinus Walleijinstance of a hardware IP core on a silicon die, usually exposed to the
13675c004dfSLinus Walleijprogrammer as a coherent range of I/O addresses. Usually each such bank is
13775c004dfSLinus Walleijexposed in the device tree as an individual gpio-controller node, reflecting
13875c004dfSLinus Walleijthe fact that the hardware was synthesized by reusing the same IP block a
13975c004dfSLinus Walleijfew times over.
14075c004dfSLinus Walleij
141aacaffd1SLinus WalleijOptionally, a GPIO controller may have a "ngpios" property. This property
142aacaffd1SLinus Walleijindicates the number of in-use slots of available slots for GPIOs. The
143aacaffd1SLinus Walleijtypical example is something like this: the hardware register is 32 bits
144aacaffd1SLinus Walleijwide, but only 18 of the bits have a physical counterpart. The driver is
145aacaffd1SLinus Walleijgenerally written so that all 32 bits can be used, but the IP block is reused
146aacaffd1SLinus Walleijin a lot of designs, some using all 32 bits, some using 18 and some using
147aacaffd1SLinus Walleij12. In this case, setting "ngpios = <18>;" informs the driver that only the
148aacaffd1SLinus Walleijfirst 18 GPIOs, at local offset 0 .. 17, are in use.
149aacaffd1SLinus Walleij
150aacaffd1SLinus WalleijIf these GPIOs do not happen to be the first N GPIOs at offset 0...N-1, an
151b9c725edSStephen Boydadditional set of tuples is needed to specify which GPIOs are unusable, with
152b9c725edSStephen Boydthe gpio-reserved-ranges binding. This property indicates the start and size
153b9c725edSStephen Boydof the GPIOs that can't be used.
154aacaffd1SLinus Walleij
155fd9c5531SLinus WalleijOptionally, a GPIO controller may have a "gpio-line-names" property. This is
156fd9c5531SLinus Walleijan array of strings defining the names of the GPIO lines going out of the
157*db9da195STrevor WoernerGPIO controller.
158*db9da195STrevor Woerner
159*db9da195STrevor WoernerFor lines which are routed to on-board devices, this name should be
160*db9da195STrevor Woernerthe most meaningful producer name for the system, such as a rail name
161*db9da195STrevor Woernerindicating the usage. Package names, such as a pin name, are discouraged:
162*db9da195STrevor Woernersuch lines have opaque names (since they are by definition general-purpose)
163*db9da195STrevor Woernerand such names are usually not very helpful. For example "MMC-CD", "Red LED
164*db9da195STrevor WoernerVdd" and "ethernet reset" are reasonable line names as they describe what
165*db9da195STrevor Woernerthe line is used for. "GPIO0" is not a good name to give to a GPIO line
166*db9da195STrevor Woernerthat is hard-wired to a specific device.
167*db9da195STrevor Woerner
168*db9da195STrevor WoernerHowever, in the case of lines that are routed to a general purpose header
169*db9da195STrevor Woerner(e.g. the Raspberry Pi 40-pin header), and therefore are not hard-wired to
170*db9da195STrevor Woernerspecific devices, using a pin number or the names on the header is fine
171*db9da195STrevor Woernerprovided these are real (preferably unique) names. Using an SoC's pad name
172*db9da195STrevor Woerneror package name, or names made up from kernel-internal software constructs,
173*db9da195STrevor Woernerare strongly discouraged. For example "pin8 [gpio14/uart0_txd]" is fine
174*db9da195STrevor Woernerif the board's documentation labels pin 8 as such. However "PortB_24" (an
175*db9da195STrevor Woernerexample of a name from an SoC's reference manual) would not be desirable.
176*db9da195STrevor Woerner
177*db9da195STrevor WoernerIn either case placeholders are discouraged: rather use the "" (blank
178*db9da195STrevor Woernerstring) if the use of the GPIO line is undefined in your design. Ideally,
179*db9da195STrevor Woernertry to add comments to the dts file describing the naming the convention
180*db9da195STrevor Woerneryou have chosen, and specifying from where the names are derived.
181*db9da195STrevor Woerner
182*db9da195STrevor WoernerThe names are assigned starting from line offset 0, from left to right,
183*db9da195STrevor Woernerfrom the passed array. An incomplete array (where the number of passed
184*db9da195STrevor Woernernames is less than ngpios) will be used up until the last provided valid
185*db9da195STrevor Woernerline index.
186fd9c5531SLinus Walleij
187aacaffd1SLinus WalleijExample:
188aacaffd1SLinus Walleij
189aacaffd1SLinus Walleijgpio-controller@00000000 {
190aacaffd1SLinus Walleij	compatible = "foo";
191aacaffd1SLinus Walleij	reg = <0x00000000 0x1000>;
192aacaffd1SLinus Walleij	gpio-controller;
193aacaffd1SLinus Walleij	#gpio-cells = <2>;
194aacaffd1SLinus Walleij	ngpios = <18>;
195b9c725edSStephen Boyd	gpio-reserved-ranges = <0 4>, <12 2>;
196fd9c5531SLinus Walleij	gpio-line-names = "MMC-CD", "MMC-WP", "VDD eth", "RST eth", "LED R",
197fd9c5531SLinus Walleij		"LED G", "LED B", "Col A", "Col B", "Col C", "Col D",
198fd9c5531SLinus Walleij		"Row A", "Row B", "Row C", "Row D", "NMI button",
199fd9c5531SLinus Walleij		"poweroff", "reset";
200aacaffd1SLinus Walleij}
201aacaffd1SLinus Walleij
2026b516a10SBenoit ParrotThe GPIO chip may contain GPIO hog definitions. GPIO hogging is a mechanism
2036b516a10SBenoit Parrotproviding automatic GPIO request and configuration as part of the
2046b516a10SBenoit Parrotgpio-controller's driver probe function.
2056b516a10SBenoit Parrot
2066b516a10SBenoit ParrotEach GPIO hog definition is represented as a child node of the GPIO controller.
2076b516a10SBenoit ParrotRequired properties:
208a79fead5SGeert Uytterhoeven- gpio-hog:   A property specifying that this child node represents a GPIO hog.
209a79fead5SGeert Uytterhoeven- gpios:      Store the GPIO information (id, flags, ...) for each GPIO to
210a79fead5SGeert Uytterhoeven	      affect. Shall contain an integer multiple of the number of cells
211a79fead5SGeert Uytterhoeven	      specified in its parent node (GPIO controller node).
2126b516a10SBenoit ParrotOnly one of the following properties scanned in the order shown below.
2136b516a10SBenoit ParrotThis means that when multiple properties are present they will be searched
2146b516a10SBenoit Parrotin the order presented below and the first match is taken as the intended
2156b516a10SBenoit Parrotconfiguration.
2166b516a10SBenoit Parrot- input:      A property specifying to set the GPIO direction as input.
2176b516a10SBenoit Parrot- output-low  A property specifying to set the GPIO direction as output with
2186b516a10SBenoit Parrot	      the value low.
2196b516a10SBenoit Parrot- output-high A property specifying to set the GPIO direction as output with
2206b516a10SBenoit Parrot	      the value high.
2216b516a10SBenoit Parrot
2226b516a10SBenoit ParrotOptional properties:
2236b516a10SBenoit Parrot- line-name:  The GPIO label name. If not present the node name is used.
2246b516a10SBenoit Parrot
225d524dac9SGrant LikelyExample of two SOC GPIO banks defined as gpio-controller nodes:
226d524dac9SGrant Likely
227d524dac9SGrant Likely	qe_pio_a: gpio-controller@1400 {
228d524dac9SGrant Likely		compatible = "fsl,qe-pario-bank-a", "fsl,qe-pario-bank";
229d524dac9SGrant Likely		reg = <0x1400 0x18>;
230d524dac9SGrant Likely		gpio-controller;
23151e8afc1SStephen Warren		#gpio-cells = <2>;
2326b516a10SBenoit Parrot
2338bdc849fSMarcel Ziswiler		line_b-hog {
2346b516a10SBenoit Parrot			gpio-hog;
2356b516a10SBenoit Parrot			gpios = <6 0>;
2366b516a10SBenoit Parrot			output-low;
2376b516a10SBenoit Parrot			line-name = "foo-bar-gpio";
2386b516a10SBenoit Parrot		};
239d524dac9SGrant Likely	};
240d524dac9SGrant Likely
241d524dac9SGrant Likely	qe_pio_e: gpio-controller@1460 {
242d524dac9SGrant Likely		compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
243d524dac9SGrant Likely		reg = <0x1460 0x18>;
244d524dac9SGrant Likely		gpio-controller;
24551e8afc1SStephen Warren		#gpio-cells = <2>;
246d524dac9SGrant Likely	};
247d524dac9SGrant Likely
248a1bc260bSStephen Warren2.1) gpio- and pin-controller interaction
249a1bc260bSStephen Warren-----------------------------------------
250d524dac9SGrant Likely
251a1bc260bSStephen WarrenSome or all of the GPIOs provided by a GPIO controller may be routed to pins
252a1bc260bSStephen Warrenon the package via a pin controller. This allows muxing those pins between
25325db30c3SLinus WalleijGPIO and other functions. It is a fairly common practice among silicon
25425db30c3SLinus Walleijengineers.
25525db30c3SLinus Walleij
25625db30c3SLinus Walleij2.2) Ordinary (numerical) GPIO ranges
25725db30c3SLinus Walleij-------------------------------------
258f23f1516SShiraz Hashim
259a1bc260bSStephen WarrenIt is useful to represent which GPIOs correspond to which pins on which pin
26025db30c3SLinus Walleijcontrollers. The gpio-ranges property described below represents this with
26125db30c3SLinus Walleija discrete set of ranges mapping pins from the pin controller local number space
26225db30c3SLinus Walleijto pins in the GPIO controller local number space.
263f23f1516SShiraz Hashim
26425db30c3SLinus WalleijThe format is: <[pin controller phandle], [GPIO controller offset],
26525db30c3SLinus Walleij                [pin controller offset], [number of pins]>;
266f23f1516SShiraz Hashim
26725db30c3SLinus WalleijThe GPIO controller offset pertains to the GPIO controller node containing the
26825db30c3SLinus Walleijrange definition.
269a1bc260bSStephen Warren
27025db30c3SLinus WalleijThe pin controller node referenced by the phandle must conform to the bindings
27125db30c3SLinus Walleijdescribed in pinctrl/pinctrl-bindings.txt.
272586a87e6SChristian Ruppert
27325db30c3SLinus WalleijEach offset runs from 0 to N. It is perfectly fine to pile any number of
27425db30c3SLinus Walleijranges with just one pin-to-GPIO line mapping if the ranges are concocted, but
27525db30c3SLinus Walleijin practice these ranges are often lumped in discrete sets.
276586a87e6SChristian Ruppert
27725db30c3SLinus WalleijExample:
278a1bc260bSStephen Warren
27925db30c3SLinus Walleij    gpio-ranges = <&foo 0 20 10>, <&bar 10 50 20>;
28025db30c3SLinus Walleij
28125db30c3SLinus WalleijThis means:
28225db30c3SLinus Walleij- pins 20..29 on pin controller "foo" is mapped to GPIO line 0..9 and
28325db30c3SLinus Walleij- pins 50..69 on pin controller "bar" is mapped to GPIO line 10..29
28425db30c3SLinus Walleij
28525db30c3SLinus Walleij
28625db30c3SLinus WalleijVerbose example:
287f23f1516SShiraz Hashim
288f23f1516SShiraz Hashim	qe_pio_e: gpio-controller@1460 {
289f23f1516SShiraz Hashim		#gpio-cells = <2>;
290f23f1516SShiraz Hashim		compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
291f23f1516SShiraz Hashim		reg = <0x1460 0x18>;
292f23f1516SShiraz Hashim		gpio-controller;
29386853c83SHaojian Zhuang		gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>;
294a1bc260bSStephen Warren	};
295f23f1516SShiraz Hashim
296a1bc260bSStephen WarrenHere, a single GPIO controller has GPIOs 0..9 routed to pin controller
2977b0db553SUwe Kleine-Königpinctrl1's pins 20..29, and GPIOs 10..29 routed to pin controller pinctrl2's
2987b0db553SUwe Kleine-Königpins 50..69.
299586a87e6SChristian Ruppert
30025db30c3SLinus Walleij
30125db30c3SLinus Walleij2.3) GPIO ranges from named pin groups
30225db30c3SLinus Walleij--------------------------------------
30325db30c3SLinus Walleij
30425db30c3SLinus WalleijIt is also possible to use pin groups for gpio ranges when pin groups are the
30525db30c3SLinus Walleijeasiest and most convenient mapping.
30625db30c3SLinus Walleij
30725db30c3SLinus WalleijBoth both <pinctrl-base> and <count> must set to 0 when using named pin groups
30825db30c3SLinus Walleijnames.
30925db30c3SLinus Walleij
31025db30c3SLinus WalleijThe property gpio-ranges-group-names must contain exactly one string for each
31125db30c3SLinus Walleijrange.
31225db30c3SLinus Walleij
31325db30c3SLinus WalleijElements of gpio-ranges-group-names must contain the name of a pin group
31425db30c3SLinus Walleijdefined in the respective pin controller. The number of pins/GPIO lines in the
31525db30c3SLinus Walleijrange is the number of pins in that pin group. The number of pins of that
31625db30c3SLinus Walleijgroup is defined int the implementation and not in the device tree.
31725db30c3SLinus Walleij
31825db30c3SLinus WalleijIf numerical and named pin groups are mixed, the string corresponding to a
31925db30c3SLinus Walleijnumerical pin range in gpio-ranges-group-names must be empty.
32025db30c3SLinus Walleij
32125db30c3SLinus WalleijExample:
322586a87e6SChristian Ruppert
323afc3bca4SRob Herring	gpio_pio_i: gpio-controller@14b0 {
324586a87e6SChristian Ruppert		#gpio-cells = <2>;
325586a87e6SChristian Ruppert		compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
326586a87e6SChristian Ruppert		reg = <0x1480 0x18>;
327586a87e6SChristian Ruppert		gpio-controller;
328586a87e6SChristian Ruppert		gpio-ranges =			<&pinctrl1 0 20 10>,
329586a87e6SChristian Ruppert						<&pinctrl2 10 0 0>,
330586a87e6SChristian Ruppert						<&pinctrl1 15 0 10>,
331586a87e6SChristian Ruppert						<&pinctrl2 25 0 0>;
332586a87e6SChristian Ruppert		gpio-ranges-group-names =	"",
333586a87e6SChristian Ruppert						"foo",
334586a87e6SChristian Ruppert						"",
335586a87e6SChristian Ruppert						"bar";
336586a87e6SChristian Ruppert	};
337586a87e6SChristian Ruppert
33825db30c3SLinus WalleijHere, three GPIO ranges are defined referring to two pin controllers.
33925db30c3SLinus Walleij
34025db30c3SLinus Walleijpinctrl1 GPIO ranges are defined using pin numbers whereas the GPIO ranges
34125db30c3SLinus Walleijin pinctrl2 are defined using the pin groups named "foo" and "bar".
34225db30c3SLinus Walleij
34325db30c3SLinus WalleijPrevious versions of this binding required all pin controller nodes that
34425db30c3SLinus Walleijwere referenced by any gpio-ranges property to contain a property named
34525db30c3SLinus Walleij#gpio-range-cells with value <3>. This requirement is now deprecated.
34625db30c3SLinus WalleijHowever, that property may still exist in older device trees for
34725db30c3SLinus Walleijcompatibility reasons, and would still be required even in new device
34825db30c3SLinus Walleijtrees that need to be compatible with older software.
349