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

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

Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Link: https://lore.kernel.org/r/20221231160849.40544-3-arinc.unal@arinc9.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Arınç ÜNAL
2022-12-31 19:08:45 +03:00
committed by Linus Walleij
parent 525792d1d2
commit 4e5410668a

View File

@@ -29,47 +29,609 @@ patternProperties:
$ref: pinmux-node.yaml#
properties:
groups:
description: The pin group to select.
enum: [
# common
i2c, spi, wdt,
# For MT7620 SoC
ephy, mdio, nd_sd, pa, pcie, rgmii1, rgmii2, spi refclk,
uartf, uartlite, wled,
# For MT7628 and MT7688 SoCs
gpio, i2s, p0led_an, p0led_kn, p1led_an, p1led_kn, p2led_an,
p2led_kn, p3led_an, p3led_kn, p4led_an, p4led_kn, perst, pwm0,
pwm1, refclk, sdmode, spi cs1, spis, uart0, uart1, uart2,
wled_an, wled_kn,
]
function:
description: The mux function to select.
enum: [
# common
gpio, i2c, refclk, spi,
description:
A string containing the name of the function to mux to the group.
anyOf:
- description: For MT7620 SoC
enum: [ephy, gpio, gpio i2s, gpio uartf, i2c, i2s uartf, mdio, nand, pa,
pcie refclk, pcie rst, pcm gpio, pcm i2s, pcm uartf, refclk,
rgmii1, rgmii2, sd, spi, spi refclk, uartf, uartlite, wdt refclk,
wdt rst, wled]
# For MT7620 SoC
ephy, gpio i2s, gpio uartf, i2s uartf, mdio, nand, pa,
pcie refclk, pcie rst, pcm gpio, pcm i2s, pcm uartf,
rgmii1, rgmii2, sd, spi refclk, uartf, uartlite, wdt refclk,
wdt rst, wled,
- description: 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, -]
# For MT7628 and MT7688 SoCs
antenna, debug, i2s, jtag, p0led_an, p0led_kn,
p1led_an, p1led_kn, p2led_an, p2led_kn, p3led_an, p3led_kn,
p4led_an, p4led_kn, pcie, pcm, perst, pwm, pwm0, pwm1, pwm_uart2,
rsvd, sdxc, sdxc d5 d4, sdxc d6, sdxc d7, spi cs1,
spis, sw_r, uart0, uart1, uart2, utif, wdt, wled_an, wled_kn, -,
]
groups:
description:
An array of strings. Each string contains the name of a group.
maxItems: 1
required:
- groups
- function
allOf:
- if:
properties:
function:
const: antenna
then:
properties:
groups:
enum: [i2s]
- if:
properties:
function:
const: debug
then:
properties:
groups:
enum: [i2c]
- if:
properties:
function:
const: ephy
then:
properties:
groups:
enum: [ephy]
- if:
properties:
function:
const: gpio
then:
properties:
groups:
anyOf:
- description: For MT7620 SoC
enum: [ephy, i2c, mdio, nd_sd, pa, pcie, rgmii1, rgmii2,
spi, spi refclk, uartf, uartlite, wdt, wled]
- description: For MT7628 and MT7688 SoCs
enum: [gpio, i2c, i2s, p0led_an, p0led_kn, p1led_an,
p1led_kn, p2led_an, p2led_kn, p3led_an, p3led_kn,
p4led_an, p4led_kn, perst, pwm0, pwm1, refclk,
sdmode, spi, spi cs1, spis, uart0, uart1, uart2,
wdt, wled_an, wled_kn]
- if:
properties:
function:
const: gpio i2s
then:
properties:
groups:
enum: [uartf]
- if:
properties:
function:
const: gpio uartf
then:
properties:
groups:
enum: [uartf]
- if:
properties:
function:
const: i2c
then:
properties:
groups:
enum: [i2c]
- if:
properties:
function:
const: i2s
then:
properties:
groups:
enum: [i2s]
- if:
properties:
function:
const: i2s uartf
then:
properties:
groups:
enum: [uartf]
- if:
properties:
function:
const: jtag
then:
properties:
groups:
enum: [p0led_an, p0led_kn, p1led_an, p1led_kn, p2led_an,
p2led_kn, p3led_an, p3led_kn, p4led_an, p4led_kn,
sdmode]
- if:
properties:
function:
const: mdio
then:
properties:
groups:
enum: [mdio]
- if:
properties:
function:
const: nand
then:
properties:
groups:
enum: [nd_sd]
- if:
properties:
function:
const: p0led_an
then:
properties:
groups:
enum: [p0led_an]
- if:
properties:
function:
const: p0led_kn
then:
properties:
groups:
enum: [p0led_kn]
- if:
properties:
function:
const: p1led_an
then:
properties:
groups:
enum: [p1led_an]
- if:
properties:
function:
const: p1led_kn
then:
properties:
groups:
enum: [p1led_kn]
- if:
properties:
function:
const: p2led_an
then:
properties:
groups:
enum: [p2led_an]
- if:
properties:
function:
const: p2led_kn
then:
properties:
groups:
enum: [p2led_kn]
- if:
properties:
function:
const: p3led_an
then:
properties:
groups:
enum: [p3led_an]
- if:
properties:
function:
const: p3led_kn
then:
properties:
groups:
enum: [p3led_kn]
- if:
properties:
function:
const: p4led_an
then:
properties:
groups:
enum: [p4led_an]
- if:
properties:
function:
const: p4led_kn
then:
properties:
groups:
enum: [p4led_kn]
- if:
properties:
function:
const: pa
then:
properties:
groups:
enum: [pa]
- if:
properties:
function:
const: pcie
then:
properties:
groups:
enum: [gpio]
- if:
properties:
function:
const: pcie refclk
then:
properties:
groups:
enum: [pcie]
- if:
properties:
function:
const: pcie rst
then:
properties:
groups:
enum: [pcie]
- if:
properties:
function:
const: pcm
then:
properties:
groups:
enum: [i2s]
- if:
properties:
function:
const: pcm gpio
then:
properties:
groups:
enum: [uartf]
- if:
properties:
function:
const: pcm i2s
then:
properties:
groups:
enum: [uartf]
- if:
properties:
function:
const: pcm uartf
then:
properties:
groups:
enum: [uartf]
- if:
properties:
function:
const: perst
then:
properties:
groups:
enum: [perst]
- if:
properties:
function:
const: pwm
then:
properties:
groups:
enum: [uart1, uart2]
- if:
properties:
function:
const: pwm0
then:
properties:
groups:
enum: [pwm0]
- if:
properties:
function:
const: pwm1
then:
properties:
groups:
enum: [pwm1]
- if:
properties:
function:
const: pwm_uart2
then:
properties:
groups:
enum: [spis]
- if:
properties:
function:
const: refclk
then:
properties:
groups:
anyOf:
- description: For MT7620 SoC
enum: [mdio]
- description: For MT7628 and MT7688 SoCs
enum: [gpio, refclk, spi cs1]
- if:
properties:
function:
const: rgmii1
then:
properties:
groups:
enum: [rgmii1]
- if:
properties:
function:
const: rgmii2
then:
properties:
groups:
enum: [rgmii2]
- if:
properties:
function:
const: rsvd
then:
properties:
groups:
enum: [p0led_an, p0led_kn, wled_an, wled_kn]
- if:
properties:
function:
const: sd
then:
properties:
groups:
enum: [nd_sd]
- if:
properties:
function:
const: sdxc
then:
properties:
groups:
enum: [sdmode]
- if:
properties:
function:
const: sdxc d5 d4
then:
properties:
groups:
enum: [uart2]
- if:
properties:
function:
const: sdxc d6
then:
properties:
groups:
enum: [pwm1]
- if:
properties:
function:
const: sdxc d7
then:
properties:
groups:
enum: [pwm0]
- if:
properties:
function:
const: spi
then:
properties:
groups:
enum: [spi]
- if:
properties:
function:
const: spi cs1
then:
properties:
groups:
enum: [spi cs1]
- if:
properties:
function:
const: spi refclk
then:
properties:
groups:
enum: [spi refclk]
- if:
properties:
function:
const: spis
then:
properties:
groups:
enum: [spis]
- if:
properties:
function:
const: sw_r
then:
properties:
groups:
enum: [uart1]
- if:
properties:
function:
const: uart0
then:
properties:
groups:
enum: [uart0]
- if:
properties:
function:
const: uart1
then:
properties:
groups:
enum: [uart1]
- if:
properties:
function:
const: uart2
then:
properties:
groups:
enum: [uart2]
- if:
properties:
function:
const: uartf
then:
properties:
groups:
enum: [uartf]
- if:
properties:
function:
const: uartlite
then:
properties:
groups:
enum: [uartlite]
- if:
properties:
function:
const: utif
then:
properties:
groups:
enum: [p1led_an, p1led_kn, p2led_an, p2led_kn, p3led_an,
p3led_kn, p4led_an, p4led_kn, pwm0, pwm1, sdmode, spis]
- if:
properties:
function:
const: wdt
then:
properties:
groups:
enum: [wdt]
- if:
properties:
function:
const: wdt refclk
then:
properties:
groups:
enum: [wdt]
- if:
properties:
function:
const: wdt rst
then:
properties:
groups:
enum: [wdt]
- if:
properties:
function:
const: wled
then:
properties:
groups:
enum: [wled]
- if:
properties:
function:
const: wled_an
then:
properties:
groups:
enum: [wled_an]
- if:
properties:
function:
const: wled_kn
then:
properties:
groups:
enum: [wled_kn]
- if:
properties:
function:
const: "-"
then:
properties:
groups:
enum: [i2c, spi cs1, uart0]
additionalProperties: false
additionalProperties: false
@@ -83,7 +645,6 @@ required:
additionalProperties: false
examples:
# Pinmux controller node
- |
pinctrl {
compatible = "ralink,mt7620-pinctrl";