# 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 = ; }; GPIO A9 set as analog ... { pinmux = ; }; GPIO A9 set as GPIO output high ... { pinmux = ; 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.