blob: 86a9c3fc76c890bff101c3c153b1bcfbb131f03e [file] [log] [blame]
# 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";
};
};
};
...