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

dt-bindings: pinctrl: mt7620: 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>
Acked-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-3-arinc.unal@arinc9.com


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 525792d1
Loading
Loading
Loading
Loading
+597 −36
Original line number Diff line number Diff line
@@ -29,47 +29,609 @@ patternProperties:
        $ref: pinmux-node.yaml#

        properties:
          groups:
            description: The pin group to select.
            enum: [
              # common
              i2c, spi, wdt,

              # For MT7620 SoC
              ephy, mdio, nd_sd, pa, pcie, rgmii1, rgmii2, spi refclk,
              uartf, uartlite, wled,

              # For MT7628 and MT7688 SoCs
              gpio, i2s, p0led_an, p0led_kn, p1led_an, p1led_kn, p2led_an,
              p2led_kn, p3led_an, p3led_kn, p4led_an, p4led_kn, perst, pwm0,
              pwm1, refclk, sdmode, spi cs1, spis, uart0, uart1, uart2,
              wled_an, wled_kn,
            ]

          function:
            description: The mux function to select.
            enum: [
              # common
              gpio, i2c, refclk, spi,

              # For MT7620 SoC
              ephy, gpio i2s, gpio uartf, i2s uartf, mdio, nand, pa,
              pcie refclk, pcie rst, pcm gpio, pcm i2s, pcm uartf,
              rgmii1, rgmii2, sd, spi refclk, uartf, uartlite, wdt refclk,
              wdt rst, wled,
            description:
              A string containing the name of the function to mux to the group.
            anyOf:
              - description: For MT7620 SoC
                enum: [ephy, gpio, gpio i2s, gpio uartf, i2c, i2s uartf, mdio, nand, pa,
                       pcie refclk, pcie rst, pcm gpio, pcm i2s, pcm uartf, refclk,
                       rgmii1, rgmii2, sd, spi, spi refclk, uartf, uartlite, wdt refclk,
                       wdt rst, wled]

              # For MT7628 and MT7688 SoCs
              antenna, debug, i2s, jtag, p0led_an, p0led_kn,
              - description: For MT7628 and MT7688 SoCs
                enum: [antenna, debug, gpio, i2c, i2s, jtag, p0led_an, p0led_kn,
                       p1led_an, p1led_kn, p2led_an, p2led_kn, p3led_an, p3led_kn,
                       p4led_an, p4led_kn, pcie, pcm, perst, pwm, pwm0, pwm1, pwm_uart2,
              rsvd, sdxc, sdxc d5 d4, sdxc d6, sdxc d7, spi cs1,
              spis, sw_r, uart0, uart1, uart2, utif, wdt, wled_an, wled_kn, -,
            ]
                       refclk, rsvd, sdxc, sdxc d5 d4, sdxc d6, sdxc d7, spi, spi cs1,
                       spis, sw_r, uart0, uart1, uart2, utif, wdt, wled_an, wled_kn, -]

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

        required:
          - groups
          - function

        allOf:
          - if:
              properties:
                function:
                  const: antenna
            then:
              properties:
                groups:
                  enum: [i2s]

          - if:
              properties:
                function:
                  const: debug
            then:
              properties:
                groups:
                  enum: [i2c]

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

          - if:
              properties:
                function:
                  const: gpio
            then:
              properties:
                groups:
                  anyOf:
                    - description: For MT7620 SoC
                      enum: [ephy, i2c, mdio, nd_sd, pa, pcie, rgmii1, rgmii2,
                             spi, spi refclk, uartf, uartlite, wdt, wled]

                    - description: For MT7628 and MT7688 SoCs
                      enum: [gpio, i2c, i2s, p0led_an, p0led_kn, p1led_an,
                             p1led_kn, p2led_an, p2led_kn, p3led_an, p3led_kn,
                             p4led_an, p4led_kn, perst, pwm0, pwm1, refclk,
                             sdmode, spi, spi cs1, spis, uart0, uart1, uart2,
                             wdt, wled_an, wled_kn]

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

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

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

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

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

          - if:
              properties:
                function:
                  const: jtag
            then:
              properties:
                groups:
                  enum: [p0led_an, p0led_kn, p1led_an, p1led_kn, p2led_an,
                         p2led_kn, p3led_an, p3led_kn, p4led_an, p4led_kn,
                         sdmode]

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

          - if:
              properties:
                function:
                  const: nand
            then:
              properties:
                groups:
                  enum: [nd_sd]

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

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

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

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

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

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

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

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

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

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

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

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

          - if:
              properties:
                function:
                  const: pcie refclk
            then:
              properties:
                groups:
                  enum: [pcie]

          - if:
              properties:
                function:
                  const: pcie rst
            then:
              properties:
                groups:
                  enum: [pcie]

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

          - 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: perst
            then:
              properties:
                groups:
                  enum: [perst]

          - if:
              properties:
                function:
                  const: pwm
            then:
              properties:
                groups:
                  enum: [uart1, uart2]

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

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

          - if:
              properties:
                function:
                  const: pwm_uart2
            then:
              properties:
                groups:
                  enum: [spis]

          - if:
              properties:
                function:
                  const: refclk
            then:
              properties:
                groups:
                  anyOf:
                    - description: For MT7620 SoC
                      enum: [mdio]

                    - description: For MT7628 and MT7688 SoCs
                      enum: [gpio, refclk, spi cs1]

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

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

          - if:
              properties:
                function:
                  const: rsvd
            then:
              properties:
                groups:
                  enum: [p0led_an, p0led_kn, wled_an, wled_kn]

          - if:
              properties:
                function:
                  const: sd
            then:
              properties:
                groups:
                  enum: [nd_sd]

          - if:
              properties:
                function:
                  const: sdxc
            then:
              properties:
                groups:
                  enum: [sdmode]

          - if:
              properties:
                function:
                  const: sdxc d5 d4
            then:
              properties:
                groups:
                  enum: [uart2]

          - if:
              properties:
                function:
                  const: sdxc d6
            then:
              properties:
                groups:
                  enum: [pwm1]

          - if:
              properties:
                function:
                  const: sdxc d7
            then:
              properties:
                groups:
                  enum: [pwm0]

          - 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: spi refclk
            then:
              properties:
                groups:
                  enum: [spi refclk]

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

          - if:
              properties:
                function:
                  const: sw_r
            then:
              properties:
                groups:
                  enum: [uart1]

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

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

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

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

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

          - if:
              properties:
                function:
                  const: utif
            then:
              properties:
                groups:
                  enum: [p1led_an, p1led_kn, p2led_an, p2led_kn, p3led_an,
                         p3led_kn, p4led_an, p4led_kn, pwm0, pwm1, sdmode, spis]

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

          - if:
              properties:
                function:
                  const: wdt refclk
            then:
              properties:
                groups:
                  enum: [wdt]

          - if:
              properties:
                function:
                  const: wdt rst
            then:
              properties:
                groups:
                  enum: [wdt]

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

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

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

          - if:
              properties:
                function:
                  const: "-"
            then:
              properties:
                groups:
                  enum: [i2c, spi cs1, uart0]

        additionalProperties: false

    additionalProperties: false
@@ -83,7 +645,6 @@ required:
additionalProperties: false

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