Re: [PATCH v2 5/5] usb: musb: da8xx: Add a primary support of PM runtime

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/17/2017 05:35 PM, Alexandre Bailon wrote:

Currently, DA8xx doesn't support PM runtime.
In addition, the glue driver is managing the clock itself.
But the CPPI DMA needs to manage this clock too.
Add support to PM runtime and use the callback to enable / disable
the clock. And because the CPPI 4.1 is a child of Da8xx USB,
it will be able to enable / disable the clock by using PM runtime.

Signed-off-by: Alexandre Bailon <abailon@xxxxxxxxxxxx>
---
 drivers/usb/musb/da8xx.c | 41 ++++++++++++++++++++++++++++++++++-------
 1 file changed, 34 insertions(+), 7 deletions(-)

diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c
index 046356f..e67c41d 100644
--- a/drivers/usb/musb/da8xx.c
+++ b/drivers/usb/musb/da8xx.c
@@ -379,11 +379,7 @@ static int da8xx_musb_init(struct musb *musb)

 	musb->mregs += DA8XX_MENTOR_CORE_OFFSET;

-	ret = clk_prepare_enable(glue->clk);
-	if (ret) {
-		dev_err(glue->dev, "failed to enable clock\n");
-		return ret;
-	}
+	pm_runtime_get(musb->controller->parent);

   Not get_sync()? You're accessing a register next thing...

 	/* Returns zero if e.g. not clocked */
 	rev = musb_readl(reg_base, DA8XX_USB_REVISION_REG);
[...]
@@ -614,12 +612,41 @@ static const struct of_device_id da8xx_id_table[] = {
 MODULE_DEVICE_TABLE(of, da8xx_id_table);
 #endif

+static int da8xx_runtime_suspend(struct device *dev)
+{
+	struct da8xx_glue *glue = dev_get_drvdata(dev);
+
+	clk_disable_unprepare(glue->clk);

   I thought RPM would do that for you...

+
+	return 0;
+}
+
+static int da8xx_runtime_resume(struct device *dev)
+{
+	int ret;
+	struct da8xx_glue *glue = dev_get_drvdata(dev);
+
+	ret = clk_prepare_enable(glue->clk);

   And this too...

+	if (ret) {
+		dev_err(glue->dev, "failed to enable clock\n");
+		return ret;
+	}
+
+	return 0;
+}
[...]

MBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux