# 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:
    - name: base.yaml
    - name: pincfg-node.yaml
      child-binding:
        property-allowlist:
          - bias-disable
          - bias-pull-down
          - bias-pull-up
          - drive-push-pull
          - drive-open-drain

properties:
    reg:
      required: true

    remap-pa11:
      type: boolean
      required: false
      description: Remaps the PA11 pin to operate as PA9 pin.
        Use of this property is restricted to STM32G0 SoCs.

    remap-pa12:
      type: boolean
      required: false
      description: Remaps the PA12 pin to operate as PA10 pin.
        Use of this property is restricted to STM32G0 SoCs.

    remap-pa11-pa12:
      type: boolean
      required: false
      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

    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
            To simplify the usage, macro is available to generate "pinmux" field.
            This macro is available here:
              -include/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)>;
            };

        slew-rate:
          required: false
          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.
