gpio-mmio-latch

Description

Memory-mapped latch GPIO controller

GPIO controller backed by a memory-mapped output latch register.

Each GPIO line corresponds to one bit in the latch register. Writing a bit
drives the associated output and the value remains latched until another
write updates it. The hardware is output-only and may not provide a readable
register, so the driver keeps a software shadow of the last output value to
implement GPIO masked writes, set, clear, toggle, and readback operations.

Examples

gpio_latch0: gpio@40000000 {
    compatible = "gpio-mmio-latch";
    reg = <0x40000000 0x4>;
    gpio-controller;
    #gpio-cells = <2>;
    ngpios = <8>;
    initial-output = <0x5a>;
};

Properties

Top level properties

These property descriptions apply to “gpio-mmio-latch” nodes themselves. This page also describes child node properties in the following sections.

Properties not inherited from the base binding file.

Name

Type

Details

ngpios

int

Number of usable GPIO lines exposed by this latch port.
Must not exceed the register width in bits.

This property is required.

Default value: 32

initial-output

int

Initial shadow/output value written to the latch during driver init.
The default writes 0 to the latch so all output bits start cleared.
Override this property if the board requires a different latch output
pattern during initialization.

Default value: 0

#gpio-cells

int

Number of items to expect in a GPIO specifier

This property is required.

Constant value: 2

gpio-controller

boolean

Convey's this node is a GPIO controller

This property is required.

gpio-reserved-ranges

array

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

string-array

This is an array of strings defining the names of the GPIO lines
going out of the GPIO controller

Child node properties

Name

Type

Details

gpio-hog

boolean

Conveys this node is a GPIO hog.

This property is required.

gpios

array

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.

This property is required.

input

boolean

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

boolean

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

boolean

If this property is set, the GPIO is configured as an output set to logical high.

line-name

string

Optional GPIO line name.

Specifier cell names

  • gpio cells: pin, flags