69 lines
2.2 KiB
Diff
69 lines
2.2 KiB
Diff
|
From e0f681c2c11a25b76626cea77deb819a4754375d Mon Sep 17 00:00:00 2001
|
||
|
From: Fabrice Gasnier <fabrice.gasnier@st.com>
|
||
|
Date: Wed, 5 Sep 2018 13:40:02 +0200
|
||
|
Subject: [PATCH 02/53] usb: dwc2: get optional vbus-supply regulator once
|
||
|
|
||
|
Move devm_regulator_get_optional() call to probe routine. This avoids
|
||
|
'vbus-supply' regulator to be requested lots of times, upon each call
|
||
|
to dwc2_vbus_supply_init(), e.g. like with runtime pm.
|
||
|
|
||
|
Fixes: 531ef5ebea96 ("usb: dwc2: add support for host mode external
|
||
|
vbus supply")
|
||
|
|
||
|
Tested-by: Artur Petrosyan <arturp@synopsys.com>
|
||
|
Acked-by: Minas Harutyunyan <hminas@synopsys.com>
|
||
|
Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
|
||
|
Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
|
||
|
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||
|
---
|
||
|
drivers/usb/dwc2/hcd.c | 12 +++---------
|
||
|
drivers/usb/dwc2/platform.c | 8 ++++++++
|
||
|
2 files changed, 11 insertions(+), 9 deletions(-)
|
||
|
|
||
|
diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
|
||
|
index 5f23b933cafc..24aa5a3acf86 100644
|
||
|
--- a/drivers/usb/dwc2/hcd.c
|
||
|
+++ b/drivers/usb/dwc2/hcd.c
|
||
|
@@ -358,16 +358,10 @@ static void dwc2_gusbcfg_init(struct dwc2_hsotg *hsotg)
|
||
|
|
||
|
static int dwc2_vbus_supply_init(struct dwc2_hsotg *hsotg)
|
||
|
{
|
||
|
- int ret;
|
||
|
-
|
||
|
- hsotg->vbus_supply = devm_regulator_get_optional(hsotg->dev, "vbus");
|
||
|
- if (IS_ERR(hsotg->vbus_supply)) {
|
||
|
- ret = PTR_ERR(hsotg->vbus_supply);
|
||
|
- hsotg->vbus_supply = NULL;
|
||
|
- return ret == -ENODEV ? 0 : ret;
|
||
|
- }
|
||
|
+ if (hsotg->vbus_supply)
|
||
|
+ return regulator_enable(hsotg->vbus_supply);
|
||
|
|
||
|
- return regulator_enable(hsotg->vbus_supply);
|
||
|
+ return 0;
|
||
|
}
|
||
|
|
||
|
static int dwc2_vbus_supply_exit(struct dwc2_hsotg *hsotg)
|
||
|
diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
|
||
|
index 577642895b57..c0b64d483552 100644
|
||
|
--- a/drivers/usb/dwc2/platform.c
|
||
|
+++ b/drivers/usb/dwc2/platform.c
|
||
|
@@ -432,6 +432,14 @@ static int dwc2_driver_probe(struct platform_device *dev)
|
||
|
if (retval)
|
||
|
return retval;
|
||
|
|
||
|
+ hsotg->vbus_supply = devm_regulator_get_optional(hsotg->dev, "vbus");
|
||
|
+ if (IS_ERR(hsotg->vbus_supply)) {
|
||
|
+ retval = PTR_ERR(hsotg->vbus_supply);
|
||
|
+ hsotg->vbus_supply = NULL;
|
||
|
+ if (retval != -ENODEV)
|
||
|
+ return retval;
|
||
|
+ }
|
||
|
+
|
||
|
retval = dwc2_lowlevel_hw_enable(hsotg);
|
||
|
if (retval)
|
||
|
return retval;
|
||
|
--
|
||
|
2.11.0
|
||
|
|