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