mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
dt-bindings: pinctrl: add bindings for MT7981 SoC
Add bindings for the MT7981 pinctrl driver. As MT7981 has most features in common with MT7986 (but has a different layout in terms on pinctrl and clocks), the existing mediatek,mt7986-pinctrl.yaml was used as an example to create a similar document covering MT7981. Signed-off-by: Daniel Golle <daniel@makrotopia.org> Reviewed-by: Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/r/3f0fd0becc338eef66caeb7244c3c432b8d1ef7a.1674693008.git.daniel@makrotopia.org Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
9421655de8
commit
d4059de433
|
|
@ -0,0 +1,475 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/mediatek,mt7981-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Mediatek MT7981 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
description:
|
||||
The MediaTek's MT7981 Pin controller is used to control SoC pins.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- mediatek,mt7981-pinctrl
|
||||
|
||||
reg:
|
||||
minItems: 9
|
||||
maxItems: 9
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: gpio
|
||||
- const: iocfg_rt
|
||||
- const: iocfg_rm
|
||||
- const: iocfg_rb
|
||||
- const: iocfg_lb
|
||||
- const: iocfg_bl
|
||||
- const: iocfg_tm
|
||||
- const: iocfg_tl
|
||||
- const: eint
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
description: >
|
||||
Number of cells in GPIO specifier. Since the generic GPIO binding is used,
|
||||
the amount of cells must be specified as 2. See the below mentioned gpio
|
||||
binding representation for description of particular cells.
|
||||
|
||||
gpio-ranges:
|
||||
minItems: 1
|
||||
maxItems: 5
|
||||
description: GPIO valid number range.
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
allOf:
|
||||
- $ref: pinctrl.yaml#
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- reg-names
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
patternProperties:
|
||||
'^.*mux.*$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
description: |
|
||||
pinmux configuration nodes.
|
||||
|
||||
The following table shows the effective values of "group", "function"
|
||||
properties and chip pinout pins
|
||||
|
||||
groups function pins (in pin#)
|
||||
---------------------------------------------------------------------
|
||||
"wa_aice1" "wa_aice" 0, 1
|
||||
"wa_aice2" "wa_aice" 0, 1
|
||||
"wm_uart_0" "uart" 0, 1
|
||||
"dfd" "dfd" 0, 1, 4, 5
|
||||
"watchdog" "watchdog" 2
|
||||
"pcie_pereset" "pcie" 3
|
||||
"jtag" "jtag" 4, 5, 6, 7, 8
|
||||
"wm_jtag_0" "jtag" 4, 5, 6, 7, 8
|
||||
"wo0_jtag_0" "jtag" 9, 10, 11, 12, 13
|
||||
"uart2_0" "uart" 4, 5, 6, 7
|
||||
"gbe_led0" "led" 8
|
||||
"pta_ext_0" "pta" 4, 5, 6
|
||||
"pwm2" "pwm" 7
|
||||
"net_wo0_uart_txd_0" "uart" 8
|
||||
"spi1_0" "spi" 4, 5, 6, 7
|
||||
"i2c0_0" "i2c" 6, 7
|
||||
"dfd_ntrst" "dfd" 8
|
||||
"wm_aice1" "wa_aice" 9, 10
|
||||
"pwm0_0" "pwm" 13
|
||||
"pwm0_1" "pwm" 15
|
||||
"pwm1_0" "pwm" 14
|
||||
"pwm1_1" "pwm" 15
|
||||
"net_wo0_uart_txd_1" "uart" 14
|
||||
"net_wo0_uart_txd_2" "uart" 15
|
||||
"gbe_led1" "led" 13
|
||||
"pcm" "pcm" 9, 10, 11, 12, 13, 25
|
||||
"watchdog1" "watchdog" 13
|
||||
"udi" "udi" 9, 10, 11, 12, 13
|
||||
"drv_vbus" "usb" 14
|
||||
"emmc_45" "flash" 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
|
||||
"snfi" "flash" 16, 17, 18, 19, 20, 21
|
||||
"spi0" "spi" 16, 17, 18, 19
|
||||
"spi0_wp_hold" "spi" 20, 21
|
||||
"spi1_1" "spi" 22, 23, 24, 25
|
||||
"spi2" "spi" 26, 27, 28, 29
|
||||
"spi2_wp_hold" "spi" 30, 31
|
||||
"uart1_0" "uart" 16, 17, 18, 19
|
||||
"uart1_1" "uart" 26, 27, 28, 29
|
||||
"uart2_1" "uart" 22, 23, 24, 25
|
||||
"pta_ext_1" "pta" 22, 23, 24
|
||||
"wm_aurt_1" "uart" 20, 21
|
||||
"wm_aurt_2" "uart" 30, 31
|
||||
"wm_jtag_1" "jtag" 20, 21, 22, 23, 24
|
||||
"wo0_jtag_1" "jtag" 25, 26, 27, 28, 29
|
||||
"wa_aice3" "wa_aice" 28, 20
|
||||
"wm_aice2" "wa_aice" 30, 31
|
||||
"i2c0_1" "i2c" 30, 31
|
||||
"u2_phy_i2c" "i2c" 30, 31
|
||||
"uart0" "uart" 32, 33
|
||||
"sgmii1_phy_i2c" "i2c" 32, 33
|
||||
"u3_phy_i2c" "i2c" 32, 33
|
||||
"sgmii0_phy_i2c" "i2c" 32, 33
|
||||
"pcie_clk" "pcie" 34
|
||||
"pcie_wake" "pcie" 35
|
||||
"i2c0_2" "i2c" 36, 37
|
||||
"smi_mdc_mdio" "eth" 36, 37
|
||||
"gbe_ext_mdc_mdio" "eth" 36, 37
|
||||
"wf0_mode1" "eth" 40, 41, 42, 43, 44, 45, 46, 47, 48,
|
||||
49, 50, 51, 52, 53, 54, 55, 56
|
||||
|
||||
"wf0_mode3" "eth" 45, 46, 47, 48, 49, 51
|
||||
"wf2g_led0" "led" 30
|
||||
"wf2g_led1" "led" 34
|
||||
"wf5g_led0" "led" 31
|
||||
"wf5g_led1" "led" 35
|
||||
"mt7531_int" "eth" 38
|
||||
"ant_sel" "ant" 14, 15, 16, 17, 18, 19, 20, 21, 22
|
||||
23, 24, 25, 34, 35
|
||||
|
||||
$ref: /schemas/pinctrl/pinmux-node.yaml
|
||||
properties:
|
||||
function:
|
||||
description:
|
||||
A string containing the name of the function to mux to the group.
|
||||
enum: [wa_aice, dfd, jtag, pta, pcm, udi, usb, ant, eth, i2c, led,
|
||||
pwm, spi, uart, watchdog, flash, pcie]
|
||||
groups:
|
||||
description:
|
||||
An array of strings. Each string contains the name of a group.
|
||||
|
||||
required:
|
||||
- function
|
||||
- groups
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: wa_aice
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [wa_aice1, wa_aice2, wm_aice1_1, wa_aice3, wm_aice1_2]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: dfd
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [dfd, dfd_ntrst]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: jtag
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [jtag, wm_jtag_0, wo0_jtag_0, wo0_jtag_1, wm_jtag_1]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: pta
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [pta_ext_0, pta_ext_1]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: pcm
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [pcm]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: udi
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [udi]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: usb
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [drv_vbus]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: ant
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [ant_sel]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: eth
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [smi_mdc_mdio, gbe_ext_mdc_mdio, wf0_mode1, wf0_mode3,
|
||||
mt7531_int]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: i2c
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [i2c0_0, i2c0_1, u2_phy_i2c, sgmii1_phy_i2c, u3_phy_i2c,
|
||||
sgmii0_phy_i2c, i2c0_2]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: led
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [gbe_led0, gbe_led1, wf2g_led0, wf2g_led1, wf5g_led0, wf5g_led1]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: pwm
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
items:
|
||||
enum: [pwm2, pwm0_0, pwm0_1, pwm1_0, pwm1_1]
|
||||
maxItems: 3
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: spi
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
items:
|
||||
enum: [spi1_0, spi0, spi0_wp_hold, spi1_1, spi2, spi2_wp_hold]
|
||||
maxItems: 4
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: uart
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
items:
|
||||
enum: [wm_uart_0, uart2_0, net_wo0_uart_txd_0,
|
||||
net_wo0_uart_txd_1, net_wo0_uart_txd_2, uart1_0,
|
||||
uart1_1, uart2_1, wm_aurt_1, wm_aurt_2, uart0]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: watchdog
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [watchdog]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: flash
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
items:
|
||||
enum: [emmc_45, snfi]
|
||||
maxItems: 1
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: pcie
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
items:
|
||||
enum: [pcie_clk, pcie_wake, pcie_pereset]
|
||||
maxItems: 3
|
||||
|
||||
'^.*conf.*$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
description: pinconf configuration nodes.
|
||||
$ref: /schemas/pinctrl/pincfg-node.yaml
|
||||
|
||||
properties:
|
||||
pins:
|
||||
description:
|
||||
An array of strings. Each string contains the name of a pin.
|
||||
items:
|
||||
enum: [GPIO_WPS, GPIO_RESET, SYS_WATCHDOG, PCIE_PERESET_N,
|
||||
JTAG_JTDO, JTAG_JTDI, JTAG_JTMS, JTAG_JTCLK, JTAG_JTRST_N,
|
||||
WO_JTAG_JTDO, WO_JTAG_JTDI, WO_JTAG_JTMS, WO_JTAG_JTCLK,
|
||||
WO_JTAG_JTRST_N, USB_VBUS, PWM0, SPI0_CLK, SPI0_MOSI,
|
||||
SPI0_MISO, SPI0_CS, SPI0_HOLD, SPI0_WP, SPI1_CLK, SPI1_MOSI,
|
||||
SPI1_MISO, SPI1_CS, SPI2_CLK, SPI2_MOSI, SPI2_MISO, SPI2_CS,
|
||||
SPI2_HOLD, SPI2_WP, UART0_RXD, UART0_TXD, PCIE_CLK_REQ,
|
||||
PCIE_WAKE_N, SMI_MDC, SMI_MDIO, GBE_INT, GBE_RESET,
|
||||
WF_DIG_RESETB, WF_CBA_RESETB, WF_XO_REQ, WF_TOP_CLK,
|
||||
WF_TOP_DATA, WF_HB1, WF_HB2, WF_HB3, WF_HB4, WF_HB0,
|
||||
WF_HB0_B, WF_HB5, WF_HB6, WF_HB7, WF_HB8, WF_HB9, WF_HB10]
|
||||
maxItems: 57
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-up:
|
||||
oneOf:
|
||||
- type: boolean
|
||||
description: normal pull up.
|
||||
- enum: [100, 101, 102, 103]
|
||||
description: >
|
||||
PUPD/R1/R0 pull down type. See MTK_PUPD_SET_R1R0 defines in
|
||||
dt-bindings/pinctrl/mt65xx.h.
|
||||
|
||||
bias-pull-down:
|
||||
oneOf:
|
||||
- type: boolean
|
||||
description: normal pull down.
|
||||
- enum: [100, 101, 102, 103]
|
||||
description: >
|
||||
PUPD/R1/R0 pull down type. See MTK_PUPD_SET_R1R0 defines in
|
||||
dt-bindings/pinctrl/mt65xx.h.
|
||||
|
||||
input-enable: true
|
||||
|
||||
input-disable: true
|
||||
|
||||
output-enable: true
|
||||
|
||||
output-low: true
|
||||
|
||||
output-high: true
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
drive-strength:
|
||||
enum: [2, 4, 6, 8, 10, 12, 14, 16]
|
||||
|
||||
mediatek,pull-up-adv:
|
||||
description: |
|
||||
Valid arguments for 'mediatek,pull-up-adv' are '0', '1', '2', '3'
|
||||
Pull up setings for 2 pull resistors, R0 and R1. Valid arguments
|
||||
are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
mediatek,pull-down-adv:
|
||||
description: |
|
||||
Valid arguments for 'mediatek,pull-up-adv' are '0', '1', '2', '3'
|
||||
Pull down setings for 2 pull resistors, R0 and R1. Valid arguments
|
||||
are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
required:
|
||||
- pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/pinctrl/mt65xx.h>
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
pio: pinctrl@11d00000 {
|
||||
compatible = "mediatek,mt7981-pinctrl";
|
||||
reg = <0 0x11d00000 0 0x1000>,
|
||||
<0 0x11c00000 0 0x1000>,
|
||||
<0 0x11c10000 0 0x1000>,
|
||||
<0 0x11d20000 0 0x1000>,
|
||||
<0 0x11e00000 0 0x1000>,
|
||||
<0 0x11e20000 0 0x1000>,
|
||||
<0 0x11f00000 0 0x1000>,
|
||||
<0 0x11f10000 0 0x1000>,
|
||||
<0 0x1000b000 0 0x1000>;
|
||||
reg-names = "gpio", "iocfg_rt", "iocfg_rm",
|
||||
"iocfg_rb", "iocfg_lb", "iocfg_bl",
|
||||
"iocfg_tm", "iocfg_tl", "eint";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&pio 0 0 56>;
|
||||
interrupt-controller;
|
||||
interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&gic>;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
mdio_pins: mdio-pins {
|
||||
mux {
|
||||
function = "eth";
|
||||
groups = "smi_mdc_mdio";
|
||||
};
|
||||
};
|
||||
|
||||
spi0_flash_pins: spi0-pins {
|
||||
mux {
|
||||
function = "spi";
|
||||
groups = "spi0", "spi0_wp_hold";
|
||||
};
|
||||
|
||||
conf-pu {
|
||||
pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
|
||||
drive-strength = <MTK_DRIVE_8mA>;
|
||||
bias-pull-up = <MTK_PUPD_SET_R1R0_11>;
|
||||
};
|
||||
|
||||
conf-pd {
|
||||
pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
|
||||
drive-strength = <MTK_DRIVE_8mA>;
|
||||
bias-pull-down = <MTK_PUPD_SET_R1R0_11>;
|
||||
};
|
||||
};
|
||||
|
||||
pcie_pins: pcie-pins {
|
||||
mux {
|
||||
function = "pcie";
|
||||
groups = "pcie_clk", "pcie_wake", "pcie_pereset";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user