From b3effcc1a822942f7528cc6261f6a11510ce162a Mon Sep 17 00:00:00 2001 From: William Wu Date: Mon, 23 Jul 2018 09:27:55 +0800 Subject: [PATCH] usb: dwc2: add pm runtime support Adds pm_runtime support for dwc2, so that power domain is enabled only when there is a transaction going on to help save power. Change-Id: I318552774d20eeaed521ff179f99b2551ee24183 Signed-off-by: William Wu Signed-off-by: Frank Wang --- drivers/usb/dwc2/platform.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c index bb38f24aa3f2..ad6003fc72a9 100644 --- a/drivers/usb/dwc2/platform.c +++ b/drivers/usb/dwc2/platform.c @@ -333,6 +333,9 @@ static int dwc2_driver_remove(struct platform_device *dev) if (hsotg->params.activate_stm_id_vb_detection) regulator_disable(hsotg->usb33d); + pm_runtime_put_sync(hsotg->dev); + pm_runtime_disable(hsotg->dev); + if (hsotg->ll_hw_enabled) dwc2_lowlevel_hw_disable(hsotg); @@ -484,6 +487,11 @@ static int dwc2_driver_probe(struct platform_device *dev) hsotg->needs_byte_swap = dwc2_check_core_endianness(hsotg); + pm_runtime_enable(hsotg->dev); + retval = pm_runtime_get_sync(hsotg->dev); + if (retval < 0) + goto error; + retval = dwc2_get_dr_mode(hsotg); if (retval) goto error; @@ -640,6 +648,8 @@ error_init: if (hsotg->params.activate_stm_id_vb_detection) regulator_disable(hsotg->usb33d); error: + pm_runtime_put_sync(hsotg->dev); + pm_runtime_disable(hsotg->dev); if (hsotg->dr_mode != USB_DR_MODE_PERIPHERAL) dwc2_lowlevel_hw_disable(hsotg); return retval;