blob: 29af8bdfd12730437f4f3014d91f36ad9c209300 [file] [log] [blame]
# Copyright (c) 2020 Linaro Limited
# SPDX-License-Identifier: Apache-2.0
description: |
STM32 Pin controller Node
Based on pincfg-node.yaml binding.
Note: `bias-disable` and `drive-push-pull` are default pin configurations.
They will be applied in case no `bias-foo` or `driver-bar` properties
are set.
compatible: "st,stm32-pinctrl"
include:
- name: base.yaml
- name: pincfg-node.yaml
child-binding:
property-allowlist:
- bias-disable
- bias-pull-down
- bias-pull-up
- drive-push-pull
- drive-open-drain
- output-low
- output-high
properties:
reg:
required: true
remap-pa11:
type: boolean
required: false
description: Remaps the PA11 pin to operate as PA9 pin.
Use of this property is restricted to STM32G0 SoCs.
remap-pa12:
type: boolean
required: false
description: Remaps the PA12 pin to operate as PA10 pin.
Use of this property is restricted to STM32G0 SoCs.
remap-pa11-pa12:
type: boolean
required: false
description: Remaps the PA11/PA12 pin to operate as PA9/PA10 pin.
Use of this property is restricted to STM32F070x SoCs.
child-binding:
description: |
This binding gives a base representation of the STM32 pins configration
properties:
pinmux:
required: true
type: int
description: |
Reused from https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/pinctrl/st,stm32-pinctrl.yaml
Integer array, represents gpio pin number and mux setting.
These defines are calculated as: ((port * 16 + line) << 8) | 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-common.h
Some examples of macro usage:
GPIO A9 set as alernate 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;
};
slew-rate:
required: false
type: string
default: "low-speed"
enum:
- "low-speed" # Default value.
- "medium-speed"
- "high-speed"
- "very-high-speed"
description: |
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.