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

dt-bindings: pinctrl: mediatek: mt7620: split binding



The MT7628 and MT7688 SoCs contain different pin muxing information,
therefore, should be split. This can be done now that there are compatible
strings to distinguish them from other SoCs.

Split the schema out to mediatek,mt76x8-pinctrl.yaml.

Remove mediatek,mt76x8-pinctrl from mt7620.

Signed-off-by: default avatarArınç ÜNAL <arinc.unal@arinc9.com>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20230317213011.13656-21-arinc.unal@arinc9.com


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 5c7daf4a
Loading
Loading
Loading
Loading
+9 −370
Original line number Diff line number Diff line
@@ -11,15 +11,13 @@ maintainers:
  - Sergio Paracuellos <sergio.paracuellos@gmail.com>

description: |
  MediaTek MT7620 pin controller for MT7620, MT7628 and MT7688 SoCs.
  MediaTek MT7620 pin controller for MT7620 SoC.
  The pin controller can only set the muxing of pin groups. Muxing individual
  pins is not supported. There is no pinconf support.

properties:
  compatible:
    enum:
      - ralink,mt7620-pinctrl
      - ralink,mt76x8-pinctrl
    const: ralink,mt7620-pinctrl

patternProperties:
  '-pins$':
@@ -37,19 +35,10 @@ patternProperties:
          function:
            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]

              - 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,
                       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, -]
            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]

          groups:
            description:
@@ -61,24 +50,6 @@ patternProperties:
          - 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:
@@ -95,17 +66,8 @@ patternProperties:
            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]
                  enum: [ephy, i2c, mdio, nd_sd, pa, pcie, rgmii1, rgmii2, spi,
                         spi refclk, uartf, uartlite, wdt, wled]

          - if:
              properties:
@@ -134,15 +96,6 @@ patternProperties:
                groups:
                  enum: [i2c]

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

          - if:
              properties:
                function:
@@ -152,17 +105,6 @@ patternProperties:
                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:
@@ -181,96 +123,6 @@ patternProperties:
                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:
@@ -280,15 +132,6 @@ patternProperties:
                groups:
                  enum: [pa]

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

          - if:
              properties:
                function:
@@ -307,15 +150,6 @@ patternProperties:
                groups:
                  enum: [pcie]

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

          - if:
              properties:
                function:
@@ -343,51 +177,6 @@ patternProperties:
                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:
@@ -395,13 +184,8 @@ patternProperties:
            then:
              properties:
                groups:
                  anyOf:
                    - description: For MT7620 SoC
                  enum: [mdio]

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

          - if:
              properties:
                function:
@@ -420,15 +204,6 @@ patternProperties:
                groups:
                  enum: [rgmii2]

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

          - if:
              properties:
                function:
@@ -438,42 +213,6 @@ patternProperties:
                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:
@@ -483,15 +222,6 @@ patternProperties:
                groups:
                  enum: [spi]

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

          - if:
              properties:
                function:
@@ -501,51 +231,6 @@ patternProperties:
                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:
@@ -564,25 +249,6 @@ patternProperties:
                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:
@@ -610,33 +276,6 @@ patternProperties:
                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]

allOf:
  - $ref: pinctrl.yaml#

+450 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/mediatek,mt76x8-pinctrl.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: MediaTek MT76X8 Pin Controller

maintainers:
  - Arınç ÜNAL <arinc.unal@arinc9.com>
  - Sergio Paracuellos <sergio.paracuellos@gmail.com>

description: |
  MediaTek MT76X8 pin controller for MT7628 and MT7688 SoCs.
  The pin controller can only set the muxing of pin groups. Muxing individual
  pins is not supported. There is no pinconf support.

properties:
  compatible:
    const: ralink,mt76x8-pinctrl

patternProperties:
  '-pins$':
    type: object
    additionalProperties: false

    patternProperties:
      '^(.*-)?pinmux$':
        type: object
        description: node for pinctrl.
        $ref: pinmux-node.yaml#
        additionalProperties: false

        properties:
          function:
            description:
              A string containing the name of the function to mux to the group.
            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, 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: gpio
            then:
              properties:
                groups:
                  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: i2c
            then:
              properties:
                groups:
                  enum: [i2c]

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

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

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

          - 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:
                  enum: [gpio, refclk, spi cs1]

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

          - 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: 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: 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: 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]

allOf:
  - $ref: pinctrl.yaml#

required:
  - compatible

additionalProperties: false

examples:
  - |
    pinctrl {
      compatible = "ralink,mt76x8-pinctrl";

      i2c_pins: i2c0-pins {
        pinmux {
          groups = "i2c";
          function = "i2c";
        };
      };
    };