summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFernando Guzman Lugo <fernando.lugo@ti.com>2012-06-15 13:12:04 -0500
committerGuillaume Aubertin <g-aubertin@ti.com>2012-06-26 12:20:40 +0200
commit686a9b4a5d66979106821615820ec01e1c3ad17f (patch)
treebfe3c567c996c6a44d4bb8f4ff3dd4828ac6c71f
parent6192a94f54e04df96f28514bebcc70ca64236f7c (diff)
rpmsg: resmgr : omap: move call to omap_get_clk_by_name into mach-omap2 directory
The function omap_get_clk_by_name is not exported. Therefore, we will have issue if we want to build omap_rpmsg_resmgr as a module. Now, this called have been moved to mach-omap2/rpmsg_resmgr.c which is always builtin. Now, ISS optional clock struct clk is exported as part of the platform data to its omap driver. Change-Id: I76dac4188f227af591733b02e965a892b5fccdf8 Signed-off-by: Fernando Guzman Lugo <fernando.lugo@ti.com>
-rw-r--r--arch/arm/mach-omap2/rpmsg_resmgr.c14
-rw-r--r--arch/arm/plat-omap/include/plat/rpmsg_resmgr.h1
-rw-r--r--drivers/rpmsg/omap_rpmsg_resmgr.c7
3 files changed, 20 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/rpmsg_resmgr.c b/arch/arm/mach-omap2/rpmsg_resmgr.c
index ef0a08ec3969..a62d4c218ffc 100644
--- a/arch/arm/mach-omap2/rpmsg_resmgr.c
+++ b/arch/arm/mach-omap2/rpmsg_resmgr.c
@@ -23,6 +23,7 @@
#include <plat/rpmsg_resmgr.h>
#include <plat/omap-pm.h>
#include <plat/cpu.h>
+#include <plat/clock.h>
static const char * const omap4_pauxclks[] = {
"sys_clkin_ck",
@@ -154,6 +155,7 @@ static struct omap_rprm_pdata omap2_rprm_data = {
static int __init omap2_rprm_init(void)
{
struct platform_device *pdev;
+ struct omap_rprm_pdata *pdata = &omap2_rprm_data;
int ret;
if (cpu_is_omap54xx()) {
@@ -164,12 +166,20 @@ static int __init omap2_rprm_init(void)
auxclk_cnt = ARRAY_SIZE(omap4_auxclks);
}
+ if (pdata->iss_opt_clk_name) {
+ pdata->iss_opt_clk =
+ omap_clk_get_by_name(pdata->iss_opt_clk_name);
+ if (!pdata->iss_opt_clk) {
+ dev_err(&pdev->dev, "error getting iss opt clk\n");
+ return -ENOENT;
+ }
+ }
+
pdev = platform_device_alloc("omap-rprm", -1);
if (!pdev)
return -ENOMEM;
- ret = platform_device_add_data(pdev, &omap2_rprm_data,
- sizeof omap2_rprm_data);
+ ret = platform_device_add_data(pdev, pdata, sizeof *pdata);
if (ret)
goto err;
diff --git a/arch/arm/plat-omap/include/plat/rpmsg_resmgr.h b/arch/arm/plat-omap/include/plat/rpmsg_resmgr.h
index 0d30eac5154b..5cce8548ad96 100644
--- a/arch/arm/plat-omap/include/plat/rpmsg_resmgr.h
+++ b/arch/arm/plat-omap/include/plat/rpmsg_resmgr.h
@@ -69,6 +69,7 @@ struct omap_rprm_ops {
*/
struct omap_rprm_pdata {
const char *iss_opt_clk_name;
+ struct clk *iss_opt_clk;
struct omap_rprm_ops *ops;
};
diff --git a/drivers/rpmsg/omap_rpmsg_resmgr.c b/drivers/rpmsg/omap_rpmsg_resmgr.c
index 7fd57c022d46..f6ccee45702e 100644
--- a/drivers/rpmsg/omap_rpmsg_resmgr.c
+++ b/drivers/rpmsg/omap_rpmsg_resmgr.c
@@ -535,12 +535,19 @@ static int omap_rprm_probe(struct platform_device *pdev)
struct omap_rprm_pdata *pdata = pdev->dev.platform_data;
cnstrnt_ops = pdata->ops;
+ /* set iss optional clock */
+
+ iss_opt_clk = pdata->iss_opt_clk;
+ mach_ops = pdata->ops;
+
return 0;
}
static int omap_rprm_remove(struct platform_device *pdev)
{
cnstrnt_ops = NULL;
+ iss_opt_clk = NULL;
+ mach_ops = NULL;
return 0;
}