103 lines
3.5 KiB
YAML
103 lines
3.5 KiB
YAML
# 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.
|