* [PATCH v2 0/1] usb: dwc3: Add optional VBUS regulator support to SpacemiT K1 @ 2026-03-20 10:01 Chukun Pan 2026-03-20 10:01 ` [PATCH v2 1/1] " Chukun Pan 0 siblings, 1 reply; 4+ messages in thread From: Chukun Pan @ 2026-03-20 10:01 UTC (permalink / raw) To: Thinh Nguyen Cc: Yixun Lan, Ze Huang, Greg Kroah-Hartman, linux-riscv, linux-kernel, linux-usb, spacemit, Chukun Pan The vbus-supply property has been declared in spacemit,k1-dwc3.yaml https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/usb/spacemit%2Ck1-dwc3.yaml#L71 Changes in v2: - Improve commit title and messages - Enable regulator only in host mode - Enable regulator when matching compatible "spacemit,k1-dwc3" - Link to v1: https://lore.kernel.org/lkml/20260316080000.3130372-1-amadeus@jmu.edu.cn/ Chukun Pan (1): usb: dwc3: Add optional VBUS regulator support to SpacemiT K1 drivers/usb/dwc3/dwc3-generic-plat.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) -- 2.34.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/1] usb: dwc3: Add optional VBUS regulator support to SpacemiT K1 2026-03-20 10:01 [PATCH v2 0/1] usb: dwc3: Add optional VBUS regulator support to SpacemiT K1 Chukun Pan @ 2026-03-20 10:01 ` Chukun Pan 2026-03-24 1:41 ` Thinh Nguyen 0 siblings, 1 reply; 4+ messages in thread From: Chukun Pan @ 2026-03-20 10:01 UTC (permalink / raw) To: Thinh Nguyen Cc: Yixun Lan, Ze Huang, Greg Kroah-Hartman, linux-riscv, linux-kernel, linux-usb, spacemit, Chukun Pan Some SpacemiT K1 boards (like OrangePi R2S) provide USB VBUS through a controllable regulator. Add support for the optional vbus-supply property so the regulator can be properly managed in host mode instead of left always-on. Note that this doesn't apply to USB Hub downstream ports with different VBUS supplies. The enabled and disabled actions of the regulator are handled automatically by devm_regulator_get_enable_optional(). Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn> --- drivers/usb/dwc3/dwc3-generic-plat.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/usb/dwc3/dwc3-generic-plat.c b/drivers/usb/dwc3/dwc3-generic-plat.c index e846844e0023..bd281fde5ce0 100644 --- a/drivers/usb/dwc3/dwc3-generic-plat.c +++ b/drivers/usb/dwc3/dwc3-generic-plat.c @@ -12,6 +12,8 @@ #include <linux/reset.h> #include <linux/regmap.h> #include <linux/mfd/syscon.h> +#include <linux/regulator/consumer.h> +#include <linux/usb/otg.h> #include "glue.h" #define EIC7700_HSP_BUS_FILTER_EN BIT(0) @@ -69,6 +71,20 @@ static int dwc3_eic7700_init(struct dwc3_generic *dwc3g) return 0; } +static int dwc3_spacemit_k1_init(struct dwc3_generic *dwc3g) +{ + struct device *dev = dwc3g->dev; + + if (usb_get_dr_mode(dev) == USB_DR_MODE_HOST) { + int ret = devm_regulator_get_enable_optional(dev, "vbus"); + + if (ret && ret != -ENODEV) + return dev_err_probe(dev, ret, "failed to enable VBUS\n"); + } + + return 0; +} + static int dwc3_generic_probe(struct platform_device *pdev) { const struct dwc3_generic_config *plat_config; @@ -210,10 +226,14 @@ static const struct dwc3_generic_config eic7700_dwc3 = { .properties = DWC3_DEFAULT_PROPERTIES, }; +static const struct dwc3_generic_config spacemit_k1_dwc3 = { + .init = dwc3_spacemit_k1_init, +}; + static const struct of_device_id dwc3_generic_of_match[] = { - { .compatible = "spacemit,k1-dwc3", }, { .compatible = "fsl,ls1028a-dwc3", &fsl_ls1028_dwc3}, { .compatible = "eswin,eic7700-dwc3", &eic7700_dwc3}, + { .compatible = "spacemit,k1-dwc3", &spacemit_k1_dwc3}, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, dwc3_generic_of_match); -- 2.34.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/1] usb: dwc3: Add optional VBUS regulator support to SpacemiT K1 2026-03-20 10:01 ` [PATCH v2 1/1] " Chukun Pan @ 2026-03-24 1:41 ` Thinh Nguyen 2026-03-24 13:02 ` Chukun Pan 0 siblings, 1 reply; 4+ messages in thread From: Thinh Nguyen @ 2026-03-24 1:41 UTC (permalink / raw) To: Chukun Pan Cc: Thinh Nguyen, Yixun Lan, Ze Huang, Greg Kroah-Hartman, linux-riscv, linux-kernel, linux-usb, spacemit On Fri, Mar 20, 2026, Chukun Pan wrote: > Some SpacemiT K1 boards (like OrangePi R2S) provide USB VBUS > through a controllable regulator. Add support for the optional > vbus-supply property so the regulator can be properly managed > in host mode instead of left always-on. Note that this doesn't > apply to USB Hub downstream ports with different VBUS supplies. > > The enabled and disabled actions of the regulator are handled > automatically by devm_regulator_get_enable_optional(). > > Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn> > --- > drivers/usb/dwc3/dwc3-generic-plat.c | 22 +++++++++++++++++++++- > 1 file changed, 21 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/dwc3/dwc3-generic-plat.c b/drivers/usb/dwc3/dwc3-generic-plat.c > index e846844e0023..bd281fde5ce0 100644 > --- a/drivers/usb/dwc3/dwc3-generic-plat.c > +++ b/drivers/usb/dwc3/dwc3-generic-plat.c > @@ -12,6 +12,8 @@ > #include <linux/reset.h> > #include <linux/regmap.h> > #include <linux/mfd/syscon.h> > +#include <linux/regulator/consumer.h> > +#include <linux/usb/otg.h> > #include "glue.h" > > #define EIC7700_HSP_BUS_FILTER_EN BIT(0) > @@ -69,6 +71,20 @@ static int dwc3_eic7700_init(struct dwc3_generic *dwc3g) > return 0; > } > > +static int dwc3_spacemit_k1_init(struct dwc3_generic *dwc3g) > +{ > + struct device *dev = dwc3g->dev; > + > + if (usb_get_dr_mode(dev) == USB_DR_MODE_HOST) { > + int ret = devm_regulator_get_enable_optional(dev, "vbus"); > + > + if (ret && ret != -ENODEV) > + return dev_err_probe(dev, ret, "failed to enable VBUS\n"); > + } > + > + return 0; > +} > + > static int dwc3_generic_probe(struct platform_device *pdev) > { > const struct dwc3_generic_config *plat_config; > @@ -210,10 +226,14 @@ static const struct dwc3_generic_config eic7700_dwc3 = { > .properties = DWC3_DEFAULT_PROPERTIES, > }; > > +static const struct dwc3_generic_config spacemit_k1_dwc3 = { > + .init = dwc3_spacemit_k1_init, Set .properties = DWC3_DEFAULT_PROPERTIES, > +}; > + > static const struct of_device_id dwc3_generic_of_match[] = { > - { .compatible = "spacemit,k1-dwc3", }, > { .compatible = "fsl,ls1028a-dwc3", &fsl_ls1028_dwc3}, > { .compatible = "eswin,eic7700-dwc3", &eic7700_dwc3}, > + { .compatible = "spacemit,k1-dwc3", &spacemit_k1_dwc3}, Any reason for moving this to the bottom? To avoid cherry-pick/rebase conflict in the future, can we place this where it was before? The rest looks good. Thanks, Thinh > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, dwc3_generic_of_match); > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/1] usb: dwc3: Add optional VBUS regulator support to SpacemiT K1 2026-03-24 1:41 ` Thinh Nguyen @ 2026-03-24 13:02 ` Chukun Pan 0 siblings, 0 replies; 4+ messages in thread From: Chukun Pan @ 2026-03-24 13:02 UTC (permalink / raw) To: thinh.nguyen Cc: amadeus, dlan, gregkh, huang.ze, linux-kernel, linux-riscv, linux-usb, spacemit Hi, > Set .properties = DWC3_DEFAULT_PROPERTIES, I missed it. I'll add it in the next patch. > Any reason for moving this to the bottom? To avoid cherry-pick/rebase > conflict in the future, can we place this where it was before? Sure, I'll move it back to the original place. Thanks, Chukun ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-03-24 13:02 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-03-20 10:01 [PATCH v2 0/1] usb: dwc3: Add optional VBUS regulator support to SpacemiT K1 Chukun Pan 2026-03-20 10:01 ` [PATCH v2 1/1] " Chukun Pan 2026-03-24 1:41 ` Thinh Nguyen 2026-03-24 13:02 ` Chukun Pan
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®