From: Murali Karicheri <[email protected]>

In one of the new SoC that we are working on, there are multiple power
domains similar to that in C6670. Currently clock module assumes
that there are only two power domains (ARM and DSP). This patch is
added to allow porting of Linux on to the above SoC.

Boot tested this change on DM365 and OMAP L137

Signed-off-by: Murali Karicheri <[email protected]>
---
 arch/arm/mach-davinci/clock.c  |   13 +++----------
 arch/arm/mach-davinci/clock.h  |    8 ++++----
 arch/arm/mach-davinci/dm644x.c |    4 ++--
 arch/arm/mach-davinci/dm646x.c |    2 +-
 4 files changed, 10 insertions(+), 17 deletions(-)

diff --git a/arch/arm/mach-davinci/clock.c b/arch/arm/mach-davinci/clock.c
index e4e3af1..9356ac4 100644
--- a/arch/arm/mach-davinci/clock.c
+++ b/arch/arm/mach-davinci/clock.c
@@ -31,19 +31,12 @@ static LIST_HEAD(clocks);
 static DEFINE_MUTEX(clocks_mutex);
 static DEFINE_SPINLOCK(clockfw_lock);
 
-static unsigned psc_domain(struct clk *clk)
-{
-       return (clk->flags & PSC_DSP)
-               ? DAVINCI_GPSC_DSPDOMAIN
-               : DAVINCI_GPSC_ARMDOMAIN;
-}
-
 static void __clk_enable(struct clk *clk)
 {
        if (clk->parent)
                __clk_enable(clk->parent);
        if (clk->usecount++ == 0 && (clk->flags & CLK_PSC))
-               davinci_psc_config(psc_domain(clk), clk->gpsc, clk->lpsc,
+               davinci_psc_config(clk->domain, clk->gpsc, clk->lpsc,
                                PSC_STATE_ENABLE);
 }
 
@@ -53,7 +46,7 @@ static void __clk_disable(struct clk *clk)
                return;
        if (--clk->usecount == 0 && !(clk->flags & CLK_PLL) &&
            (clk->flags & CLK_PSC))
-               davinci_psc_config(psc_domain(clk), clk->gpsc, clk->lpsc,
+               davinci_psc_config(clk->domain, clk->gpsc, clk->lpsc,
                                (clk->flags & PSC_SWRSTDISABLE) ?
                                PSC_STATE_SWRSTDISABLE : PSC_STATE_DISABLE);
        if (clk->parent)
@@ -238,7 +231,7 @@ static int __init clk_disable_unused(void)
 
                pr_debug("Clocks: disable unused %s\n", ck->name);
 
-               davinci_psc_config(psc_domain(ck), ck->gpsc, ck->lpsc,
+               davinci_psc_config(ck->domain, ck->gpsc, ck->lpsc,
                                (ck->flags & PSC_SWRSTDISABLE) ?
                                PSC_STATE_SWRSTDISABLE : PSC_STATE_DISABLE);
        }
diff --git a/arch/arm/mach-davinci/clock.h b/arch/arm/mach-davinci/clock.h
index 0dd2203..3dd8a60 100644
--- a/arch/arm/mach-davinci/clock.h
+++ b/arch/arm/mach-davinci/clock.h
@@ -93,6 +93,7 @@ struct clk {
        u8                      usecount;
        u8                      lpsc;
        u8                      gpsc;
+       u8                      domain;
        u32                     flags;
        struct clk              *parent;
        struct list_head        children;       /* list of children */
@@ -107,10 +108,9 @@ struct clk {
 /* Clock flags: SoC-specific flags start at BIT(16) */
 #define ALWAYS_ENABLED         BIT(1)
 #define CLK_PSC                        BIT(2)
-#define PSC_DSP                        BIT(3) /* PSC uses DSP domain, not ARM 
*/
-#define CLK_PLL                        BIT(4) /* PLL-derived clock */
-#define PRE_PLL                        BIT(5) /* source is before PLL mult/div 
*/
-#define PSC_SWRSTDISABLE       BIT(6) /* Disable state is SwRstDisable */
+#define CLK_PLL                        BIT(3) /* PLL-derived clock */
+#define PRE_PLL                        BIT(4) /* source is before PLL mult/div 
*/
+#define PSC_SWRSTDISABLE       BIT(5) /* Disable state is SwRstDisable */
 
 #define CLK(dev, con, ck)      \
        {                       \
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
index 9a2376b..5c17132 100644
--- a/arch/arm/mach-davinci/dm644x.c
+++ b/arch/arm/mach-davinci/dm644x.c
@@ -130,7 +130,7 @@ static struct clk dsp_clk = {
        .name = "dsp",
        .parent = &pll1_sysclk1,
        .lpsc = DAVINCI_LPSC_GEM,
-       .flags = PSC_DSP,
+       .domain = DAVINCI_GPSC_DSPDOMAIN,
        .usecount = 1,                  /* REVISIT how to disable? */
 };
 
@@ -145,7 +145,7 @@ static struct clk vicp_clk = {
        .name = "vicp",
        .parent = &pll1_sysclk2,
        .lpsc = DAVINCI_LPSC_IMCOP,
-       .flags = PSC_DSP,
+       .domain = DAVINCI_GPSC_DSPDOMAIN,
        .usecount = 1,                  /* REVISIT how to disable? */
 };
 
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
index 1e0f809..c110c1f 100644
--- a/arch/arm/mach-davinci/dm646x.c
+++ b/arch/arm/mach-davinci/dm646x.c
@@ -157,7 +157,7 @@ static struct clk dsp_clk = {
        .name = "dsp",
        .parent = &pll1_sysclk1,
        .lpsc = DM646X_LPSC_C64X_CPU,
-       .flags = PSC_DSP,
+       .domain = DAVINCI_GPSC_DSPDOMAIN,
        .usecount = 1,                  /* REVISIT how to disable? */
 };
 
-- 
1.7.0.4

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to