From: Kishon Vijay Abraham I <kishon@ti.com>
To: linux-omap@vger.kernel.org, khilman@ti.com, paul@pwsan.com,
b-cousson@ti.com, tony@atomide.com,
broonie@opensource.wolfsonmicro.com, jhnikula@gmail.com,
peter.ujfalusi@nokia.com
Cc: p-basak2@ti.com, kishon@ti.com, charu@ti.com, shubhrajyoti@ti.com
Subject: [PATCH v4 10/13] OMAP: McBSP: Add pm runtime support
Date: Thu, 24 Feb 2011 15:16:54 +0530 [thread overview]
Message-ID: <1298540817-15874-11-git-send-email-kishon@ti.com> (raw)
In-Reply-To: <1298540817-15874-1-git-send-email-kishon@ti.com>
Add pm runtime support for McBSP driver.
Reference to fclk is not removed because it is required when the
functional clock is switched from one source to another.
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Cc: Paul Walmsley <paul@pwsan.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Acked-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
arch/arm/mach-omap2/mcbsp.c | 5 +++--
arch/arm/plat-omap/include/plat/mcbsp.h | 1 -
arch/arm/plat-omap/mcbsp.c | 23 ++++++-----------------
3 files changed, 9 insertions(+), 20 deletions(-)
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c
index 275d6cf..4ada6a9 100644
--- a/arch/arm/mach-omap2/mcbsp.c
+++ b/arch/arm/mach-omap2/mcbsp.c
@@ -23,6 +23,7 @@
#include <plat/cpu.h>
#include <plat/mcbsp.h>
#include <plat/omap_device.h>
+#include <linux/pm_runtime.h>
#include "control.h"
@@ -83,7 +84,7 @@ int omap2_mcbsp_set_clks_src(u8 id, u8 fck_src_id)
return -EINVAL;
}
- clk_disable(mcbsp->fclk);
+ pm_runtime_put_sync(mcbsp->dev);
r = clk_set_parent(mcbsp->fclk, fck_src);
if (IS_ERR_VALUE(r)) {
@@ -93,7 +94,7 @@ int omap2_mcbsp_set_clks_src(u8 id, u8 fck_src_id)
return -EINVAL;
}
- clk_enable(mcbsp->fclk);
+ pm_runtime_get_sync(mcbsp->dev);
clk_put(fck_src);
diff --git a/arch/arm/plat-omap/include/plat/mcbsp.h b/arch/arm/plat-omap/include/plat/mcbsp.h
index c6cabfc..964a940 100644
--- a/arch/arm/plat-omap/include/plat/mcbsp.h
+++ b/arch/arm/plat-omap/include/plat/mcbsp.h
@@ -465,7 +465,6 @@ struct omap_mcbsp {
/* Protect the field .free, while checking if the mcbsp is in use */
spinlock_t lock;
struct omap_mcbsp_platform_data *pdata;
- struct clk *iclk;
struct clk *fclk;
#ifdef CONFIG_ARCH_OMAP3
struct omap_mcbsp_st_data *st_data;
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index 30683ce..b1b0a06 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -28,6 +28,7 @@
#include <plat/dma.h>
#include <plat/mcbsp.h>
#include <plat/omap_device.h>
+#include <linux/pm_runtime.h>
/* XXX These "sideways" includes are a sign that something is wrong */
#include "../mach-omap2/cm2xxx_3xxx.h"
@@ -770,8 +771,7 @@ int omap_mcbsp_request(unsigned int id)
if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->request)
mcbsp->pdata->ops->request(id);
- clk_enable(mcbsp->iclk);
- clk_enable(mcbsp->fclk);
+ pm_runtime_get_sync(mcbsp->dev);
/* Do procedure specific to omap34xx arch, if applicable */
omap34xx_mcbsp_request(mcbsp);
@@ -819,8 +819,7 @@ err_clk_disable:
/* Do procedure specific to omap34xx arch, if applicable */
omap34xx_mcbsp_free(mcbsp);
- clk_disable(mcbsp->fclk);
- clk_disable(mcbsp->iclk);
+ pm_runtime_put_sync(mcbsp->dev);
spin_lock(&mcbsp->lock);
mcbsp->free = true;
@@ -850,8 +849,7 @@ void omap_mcbsp_free(unsigned int id)
/* Do procedure specific to omap34xx arch, if applicable */
omap34xx_mcbsp_free(mcbsp);
- clk_disable(mcbsp->fclk);
- clk_disable(mcbsp->iclk);
+ pm_runtime_put_sync(mcbsp->dev);
if (mcbsp->io_type == OMAP_MCBSP_IRQ_IO) {
/* Free IRQs */
@@ -1840,32 +1838,24 @@ static int __devinit omap_mcbsp_probe(struct platform_device *pdev)
}
mcbsp->dma_tx_sync = res->start;
- mcbsp->iclk = clk_get(&pdev->dev, "ick");
- if (IS_ERR(mcbsp->iclk)) {
- ret = PTR_ERR(mcbsp->iclk);
- dev_err(&pdev->dev, "unable to get ick: %d\n", ret);
- goto err_res;
- }
-
mcbsp->fclk = clk_get(&pdev->dev, "fck");
if (IS_ERR(mcbsp->fclk)) {
ret = PTR_ERR(mcbsp->fclk);
dev_err(&pdev->dev, "unable to get fck: %d\n", ret);
- goto err_fclk;
+ goto err_res;
}
mcbsp->pdata = pdata;
mcbsp->dev = &pdev->dev;
mcbsp_ptr[id] = mcbsp;
platform_set_drvdata(pdev, mcbsp);
+ pm_runtime_enable(mcbsp->dev);
/* Initialize mcbsp properties for OMAP34XX if needed / applicable */
omap34xx_device_init(mcbsp);
return 0;
-err_fclk:
- clk_put(mcbsp->iclk);
err_res:
iounmap(mcbsp->io_base);
err_ioremap:
@@ -1888,7 +1878,6 @@ static int __devexit omap_mcbsp_remove(struct platform_device *pdev)
omap34xx_device_exit(mcbsp);
clk_put(mcbsp->fclk);
- clk_put(mcbsp->iclk);
iounmap(mcbsp->io_base);
kfree(mcbsp);
--
1.7.0.4
next prev parent reply other threads:[~2011-02-24 9:52 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-24 9:46 [PATCH v4 00/13] OMAP: McBSP: hwmod adaptation and runtime conversion Kishon Vijay Abraham I
2011-02-24 9:46 ` [PATCH v4 01/13] OMAP: hwmod: allow hwmod to provide address space accessible from SDMA Kishon Vijay Abraham I
2011-02-24 9:46 ` [PATCH v4 02/13] OMAP: McBSP: Convert McBSP to platform device model Kishon Vijay Abraham I
2011-02-24 9:46 ` [PATCH v4 03/13] OMAP2420: hwmod data: Add McBSP Kishon Vijay Abraham I
2011-02-24 9:46 ` [PATCH v4 04/13] OMAP2430: " Kishon Vijay Abraham I
2011-02-24 9:46 ` [PATCH v4 05/13] OMAP3: " Kishon Vijay Abraham I
2011-02-24 9:46 ` [PATCH v4 06/13] OMAP4: hwmod: Naming of address space Kishon Vijay Abraham I
2011-02-24 9:46 ` [PATCH v4 07/13] OMAP3: hwmod: add dev_attr for McBSP sidetone Kishon Vijay Abraham I
2011-02-24 9:46 ` [PATCH v4 08/13] OMAP2+: McBSP: hwmod adaptation for McBSP Kishon Vijay Abraham I
2011-02-24 9:46 ` [PATCH v4 09/13] OMAP: McBSP: use omap_device APIs to modify SYSCONFIG Kishon Vijay Abraham I
2011-02-24 19:10 ` Tony Lindgren
2011-02-24 9:46 ` Kishon Vijay Abraham I [this message]
2011-02-24 9:46 ` [PATCH v4 11/13] OMAP: McBSP: APIs to pass DMA params from McBSP driver to client drivers Kishon Vijay Abraham I
2011-02-24 9:46 ` [PATCH v4 12/13] ASoC: McBSP: get hw params from McBSP driver Kishon Vijay Abraham I
2011-02-24 9:46 ` [PATCH v4 13/13] OMAP: hwmod: Removal of macros for data that is obtained from hwmod database Kishon Vijay Abraham I
2011-02-24 19:11 ` [PATCH v4 00/13] OMAP: McBSP: hwmod adaptation and runtime conversion Tony Lindgren
2011-02-24 19:30 ` ABRAHAM, KISHON VIJAY
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1298540817-15874-11-git-send-email-kishon@ti.com \
--to=kishon@ti.com \
--cc=b-cousson@ti.com \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=charu@ti.com \
--cc=jhnikula@gmail.com \
--cc=khilman@ti.com \
--cc=linux-omap@vger.kernel.org \
--cc=p-basak2@ti.com \
--cc=paul@pwsan.com \
--cc=peter.ujfalusi@nokia.com \
--cc=shubhrajyoti@ti.com \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox