--- /dev/null
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Mon, 15 Feb 2021 19:46:54 +0100
+Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe USB PHY
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+BCM4908 uses slightly modified STB family USB PHY. It handles OHCI/EHCI
+and XHCI. It requires powering up using the PMB.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+---
+ .../bcm4908/bcm4906-netgear-r8000p.dts | 17 +++++++++++++
+ .../bcm4908/bcm4908-asus-gt-ac5300.dts | 17 +++++++++++++
+ .../boot/dts/broadcom/bcm4908/bcm4908.dtsi | 25 ++++++++++++++++---
+ 3 files changed, 55 insertions(+), 4 deletions(-)
+
+--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
++++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
+@@ -26,6 +26,23 @@
+ };
+ };
+
++&usb_phy {
++ brcm,ioc = <1>;
++ status = "okay";
++};
++
++&ehci {
++ status = "okay";
++};
++
++&ohci {
++ status = "okay";
++};
++
++&xhci {
++ status = "okay";
++};
++
+ &nandcs {
+ nand-ecc-strength = <4>;
+ nand-ecc-step-size = <512>;
+--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts
++++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts
+@@ -44,6 +44,23 @@
+ };
+ };
+
++&usb_phy {
++ brcm,ioc = <1>;
++ status = "okay";
++};
++
++&ehci {
++ status = "okay";
++};
++
++&ohci {
++ status = "okay";
++};
++
++&xhci {
++ status = "okay";
++};
++
+ &ports {
+ port@0 {
+ label = "lan2";
+--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
++++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
+@@ -2,6 +2,8 @@
+
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
++#include <dt-bindings/phy/phy.h>
++#include <dt-bindings/soc/bcm-pmb.h>
+
+ /dts-v1/;
+
+@@ -110,24 +112,39 @@
+ #size-cells = <1>;
+ ranges = <0x00 0x00 0x80000000 0x281000>;
+
+- usb@c300 {
++ usb_phy: usb-phy@c200 {
++ compatible = "brcm,bcm4908-usb-phy";
++ reg = <0xc200 0x100>;
++ reg-names = "crtl";
++ power-domains = <&pmb BCM_PMB_HOST_USB>;
++ dr_mode = "host";
++ brcm,has-xhci;
++ brcm,has-eohci;
++ #phy-cells = <1>;
++ status = "disabled";
++ };
++
++ ehci: usb@c300 {
+ compatible = "generic-ehci";
+ reg = <0xc300 0x100>;
+ interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
++ phys = <&usb_phy PHY_TYPE_USB2>;
+ status = "disabled";
+ };
+
+- usb@c400 {
++ ohci: usb@c400 {
+ compatible = "generic-ohci";
+ reg = <0xc400 0x100>;
+ interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
++ phys = <&usb_phy PHY_TYPE_USB2>;
+ status = "disabled";
+ };
+
+- usb@d000 {
++ xhci: usb@d000 {
+ compatible = "generic-xhci";
+ reg = <0xd000 0x8c8>;
+ interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
++ phys = <&usb_phy PHY_TYPE_USB3>;
+ status = "disabled";
+ };
+
+@@ -222,7 +239,7 @@
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+- power-controller@2800c0 {
++ pmb: power-controller@2800c0 {
+ compatible = "brcm,bcm4908-pmb";
+ reg = <0x2800c0 0x40>;
+ #power-domain-cells = <1>;
--- /dev/null
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Mon, 15 Feb 2021 19:51:26 +0100
+Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe Ethernet controller
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+BCM4908 SoCs have an integrated Ethernet controller.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+---
+ .../boot/dts/broadcom/bcm4908/bcm4908.dtsi | 20 +++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
++++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
+@@ -112,6 +112,14 @@
+ #size-cells = <1>;
+ ranges = <0x00 0x00 0x80000000 0x281000>;
+
++ enet: ethernet@2000 {
++ compatible = "brcm,bcm4908-enet";
++ reg = <0x2000 0x1000>;
++
++ interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "rx";
++ };
++
+ usb_phy: usb-phy@c200 {
+ compatible = "brcm,bcm4908-usb-phy";
+ reg = <0xc200 0x100>;
+@@ -199,6 +207,18 @@
+ phy-mode = "internal";
+ phy-handle = <&phy11>;
+ };
++
++ port@8 {
++ reg = <8>;
++ phy-mode = "internal";
++ ethernet = <&enet>;
++ brcm,use-bcm-hdr;
++
++ fixed-link {
++ speed = <1000>;
++ full-duplex;
++ };
++ };
+ };
+ };
+
--- /dev/null
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Mon, 15 Feb 2021 19:52:58 +0100
+Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe Netgear R8000P switch
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+R8000P model has 4 LAN ports and 1 WAN port.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+---
+ .../bcm4908/bcm4906-netgear-r8000p.dts | 25 +++++++++++++++++++
+ 1 file changed, 25 insertions(+)
+
+--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
++++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
+@@ -43,6 +43,31 @@
+ status = "okay";
+ };
+
++&ports {
++ port@0 {
++ label = "lan4";
++ };
++
++ port@1 {
++ label = "lan3";
++ };
++
++ port@2 {
++ label = "lan2";
++ };
++
++ port@3 {
++ label = "lan1";
++ };
++
++ port@7 {
++ reg = <7>;
++ phy-mode = "internal";
++ phy-handle = <&phy12>;
++ label = "wan";
++ };
++};
++
+ &nandcs {
+ nand-ecc-strength = <4>;
+ nand-ecc-step-size = <512>;
--- /dev/null
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Mon, 15 Feb 2021 20:05:41 +0100
+Subject: [PATCH] arm64: dts: broadcom: bcm4908: add remaining Netgear R8000P
+ LEDs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+There are a few more GPIO connected LEDs there didn't get described
+initially.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+---
+ .../bcm4908/bcm4906-netgear-r8000p.dts | 48 +++++++++++++++++++
+ 1 file changed, 48 insertions(+)
+
+--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
++++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
+@@ -18,11 +18,59 @@
+ leds {
+ compatible = "gpio-leds";
+
++ power-white {
++ function = LED_FUNCTION_POWER;
++ color = <LED_COLOR_ID_WHITE>;
++ gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
++ };
++
++ power-amber {
++ function = LED_FUNCTION_POWER;
++ color = <LED_COLOR_ID_AMBER>;
++ gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
++ };
++
+ wps {
+ function = LED_FUNCTION_WPS;
+ color = <LED_COLOR_ID_WHITE>;
+ gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
+ };
++
++ 2ghz {
++ function = "2ghz";
++ color = <LED_COLOR_ID_WHITE>;
++ gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
++ };
++
++ 5ghz-1 {
++ function = "5ghz-1";
++ color = <LED_COLOR_ID_WHITE>;
++ gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
++ };
++
++ 5ghz-2 {
++ function = "5ghz-2";
++ color = <LED_COLOR_ID_WHITE>;
++ gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
++ };
++
++ usb2 {
++ function = "usb2";
++ color = <LED_COLOR_ID_WHITE>;
++ gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
++ };
++
++ usb3 {
++ function = "usb3";
++ color = <LED_COLOR_ID_WHITE>;
++ gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
++ };
++
++ wifi {
++ function = "wifi";
++ color = <LED_COLOR_ID_WHITE>;
++ gpios = <&gpio0 56 GPIO_ACTIVE_LOW>;
++ };
+ };
+ };
+
--- /dev/null
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Mon, 15 Feb 2021 20:30:09 +0100
+Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe firmware partitions
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+BCM4908 bootloader supports multiple firmware partitions and has its own
+bindings defined for them.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+---
+ .../dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts | 1 +
+ .../dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts | 12 +++++++++++-
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
++++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
+@@ -135,6 +135,7 @@
+ };
+
+ partition@100000 {
++ compatible = "brcm,bcm4908-firmware";
+ label = "firmware";
+ reg = <0x100000 0x4400000>;
+ };
+--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts
++++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts
+@@ -122,7 +122,7 @@
+ #size-cells = <0>;
+
+ partitions {
+- compatible = "fixed-partitions";
++ compatible = "brcm,bcm4908-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+@@ -130,5 +130,15 @@
+ label = "cferom";
+ reg = <0x0 0x100000>;
+ };
++
++ partition@100000 {
++ compatible = "brcm,bcm4908-firmware";
++ reg = <0x100000 0x5700000>;
++ };
++
++ partition@5800000 {
++ compatible = "brcm,bcm4908-firmware";
++ reg = <0x5800000 0x5700000>;
++ };
+ };
+ };
+++ /dev/null
-From 28d11220a92e9fc4d7d1b8e52dc1c48980e336a1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Wed, 20 Jan 2021 20:34:00 +0100
-Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe USB PHY
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-BCM4908 uses slightly modified STB family USB PHY. It handles OHCI/EHCI
-and XHCI. It requires powering up using the PMB.
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
----
- .../bcm4908/bcm4906-netgear-r8000p.dts | 17 +++++++++++++
- .../bcm4908/bcm4908-asus-gt-ac5300.dts | 16 ++++++++++++
- .../boot/dts/broadcom/bcm4908/bcm4908.dtsi | 25 ++++++++++++++++---
- 3 files changed, 54 insertions(+), 4 deletions(-)
-
---- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
-+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
-@@ -26,6 +26,23 @@
- };
- };
-
-+&usb_phy {
-+ brcm,ioc = <1>;
-+ status = "okay";
-+};
-+
-+&ehci {
-+ status = "okay";
-+};
-+
-+&ohci {
-+ status = "okay";
-+};
-+
-+&xhci {
-+ status = "okay";
-+};
-+
- &nandcs {
- nand-ecc-strength = <4>;
- nand-ecc-step-size = <512>;
---- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts
-+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts
-@@ -44,6 +44,22 @@
- };
- };
-
-+&usb_phy {
-+ status = "okay";
-+};
-+
-+&ehci {
-+ status = "okay";
-+};
-+
-+&ohci {
-+ status = "okay";
-+};
-+
-+&xhci {
-+ status = "okay";
-+};
-+
- &ports {
- port@0 {
- label = "lan2";
---- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
-+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
-@@ -2,6 +2,8 @@
-
- #include <dt-bindings/interrupt-controller/irq.h>
- #include <dt-bindings/interrupt-controller/arm-gic.h>
-+#include <dt-bindings/phy/phy.h>
-+#include <dt-bindings/soc/bcm-pmb.h>
-
- /dts-v1/;
-
-@@ -110,24 +112,39 @@
- #size-cells = <1>;
- ranges = <0x00 0x00 0x80000000 0x281000>;
-
-- usb@c300 {
-+ usb_phy: usb-phy@c200 {
-+ compatible = "brcm,bcm4908-usb-phy";
-+ reg = <0xc200 0x100>;
-+ reg-names = "crtl";
-+ power-domains = <&pmb BCM_PMB_HOST_USB>;
-+ dr_mode = "host";
-+ brcm,has-xhci;
-+ brcm,has-eohci;
-+ #phy-cells = <1>;
-+ status = "disabled";
-+ };
-+
-+ ehci: usb@c300 {
- compatible = "generic-ehci";
- reg = <0xc300 0x100>;
- interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
-+ phys = <&usb_phy PHY_TYPE_USB2>;
- status = "disabled";
- };
-
-- usb@c400 {
-+ ohci: usb@c400 {
- compatible = "generic-ohci";
- reg = <0xc400 0x100>;
- interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
-+ phys = <&usb_phy PHY_TYPE_USB2>;
- status = "disabled";
- };
-
-- usb@d000 {
-+ xhci: usb@d000 {
- compatible = "generic-xhci";
- reg = <0xd000 0x8c8>;
- interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
-+ phys = <&usb_phy PHY_TYPE_USB3>;
- status = "disabled";
- };
-
-@@ -222,7 +239,7 @@
- #address-cells = <1>;
- #size-cells = <1>;
-
-- power-controller@2800c0 {
-+ pmb: power-controller@2800c0 {
- compatible = "brcm,bcm4908-pmb";
- reg = <0x2800c0 0x40>;
- #power-domain-cells = <1>;
+++ /dev/null
-From e401e6fe9195eabfc6c81d8aed920a75b5d7987b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Wed, 20 Jan 2021 20:53:35 +0100
-Subject: [PATCH] arm64: dts: broadcom: bcm4908: improve partitions description
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-1. Use proper bindings
-2. Add missing partitions
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
----
- .../bcm4908/bcm4906-netgear-r8000p.dts | 1 +
- .../bcm4908/bcm4908-asus-gt-ac5300.dts | 27 ++++++++++++++++++-
- 2 files changed, 27 insertions(+), 1 deletion(-)
-
---- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
-+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
-@@ -62,6 +62,7 @@
- };
-
- partition@100000 {
-+ compatible = "brcm,bcm4908-firmware";
- label = "firmware";
- reg = <0x100000 0x4400000>;
- };
---- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts
-+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts
-@@ -121,7 +121,7 @@
- #size-cells = <0>;
-
- partitions {
-- compatible = "fixed-partitions";
-+ compatible = "brcm,bcm4908-partitions";
- #address-cells = <1>;
- #size-cells = <1>;
-
-@@ -129,5 +129,30 @@
- label = "cferom";
- reg = <0x0 0x100000>;
- };
-+
-+ partition@100000 {
-+ compatible = "brcm,bcm4908-firmware";
-+ reg = <0x100000 0x5700000>;
-+ };
-+
-+ partition@5800000 {
-+ compatible = "brcm,bcm4908-firmware";
-+ reg = <0x5800000 0x5700000>;
-+ };
-+
-+ partition@af00000 {
-+ label = "misc1";
-+ reg = <0xaf00000 0x800000>;
-+ };
-+
-+ partition@b700000 {
-+ label = "misc2";
-+ reg = <0xb700000 0x4000000>;
-+ };
-+
-+ partition@f700000 {
-+ label = "data";
-+ reg = <0xf700000 0x800000>;
-+ };
- };
- };
+++ /dev/null
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Mon, 8 Feb 2021 09:11:36 +0100
-Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe Ethernet controller
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-BCM4908 SoCs have an integrated Ethernet controller.
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
----
-
---- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
-+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
-@@ -112,6 +112,14 @@
- #size-cells = <1>;
- ranges = <0x00 0x00 0x80000000 0x281000>;
-
-+ enet: ethernet@2000 {
-+ compatible = "brcm,bcm4908-enet";
-+ reg = <0x2000 0x1000>;
-+
-+ interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
-+ interrupt-names = "rx";
-+ };
-+
- usb_phy: usb-phy@c200 {
- compatible = "brcm,bcm4908-usb-phy";
- reg = <0xc200 0x100>;
-@@ -199,6 +207,18 @@
- phy-mode = "internal";
- phy-handle = <&phy11>;
- };
-+
-+ port@8 {
-+ reg = <8>;
-+ phy-mode = "internal";
-+ brcm,use-bcm-hdr;
-+ ethernet = <&enet>;
-+
-+ fixed-link {
-+ speed = <1000>;
-+ full-duplex;
-+ };
-+ };
- };
- };
-