Re: [PATCH] mv_xor: add support for clkdev framework

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

 



> >
> > Can you expand the changelog to explain why this patch is needed and
> > summarize what it does?  Also, releasing patches this late in the merge
Here is the patch with more explanation:
----------------------------------------<
>From c999ed53a913979f1739854cb7c881a9dde980c6 Mon Sep 17 00:00:00 2001
From: Saeed Bishara <saeed@xxxxxxxxxxx>
Date: Tue, 12 May 2009 13:29:34 +0300
Subject: [PATCH 1/2 v2] mv_xor: add support for clkdev framework

When the clkdev framework is enabled, the device's clock is gated
by default, this patch uses the framework to enable the clock
when using the driver loaded and disables it when unloading the
driver.

Signed-off-by: Saeed Bishara <saeed@xxxxxxxxxxx>
---
 drivers/dma/mv_xor.c |   16 ++++++++++++++++
 drivers/dma/mv_xor.h |    4 ++++
 2 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c
index ddab94f..db77903 100644
--- a/drivers/dma/mv_xor.c
+++ b/drivers/dma/mv_xor.c
@@ -1325,6 +1325,14 @@ static int mv_xor_shared_probe(struct platform_device *pdev)

 	platform_set_drvdata(pdev, msp);

+#if defined(CONFIG_HAVE_CLK)
+	msp->clk = clk_get(&pdev->dev, NULL);
+	if (IS_ERR(msp->clk))
+		dev_notice(&pdev->dev, "cannot get clkdev\n");
+	else
+		clk_enable(msp->clk);
+#endif
+
 	/*
 	 * (Re-)program MBUS remapping windows if we are asked to.
 	 */
@@ -1336,6 +1344,14 @@ static int mv_xor_shared_probe(struct platform_device *pdev)

 static int mv_xor_shared_remove(struct platform_device *pdev)
 {
+#if defined(CONFIG_HAVE_CLK)
+	struct mv_xor_shared_private *msp = platform_get_drvdata(pdev);
+
+	if (!IS_ERR(msp->clk)) {
+		clk_disable(msp->clk);
+		clk_put(msp->clk);
+	}
+#endif
 	return 0;
 }

diff --git a/drivers/dma/mv_xor.h b/drivers/dma/mv_xor.h
index 06cafe1..08c3815 100644
--- a/drivers/dma/mv_xor.h
+++ b/drivers/dma/mv_xor.h
@@ -22,6 +22,7 @@
 #include <linux/io.h>
 #include <linux/dmaengine.h>
 #include <linux/interrupt.h>
+#include <linux/clk.h>

 #define USE_TIMER
 #define MV_XOR_SLOT_SIZE		64
@@ -55,6 +56,9 @@
 struct mv_xor_shared_private {
 	void __iomem	*xor_base;
 	void __iomem	*xor_high_base;
+#if defined(CONFIG_HAVE_CLK)
+	struct clk		*clk;
+#endif
 };


-- 
1.6.0.4

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

[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux