phy_type = "utmi";
dr_mode = "host";
+ vbus-supply = <®_power_usb>;
+
port@1 {
#address-cells = <1>;
#size-cells = <0>;
};
};
- gpio_export {
- compatible = "gpio-export";
-
- usb-pwr {
- gpio-export,name = "usb_pwr";
- gpio-export,output = <1>;
- gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
- };
- };
+ reg_power_usb: regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "power_usb";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-boot-on;
+ };
buttons {
compatible = "gpio-keys";
CONFIG_RED_15W_REV1=y
CONFIG_REGMAP=y
CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_SGL_ALLOC=y
CONFIG_SPI_BITBANG=y
CONFIG_SPI_GPIO=y
--- /dev/null
+From 04c30383e668da328ceec9f10d6437a8aa9c5b8f Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Tue, 3 Dec 2024 13:53:31 -0800
+Subject: [PATCH] usb: fsl-mph-dr-of: add regulator support
+
+Some devices have a GPIO that controls power to the USB bus. Add
+support for a vbus regulator to have the kernel control it automatically
+instead of having to rely on userspace.
+
+Acquire the regulator in the common probe path so that it works for
+all fsl-usb2-dr compatible controllers, not just MPC5121.
+
+Assisted-by: opencode:big-pickle
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ drivers/usb/host/fsl-mph-dr-of.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/host/fsl-mph-dr-of.c
++++ b/drivers/usb/host/fsl-mph-dr-of.c
+@@ -15,6 +15,7 @@
+ #include <linux/clk.h>
+ #include <linux/module.h>
+ #include <linux/dma-mapping.h>
++#include <linux/regulator/consumer.h>
+
+ struct fsl_usb2_dev_data {
+ char *dr_mode; /* controller mode */
+@@ -183,7 +184,7 @@ static int fsl_usb2_mph_dr_of_probe(stru
+ const struct of_device_id *match;
+ const unsigned char *prop;
+ static unsigned int idx;
+- int i;
++ int i, err;
+
+ if (!of_device_is_available(np))
+ return -ENODEV;
+@@ -246,6 +247,10 @@ static int fsl_usb2_mph_dr_of_probe(stru
+ }
+ }
+
++ err = devm_regulator_get_enable_optional(&ofdev->dev, "vbus");
++ if (err)
++ return dev_err_probe(&ofdev->dev, err, "failed to get vbus regulator\n");
++
+ for (i = 0; i < ARRAY_SIZE(dev_data->drivers); i++) {
+ if (!dev_data->drivers[i])
+ continue;
--- /dev/null
+From 04c30383e668da328ceec9f10d6437a8aa9c5b8f Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Tue, 3 Dec 2024 13:53:31 -0800
+Subject: [PATCH] usb: fsl-mph-dr-of: add regulator support
+
+Some devices have a GPIO that controls power to the USB bus. Add
+support for a vbus regulator to have the kernel control it automatically
+instead of having to rely on userspace.
+
+Acquire the regulator in the common probe path so that it works for
+all fsl-usb2-dr compatible controllers, not just MPC5121.
+
+Assisted-by: opencode:big-pickle
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ drivers/usb/host/fsl-mph-dr-of.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/host/fsl-mph-dr-of.c
++++ b/drivers/usb/host/fsl-mph-dr-of.c
+@@ -15,6 +15,7 @@
+ #include <linux/clk.h>
+ #include <linux/module.h>
+ #include <linux/dma-mapping.h>
++#include <linux/regulator/consumer.h>
+
+ struct fsl_usb2_dev_data {
+ char *dr_mode; /* controller mode */
+@@ -183,7 +184,7 @@ static int fsl_usb2_mph_dr_of_probe(stru
+ const struct of_device_id *match;
+ const unsigned char *prop;
+ static unsigned int idx;
+- int i;
++ int i, err;
+
+ if (!of_device_is_available(np))
+ return -ENODEV;
+@@ -246,6 +247,10 @@ static int fsl_usb2_mph_dr_of_probe(stru
+ }
+ }
+
++ err = devm_regulator_get_enable_optional(&ofdev->dev, "vbus");
++ if (err)
++ return dev_err_probe(&ofdev->dev, err, "failed to get vbus regulator\n");
++
+ for (i = 0; i < ARRAY_SIZE(dev_data->drivers); i++) {
+ if (!dev_data->drivers[i])
+ continue;