From: Rosen Penev <rosenp@gmail.com>
To: devicetree@vger.kernel.org
Cc: "Florian Fainelli" <florian.fainelli@broadcom.com>,
"Hauke Mehrtens" <hauke@hauke-m.de>,
"Rafał Miłecki" <zajec5@gmail.com>,
"Broadcom internal kernel review list"
<bcm-kernel-feedback-list@broadcom.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
linux-arm-kernel@lists.infradead.org (moderated list:BROADCOM
BCM5301X ARM ARCHITECTURE),
linux-kernel@vger.kernel.org (open list),
linux-usb@vger.kernel.org (open list:USB SUBSYSTEM)
Subject: [PATCHv2 2/2] ARM: dts: broadcom: model USB VBUS power with regulator-fixed
Date: Mon, 21 Sep 2026 14:41:33 -0700 [thread overview]
Message-ID: <20260921214133.16519-3-rosenp@gmail.com> (raw)
In-Reply-To: <20260921214133.16519-1-rosenp@gmail.com>
Replace the undocumented "vcc-gpio" property on the usb2/usb3
controller nodes with the standard vbus-supply/regulator-fixed model.
Boards now declare a regulator bound to the chipcommon GPIO that
bcma-hcd used to poke directly, one per power rail.
Polarity is preserved: rails that used a GPIO_ACTIVE_HIGH are marked
enable-active-high, while the Buffalo usb3 rails keep GPIO_ACTIVE_LOW
and rely on the binding's active-low default. regulator-boot-on mirrors
the rail being left enabled by CFE so the power line is never toggled
during probe.
Assisted-by: LLM
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
.../broadcom/bcm4708-buffalo-wxr-1750dhp.dts | 12 +++++++++-
.../bcm4708-buffalo-wzr-1166dhp-common.dtsi | 23 ++++++++++++++++--
.../broadcom/bcm4708-buffalo-wzr-1750dhp.dts | 23 ++++++++++++++++--
.../broadcom/bcm4708-linksys-ea6300-v1.dts | 12 +++++++++-
.../broadcom/bcm4708-linksys-ea6500-v2.dts | 12 +++++++++-
.../dts/broadcom/bcm4708-netgear-r6250.dts | 12 +++++++++-
.../dts/broadcom/bcm4708-netgear-r6300-v2.dts | 12 +++++++++-
.../dts/broadcom/bcm47081-luxul-xwr-1200.dts | 12 +++++++++-
.../broadcom/bcm47081-tplink-archer-c5-v2.dts | 12 +++++++++-
.../dts/broadcom/bcm4709-asus-rt-ac3200.dts | 12 +++++++++-
.../broadcom/bcm4709-buffalo-wxr-1900dhp.dts | 13 ++++++++--
.../dts/broadcom/bcm4709-linksys-ea9200.dts | 24 +++++++++++++++++--
.../dts/broadcom/bcm4709-netgear-r7000.dts | 14 +++++++++--
.../dts/broadcom/bcm4709-netgear-r8000.dts | 14 +++++++++--
.../broadcom/bcm4709-tplink-archer-c9-v1.dts | 24 +++++++++++++++++--
.../dts/broadcom/bcm47094-asus-rt-ac3100.dtsi | 12 +++++++++-
.../dts/broadcom/bcm47094-asus-rt-ac5300.dts | 12 +++++++++-
.../dts/broadcom/bcm47094-dlink-dir-885l.dts | 12 +++++++++-
.../dts/broadcom/bcm47094-dlink-dir-890l.dts | 24 +++++++++++++++++--
.../broadcom/bcm47094-linksys-panamera.dts | 24 +++++++++++++++++--
.../dts/broadcom/bcm47094-luxul-abr-4500.dts | 12 +++++++++-
.../dts/broadcom/bcm47094-luxul-xbr-4500.dts | 12 +++++++++-
.../dts/broadcom/bcm47094-luxul-xwr-3100.dts | 12 +++++++++-
.../broadcom/bcm47094-luxul-xwr-3150-v1.dts | 12 +++++++++-
.../arm/boot/dts/broadcom/bcm947189acdbmr.dts | 12 +++++++++-
25 files changed, 341 insertions(+), 34 deletions(-)
diff --git a/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wxr-1750dhp.dts b/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wxr-1750dhp.dts
index f5c95c9a712e..80414c72f912 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wxr-1750dhp.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wxr-1750dhp.dts
@@ -101,6 +101,16 @@ led-usb {
trigger-sources = <&xhci_port1 &ehci_port1 &ohci_port1>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 10 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&srab {
@@ -130,7 +140,7 @@ port@4 {
};
&usb3 {
- vcc-gpio = <&chipcommon 10 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&usb3_phy {
diff --git a/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi b/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi
index 9f9084269ef5..2823592ebe76 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi
@@ -136,14 +136,33 @@ button-eject {
gpios = <&chipcommon 15 GPIO_ACTIVE_LOW>;
};
};
+
+ usb2_power: regulator-usb2 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb2-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ usb3_power: regulator-usb3 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb3-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
+ };
};
&usb2 {
- vcc-gpio = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb2_power>;
};
&usb3 {
- vcc-gpio = <&chipcommon 10 GPIO_ACTIVE_LOW>;
+ vbus-supply = <&usb3_power>;
};
&spi_nor {
diff --git a/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1750dhp.dts b/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1750dhp.dts
index 95ef6ca7210b..32088b52cacb 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1750dhp.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1750dhp.dts
@@ -132,14 +132,33 @@ button-eject {
gpios = <&chipcommon 15 GPIO_ACTIVE_LOW>;
};
};
+
+ usb2_power: regulator-usb2 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb2-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ usb3_power: regulator-usb3 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb3-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
+ };
};
&usb2 {
- vcc-gpio = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb2_power>;
};
&usb3 {
- vcc-gpio = <&chipcommon 10 GPIO_ACTIVE_LOW>;
+ vbus-supply = <&usb3_power>;
};
&spi_nor {
diff --git a/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6300-v1.dts b/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6300-v1.dts
index 03d5546a147c..4c94dac7c832 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6300-v1.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6300-v1.dts
@@ -41,6 +41,16 @@ button-restart {
gpios = <&chipcommon 11 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 10 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb3_phy {
@@ -48,5 +58,5 @@ &usb3_phy {
};
&usb3 {
- vcc-gpio = <&chipcommon 10 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
diff --git a/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6500-v2.dts b/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6500-v2.dts
index ad246f9a734a..1d96f8a97149 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6500-v2.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6500-v2.dts
@@ -38,6 +38,16 @@ button-restart {
gpios = <&chipcommon 11 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 10 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb3_phy {
@@ -45,5 +55,5 @@ &usb3_phy {
};
&usb3 {
- vcc-gpio = <&chipcommon 10 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
diff --git a/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts b/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts
index 2bdbc7d18b0e..7e9619432254 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts
@@ -81,10 +81,20 @@ button-restart {
gpios = <&chipcommon 6 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb3 {
- vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&spi_nor {
diff --git a/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6300-v2.dts b/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6300-v2.dts
index 55f0d9e90d5f..6458b0bbda35 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6300-v2.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6300-v2.dts
@@ -77,6 +77,16 @@ button-restart {
gpios = <&chipcommon 6 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&spi_nor {
@@ -88,5 +98,5 @@ &usb3_phy {
};
&usb3 {
- vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
diff --git a/arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts b/arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts
index 73ff1694a4a0..360237a6f80a 100644
--- a/arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts
@@ -104,10 +104,20 @@ button-restart {
gpios = <&chipcommon 11 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb2 {
- vcc-gpio = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&gmac0 {
diff --git a/arch/arm/boot/dts/broadcom/bcm47081-tplink-archer-c5-v2.dts b/arch/arm/boot/dts/broadcom/bcm47081-tplink-archer-c5-v2.dts
index b6a5886698b2..baac898761b6 100644
--- a/arch/arm/boot/dts/broadcom/bcm47081-tplink-archer-c5-v2.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47081-tplink-archer-c5-v2.dts
@@ -89,6 +89,16 @@ button-restart {
gpios = <&chipcommon 7 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&spi_nor {
@@ -109,5 +119,5 @@ partition-file-system {
};
&usb2 {
- vcc-gpio = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
diff --git a/arch/arm/boot/dts/broadcom/bcm4709-asus-rt-ac3200.dts b/arch/arm/boot/dts/broadcom/bcm4709-asus-rt-ac3200.dts
index 3da2daee0c84..6a2516effc07 100644
--- a/arch/arm/boot/dts/broadcom/bcm4709-asus-rt-ac3200.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4709-asus-rt-ac3200.dts
@@ -73,6 +73,16 @@ led-wps {
gpios = <&chipcommon 14 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&gmac0 {
@@ -142,7 +152,7 @@ port@4 {
};
&usb2 {
- vcc-gpio = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&usb3_phy {
diff --git a/arch/arm/boot/dts/broadcom/bcm4709-buffalo-wxr-1900dhp.dts b/arch/arm/boot/dts/broadcom/bcm4709-buffalo-wxr-1900dhp.dts
index b7cd2faa30ce..be6e164d1a51 100644
--- a/arch/arm/boot/dts/broadcom/bcm4709-buffalo-wxr-1900dhp.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4709-buffalo-wxr-1900dhp.dts
@@ -116,11 +116,20 @@ button-eject {
gpios = <&chipcommon 20 GPIO_ACTIVE_LOW>;
};
};
-};
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+};
&usb2 {
- vcc-gpio = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&spi_nor {
diff --git a/arch/arm/boot/dts/broadcom/bcm4709-linksys-ea9200.dts b/arch/arm/boot/dts/broadcom/bcm4709-linksys-ea9200.dts
index 37593e7582ba..e0a7e9510a08 100644
--- a/arch/arm/boot/dts/broadcom/bcm4709-linksys-ea9200.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4709-linksys-ea9200.dts
@@ -91,6 +91,26 @@ led-3 {
linux,default-trigger = "default-on";
};
};
+
+ usb2_power: regulator-usb2 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb2-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ usb3_power: regulator-usb3 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb3-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 14 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&pcie_bridge0 {
@@ -155,11 +175,11 @@ &usb3_phy {
};
&usb2 {
- vcc-gpios = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb2_power>;
};
&usb3 {
- vcc-gpios = <&chipcommon 14 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb3_power>;
};
&gmac2 {
diff --git a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r7000.dts b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r7000.dts
index 24ba8f8f9bf3..c46c1407be8c 100644
--- a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r7000.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r7000.dts
@@ -91,14 +91,24 @@ button-restart {
gpios = <&chipcommon 6 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb2 {
- vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&usb3 {
- vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&usb3_phy {
diff --git a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
index a4b135d37659..56d35d61a8be 100644
--- a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
@@ -184,14 +184,24 @@ wifi@0,0 {
};
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb2 {
- vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&usb3 {
- vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&usb3_phy {
diff --git a/arch/arm/boot/dts/broadcom/bcm4709-tplink-archer-c9-v1.dts b/arch/arm/boot/dts/broadcom/bcm4709-tplink-archer-c9-v1.dts
index 5a8b2b1567e6..3c9c7ce5dfd5 100644
--- a/arch/arm/boot/dts/broadcom/bcm4709-tplink-archer-c9-v1.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4709-tplink-archer-c9-v1.dts
@@ -90,14 +90,34 @@ button-restart {
gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>;
};
};
+
+ usb2_power: regulator-usb2 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb2-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ usb3_power: regulator-usb3 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb3-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 12 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb2 {
- vcc-gpio = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb2_power>;
};
&usb3 {
- vcc-gpio = <&chipcommon 12 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb3_power>;
};
&spi_nor {
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac3100.dtsi b/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac3100.dtsi
index 2d2e7e581291..6012cebb2512 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac3100.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac3100.dtsi
@@ -98,6 +98,16 @@ led-wps {
gpios = <&chipcommon 19 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&nandcs {
@@ -167,7 +177,7 @@ port@8 {
};
&usb2 {
- vcc-gpio = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&usb3_phy {
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac5300.dts b/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac5300.dts
index 8bf623c67de0..2e4b2f40d525 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac5300.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac5300.dts
@@ -79,6 +79,16 @@ led-wps {
gpios = <&chipcommon 19 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&gmac0 {
@@ -151,7 +161,7 @@ port@4 {
};
&usb2 {
- vcc-gpio = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&usb3_phy {
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts b/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts
index c5099defe9f9..8cf704b3d462 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts
@@ -115,10 +115,20 @@ button-restart {
gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb3 {
- vcc-gpio = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&gmac0 {
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts b/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts
index 944d592dee2c..bf7291d98bd4 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts
@@ -117,6 +117,26 @@ et0macaddr: et0macaddr {
#nvmem-cell-cells = <1>;
};
};
+
+ usb2_power: regulator-usb2 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb2-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 21 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ usb3_power: regulator-usb3 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb3-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&gmac2 {
@@ -158,11 +178,11 @@ firmware@0 {
};
&usb2 {
- vcc-gpios = <&chipcommon 21 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb2_power>;
};
&usb3 {
- vcc-gpios = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb3_power>;
};
&usb3_phy {
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-linksys-panamera.dts b/arch/arm/boot/dts/broadcom/bcm47094-linksys-panamera.dts
index bdbd0f097925..4f965370f024 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-linksys-panamera.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-linksys-panamera.dts
@@ -195,14 +195,34 @@ fixed-link {
};
};
};
+
+ usb2_power: regulator-usb2 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb2-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ usb3_power: regulator-usb3 {
+ compatible = "regulator-fixed";
+ regulator-name = "usb3-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 14 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb2 {
- vcc-gpio = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb2_power>;
};
&usb3 {
- vcc-gpio = <&chipcommon 14 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb3_power>;
};
&srab {
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts b/arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts
index e374062eb5b7..c6a1d02f7fbb 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts
@@ -59,10 +59,20 @@ button-restart {
gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb3 {
- vcc-gpio = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&gmac0 {
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts
index cf95af9db1e6..cf5bd700976b 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts
@@ -59,10 +59,20 @@ button-restart {
gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb3 {
- vcc-gpio = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&gmac0 {
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts
index 4d0ba315a204..74c6fe007210 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts
@@ -99,10 +99,20 @@ button-restart {
gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&usb3 {
- vcc-gpio = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&gmac0 {
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts
index 8e487f60a2cc..8ea19bd2ae35 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts
@@ -74,6 +74,16 @@ button-restart {
gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
};
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&gmac0 {
@@ -98,7 +108,7 @@ wifi@0,0 {
};
&usb3 {
- vcc-gpio = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
&usb3_phy {
diff --git a/arch/arm/boot/dts/broadcom/bcm947189acdbmr.dts b/arch/arm/boot/dts/broadcom/bcm947189acdbmr.dts
index 0b8727ae6f16..9106a5907957 100644
--- a/arch/arm/boot/dts/broadcom/bcm947189acdbmr.dts
+++ b/arch/arm/boot/dts/broadcom/bcm947189acdbmr.dts
@@ -69,6 +69,16 @@ spi {
/* External BCM6802 MoCA chip is connected */
};
+
+ usb_power: regulator-usb {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vcc";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ gpios = <&chipcommon 8 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
&pcie0 {
@@ -92,5 +102,5 @@ wifi@0,1,0 {
};
&usb2 {
- vcc-gpio = <&chipcommon 8 GPIO_ACTIVE_HIGH>;
+ vbus-supply = <&usb_power>;
};
--
2.55.0
prev parent reply other threads:[~2026-09-21 21:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-21 21:41 [PATCHv2 0/2] usb: bcma: control VBUS via a regulator Rosen Penev
2026-09-21 21:41 ` [PATCHv2 1/2] usb: bcma: add regulator support Rosen Penev
2026-09-21 21:59 ` Rafał Miłecki
2026-09-21 22:06 ` Rosen Penev
2026-09-21 21:41 ` Rosen Penev [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260921214133.16519-3-rosenp@gmail.com \
--to=rosenp@gmail.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=florian.fainelli@broadcom.com \
--cc=gregkh@linuxfoundation.org \
--cc=hauke@hauke-m.de \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=robh@kernel.org \
--cc=zajec5@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®