Commit d648fd64 authored by Arınç ÜNAL's avatar Arınç ÜNAL Committed by Linus Walleij
Browse files

dt-bindings: pinctrl: rt305x: add proper function muxing binding



Not every function can be muxed to a group. Add proper binding which
documents which function can be muxed to a group or set of groups.

Signed-off-by: default avatarArınç ÜNAL <arinc.unal@arinc9.com>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: default avatarSergio Paracuellos <sergio.paracuellos@gmail.com>
Link: https://lore.kernel.org/r/20221231160849.40544-6-arinc.unal@arinc9.com


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent b4ac8439
Loading
Loading
Loading
Loading
+211 −25
Original line number Diff line number Diff line
@@ -29,38 +29,225 @@ patternProperties:
        description: node for pinctrl.
        $ref: pinmux-node.yaml#

        properties:
          function:
            description:
              A string containing the name of the function to mux to the group.
            anyOf:
              - description: For RT3050, RT3052 and RT3350 SoCs
                enum: [gpio, gpio i2s, gpio uartf, i2c, i2s uartf, jtag, mdio,
                       pcm gpio, pcm i2s, pcm uartf, rgmii, sdram, spi, uartf,
                       uartlite]

              - description: For RT3352 SoC
                enum: [gpio, gpio i2s, gpio uartf, i2c, i2s uartf, jtag, led,
                       lna, mdio, pa, pcm gpio, pcm i2s, pcm uartf, rgmii, spi,
                       spi_cs1, uartf, uartlite, wdg_cs1]

              - description: For RT5350 SoC
                enum: [gpio, gpio i2s, gpio uartf, i2c, i2s uartf, jtag, led,
                       pcm gpio, pcm i2s, pcm uartf, spi, spi_cs1, uartf,
                       uartlite, wdg_cs1]

          groups:
            description:
              An array of strings. Each string contains the name of a group.
            maxItems: 1

        required:
          - groups
          - function

        allOf:
          - if:
              properties:
                function:
                  const: gpio
            then:
              properties:
                groups:
            description: The pin group to select.
            enum: [
              # common
              i2c, jtag, led, mdio, rgmii, spi, spi_cs1, uartf, uartlite,
                  anyOf:
                    - description: For RT3050, RT3052 and RT3350 SoCs
                      enum: [i2c, jtag, mdio, rgmii, sdram, spi, uartf,
                             uartlite]

              # For RT3050, RT3052 and RT3350 SoCs
              sdram,
                    - description: For RT3352 SoC
                      enum: [i2c, jtag, led, lna, mdio, pa, rgmii, spi, spi_cs1,
                             uartf, uartlite]

              # For RT3352 SoC
              lna, pa
            ]
                    - description: For RT5350 SoC
                      enum: [i2c, jtag, led, spi, spi_cs1, uartf, uartlite]

          - if:
              properties:
                function:
            description: The mux function to select.
            enum: [
              # common
              gpio, gpio i2s, gpio uartf, i2c, i2s uartf, jtag, led, mdio,
              pcm gpio, pcm i2s, pcm uartf, rgmii, spi, spi_cs1, uartf,
              uartlite, wdg_cs1,
                  const: gpio i2s
            then:
              properties:
                groups:
                  enum: [uartf]

              # For RT3050, RT3052 and RT3350 SoCs
              sdram,
          - if:
              properties:
                function:
                  const: gpio uartf
            then:
              properties:
                groups:
                  enum: [uartf]

              # For RT3352 SoC
              lna, pa
            ]
          - if:
              properties:
                function:
                  const: i2c
            then:
              properties:
                groups:
                  enum: [i2c]

        required:
          - groups
          - function
          - if:
              properties:
                function:
                  const: i2s uartf
            then:
              properties:
                groups:
                  enum: [uartf]

          - if:
              properties:
                function:
                  const: jtag
            then:
              properties:
                groups:
                  enum: [jtag]

          - if:
              properties:
                function:
                  const: led
            then:
              properties:
                groups:
                  enum: [led]

          - if:
              properties:
                function:
                  const: lna
            then:
              properties:
                groups:
                  enum: [lna]

          - if:
              properties:
                function:
                  const: mdio
            then:
              properties:
                groups:
                  enum: [mdio]

          - if:
              properties:
                function:
                  const: pa
            then:
              properties:
                groups:
                  enum: [pa]

          - if:
              properties:
                function:
                  const: pcm gpio
            then:
              properties:
                groups:
                  enum: [uartf]

          - if:
              properties:
                function:
                  const: pcm i2s
            then:
              properties:
                groups:
                  enum: [uartf]

          - if:
              properties:
                function:
                  const: pcm uartf
            then:
              properties:
                groups:
                  enum: [uartf]

          - if:
              properties:
                function:
                  const: rgmii
            then:
              properties:
                groups:
                  enum: [rgmii]

          - if:
              properties:
                function:
                  const: sdram
            then:
              properties:
                groups:
                  enum: [sdram]

          - if:
              properties:
                function:
                  const: spi
            then:
              properties:
                groups:
                  enum: [spi]

          - if:
              properties:
                function:
                  const: spi_cs1
            then:
              properties:
                groups:
                  enum: [spi_cs1]

          - if:
              properties:
                function:
                  const: uartf
            then:
              properties:
                groups:
                  enum: [uartf]

          - if:
              properties:
                function:
                  const: uartlite
            then:
              properties:
                groups:
                  enum: [uartlite]

          - if:
              properties:
                function:
                  const: wdg_cs1
            then:
              properties:
                groups:
                  enum: [spi_cs1]

        additionalProperties: false

@@ -75,7 +262,6 @@ required:
additionalProperties: false

examples:
  # Pinmux controller node
  - |
    pinctrl {
      compatible = "ralink,rt305x-pinctrl";