| # 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#/$defs/ethernet-ports |
| required: |
| - interrupts |
| - interrupt-names |
| properties: |
| reg: |
| minItems: 21 |
| reg-names: |
| minItems: 21 |
| |
| - if: |
| properties: |
| compatible: |
| const: mscc,vsc7512-switch |
| then: |
| $ref: /schemas/net/dsa/dsa.yaml#/$defs/ethernet-ports |
| properties: |
| reg: |
| maxItems: 20 |
| reg-names: |
| maxItems: 20 |
| |
| 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"; |
| }; |
| }; |
| }; |
| |
| ... |