diff mbox series

[RFC,10/16] dt-bindings: pinctrl: mediatek: mt7620: split binding

Message ID 20230222183932.33267-11-arinc.unal@arinc9.com (mailing list archive)
State Superseded
Headers show
Series pinctrl: ralink: fix ABI, improve driver, move to mediatek, improve dt-bindings | expand

Commit Message

Arınç ÜNAL Feb. 22, 2023, 6:39 p.m. UTC
From: Arınç ÜNAL <arinc.unal@arinc9.com>

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.

Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
---
 .../pinctrl/mediatek,mt7620-pinctrl.yaml      | 375 +--------------
 .../pinctrl/mediatek,mt76x8-pinctrl.yaml      | 454 ++++++++++++++++++
 2 files changed, 462 insertions(+), 367 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml

Comments

Rob Herring Feb. 27, 2023, 6:21 p.m. UTC | #1
On Wed, Feb 22, 2023 at 09:39:26PM +0300, arinc9.unal@gmail.com wrote:
> From: Arınç ÜNAL <arinc.unal@arinc9.com>
> 
> 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.
> 
> Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
> ---
>  .../pinctrl/mediatek,mt7620-pinctrl.yaml      | 375 +--------------
>  .../pinctrl/mediatek,mt76x8-pinctrl.yaml      | 454 ++++++++++++++++++
>  2 files changed, 462 insertions(+), 367 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml
> 
> diff --git a/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml
> index 3bf58da8a394..ea4a1194fbc4 100644
> --- a/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml
> +++ b/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml
> @@ -11,7 +11,7 @@ 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.
>  
> @@ -35,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:
> @@ -59,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:
> @@ -93,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:
> @@ -132,15 +96,6 @@ patternProperties:
>                  groups:
>                    enum: [i2c]
>  
> -          - if:
> -              properties:
> -                function:
> -                  const: i2s
> -            then:
> -              properties:
> -                groups:
> -                  enum: [i2s]
> -
>            - if:
>                properties:
>                  function:
> @@ -150,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:
> @@ -179,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:
> @@ -278,15 +132,6 @@ patternProperties:
>                  groups:
>                    enum: [pa]
>  
> -          - if:
> -              properties:
> -                function:
> -                  const: pcie
> -            then:
> -              properties:
> -                groups:
> -                  enum: [gpio]
> -
>            - if:
>                properties:
>                  function:
> @@ -305,15 +150,6 @@ patternProperties:
>                  groups:
>                    enum: [pcie]
>  
> -          - if:
> -              properties:
> -                function:
> -                  const: pcm
> -            then:
> -              properties:
> -                groups:
> -                  enum: [i2s]
> -
>            - if:
>                properties:
>                  function:
> @@ -341,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:
> @@ -393,12 +184,7 @@ patternProperties:
>              then:
>                properties:
>                  groups:
> -                  anyOf:
> -                    - description: For MT7620 SoC
> -                      enum: [mdio]
> -
> -                    - description: For MT7628 and MT7688 SoCs
> -                      enum: [gpio, refclk, spi cs1]
> +                  enum: [mdio]
>  
>            - if:
>                properties:
> @@ -418,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:
> @@ -436,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:
> @@ -481,15 +222,6 @@ patternProperties:
>                  groups:
>                    enum: [spi]
>  
> -          - if:
> -              properties:
> -                function:
> -                  const: spi cs1
> -            then:
> -              properties:
> -                groups:
> -                  enum: [spi cs1]
> -
>            - if:
>                properties:
>                  function:
> @@ -499,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:
> @@ -562,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:
> @@ -608,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]
> -
>          additionalProperties: false
>  
>      additionalProperties: false
> diff --git a/Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml
> new file mode 100644
> index 000000000000..c818c8947866
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml
> @@ -0,0 +1,454 @@
> +# 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:
> +    enum:
> +      - mediatek,mt76x8-pinctrl

We generally don't do wildcards in compatible strings. Are these 2 SoCs 
really 'the same'? 

> +      - ralink,mt7620-pinctrl

Huh? Doesn't this conflict with the mt7620 schema?

