aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/clockdomain.c
diff options
context:
space:
mode:
authorAbhijit Pagare <abhijitpagare@ti.com>2010-01-26 22:12:54 -0500
committerPaul Walmsley <paul@pwsan.com>2010-01-26 22:12:54 -0500
commit8a3ddc759b33d3b3b3953d001c8d3d9107becbb9 (patch)
tree7d6072694d33ef23b5a289c8ab688dc1568ad7e0 /arch/arm/mach-omap2/clockdomain.c
parent1a422724c6995004d0b9e95596ec4623e8ca1fc2 (diff)
ARM: OMAP4: PM: Refine the APIs to support OMAP4 features.
Port the APIs to support the OMAP4 clockdomain framework. Also take care of the compiling requirements for the same. Signed-off-by: Abhijit Pagare <abhijitpagare@ti.com> Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Benoit Cousson <b-cousson@ti.com> Cc: Rajendra Nayak <rnayak@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2/clockdomain.c')
-rw-r--r--arch/arm/mach-omap2/clockdomain.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c
index 5366a10d859..8c9e78c2c17 100644
--- a/arch/arm/mach-omap2/clockdomain.c
+++ b/arch/arm/mach-omap2/clockdomain.c
@@ -1,10 +1,11 @@
1/* 1/*
2 * OMAP2/3 clockdomain framework functions 2 * OMAP2/3/4 clockdomain framework functions
3 * 3 *
4 * Copyright (C) 2008 Texas Instruments, Inc. 4 * Copyright (C) 2008-2009 Texas Instruments, Inc.
5 * Copyright (C) 2008-2009 Nokia Corporation 5 * Copyright (C) 2008-2009 Nokia Corporation
6 * 6 *
7 * Written by Paul Walmsley and Jouni Högander 7 * Written by Paul Walmsley and Jouni Högander
8 * Added OMAP4 specific support by Abhijit Pagare <abhijitpagare@ti.com>
8 * 9 *
9 * This program is free software; you can redistribute it and/or modify 10 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as 11 * it under the terms of the GNU General Public License version 2 as
@@ -152,7 +153,7 @@ static void _omap2_clkdm_set_hwsup(struct clockdomain *clkdm, int enable)
152 bits = OMAP24XX_CLKSTCTRL_ENABLE_AUTO; 153 bits = OMAP24XX_CLKSTCTRL_ENABLE_AUTO;
153 else 154 else
154 bits = OMAP24XX_CLKSTCTRL_DISABLE_AUTO; 155 bits = OMAP24XX_CLKSTCTRL_DISABLE_AUTO;
155 } else if (cpu_is_omap34xx()) { 156 } else if (cpu_is_omap34xx() | cpu_is_omap44xx()) {
156 if (enable) 157 if (enable)
157 bits = OMAP34XX_CLKSTCTRL_ENABLE_AUTO; 158 bits = OMAP34XX_CLKSTCTRL_ENABLE_AUTO;
158 else 159 else
@@ -213,10 +214,12 @@ void clkdm_init(struct clockdomain **clkdms,
213 for (c = clkdms; *c; c++) 214 for (c = clkdms; *c; c++)
214 clkdm_register(*c); 215 clkdm_register(*c);
215 216
216 autodeps = init_autodeps; 217 if (!cpu_is_omap44xx()) {
217 if (autodeps) 218 autodeps = init_autodeps;
218 for (autodep = autodeps; autodep->pwrdm.ptr; autodep++) 219 if (autodeps)
219 _autodep_lookup(autodep); 220 for (autodep = autodeps; autodep->pwrdm.ptr; autodep++)
221 _autodep_lookup(autodep);
222 }
220} 223}
221 224
222/** 225/**
@@ -419,7 +422,7 @@ int omap2_clkdm_sleep(struct clockdomain *clkdm)
419 cm_set_mod_reg_bits(OMAP24XX_FORCESTATE, 422 cm_set_mod_reg_bits(OMAP24XX_FORCESTATE,
420 clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL); 423 clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL);
421 424
422 } else if (cpu_is_omap34xx()) { 425 } else if (cpu_is_omap34xx() | cpu_is_omap44xx()) {
423 426
424 u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_SLEEP << 427 u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_SLEEP <<
425 __ffs(clkdm->clktrctrl_mask)); 428 __ffs(clkdm->clktrctrl_mask));
@@ -463,7 +466,7 @@ int omap2_clkdm_wakeup(struct clockdomain *clkdm)
463 cm_clear_mod_reg_bits(OMAP24XX_FORCESTATE, 466 cm_clear_mod_reg_bits(OMAP24XX_FORCESTATE,
464 clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL); 467 clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL);
465 468
466 } else if (cpu_is_omap34xx()) { 469 } else if (cpu_is_omap34xx() | cpu_is_omap44xx()) {
467 470
468 u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_WAKEUP << 471 u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_WAKEUP <<
469 __ffs(clkdm->clktrctrl_mask)); 472 __ffs(clkdm->clktrctrl_mask));