105 lines
3.3 KiB
YAML
105 lines
3.3 KiB
YAML
# 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: base.yaml
|
|
|
|
properties:
|
|
reg:
|
|
required: true
|
|
|
|
remap-pa11:
|
|
type: boolean
|
|
description: Remaps the PA11 pin to operate as PA9 pin.
|
|
Use of this property is restricted to STM32G0 SoCs.
|
|
|
|
remap-pa12:
|
|
type: boolean
|
|
description: Remaps the PA12 pin to operate as PA10 pin.
|
|
Use of this property is restricted to STM32G0 SoCs.
|
|
|
|
remap-pa11-pa12:
|
|
type: boolean
|
|
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
|
|
|
|
include:
|
|
- name: pincfg-node.yaml
|
|
property-allowlist:
|
|
- bias-disable
|
|
- bias-pull-down
|
|
- bias-pull-up
|
|
- drive-push-pull
|
|
- drive-open-drain
|
|
- output-low
|
|
- output-high
|
|
|
|
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:
|
|
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.
|