> +      - ralink,rt2880-pinmux
> +
> +patternProperties:
> +  '-pins$':
> +    type: object
> +    patternProperties:
> +      '^(.*-)?pinmux$':
> +        type: object
> +        description: node for pinctrl.
> +        $ref: pinmux-node.yaml#
> +
> +        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]
> +

> +        additionalProperties: false
> +
> +    additionalProperties: false

Move these above 'properties'. It's easier to read than after a long 
indented section.

> +
> +allOf:
> +  - $ref: "pinctrl.yaml#"

Drop quotes.

Rob
Arınç ÜNAL Feb. 28, 2023, 7:38 p.m. UTC | #2
On 27/02/2023 21:21, Rob Herring wrote:
> On Wed, Feb 22, 2023 at 09:39:26PM +0300, arinc9.unal@gmail.com wrote:
>> From: Arınç ÜNAL <arinc.unal@arinc9.com>
>>
>> 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.
>>
>> Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
>> ---
>>   .../pinctrl/mediatek,mt7620-pinctrl.yaml      | 375 +--------------
>>   .../pinctrl/mediatek,mt76x8-pinctrl.yaml      | 454 ++++++++++++++++++
>>   2 files changed, 462 insertions(+), 367 deletions(-)
>>   create mode 100644 Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml
>> index 3bf58da8a394..ea4a1194fbc4 100644
>> --- a/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml
>> +++ b/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml
>> @@ -11,7 +11,7 @@ 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.
>>   
>> @@ -35,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:
>> @@ -59,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:
>> @@ -93,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:
>> @@ -132,15 +96,6 @@ patternProperties:
>>                   groups:
>>                     enum: [i2c]
>>   
>> -          - if:
>> -              properties:
>> -                function:
>> -                  const: i2s
>> -            then:
>> -              properties:
>> -                groups:
>> -                  enum: [i2s]
>> -
>>             - if:
>>                 properties:
>>                   function:
>> @@ -150,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:
>> @@ -179,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:
>> @@ -278,15 +132,6 @@ patternProperties:
>>                   groups:
>>                     enum: [pa]
>>   
>> -          - if:
>> -              properties:
>> -                function:
>> -                  const: pcie
>> -            then:
>> -              properties:
>> -                groups:
>> -                  enum: [gpio]
>> -
>>             - if:
>>                 properties:
>>                   function:
>> @@ -305,15 +150,6 @@ patternProperties:
>>                   groups:
>>                     enum: [pcie]
>>   
>> -          - if:
>> -              properties:
>> -                function:
>> -                  const: pcm
>> -            then:
>> -              properties:
>> -                groups:
>> -                  enum: [i2s]
>> -
>>             - if:
>>                 properties:
>>                   function:
>> @@ -341,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:
>> @@ -393,12 +184,7 @@ patternProperties:
>>               then:
>>                 properties:
>>                   groups:
>> -                  anyOf:
>> -                    - description: For MT7620 SoC
>> -                      enum: [mdio]
>> -
>> -                    - description: For MT7628 and MT7688 SoCs
>> -                      enum: [gpio, refclk, spi cs1]
>> +                  enum: [mdio]
>>   
>>             - if:
>>                 properties:
>> @@ -418,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:
>> @@ -436,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:
>> @@ -481,15 +222,6 @@ patternProperties:
>>                   groups:
>>                     enum: [spi]
>>   
>> -          - if:
>> -              properties:
>> -                function:
>> -                  const: spi cs1
>> -            then:
>> -              properties:
>> -                groups:
>> -                  enum: [spi cs1]
>> -
>>             - if:
>>                 properties:
>>                   function:
>> @@ -499,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:
>> @@ -562,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:
>> @@ -608,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]
>> -
>>           additionalProperties: false
>>   
>>       additionalProperties: false
>> diff --git a/Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml
>> new file mode 100644
>> index 000000000000..c818c8947866
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml
>> @@ -0,0 +1,454 @@
>> +# 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:
>> +    enum:
>> +      - mediatek,mt76x8-pinctrl
> 
> We generally don't do wildcards in compatible strings. Are these 2 SoCs
> really 'the same'?

