# 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:
    - 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
          - output-low
          - output-high

properties:
    reg:
      required: true

    swj-cfg:
        type: string
        required: false
        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
        configration

    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 alernate with no remap
            ... {
                     pinmux = <STM32F1_PINMUX('A', 9, ALTERNATE, REMAP_NO)>;
            };
               GPIO A9 set as alernate 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:
          required: false
          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).
