116 lines
3.8 KiB
YAML
116 lines
3.8 KiB
YAML
# Copyright (c) 2020 Linaro Limited
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
description: |
|
|
STM32F1 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,stm32f1-pinctrl"
|
|
|
|
include: base.yaml
|
|
|
|
properties:
|
|
reg:
|
|
required: true
|
|
|
|
swj-cfg:
|
|
type: string
|
|
default: "full" # reset state
|
|
enum:
|
|
- "full"
|
|
- "no-njtrst"
|
|
- "jtag-disable"
|
|
- "disable"
|
|
description: |
|
|
Configures number of pins assigned to the SWJ debug port.
|
|
|
|
* full - Full SWJ (JTAG-DP + SW-DP).
|
|
* no-njtrst - Full SWJ (JTAG-DP + SW-DP) but without NJTRST.
|
|
Releases: PB4.
|
|
* jtag-disable - JTAG-DP Disabled and SW-DP Enabled.
|
|
Releases: PA15 PB3 PB4.
|
|
* disable - JTAG-DP Disabled and SW-DP Disabled.
|
|
Releases: PA13 PA14 PA15 PB3 PB4.
|
|
|
|
If absent, then Full SWJ (JTAG-DP + SW-DP) is used (reset state).
|
|
|
|
child-binding:
|
|
description: |
|
|
This binding gives a base representation of the STM32F1 pins
|
|
configuration
|
|
|
|
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: |
|
|
Adapted 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 << 6) | remap)
|
|
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 configuration mode, can be:
|
|
* 0 : Alternate function output
|
|
* 1 : Input
|
|
* 2 : Analog
|
|
* 3 : GPIO output
|
|
In case selected pin function is GPIO output, pin is statically configured as
|
|
a plain output GPIO, which configuration can be set by adding 'ouptut-low' or
|
|
'output-high' properties to the pinctrl configuration. Default is output-low.
|
|
- remap: The pin remapping configuration. It allows to assign the pin
|
|
function to a different peripheral. Remain configuration can be:
|
|
* 0 : No remap
|
|
* 1 : Partial remap 1
|
|
* 2 : Partial remap 2
|
|
* 3 : Partial remap 3
|
|
* 4 : Full remap
|
|
To simplify the usage, macro is available to generate "pinmux" field.
|
|
This macro is available here:
|
|
-include/zephyr/dt-bindings/pinctrl/stm32f1-pinctrl.h
|
|
Some examples of macro usage:
|
|
GPIO A9 set as alternate with no remap
|
|
... {
|
|
pinmux = <STM32F1_PINMUX('A', 9, ALTERNATE, REMAP_NO)>;
|
|
};
|
|
GPIO A9 set as alternate with full remap
|
|
... {
|
|
pinmux = <STM32F1_PINMUX('A', 9, ALTERNATE, REMAP_FULL)>;
|
|
};
|
|
GPIO A9 set as input
|
|
... {
|
|
pinmux = <STM32F1_PINMUX('A', 9, GPIO_IN, REMAP_NO)>;
|
|
};
|
|
GPIO A9 set as output-high
|
|
... {
|
|
pinmux = <STM32F1_PINMUX('A', 9, GPIO_OUT, REMAP_NO)>;
|
|
output-high;
|
|
};
|
|
|
|
slew-rate:
|
|
type: string
|
|
default: "max-speed-10mhz"
|
|
enum:
|
|
- "max-speed-10mhz" # Default
|
|
- "max-speed-2mhz"
|
|
- "max-speed-50mhz"
|
|
description: |
|
|
Pin output mode, maximum achievable speed. Only applies to
|
|
output mode (alternate).
|