# 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.
