--- /dev/null
+From 37f6130ec39fe14e923d472746a51e6f06f761b7 Mon Sep 17 00:00:00 2001
+From: Vivek Unune <npcomplete13@gmail.com>
+Date: Mon, 9 Apr 2018 18:31:53 -0400
+Subject: [PATCH] ARM: dts: BCM5301X: Make USB 3.0 PHY use MDIO PHY driver
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Currently, the USB 3.0 PHY in bcm5301x.dtsi uses platform driver which
+requires register range "ccb-mii" <0x18003000 0x1000>. This range
+overlaps with MDIO cmd and param registers (<0x18003000 0x8>).
+Essentially, the platform driver partly acts like a MDIO bus driver,
+hence to use of this register range.
+
+In some Northstar devices like Linksys EA9500, secondary switch is
+connected via external MDIO. The only way to access and configure the
+external switch is via MDIO bus. When we enable the MDIO bus in it's
+current state, the MDIO bus and any child buses fail to register because
+of the register range overlap.
+
+On Northstar, the USB 3.0 PHY is connected at address 0x10 on the
+internal MDIO bus. This change moves the usb3_phy node and makes it a
+child node of internal MDIO bus.
+
+Thanks to Rafał Miłecki's commit af850e14a7ae ("phy: bcm-ns-usb3: add
+MDIO driver using proper bus layer") the same USB 3.0 platform driver
+can now act as USB 3.0 PHY MDIO driver.
+
+Tested on Linksys Panamera (EA9500)
+
+Signed-off-by: Vivek Unune <npcomplete13@gmail.com>
+Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+---
+ arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts | 4 +++
+ arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts | 4 +++
+ arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts | 4 +++
+ arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts | 4 +++
+ arch/arm/boot/dts/bcm4708-luxul-xap-1510.dts | 4 +++
+ arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts | 4 +++
+ arch/arm/boot/dts/bcm4708-netgear-r6250.dts | 4 +++
+ arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts | 4 +++
+ arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts | 4 +++
+ arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts | 4 +++
+ arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts | 4 +++
+ arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts | 4 +++
+ arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts | 4 +++
+ arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts | 4 +++
+ arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts | 4 +++
+ arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts | 4 +++
+ arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts | 4 +++
+ arch/arm/boot/dts/bcm4709-linksys-ea9200.dts | 4 +++
+ arch/arm/boot/dts/bcm4709-netgear-r7000.dts | 4 +++
+ arch/arm/boot/dts/bcm4709-netgear-r8000.dts | 4 +++
+ arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts | 4 +++
+ arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts | 4 +++
+ arch/arm/boot/dts/bcm47094-linksys-panamera.dts | 4 +++
+ arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts | 4 +++
+ arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts | 4 +++
+ arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts | 4 +++
+ arch/arm/boot/dts/bcm47094-netgear-r8500.dts | 4 +++
+ arch/arm/boot/dts/bcm47094.dtsi | 7 +++--
+ arch/arm/boot/dts/bcm5301x.dtsi | 35 +++++++++++++++++-----
+ arch/arm/boot/dts/bcm94708.dts | 4 +++
+ arch/arm/boot/dts/bcm94709.dts | 4 +++
+ arch/arm/boot/dts/bcm953012er.dts | 4 +++
+ arch/arm/boot/dts/bcm953012hr.dts | 4 +++
+ arch/arm/boot/dts/bcm953012k.dts | 4 +++
+ 34 files changed, 159 insertions(+), 11 deletions(-)
+
+--- a/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts
++++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts
+@@ -90,3 +90,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts
++++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts
+@@ -80,3 +80,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts
++++ b/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts
+@@ -146,3 +146,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts
++++ b/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts
+@@ -38,3 +38,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4708-luxul-xap-1510.dts
++++ b/arch/arm/boot/dts/bcm4708-luxul-xap-1510.dts
+@@ -57,3 +57,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts
++++ b/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts
+@@ -64,3 +64,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4708-netgear-r6250.dts
++++ b/arch/arm/boot/dts/bcm4708-netgear-r6250.dts
+@@ -91,3 +91,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts
++++ b/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts
+@@ -83,3 +83,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts
++++ b/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts
+@@ -158,3 +158,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts
++++ b/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts
+@@ -74,3 +74,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
++++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
+@@ -118,3 +118,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts
++++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts
+@@ -104,3 +104,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts
++++ b/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts
+@@ -57,3 +57,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts
++++ b/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts
+@@ -105,3 +105,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts
++++ b/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts
+@@ -99,3 +99,7 @@
+ &usb2 {
+ vcc-gpio = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
++++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
+@@ -62,3 +62,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts
++++ b/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts
+@@ -127,3 +127,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
++++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
+@@ -39,3 +39,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4709-netgear-r7000.dts
++++ b/arch/arm/boot/dts/bcm4709-netgear-r7000.dts
+@@ -101,3 +101,7 @@
+ &usb3 {
+ vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
++++ b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
+@@ -182,3 +182,7 @@
+ &usb3 {
+ vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts
++++ b/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts
+@@ -104,3 +104,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
++++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
+@@ -115,3 +115,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
++++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
+@@ -33,3 +33,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
++++ b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
+@@ -60,3 +60,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
++++ b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
+@@ -60,3 +60,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
++++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
+@@ -100,3 +100,7 @@
+ &spi_nor {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47094-netgear-r8500.dts
++++ b/arch/arm/boot/dts/bcm47094-netgear-r8500.dts
+@@ -91,3 +91,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm47094.dtsi
++++ b/arch/arm/boot/dts/bcm47094.dtsi
+@@ -7,9 +7,10 @@
+ #include "bcm4708.dtsi"
+
+ / {
+- usb3_phy: usb3-phy {
+- compatible = "brcm,ns-bx-usb3-phy";
+- };
++};
++
++&usb3_phy {
++ compatible = "brcm,ns-bx-usb3-phy";
+ };
+
+ &uart0 {
+--- a/arch/arm/boot/dts/bcm5301x.dtsi
++++ b/arch/arm/boot/dts/bcm5301x.dtsi
+@@ -154,13 +154,6 @@
+ clock-names = "phy-ref-clk";
+ };
+
+- usb3_phy: usb3-phy {
+- compatible = "brcm,ns-ax-usb3-phy";
+- reg = <0x18105000 0x1000>, <0x18003000 0x1000>;
+- reg-names = "dmp", "ccb-mii";
+- #phy-cells = <0>;
+- };
+-
+ axi@18000000 {
+ compatible = "brcm,bus-axi";
+ reg = <0x18000000 0x1000>;
+@@ -359,7 +352,33 @@
+ reg = <0x18003000 0x8>;
+ #size-cells = <1>;
+ #address-cells = <0>;
+- status = "disabled";
++ };
++
++ mdio-bus-mux {
++ compatible = "mdio-mux-mmioreg";
++ mdio-parent-bus = <&mdio>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ reg = <0x18003000 0x4>;
++ mux-mask = <0x200>;
++
++ mdio@0 {
++ reg = <0x0>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ usb3_phy: usb3-phy@10 {
++ compatible = "brcm,ns-ax-usb3-phy";
++ reg = <0x10>;
++ usb3-dmp-syscon = <&usb3_dmp>;
++ #phy-cells = <0>;
++ status = "disabled";
++ };
++ };
++ };
++
++ usb3_dmp: syscon@18105000 {
++ reg = <0x18105000 0x1000>;
+ };
+
+ i2c0: i2c@18009000 {
+--- a/arch/arm/boot/dts/bcm94708.dts
++++ b/arch/arm/boot/dts/bcm94708.dts
+@@ -42,3 +42,7 @@
+ reg = <0x00000000 0x08000000>;
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm94709.dts
++++ b/arch/arm/boot/dts/bcm94709.dts
+@@ -42,3 +42,7 @@
+ reg = <0x00000000 0x08000000>;
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm953012er.dts
++++ b/arch/arm/boot/dts/bcm953012er.dts
+@@ -90,3 +90,7 @@
+ };
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm953012hr.dts
++++ b/arch/arm/boot/dts/bcm953012hr.dts
+@@ -95,3 +95,7 @@
+ reg = <0x00700000 0x00900000>;
+ };
+ };
++
++&usb3_phy {
++ status = "okay";
++};
+--- a/arch/arm/boot/dts/bcm953012k.dts
++++ b/arch/arm/boot/dts/bcm953012k.dts
+@@ -113,3 +113,7 @@
+ &uart1 {
+ status = "okay";
+ };
++
++&usb3_phy {
++ status = "okay";
++};