1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
4 $id: http://devicetree.org/schemas/net/dsa/marvell,mv88e6xxx.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Marvell MV88E6xxx DSA switch family
10 - Andrew Lunn <andrew@lunn.ch>
13 The Marvell MV88E6xxx switch series has been produced and sold
14 by Marvell since at least 2008. The switch has a few compatibles which
15 just indicate the base address of the switch, then operating systems
16 can investigate switch ID registers to find out which actual version
17 of the switch it is dealing with.
27 marvell,mv88e6085: This switch uses base address 0x10.
28 This switch and its siblings will be autodetected from
29 ID registers found in the switch, so only "marvell,mv88e6085" should be
30 specified. This includes the following list of MV88Exxxx switches:
31 6085, 6095, 6097, 6123, 6131, 6141, 6161, 6165, 6171, 6172, 6175, 6176,
32 6185, 6240, 6320, 6321, 6341, 6350, 6351, 6352
33 marvell,mv88e6190: This switch uses base address 0x00.
34 This switch and its siblings will be autodetected from
35 ID registers found in the switch, so only "marvell,mv88e6190" should be
36 specified. This includes the following list of MV88Exxxx switches:
37 6190, 6190X, 6191, 6290, 6361, 6390, 6390X
38 marvell,mv88e6250: This switch uses base address 0x08 or 0x18.
39 This switch and its siblings will be autodetected from
40 ID registers found in the switch, so only "marvell,mv88e6250" should be
41 specified. This includes the following list of MV88Exxxx switches:
44 - const: marvell,turris-mox-mv88e6085
45 - const: marvell,mv88e6085
47 - const: marvell,turris-mox-mv88e6190
48 - const: marvell,mv88e6190
54 $ref: /schemas/types.yaml#/definitions/uint32
55 description: Set to the length of an EEPROM connected to the switch. Must be
56 set if the switch can not detect the presence and/or size of a connected
57 EEPROM, otherwise optional.
61 GPIO to be used to reset the whole device
65 description: The switch provides an external interrupt line, but it is
66 not always used by target systems.
70 description: The switch has an internal interrupt controller used by
71 the different sub-blocks.
74 description: The internal interrupt controller only supports triggering
75 on active high level interrupts so the second cell must alway be set to
80 $ref: /schemas/net/mdio.yaml#
81 unevaluatedProperties: false
82 description: Marvell MV88E6xxx switches have an varying combination of
83 internal and external MDIO buses, in some cases a combined bus that
84 can be used both internally and externally. This node is for the
85 primary bus, used internally and sometimes also externally.
88 $ref: /schemas/net/mdio.yaml#
89 unevaluatedProperties: false
90 description: Marvell MV88E6xxx switches that have a separate external
91 MDIO bus use this port to access external components on the MDIO bus.
95 const: marvell,mv88e6xxx-mdio-external
101 - $ref: dsa.yaml#/$defs/ethernet-ports
107 unevaluatedProperties: false
111 #include <dt-bindings/gpio/gpio.h>
113 #address-cells = <1>;
117 compatible = "marvell,mv88e6085";
119 reset-gpios = <&gpio5 1 GPIO_ACTIVE_LOW>;
122 #address-cells = <1>;
125 sw_phy0: ethernet-phy@0 {
129 sw_phy1: ethernet-phy@1 {
133 sw_phy2: ethernet-phy@2 {
137 sw_phy3: ethernet-phy@3 {
143 #address-cells = <1>;
149 phy-handle = <&sw_phy0>;
150 phy-mode = "internal";
156 phy-handle = <&sw_phy1>;
157 phy-mode = "internal";
163 phy-handle = <&sw_phy2>;
164 phy-mode = "internal";
170 phy-handle = <&sw_phy3>;
171 phy-mode = "internal";
177 phy-mode = "rgmii-id";
188 #include <dt-bindings/interrupt-controller/irq.h>
190 #address-cells = <1>;
194 compatible = "marvell,mv88e6190";
195 #interrupt-cells = <2>;
196 interrupt-controller;
197 interrupt-parent = <&gpio1>;
198 interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
199 pinctrl-0 = <&switch_interrupt_pins>;
200 pinctrl-names = "default";
204 #address-cells = <1>;
207 switch0phy1: ethernet-phy@1 {
211 switch0phy2: ethernet-phy@2 {
215 switch0phy3: ethernet-phy@3 {
219 switch0phy4: ethernet-phy@4 {
223 switch0phy5: ethernet-phy@5 {
227 switch0phy6: ethernet-phy@6 {
231 switch0phy7: ethernet-phy@7 {
235 switch0phy8: ethernet-phy@8 {
241 compatible = "marvell,mv88e6xxx-mdio-external";
242 #address-cells = <1>;
245 phy1: ethernet-phy@b {
247 compatible = "ethernet-phy-ieee802.3-c45";
250 phy2: ethernet-phy@c {
252 compatible = "ethernet-phy-ieee802.3-c45";
257 #address-cells = <1>;
274 phy-handle = <&switch0phy1>;
280 phy-handle = <&switch0phy2>;
286 phy-handle = <&switch0phy3>;
292 phy-handle = <&switch0phy4>;
298 phy-handle = <&switch0phy5>;
304 phy-handle = <&switch0phy6>;
310 phy-handle = <&switch0phy7>;
316 phy-handle = <&switch0phy8>;
321 /* 88X3310P external phy */
323 phy-handle = <&phy1>;
329 /* 88X3310P external phy */
331 phy-handle = <&phy2>;