mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-18 06:33:43 -04:00
Several clocks as well as both sgmiisys phandles were added by mistake
to the Ethernet bindings for MT7988. Also, the total number of clocks
didn't match with the actual number of items listed.
This happened because the vendor driver which served as a reference uses
a high number of syscon phandles to access various parts of the SoC
which wasn't acceptable upstream. Hence several parts which have never
previously been supported (such SerDes PHY and USXGMII PCS) are going to
be implemented by separate drivers. As a result the device tree will
look much more sane.
Quickly align the bindings with the upcoming reality of the drivers
actually adding support for the remaining Ethernet-related features of
the MT7988 SoC.
Fixes: c94a9aabec ("dt-bindings: net: mediatek,net: add mt7988-eth binding")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/1569290b21cc787a424469ed74456a7e976b102d.1715084326.git.daniel@makrotopia.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
562 lines
14 KiB
YAML
562 lines
14 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/net/mediatek,net.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: MediaTek Frame Engine Ethernet controller
|
|
|
|
maintainers:
|
|
- Lorenzo Bianconi <lorenzo@kernel.org>
|
|
- Felix Fietkau <nbd@nbd.name>
|
|
|
|
description:
|
|
The frame engine ethernet controller can be found on MediaTek SoCs. These SoCs
|
|
have dual GMAC ports.
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- mediatek,mt2701-eth
|
|
- mediatek,mt7623-eth
|
|
- mediatek,mt7621-eth
|
|
- mediatek,mt7622-eth
|
|
- mediatek,mt7629-eth
|
|
- mediatek,mt7981-eth
|
|
- mediatek,mt7986-eth
|
|
- mediatek,mt7988-eth
|
|
- ralink,rt5350-eth
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
clocks: true
|
|
clock-names: true
|
|
|
|
interrupts:
|
|
minItems: 1
|
|
maxItems: 4
|
|
|
|
power-domains:
|
|
maxItems: 1
|
|
|
|
resets:
|
|
maxItems: 3
|
|
|
|
reset-names:
|
|
items:
|
|
- const: fe
|
|
- const: gmac
|
|
- const: ppe
|
|
|
|
mediatek,ethsys:
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
description:
|
|
Phandle to the syscon node that handles the port setup.
|
|
|
|
cci-control-port: true
|
|
|
|
mediatek,hifsys:
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
description:
|
|
Phandle to the mediatek hifsys controller used to provide various clocks
|
|
and reset to the system.
|
|
|
|
mediatek,infracfg:
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
description:
|
|
Phandle to the syscon node that handles the path from GMAC to
|
|
PHY variants.
|
|
|
|
mediatek,sgmiisys:
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|
minItems: 1
|
|
maxItems: 2
|
|
items:
|
|
maxItems: 1
|
|
description:
|
|
A list of phandle to the syscon node that handles the SGMII setup which is required for
|
|
those SoCs equipped with SGMII.
|
|
|
|
mediatek,wed:
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|
minItems: 2
|
|
maxItems: 2
|
|
items:
|
|
maxItems: 1
|
|
description:
|
|
List of phandles to wireless ethernet dispatch nodes.
|
|
|
|
mediatek,wed-pcie:
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
description:
|
|
Phandle to the mediatek wed-pcie controller.
|
|
|
|
dma-coherent: true
|
|
|
|
mdio-bus:
|
|
$ref: mdio.yaml#
|
|
unevaluatedProperties: false
|
|
|
|
"#address-cells":
|
|
const: 1
|
|
|
|
"#size-cells":
|
|
const: 0
|
|
|
|
allOf:
|
|
- $ref: ethernet-controller.yaml#
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- mediatek,mt2701-eth
|
|
- mediatek,mt7623-eth
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
maxItems: 3
|
|
|
|
clocks:
|
|
minItems: 4
|
|
maxItems: 4
|
|
|
|
clock-names:
|
|
items:
|
|
- const: ethif
|
|
- const: esw
|
|
- const: gp1
|
|
- const: gp2
|
|
|
|
mediatek,infracfg: false
|
|
|
|
mediatek,pctl:
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
description:
|
|
Phandle to the syscon node that handles the ports slew rate and
|
|
driver current.
|
|
|
|
mediatek,wed: false
|
|
|
|
mediatek,wed-pcie: false
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- mediatek,mt7621-eth
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
clocks:
|
|
minItems: 2
|
|
maxItems: 2
|
|
|
|
clock-names:
|
|
items:
|
|
- const: ethif
|
|
- const: fe
|
|
|
|
mediatek,infracfg: false
|
|
|
|
mediatek,wed: false
|
|
|
|
mediatek,wed-pcie: false
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: mediatek,mt7622-eth
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
maxItems: 3
|
|
|
|
clocks:
|
|
minItems: 11
|
|
maxItems: 11
|
|
|
|
clock-names:
|
|
items:
|
|
- const: ethif
|
|
- const: esw
|
|
- const: gp0
|
|
- const: gp1
|
|
- const: gp2
|
|
- const: sgmii_tx250m
|
|
- const: sgmii_rx250m
|
|
- const: sgmii_cdr_ref
|
|
- const: sgmii_cdr_fb
|
|
- const: sgmii_ck
|
|
- const: eth2pll
|
|
|
|
mediatek,infracfg: false
|
|
|
|
mediatek,sgmiisys:
|
|
minItems: 1
|
|
maxItems: 1
|
|
|
|
mediatek,pcie-mirror:
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
description:
|
|
Phandle to the mediatek pcie-mirror controller.
|
|
|
|
mediatek,wed-pcie: false
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: mediatek,mt7629-eth
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
maxItems: 3
|
|
|
|
clocks:
|
|
minItems: 17
|
|
maxItems: 17
|
|
|
|
clock-names:
|
|
items:
|
|
- const: ethif
|
|
- const: sgmiitop
|
|
- const: esw
|
|
- const: gp0
|
|
- const: gp1
|
|
- const: gp2
|
|
- const: fe
|
|
- const: sgmii_tx250m
|
|
- const: sgmii_rx250m
|
|
- const: sgmii_cdr_ref
|
|
- const: sgmii_cdr_fb
|
|
- const: sgmii2_tx250m
|
|
- const: sgmii2_rx250m
|
|
- const: sgmii2_cdr_ref
|
|
- const: sgmii2_cdr_fb
|
|
- const: sgmii_ck
|
|
- const: eth2pll
|
|
|
|
mediatek,sgmiisys:
|
|
minItems: 2
|
|
maxItems: 2
|
|
|
|
mediatek,wed: false
|
|
|
|
mediatek,wed-pcie: false
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: mediatek,mt7981-eth
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
minItems: 4
|
|
|
|
clocks:
|
|
minItems: 15
|
|
maxItems: 15
|
|
|
|
clock-names:
|
|
items:
|
|
- const: fe
|
|
- const: gp2
|
|
- const: gp1
|
|
- const: wocpu0
|
|
- const: sgmii_ck
|
|
- const: sgmii_tx250m
|
|
- const: sgmii_rx250m
|
|
- const: sgmii_cdr_ref
|
|
- const: sgmii_cdr_fb
|
|
- const: sgmii2_tx250m
|
|
- const: sgmii2_rx250m
|
|
- const: sgmii2_cdr_ref
|
|
- const: sgmii2_cdr_fb
|
|
- const: netsys0
|
|
- const: netsys1
|
|
|
|
mediatek,infracfg: false
|
|
|
|
mediatek,sgmiisys:
|
|
minItems: 2
|
|
maxItems: 2
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: mediatek,mt7986-eth
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
minItems: 4
|
|
|
|
clocks:
|
|
minItems: 15
|
|
maxItems: 15
|
|
|
|
clock-names:
|
|
items:
|
|
- const: fe
|
|
- const: gp2
|
|
- const: gp1
|
|
- const: wocpu1
|
|
- const: wocpu0
|
|
- const: sgmii_tx250m
|
|
- const: sgmii_rx250m
|
|
- const: sgmii_cdr_ref
|
|
- const: sgmii_cdr_fb
|
|
- const: sgmii2_tx250m
|
|
- const: sgmii2_rx250m
|
|
- const: sgmii2_cdr_ref
|
|
- const: sgmii2_cdr_fb
|
|
- const: netsys0
|
|
- const: netsys1
|
|
|
|
mediatek,infracfg: false
|
|
|
|
mediatek,sgmiisys:
|
|
minItems: 2
|
|
maxItems: 2
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: mediatek,mt7988-eth
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
minItems: 4
|
|
|
|
clocks:
|
|
minItems: 24
|
|
maxItems: 24
|
|
|
|
clock-names:
|
|
items:
|
|
- const: crypto
|
|
- const: fe
|
|
- const: gp2
|
|
- const: gp1
|
|
- const: gp3
|
|
- const: ethwarp_wocpu2
|
|
- const: ethwarp_wocpu1
|
|
- const: ethwarp_wocpu0
|
|
- const: esw
|
|
- const: top_eth_gmii_sel
|
|
- const: top_eth_refck_50m_sel
|
|
- const: top_eth_sys_200m_sel
|
|
- const: top_eth_sys_sel
|
|
- const: top_eth_xgmii_sel
|
|
- const: top_eth_mii_sel
|
|
- const: top_netsys_sel
|
|
- const: top_netsys_500m_sel
|
|
- const: top_netsys_pao_2x_sel
|
|
- const: top_netsys_sync_250m_sel
|
|
- const: top_netsys_ppefb_250m_sel
|
|
- const: top_netsys_warp_sel
|
|
- const: xgp1
|
|
- const: xgp2
|
|
- const: xgp3
|
|
|
|
patternProperties:
|
|
"^mac@[0-1]$":
|
|
type: object
|
|
unevaluatedProperties: false
|
|
allOf:
|
|
- $ref: ethernet-controller.yaml#
|
|
description:
|
|
Ethernet MAC node
|
|
properties:
|
|
compatible:
|
|
const: mediatek,eth-mac
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
required:
|
|
- reg
|
|
- compatible
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- interrupts
|
|
- clocks
|
|
- clock-names
|
|
- mediatek,ethsys
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
#include <dt-bindings/clock/mt7622-clk.h>
|
|
#include <dt-bindings/power/mt7622-power.h>
|
|
|
|
soc {
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
|
|
ethernet: ethernet@1b100000 {
|
|
compatible = "mediatek,mt7622-eth";
|
|
reg = <0 0x1b100000 0 0x20000>;
|
|
interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_LOW>,
|
|
<GIC_SPI 224 IRQ_TYPE_LEVEL_LOW>,
|
|
<GIC_SPI 225 IRQ_TYPE_LEVEL_LOW>;
|
|
clocks = <&topckgen CLK_TOP_ETH_SEL>,
|
|
<ðsys CLK_ETH_ESW_EN>,
|
|
<ðsys CLK_ETH_GP0_EN>,
|
|
<ðsys CLK_ETH_GP1_EN>,
|
|
<ðsys CLK_ETH_GP2_EN>,
|
|
<&sgmiisys CLK_SGMII_TX250M_EN>,
|
|
<&sgmiisys CLK_SGMII_RX250M_EN>,
|
|
<&sgmiisys CLK_SGMII_CDR_REF>,
|
|
<&sgmiisys CLK_SGMII_CDR_FB>,
|
|
<&topckgen CLK_TOP_SGMIIPLL>,
|
|
<&apmixedsys CLK_APMIXED_ETH2PLL>;
|
|
clock-names = "ethif", "esw", "gp0", "gp1", "gp2",
|
|
"sgmii_tx250m", "sgmii_rx250m",
|
|
"sgmii_cdr_ref", "sgmii_cdr_fb", "sgmii_ck",
|
|
"eth2pll";
|
|
power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
|
|
mediatek,ethsys = <ðsys>;
|
|
mediatek,sgmiisys = <&sgmiisys>;
|
|
cci-control-port = <&cci_control2>;
|
|
mediatek,pcie-mirror = <&pcie_mirror>;
|
|
mediatek,hifsys = <&hifsys>;
|
|
dma-coherent;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
mdio0: mdio-bus {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
phy0: ethernet-phy@0 {
|
|
reg = <0>;
|
|
};
|
|
|
|
phy1: ethernet-phy@1 {
|
|
reg = <1>;
|
|
};
|
|
};
|
|
|
|
gmac0: mac@0 {
|
|
compatible = "mediatek,eth-mac";
|
|
phy-mode = "rgmii";
|
|
phy-handle = <&phy0>;
|
|
reg = <0>;
|
|
};
|
|
|
|
gmac1: mac@1 {
|
|
compatible = "mediatek,eth-mac";
|
|
phy-mode = "rgmii";
|
|
phy-handle = <&phy1>;
|
|
reg = <1>;
|
|
};
|
|
};
|
|
};
|
|
|
|
- |
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
#include <dt-bindings/clock/mt7622-clk.h>
|
|
|
|
soc {
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
|
|
eth: ethernet@15100000 {
|
|
#define CLK_ETH_FE_EN 0
|
|
#define CLK_ETH_WOCPU1_EN 3
|
|
#define CLK_ETH_WOCPU0_EN 4
|
|
#define CLK_TOP_NETSYS_SEL 43
|
|
#define CLK_TOP_NETSYS_500M_SEL 44
|
|
#define CLK_TOP_NETSYS_2X_SEL 46
|
|
#define CLK_TOP_SGM_325M_SEL 47
|
|
#define CLK_APMIXED_NET2PLL 1
|
|
#define CLK_APMIXED_SGMPLL 3
|
|
|
|
compatible = "mediatek,mt7986-eth";
|
|
reg = <0 0x15100000 0 0x80000>;
|
|
interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
|
|
<GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
|
|
<GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
|
|
<GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
|
|
clocks = <ðsys CLK_ETH_FE_EN>,
|
|
<ðsys CLK_ETH_GP2_EN>,
|
|
<ðsys CLK_ETH_GP1_EN>,
|
|
<ðsys CLK_ETH_WOCPU1_EN>,
|
|
<ðsys CLK_ETH_WOCPU0_EN>,
|
|
<&sgmiisys0 CLK_SGMII_TX250M_EN>,
|
|
<&sgmiisys0 CLK_SGMII_RX250M_EN>,
|
|
<&sgmiisys0 CLK_SGMII_CDR_REF>,
|
|
<&sgmiisys0 CLK_SGMII_CDR_FB>,
|
|
<&sgmiisys1 CLK_SGMII_TX250M_EN>,
|
|
<&sgmiisys1 CLK_SGMII_RX250M_EN>,
|
|
<&sgmiisys1 CLK_SGMII_CDR_REF>,
|
|
<&sgmiisys1 CLK_SGMII_CDR_FB>,
|
|
<&topckgen CLK_TOP_NETSYS_SEL>,
|
|
<&topckgen CLK_TOP_NETSYS_SEL>;
|
|
clock-names = "fe", "gp2", "gp1", "wocpu1", "wocpu0",
|
|
"sgmii_tx250m", "sgmii_rx250m",
|
|
"sgmii_cdr_ref", "sgmii_cdr_fb",
|
|
"sgmii2_tx250m", "sgmii2_rx250m",
|
|
"sgmii2_cdr_ref", "sgmii2_cdr_fb",
|
|
"netsys0", "netsys1";
|
|
mediatek,ethsys = <ðsys>;
|
|
mediatek,sgmiisys = <&sgmiisys0>, <&sgmiisys1>;
|
|
assigned-clocks = <&topckgen CLK_TOP_NETSYS_2X_SEL>,
|
|
<&topckgen CLK_TOP_SGM_325M_SEL>;
|
|
assigned-clock-parents = <&apmixedsys CLK_APMIXED_NET2PLL>,
|
|
<&apmixedsys CLK_APMIXED_SGMPLL>;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
mdio: mdio-bus {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
phy5: ethernet-phy@0 {
|
|
compatible = "ethernet-phy-id67c9.de0a";
|
|
phy-mode = "2500base-x";
|
|
reset-gpios = <&pio 6 1>;
|
|
reset-deassert-us = <20000>;
|
|
reg = <5>;
|
|
};
|
|
|
|
phy6: ethernet-phy@1 {
|
|
compatible = "ethernet-phy-id67c9.de0a";
|
|
phy-mode = "2500base-x";
|
|
reg = <6>;
|
|
};
|
|
};
|
|
|
|
mac0: mac@0 {
|
|
compatible = "mediatek,eth-mac";
|
|
phy-mode = "2500base-x";
|
|
phy-handle = <&phy5>;
|
|
reg = <0>;
|
|
};
|
|
|
|
mac1: mac@1 {
|
|
compatible = "mediatek,eth-mac";
|
|
phy-mode = "2500base-x";
|
|
phy-handle = <&phy6>;
|
|
reg = <1>;
|
|
};
|
|
};
|
|
};
|