# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause %YAML 1.2 --- $id: http://devicetree.org/schemas/net/mscc,vsc7514-switch.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Microchip VSC7514 Ethernet switch controller maintainers: - Vladimir Oltean <vladimir.oltean@nxp.com> - Claudiu Manoil <claudiu.manoil@nxp.com> - Alexandre Belloni <alexandre.belloni@bootlin.com> description: | Bindings for the Microchip VSC7514 switch driver The VSC7514 switch driver handles up to 11 ports and can inject/extract packets using CPU. Additionally, PTP is supported as well as FDMA for faster packet extraction/injection. allOf: - if: properties: compatible: const: mscc,vsc7514-switch then: $ref: ethernet-switch.yaml# required: - interrupts - interrupt-names properties: reg: minItems: 21 reg-names: minItems: 21 ethernet-ports: patternProperties: "^port@[0-9a-f]+$": $ref: ethernet-switch-port.yaml# unevaluatedProperties: false - if: properties: compatible: const: mscc,vsc7512-switch then: $ref: /schemas/net/dsa/dsa.yaml# properties: reg: maxItems: 20 reg-names: maxItems: 20 ethernet-ports: patternProperties: "^port@[0-9a-f]+$": $ref: /schemas/net/dsa/dsa-port.yaml# unevaluatedProperties: false properties: compatible: enum: - mscc,vsc7512-switch - mscc,vsc7514-switch reg: minItems: 20 items: - description: system target - description: rewriter target - description: qs target - description: PTP target - description: Port0 target - description: Port1 target - description: Port2 target - description: Port3 target - description: Port4 target - description: Port5 target - description: Port6 target - description: Port7 target - description: Port8 target - description: Port9 target - description: Port10 target - description: QSystem target - description: Analyzer target - description: S0 target - description: S1 target - description: S2 target - description: fdma target reg-names: minItems: 20 items: - const: sys - const: rew - const: qs - const: ptp - const: port0 - const: port1 - const: port2 - const: port3 - const: port4 - const: port5 - const: port6 - const: port7 - const: port8 - const: port9 - const: port10 - const: qsys - const: ana - const: s0 - const: s1 - const: s2 - const: fdma interrupts: minItems: 1 items: - description: PTP ready - description: register based extraction - description: frame dma based extraction interrupt-names: minItems: 1 items: - const: ptp_rdy - const: xtr - const: fdma required: - compatible - reg - reg-names - ethernet-ports unevaluatedProperties: false examples: # VSC7514 (Switchdev) - | switch@1010000 { compatible = "mscc,vsc7514-switch"; reg = <0x1010000 0x10000>, <0x1030000 0x10000>, <0x1080000 0x100>, <0x10e0000 0x10000>, <0x11e0000 0x100>, <0x11f0000 0x100>, <0x1200000 0x100>, <0x1210000 0x100>, <0x1220000 0x100>, <0x1230000 0x100>, <0x1240000 0x100>, <0x1250000 0x100>, <0x1260000 0x100>, <0x1270000 0x100>, <0x1280000 0x100>, <0x1800000 0x80000>, <0x1880000 0x10000>, <0x1040000 0x10000>, <0x1050000 0x10000>, <0x1060000 0x10000>, <0x1a0 0x1c4>; reg-names = "sys", "rew", "qs", "ptp", "port0", "port1", "port2", "port3", "port4", "port5", "port6", "port7", "port8", "port9", "port10", "qsys", "ana", "s0", "s1", "s2", "fdma"; interrupts = <18 21 16>; interrupt-names = "ptp_rdy", "xtr", "fdma"; ethernet-ports { #address-cells = <1>; #size-cells = <0>; port0: port@0 { reg = <0>; phy-handle = <&phy0>; phy-mode = "internal"; }; port1: port@1 { reg = <1>; phy-handle = <&phy1>; phy-mode = "internal"; }; }; }; # VSC7512 (DSA) - | ethernet-switch@1{ compatible = "mscc,vsc7512-switch"; reg = <0x71010000 0x10000>, <0x71030000 0x10000>, <0x71080000 0x100>, <0x710e0000 0x10000>, <0x711e0000 0x100>, <0x711f0000 0x100>, <0x71200000 0x100>, <0x71210000 0x100>, <0x71220000 0x100>, <0x71230000 0x100>, <0x71240000 0x100>, <0x71250000 0x100>, <0x71260000 0x100>, <0x71270000 0x100>, <0x71280000 0x100>, <0x71800000 0x80000>, <0x71880000 0x10000>, <0x71040000 0x10000>, <0x71050000 0x10000>, <0x71060000 0x10000>; reg-names = "sys", "rew", "qs", "ptp", "port0", "port1", "port2", "port3", "port4", "port5", "port6", "port7", "port8", "port9", "port10", "qsys", "ana", "s0", "s1", "s2"; ethernet-ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ethernet = <&mac_sw>; phy-handle = <&phy0>; phy-mode = "internal"; }; port@1 { reg = <1>; phy-handle = <&phy1>; phy-mode = "internal"; }; }; }; ...