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