aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bmips/dts
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2021-03-01 08:21:59 +0100
committerÁlvaro Fernández Rojas <noltari@gmail.com>2021-03-14 12:05:17 +0100
commit28dcb74de3a15fbdb0fd9afa16457b2de1181cd7 (patch)
tree80d2ecf31f784a814e0df5e6b906616d0f339f9a /target/linux/bmips/dts
parentbf4aa0c6a2f57951f995b2ac6f394c45ac852b9d (diff)
downloadupstream-28dcb74de3a15fbdb0fd9afa16457b2de1181cd7.tar.gz
upstream-28dcb74de3a15fbdb0fd9afa16457b2de1181cd7.tar.bz2
upstream-28dcb74de3a15fbdb0fd9afa16457b2de1181cd7.zip
bmips: add experimental ethernet support
This adds experimental ethernet support for BCM6318, BCM6328, BCM6362, BCM6368 and BCM63268. BCM6358 needs a different driver, so there's no support for now. Working devices: - Comtrend AR-5315u - Comtrend AR-5387un - Comtrend VR-3025u - Comtrend VR-3032u Not working devices: - Netgear DGND3700 v2 (no idea on how the external switch is connected) - Huawei HG556a ver B (BCM6358 needs a separate driveer) Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bmips/dts')
-rw-r--r--target/linux/bmips/dts/bcm63168-comtrend-vr-3032u.dts38
-rw-r--r--target/linux/bmips/dts/bcm6318-comtrend-ar-5315u.dts38
-rw-r--r--target/linux/bmips/dts/bcm6318.dtsi98
-rw-r--r--target/linux/bmips/dts/bcm63268.dtsi100
-rw-r--r--target/linux/bmips/dts/bcm6328-comtrend-ar-5387un.dts38
-rw-r--r--target/linux/bmips/dts/bcm6328.dtsi94
-rw-r--r--target/linux/bmips/dts/bcm6362-netgear-dgnd3700-v2.dts6
-rw-r--r--target/linux/bmips/dts/bcm6362.dtsi94
-rw-r--r--target/linux/bmips/dts/bcm6368-comtrend-vr-3025u.dts38
-rw-r--r--target/linux/bmips/dts/bcm6368.dtsi93
10 files changed, 637 insertions, 0 deletions
diff --git a/target/linux/bmips/dts/bcm63168-comtrend-vr-3032u.dts b/target/linux/bmips/dts/bcm63168-comtrend-vr-3032u.dts
index ed7f51890c..d82247d26c 100644
--- a/target/linux/bmips/dts/bcm63168-comtrend-vr-3032u.dts
+++ b/target/linux/bmips/dts/bcm63168-comtrend-vr-3032u.dts
@@ -39,6 +39,12 @@
status = "okay";
};
+&ethernet {
+ status = "okay";
+
+ mtd-mac-address = <&cferom 0x6a0>;
+};
+
&leds {
status = "okay";
@@ -177,6 +183,38 @@
status = "okay";
};
+&switch0 {
+ ports {
+ port@0 {
+ reg = <0>;
+ label = "lan2";
+
+ phy-handle = <&phy1>;
+ };
+
+ port@1 {
+ reg = <1>;
+ label = "lan3";
+
+ phy-handle = <&phy2>;
+ };
+
+ port@2 {
+ reg = <2>;
+ label = "lan4";
+
+ phy-handle = <&phy3>;
+ };
+
+ port@3 {
+ reg = <3>;
+ label = "lan1";
+
+ phy-handle = <&phy4>;
+ };
+ };
+};
+
&uart0 {
status = "okay";
};
diff --git a/target/linux/bmips/dts/bcm6318-comtrend-ar-5315u.dts b/target/linux/bmips/dts/bcm6318-comtrend-ar-5315u.dts
index 35c74fd3ac..a5ae435a3a 100644
--- a/target/linux/bmips/dts/bcm6318-comtrend-ar-5315u.dts
+++ b/target/linux/bmips/dts/bcm6318-comtrend-ar-5315u.dts
@@ -37,6 +37,12 @@
status = "okay";
};
+&ethernet {
+ status = "okay";
+
+ mtd-mac-address = <&cfe 0x6a0>;
+};
+
&hsspi {
status = "okay";
@@ -168,6 +174,38 @@
};
};
+&switch0 {
+ ports {
+ port@0 {
+ reg = <0>;
+ label = "lan4";
+
+ phy-handle = <&phy1>;
+ };
+
+ port@1 {
+ reg = <1>;
+ label = "lan3";
+
+ phy-handle = <&phy2>;
+ };
+
+ port@2 {
+ reg = <2>;
+ label = "lan2";
+
+ phy-handle = <&phy3>;
+ };
+
+ port@3 {
+ reg = <3>;
+ label = "lan1";
+
+ phy-handle = <&phy4>;
+ };
+ };
+};
+
&uart0 {
status = "okay";
};
diff --git a/target/linux/bmips/dts/bcm6318.dtsi b/target/linux/bmips/dts/bcm6318.dtsi
index f5cfd77438..e7dc38e937 100644
--- a/target/linux/bmips/dts/bcm6318.dtsi
+++ b/target/linux/bmips/dts/bcm6318.dtsi
@@ -346,5 +346,103 @@
status = "disabled";
};
+
+ switch0: switch@10080000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "brcm,bcm6328-switch";
+ reg = <0x10080000 0x8000>;
+ big-endian;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@8 {
+ reg = <8>;
+ label = "cpu";
+
+ phy-mode = "internal";
+ ethernet = <&ethernet>;
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+ };
+
+ mdio: mdio@100800b0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "brcm,bcm6368-mdio-mux";
+ reg = <0x100800b0 0x8>;
+
+ mdio_int: mdio@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ phy1: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+ };
+
+ phy2: ethernet-phy@2 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <2>;
+ };
+
+ phy3: ethernet-phy@3 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <3>;
+ };
+
+ phy4: ethernet-phy@4 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <4>;
+ };
+ };
+
+ mdio_ext: mdio@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ };
+ };
+
+ ethernet: ethernet@10088000 {
+ compatible = "brcm,bcm6318-enetsw";
+ reg = <0x10088000 0x80>,
+ <0x10088200 0x80>,
+ <0x10088400 0x80>;
+ reg-names = "dma",
+ "dma-channels",
+ "dma-sram";
+
+ interrupt-parent = <&periph_intc>;
+ interrupts = <BCM6318_IRQ_ENETSW_RX_DMA0>,
+ <BCM6318_IRQ_ENETSW_TX_DMA0>;
+ interrupt-names = "rx",
+ "tx";
+
+ clocks = <&periph_clk BCM6318_CLK_ROBOSW250>,
+ <&periph_clk BCM6318_CLK_ROBOSW025>,
+ <&ubus_clk BCM6318_UCLK_ROBOSW>;
+
+ resets = <&periph_rst BCM6318_RST_ENETSW>,
+ <&periph_rst BCM6318_RST_EPHY>;
+
+ power-domains = <&periph_pwr BCM6318_POWER_DOMAIN_EPHY0>,
+ <&periph_pwr BCM6318_POWER_DOMAIN_EPHY1>,
+ <&periph_pwr BCM6318_POWER_DOMAIN_EPHY2>,
+ <&periph_pwr BCM6318_POWER_DOMAIN_EPHY3>;
+
+ dma-rx = <0>;
+ dma-tx = <1>;
+
+ status = "disabled";
+ };
};
};
diff --git a/target/linux/bmips/dts/bcm63268.dtsi b/target/linux/bmips/dts/bcm63268.dtsi
index bf9998a552..284d2c8ef0 100644
--- a/target/linux/bmips/dts/bcm63268.dtsi
+++ b/target/linux/bmips/dts/bcm63268.dtsi
@@ -432,5 +432,105 @@
status = "disabled";
};
+
+ ethernet: ethernet@1000d800 {
+ compatible = "brcm,bcm63268-enetsw";
+ reg = <0x1000d800 0x80>,
+ <0x1000da00 0x80>,
+ <0x1000dc00 0x80>;
+ reg-names = "dma",
+ "dma-channels",
+ "dma-sram";
+
+ interrupt-parent = <&periph_intc>;
+ interrupts = <BCM63268_IRQ_ENETSW_RX_DMA0>,
+ <BCM63268_IRQ_ENETSW_TX_DMA0>;
+ interrupt-names = "rx",
+ "tx";
+
+ clocks = <&periph_clk BCM63268_CLK_GMAC>,
+ <&periph_clk BCM63268_CLK_ROBOSW>,
+ <&periph_clk BCM63268_CLK_ROBOSW250>,
+ <&timer_clk BCM63268_TCLK_EPHY1>,
+ <&timer_clk BCM63268_TCLK_EPHY2>,
+ <&timer_clk BCM63268_TCLK_EPHY3>,
+ <&timer_clk BCM63268_TCLK_GPHY1>;
+
+ resets = <&periph_rst BCM63268_RST_ENETSW>,
+ <&periph_rst BCM63268_RST_EPHY>,
+ <&periph_rst BCM63268_RST_GPHY>;
+
+ power-domains = <&periph_pwr BCM63268_POWER_DOMAIN_ROBOSW>;
+
+ dma-rx = <0>;
+ dma-tx = <1>;
+
+ status = "disabled";
+ };
+
+ switch0: switch@10700000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "brcm,bcm6328-switch";
+ reg = <0x10700000 0x8000>;
+ big-endian;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@8 {
+ reg = <8>;
+ label = "cpu";
+
+ phy-mode = "internal";
+ ethernet = <&ethernet>;
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+ };
+
+ mdio: mdio@107000b0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "brcm,bcm6368-mdio-mux";
+ reg = <0x107000b0 0x8>;
+
+ mdio_int: mdio@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ phy1: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+ };
+
+ phy2: ethernet-phy@2 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <2>;
+ };
+
+ phy3: ethernet-phy@3 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <3>;
+ };
+
+ phy4: ethernet-phy@4 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <4>;
+ };
+ };
+
+ mdio_ext: mdio@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ };
+ };
};
};
diff --git a/target/linux/bmips/dts/bcm6328-comtrend-ar-5387un.dts b/target/linux/bmips/dts/bcm6328-comtrend-ar-5387un.dts
index a3192dffa4..9ebd6c5c4d 100644
--- a/target/linux/bmips/dts/bcm6328-comtrend-ar-5387un.dts
+++ b/target/linux/bmips/dts/bcm6328-comtrend-ar-5387un.dts
@@ -30,6 +30,12 @@
status = "okay";
};
+&ethernet {
+ status = "okay";
+
+ mtd-mac-address = <&cfe 0x6a0>;
+};
+
&hsspi {
status = "okay";
@@ -113,6 +119,38 @@
};
};
+&switch0 {
+ ports {
+ port@0 {
+ reg = <0>;
+ label = "lan1";
+
+ phy-handle = <&phy1>;
+ };
+
+ port@1 {
+ reg = <1>;
+ label = "lan2";
+
+ phy-handle = <&phy2>;
+ };
+
+ port@2 {
+ reg = <2>;
+ label = "lan3";
+
+ phy-handle = <&phy3>;
+ };
+
+ port@3 {
+ reg = <3>;
+ label = "lan4";
+
+ phy-handle = <&phy4>;
+ };
+ };
+};
+
&uart0 {
status = "okay";
};
diff --git a/target/linux/bmips/dts/bcm6328.dtsi b/target/linux/bmips/dts/bcm6328.dtsi
index aa90cc2a9b..64fd04142c 100644
--- a/target/linux/bmips/dts/bcm6328.dtsi
+++ b/target/linux/bmips/dts/bcm6328.dtsi
@@ -368,5 +368,99 @@
status = "disabled";
};
+
+ ethernet: ethernet@1000d800 {
+ compatible = "brcm,bcm6328-enetsw";
+ reg = <0x1000d800 0x80>,
+ <0x1000da00 0x80>,
+ <0x1000dc00 0x80>;
+ reg-names = "dma",
+ "dma-channels",
+ "dma-sram";
+
+ interrupt-parent = <&periph_intc>;
+ interrupts = <BCM6328_IRQ_ENETSW_RX_DMA0>,
+ <BCM6328_IRQ_ENETSW_TX_DMA0>;
+ interrupt-names = "rx",
+ "tx";
+
+ clocks = <&periph_clk BCM6328_CLK_ROBOSW>;
+
+ resets = <&periph_rst BCM6328_RST_ENETSW>,
+ <&periph_rst BCM6328_RST_EPHY>;
+
+ power-domains = <&periph_pwr BCM6328_POWER_DOMAIN_ROBOSW>,
+ <&periph_pwr BCM6328_POWER_DOMAIN_EPHY>;
+
+ dma-rx = <0>;
+ dma-tx = <1>;
+
+ status = "disabled";
+ };
+
+ switch0: switch@10e00000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "brcm,bcm6328-switch";
+ reg = <0x10e00000 0x8000>;
+ big-endian;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@8 {
+ reg = <8>;
+ label = "cpu";
+
+ phy-mode = "internal";
+ ethernet = <&ethernet>;
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+ };
+
+ mdio: mdio@10e000b0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "brcm,bcm6368-mdio-mux";
+ reg = <0x10e000b0 0x8>;
+
+ mdio_int: mdio@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ phy1: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+ };
+
+ phy2: ethernet-phy@2 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <2>;
+ };
+
+ phy3: ethernet-phy@3 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <3>;
+ };
+
+ phy4: ethernet-phy@4 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <4>;
+ };
+ };
+
+ mdio_ext: mdio@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ };
+ };
};
};
diff --git a/target/linux/bmips/dts/bcm6362-netgear-dgnd3700-v2.dts b/target/linux/bmips/dts/bcm6362-netgear-dgnd3700-v2.dts
index 4da673cafa..fe26ebeed0 100644
--- a/target/linux/bmips/dts/bcm6362-netgear-dgnd3700-v2.dts
+++ b/target/linux/bmips/dts/bcm6362-netgear-dgnd3700-v2.dts
@@ -62,6 +62,12 @@
status = "okay";
};
+&ethernet {
+ status = "okay";
+
+ mtd-mac-address = <&cferom 0x6a0>;
+};
+
&leds {
status = "okay";
diff --git a/target/linux/bmips/dts/bcm6362.dtsi b/target/linux/bmips/dts/bcm6362.dtsi
index f46074045c..9a3d9c1f66 100644
--- a/target/linux/bmips/dts/bcm6362.dtsi
+++ b/target/linux/bmips/dts/bcm6362.dtsi
@@ -465,5 +465,99 @@
status = "disabled";
};
+
+ ethernet: ethernet@1000d800 {
+ compatible = "brcm,bcm6362-enetsw";
+ reg = <0x1000d800 0x80>,
+ <0x1000da00 0x80>,
+ <0x1000dc00 0x80>;
+ reg-names = "dma",
+ "dma-channels",
+ "dma-sram";
+
+ interrupt-parent = <&periph_intc>;
+ interrupts = <BCM6362_IRQ_ENETSW_RX_DMA0>;
+ interrupt-names = "rx";
+
+ clocks = <&periph_clk BCM6362_CLK_SWPKT_USB>,
+ <&periph_clk BCM6362_CLK_SWPKT_SAR>,
+ <&periph_clk BCM6362_CLK_ROBOSW>;
+
+ resets = <&periph_rst BCM6362_RST_ENETSW>,
+ <&periph_rst BCM6362_RST_EPHY>;
+
+ power-domains = <&periph_pwr BCM6362_POWER_DOMAIN_ROBOSW>,
+ <&periph_pwr BCM6362_POWER_DOMAIN_GMII_PADS>;
+
+ dma-rx = <0>;
+ dma-tx = <1>;
+
+ status = "disabled";
+ };
+
+ switch0: switch@10e00000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "brcm,bcm6328-switch";
+ reg = <0x10e00000 0x8000>;
+ big-endian;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@8 {
+ reg = <8>;
+ label = "cpu";
+
+ phy-mode = "internal";
+ ethernet = <&ethernet>;
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+ };
+
+ mdio: mdio@10e000b0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "brcm,bcm6368-mdio-mux";
+ reg = <0x10e000b0 0x8>;
+
+ mdio_int: mdio@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ phy1: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+ };
+
+ phy2: ethernet-phy@2 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <2>;
+ };
+
+ phy3: ethernet-phy@3 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <3>;
+ };
+
+ phy4: ethernet-phy@4 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <4>;
+ };
+ };
+
+ mdio_ext: mdio@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ };
+ };
};
};
diff --git a/target/linux/bmips/dts/bcm6368-comtrend-vr-3025u.dts b/target/linux/bmips/dts/bcm6368-comtrend-vr-3025u.dts
index 683b01875e..b597a05f3a 100644
--- a/target/linux/bmips/dts/bcm6368-comtrend-vr-3025u.dts
+++ b/target/linux/bmips/dts/bcm6368-comtrend-vr-3025u.dts
@@ -59,6 +59,12 @@
status = "okay";
};
+&ethernet {
+ status = "okay";
+
+ mtd-mac-address = <&cfe 0x6a0>;
+};
+
&ohci {
status = "okay";
};
@@ -96,6 +102,38 @@
&pinctrl_ephy2_led &pinctrl_ephy3_led>;
};
+&switch0 {
+ ports {
+ port@0 {
+ reg = <0>;
+ label = "lan1";
+
+ phy-handle = <&phy1>;
+ };
+
+ port@1 {
+ reg = <1>;
+ label = "lan2";
+
+ phy-handle = <&phy2>;
+ };
+
+ port@2 {
+ reg = <2>;
+ label = "lan3";
+
+ phy-handle = <&phy3>;
+ };
+
+ port@3 {
+ reg = <3>;
+ label = "lan4";
+
+ phy-handle = <&phy4>;
+ };
+ };
+};
+
&uart0 {
status = "okay";
};
diff --git a/target/linux/bmips/dts/bcm6368.dtsi b/target/linux/bmips/dts/bcm6368.dtsi
index 5aa2b82221..5b5064b29e 100644
--- a/target/linux/bmips/dts/bcm6368.dtsi
+++ b/target/linux/bmips/dts/bcm6368.dtsi
@@ -467,6 +467,99 @@
resets = <&periph_rst BCM6368_RST_IPSEC>;
};
+
+ ethernet: ethernet@10006800 {
+ compatible = "brcm,bcm6368-enetsw";
+ reg = <0x10006800 0x80>,
+ <0x10006a00 0x80>,
+ <0x10006c00 0x80>;
+ reg-names = "dma",
+ "dma-channels",
+ "dma-sram";
+
+ interrupt-parent = <&periph_intc>;
+ interrupts = <BCM6368_IRQ_ENETSW_RX_DMA0>,
+ <BCM6368_IRQ_ENETSW_TX_DMA0>;
+ interrupt-names = "rx",
+ "tx";
+
+ clocks = <&periph_clk BCM6368_CLK_SWPKT_USB>,
+ <&periph_clk BCM6368_CLK_SWPKT_SAR>,
+ <&periph_clk BCM6368_CLK_ROBOSW>;
+
+ resets = <&periph_rst BCM6368_RST_SWITCH>,
+ <&periph_rst BCM6368_RST_EPHY>;
+
+ dma-rx = <0>;
+ dma-tx = <1>;
+
+ status = "disabled";
+ };
+
+ switch0: switch@10f00000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "brcm,bcm6328-switch";
+ reg = <0x10f00000 0x8000>;
+ big-endian;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@8 {
+ reg = <8>;
+ label = "cpu";
+
+ phy-mode = "internal";
+ ethernet = <&ethernet>;
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+ };
+
+ mdio: mdio@10f000b0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "brcm,bcm6368-mdio-mux";
+ reg = <0x10f000b0 0x8>;
+
+ mdio_int: mdio@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ phy1: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+ };
+
+ phy2: ethernet-phy@2 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <2>;
+ };
+
+ phy3: ethernet-phy@3 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <3>;
+ };
+
+ phy4: ethernet-phy@4 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <4>;
+ };
+ };
+
+ mdio_ext: mdio@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ };
+ };
};
pflash: nor@18000000 {