| # Copyright (c) 2019, Linaro Limited |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| # Common fields for GPIO controllers |
| |
| properties: |
| "gpio-controller": |
| type: boolean |
| required: true |
| description: Convey's this node is a GPIO controller |
| "#gpio-cells": |
| type: int |
| required: true |
| description: Number of items to expect in a GPIO specifier |
| ngpios: |
| type: int |
| default: 32 |
| description: | |
| This property indicates the number of in-use slots of available slots |
| for GPIOs. The typical example is something like this: the hardware |
| register is 32 bits wide, but only 18 of the bits have a physical |
| counterpart. The driver is generally written so that all 32 bits can |
| be used, but the IP block is reused in a lot of designs, some using |
| all 32 bits, some using 18 and some using 12. In this case, setting |
| "ngpios = <18>;" informs the driver that only the first 18 GPIOs, at |
| local offset 0 .. 17, are in use. For cases in which there might be |
| holes in the slot range, this value should be the max slot number+1. |
| gpio-reserved-ranges: |
| type: array |
| description: | |
| If not all the GPIOs at offsets 0...N-1 are usable for ngpios = <N>, then |
| this property contains an additional set of tuples which specify which GPIOs |
| are unusable. This property indicates the start and size of the GPIOs |
| that can't be used. |
| |
| For example, setting "gpio-reserved-ranges = <3 2>, <10 1>;" means that |
| GPIO offsets 3, 4, and 10 are not usable, even if ngpios = <18>. |
| gpio-line-names: |
| type: string-array |
| description: | |
| This is an array of strings defining the names of the GPIO lines |
| going out of the GPIO controller |
| |
| child-binding: |
| description: | |
| Optional GPIO hog configuration. |
| |
| Each GPIO controller may contain GPIO hog definitions. GPIO hogging is a mechanism for |
| providing automatic GPIO configuration during driver initialization when Kconfig |
| CONFIG_GPIO_HOGS is enabled. |
| |
| Each GPIO hog is represented as a child node of the GPIO controller. |
| |
| Example: |
| &gpio1 { |
| mux-hog { |
| gpio-hog; |
| gpios = <10 GPIO_ACTIVE_HIGH>, <11 GPIO_ACTIVE_HIGH>; |
| output-high; |
| }; |
| }; |
| |
| &gpio2 { |
| test-hog { |
| gpio-hog; |
| gpios = <26 GPIO_ACTIVE_HIGH>; |
| output-low; |
| line-name = "test"; |
| }; |
| }; |
| |
| properties: |
| gpio-hog: |
| type: boolean |
| required: true |
| description: | |
| Conveys this node is a GPIO hog. |
| gpios: |
| type: array |
| required: true |
| description: | |
| This is an array of GPIO specifiers (e.g. pin, flags) to be hogged. The number of array |
| entries must be an integer multiple of the number of GPIO specifier cells for the parent |
| GPIO controller. |
| input: |
| type: boolean |
| description: | |
| If this property is set, the GPIO is configured as an input. This property takes |
| precedence over the output-low and output-high properties. |
| output-low: |
| type: boolean |
| description: | |
| If this property is set, the GPIO is configured as an output set to logical low. This |
| property takes precedence over the output-high property. |
| output-high: |
| type: boolean |
| description: | |
| If this property is set, the GPIO is configured as an output set to logical high. |
| line-name: |
| type: string |
| description: | |
| Optional GPIO line name. |