They are very similar SoCs which have got the same pin configuration. 
Just like the RT305X SoCs.

> 
>> +      - ralink,mt7620-pinctrl
> 
> Huh? Doesn't this conflict with the mt7620 schema?

It does, this is what I asked to you and Krzysztof on the composed mail 
for the patch series.

> 
>> +      - ralink,rt2880-pinmux
>> +
>> +patternProperties:
>> +  '-pins$':
>> +    type: object
>> +    patternProperties:
>> +      '^(.*-)?pinmux$':
>> +        type: object
>> +        description: node for pinctrl.
>> +        $ref: pinmux-node.yaml#
>> +
>> +        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]
>> +
> 
>> +        additionalProperties: false
>> +
>> +    additionalProperties: false
> 
> Move these above 'properties'. It's easier to read than after a long
> indented section.
> 
>> +
>> +allOf:
>> +  - $ref: "pinctrl.yaml#"
> 
> Drop quotes.

Will do.

Arınç
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml
index 3bf58da8a394..ea4a1194fbc4 100644
--- a/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml
+++ b/Documentation/devicetree/bindings/pinctrl/mediatek,mt7620-pinctrl.yaml
@@ -11,7 +11,7 @@  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.
 
@@ -35,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:
@@ -59,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:
@@ -93,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:
@@ -132,15 +96,6 @@  patternProperties:
                 groups:
                   enum: [i2c]
 
-          - if:
-              properties:
-                function:
-                  const: i2s
-            then:
-              properties:
-                groups:
-                  enum: [i2s]
-
           - if:
               properties:
                 function:
@@ -150,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:
@@ -179,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:
@@ -278,15 +132,6 @@  patternProperties:
                 groups:
                   enum: [pa]
 
-          - if:
-              properties:
-                function:
-                  const: pcie
-            then:
-              properties:
-                groups:
-                  enum: [gpio]
-
           - if:
               properties:
                 function:
@@ -305,15 +150,6 @@  patternProperties:
                 groups:
                   enum: [pcie]
 
-          - if:
-              properties:
-                function:
-                  const: pcm
-            then:
-              properties:
-                groups:
-                  enum: [i2s]
-
           - if:
               properties:
                 function:
@@ -341,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:
@@ -393,12 +184,7 @@  patternProperties:
             then:
               properties:
                 groups:
-                  anyOf:
-                    - description: For MT7620 SoC
-                      enum: [mdio]
-
-                    - description: For MT7628 and MT7688 SoCs
-                      enum: [gpio, refclk, spi cs1]
+                  enum: [mdio]
 
           - if:
               properties:
@@ -418,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:
@@ -436,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:
@@ -481,15 +222,6 @@  patternProperties:
                 groups:
                   enum: [spi]
 
-          - if:
-              properties:
-                function:
-                  const: spi cs1
-            then:
-              properties:
-                groups:
-                  enum: [spi cs1]
-
           - if:
               properties:
                 function:
@@ -499,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:
@@ -562,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:
@@ -608,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]
-
         additionalProperties: false
 
     additionalProperties: false
diff --git a/Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml
new file mode 100644
index 000000000000..c818c8947866
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/mediatek,mt76x8-pinctrl.yaml
@@ -0,0 +1,454 @@ 
+# 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:
+    enum:
+      - mediatek,mt76x8-pinctrl
+      - ralink,mt7620-pinctrl
+      - ralink,rt2880-pinmux
+
+patternProperties:
+  '-pins$':
+    type: object
+    patternProperties:
+      '^(.*-)?pinmux$':
+        type: object
+        description: node for pinctrl.
+        $ref: pinmux-node.yaml#
+
+        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]
+
+        additionalProperties: false
+
+    additionalProperties: false
+
+allOf:
+  - $ref: "pinctrl.yaml#"
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    pinctrl {
+      compatible = "mediatek,mt76x8-pinctrl";
+
+      i2c_pins: i2c0-pins {
+        pinmux {
+          groups = "i2c";
+          function = "i2c";
+        };
+      };
+    };