st,stm32n6-pinctrl

Vendor: STMicroelectronics

Description

STM32 pin controller with "I/O synchronization"

Identical to the "regular" pin controller with "st,stm32-pinctrl" compatible,
with an additional "I/O synchronization" feature. This feature allows addition
of a programmable delay to the signal input or output path ("I/O delay"), and
synchronization of GPIO data with configuration clock edge(s) ("I/O retime").

This pin controller can be found on STM32N6 series.

Properties

Top level properties

These property descriptions apply to “st,stm32n6-pinctrl” nodes themselves. This page also describes child node properties in the following sections.

Properties not inherited from the base binding file.

Name

Type

Details

remap-pa11

boolean

Remaps the PA11 pin to operate as PA9 pin. Use of this property is restricted to STM32G0 and STM32C0 SoCs.

remap-pa12

boolean

Remaps the PA12 pin to operate as PA10 pin. Use of this property is restricted to STM32G0 and STM32C0 SoCs.

remap-pa11-pa12

boolean

Remaps the PA11/PA12 pin to operate as PA9/PA10 pin. Use of this property is restricted to STM32F070x SoCs.

Child node properties

Name

Type

Details

st,io-retime-edge

string

Clock edges on which input/output should be retimed

If this property is present, I/O retiming is enabled,
and this property selects whether the input/output data
is retimed on rising, falling or both edges of clock.

If this property is not present, I/O retiming is disabled.

Legal values: 'rising', 'falling', 'both'

st,io-delay-ps

int

Delay applied to input or output path (in picoseconds)

The default value matches hardware default, and allows to keep
the property unspecified on most pinctrl nodes which do not use
the I/O delay feature.

Legal values: 0, 300, 500, 750, 1000, 1250, 1500, 1750, 2000, 2250, 2500, 2750, 3000, 3250

st,io-delay-path

string

Direction in which the I/O delay should be applied

The default value corresponds to hardware default.

Default value: output

Legal values: 'output', 'input'

pinmux

int

Reused from
https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/pinctrl/st,stm32-pinctrl.yaml
Integer represents gpio pin number and mux setting.
Each integer encodes a port, line and alternate function.
With:
- port: The gpio port index (PA = 0, PB = 1, ..., PK = 11)
- line: The line offset within the port (PA0 = 0, PA1 = 1, ..., PA15 = 15)
- function: The function number, can be:
* 0 : Alternate Function 0
* 1 : Alternate Function 1
* 2 : Alternate Function 2
* ...
* 15 : Alternate Function 15
* 16 : Analog
* 17 : GPIO
In case selected pin function is GPIO, pin is statically configured as
a plain input/output GPIO. Default configuration is input. Output value
can be configured by adding 'ouptut-low' or 'output-high' properties
to the pin configuration.

To simplify the usage, macro is available to generate "pinmux" field.
This macro is available here:
  -include/zephyr/dt-bindings/pinctrl/stm32-pinctrl.h
Some examples of macro usage:
   GPIO A9 set as alternate function 2
... {
         pinmux = <STM32_PINMUX('A', 9, AF2)>;
};
   GPIO A9 set as analog
... {
         pinmux = <STM32_PINMUX('A', 9, ANALOG)>;
};
   GPIO A9 set as GPIO output high
... {
         pinmux = <STM32_PINMUX('A', 9, GPIO)>;
         output-high;
};

This property is required.

slew-rate

string

Pin speed. Default to low-speed. For few pins (PA11 and
PB3 depending on SoCs)hardware reset value could differ
(very-high-speed). Carefully check reference manual for these pins.

Default value: low-speed

Legal values: 'low-speed', 'medium-speed', 'high-speed', 'very-high-speed'

bias-disable

boolean

disable any pin bias

bias-pull-up

boolean

enable pull-up resistor

bias-pull-down

boolean

enable pull-down resistor

drive-push-pull

boolean

drive actively high and low

drive-open-drain

boolean

drive with open drain (hardware AND)

output-low

boolean

set the pin to output mode with low level

output-high

boolean

set the pin to output mode with high level