aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2010-01-29 14:37:48 -0500
committerTony Lindgren <tony@atomide.com>2010-01-29 14:37:48 -0500
commit9ba874506b7b3883d78b8cad61eba39c4bb09885 (patch)
tree8e2112bea42e5cca4f8394274309e30f83b55fc1
parent4f4e65d2484811210a2826fa9d59712c7fcf1b49 (diff)
parent98fa3d8aeabf7a039cc920a9c2ffebc6b4648e2b (diff)
Merge branch 'for_2.6.34_4f4e65_a' of git://git.pwsan.com/linux-2.6 into omap-for-linus
-rw-r--r--arch/arm/mach-omap1/clock.c6
-rw-r--r--arch/arm/mach-omap1/clock_data.c3
-rw-r--r--arch/arm/mach-omap2/Makefile20
-rw-r--r--arch/arm/mach-omap2/clkt2xxx_apll.c120
-rw-r--r--arch/arm/mach-omap2/clkt2xxx_dpllcore.c173
-rw-r--r--arch/arm/mach-omap2/clkt2xxx_osc.c62
-rw-r--r--arch/arm/mach-omap2/clkt2xxx_sys.c50
-rw-r--r--arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c254
-rw-r--r--arch/arm/mach-omap2/clkt34xx_dpll3m2.c120
-rw-r--r--arch/arm/mach-omap2/clkt_clksel.c417
-rw-r--r--arch/arm/mach-omap2/clkt_dpll.c386
-rw-r--r--arch/arm/mach-omap2/clock.c844
-rw-r--r--arch/arm/mach-omap2/clock.h12
-rw-r--r--arch/arm/mach-omap2/clock2xxx.c548
-rw-r--r--arch/arm/mach-omap2/clock2xxx.h7
-rw-r--r--arch/arm/mach-omap2/clock2xxx_data.c10
-rw-r--r--arch/arm/mach-omap2/clock34xx.c154
-rw-r--r--arch/arm/mach-omap2/clock34xx.h1
-rw-r--r--arch/arm/mach-omap2/clock34xx_data.c384
-rw-r--r--arch/arm/mach-omap2/clock44xx.c14
-rw-r--r--arch/arm/mach-omap2/clock44xx.h2
-rw-r--r--arch/arm/mach-omap2/clock44xx_data.c6
-rw-r--r--arch/arm/mach-omap2/clockdomain.c748
-rw-r--r--arch/arm/mach-omap2/clockdomains.h672
-rw-r--r--arch/arm/mach-omap2/clockdomains44xx.h250
-rw-r--r--arch/arm/mach-omap2/cm-regbits-44xx.h536
-rw-r--r--arch/arm/mach-omap2/cm.h5
-rw-r--r--arch/arm/mach-omap2/dpll3xxx.c (renamed from arch/arm/mach-omap2/dpll.c)113
-rw-r--r--arch/arm/mach-omap2/id.c1
-rw-r--r--arch/arm/mach-omap2/io.c19
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c27
-rw-r--r--arch/arm/mach-omap2/pm-debug.c20
-rw-r--r--arch/arm/mach-omap2/pm24xx.c54
-rw-r--r--arch/arm/mach-omap2/pm34xx.c37
-rw-r--r--arch/arm/mach-omap2/powerdomain.c674
-rw-r--r--arch/arm/mach-omap2/powerdomains.h134
-rw-r--r--arch/arm/mach-omap2/powerdomains24xx.h87
-rw-r--r--arch/arm/mach-omap2/powerdomains34xx.h157
-rw-r--r--arch/arm/mach-omap2/powerdomains44xx.h310
-rw-r--r--arch/arm/mach-omap2/prcm-common.h9
-rw-r--r--arch/arm/mach-omap2/prcm.c80
-rw-r--r--arch/arm/mach-omap2/prm-regbits-44xx.h1010
-rw-r--r--arch/arm/mach-omap2/prm.h17
-rw-r--r--arch/arm/mach-omap2/sleep34xx.S2
-rw-r--r--arch/arm/plat-omap/clock.c13
-rw-r--r--arch/arm/plat-omap/include/plat/clkdev_omap.h26
-rw-r--r--arch/arm/plat-omap/include/plat/clock.h5
-rw-r--r--arch/arm/plat-omap/include/plat/clockdomain.h98
-rw-r--r--arch/arm/plat-omap/include/plat/control.h17
-rw-r--r--arch/arm/plat-omap/include/plat/cpu.h8
-rw-r--r--arch/arm/plat-omap/include/plat/omap_device.h4
-rw-r--r--arch/arm/plat-omap/include/plat/omap_hwmod.h2
-rw-r--r--arch/arm/plat-omap/include/plat/powerdomain.h91
-rw-r--r--arch/arm/plat-omap/include/plat/prcm.h8
-rw-r--r--arch/arm/plat-omap/omap_device.c41
55 files changed, 5113 insertions, 3755 deletions
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c
index 04f1d29cba2c..3e052f6532b1 100644
--- a/arch/arm/mach-omap1/clock.c
+++ b/arch/arm/mach-omap1/clock.c
@@ -52,12 +52,6 @@ const struct clkops clkops_dummy = {
52 .disable = clk_omap1_dummy_disable, 52 .disable = clk_omap1_dummy_disable,
53}; 53};
54 54
55/* XXX can be replaced with a fixed_divisor_recalc */
56unsigned long omap1_watchdog_recalc(struct clk *clk)
57{
58 return clk->parent->rate / 14;
59}
60
61unsigned long omap1_uart_recalc(struct clk *clk) 55unsigned long omap1_uart_recalc(struct clk *clk)
62{ 56{
63 unsigned int val = __raw_readl(clk->enable_reg); 57 unsigned int val = __raw_readl(clk->enable_reg);
diff --git a/arch/arm/mach-omap1/clock_data.c b/arch/arm/mach-omap1/clock_data.c
index 65e7b5b85d83..edefb3440d30 100644
--- a/arch/arm/mach-omap1/clock_data.c
+++ b/arch/arm/mach-omap1/clock_data.c
@@ -149,7 +149,8 @@ static struct arm_idlect1_clk armwdt_ck = {
149 .flags = CLOCK_IDLE_CONTROL, 149 .flags = CLOCK_IDLE_CONTROL,
150 .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2), 150 .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
151 .enable_bit = EN_WDTCK, 151 .enable_bit = EN_WDTCK,
152 .recalc = &omap1_watchdog_recalc, 152 .fixed_div = 14,
153 .recalc = &omap_fixed_divisor_recalc,
153 }, 154 },
154 .idlect_shift = 0, 155 .idlect_shift = 0,
155}; 156};
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index b32678b848bc..34c2867e0f63 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -6,14 +6,22 @@
6obj-y := id.o io.o control.o mux.o devices.o serial.o gpmc.o timer-gp.o 6obj-y := id.o io.o control.o mux.o devices.o serial.o gpmc.o timer-gp.o
7 7
8omap-2-3-common = irq.o sdrc.o omap_hwmod.o 8omap-2-3-common = irq.o sdrc.o omap_hwmod.o
9omap-3-4-common = dpll.o 9omap-3-4-common = dpll3xxx.o
10prcm-common = prcm.o powerdomain.o 10prcm-common = prcm.o powerdomain.o
11clock-common = clock.o clock_common_data.o clockdomain.o 11clock-common = clock.o clock_common_data.o \
12 12 clockdomain.o clkt_dpll.o \
13obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(prcm-common) $(clock-common) 13 clkt_clksel.o
14clock-omap2xxx = clkt2xxx_dpllcore.o \
15 clkt2xxx_virt_prcm_set.o \
16 clkt2xxx_apll.o clkt2xxx_osc.o \
17 clkt2xxx_sys.o
18clock-omap3xxx = clkt34xx_dpll3m2.o
19
20obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(prcm-common) $(clock-common) \
21 $(clock-omap2xxx)
14obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(prcm-common) $(clock-common) \ 22obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(prcm-common) $(clock-common) \
15 $(omap-3-4-common) 23 $(omap-3-4-common) $(clock-omap3xxx)
16obj-$(CONFIG_ARCH_OMAP4) += $(omap-3-4-common) prcm.o clock.o 24obj-$(CONFIG_ARCH_OMAP4) += $(omap-3-4-common) $(prcm-common) $(clock-common)
17 25
18obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o 26obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
19 27
diff --git a/arch/arm/mach-omap2/clkt2xxx_apll.c b/arch/arm/mach-omap2/clkt2xxx_apll.c
new file mode 100644
index 000000000000..fc32ff8e790f
--- /dev/null
+++ b/arch/arm/mach-omap2/clkt2xxx_apll.c
@@ -0,0 +1,120 @@
1/*
2 * OMAP2xxx APLL clock control functions
3 *
4 * Copyright (C) 2005-2008 Texas Instruments, Inc.
5 * Copyright (C) 2004-2010 Nokia Corporation
6 *
7 * Contacts:
8 * Richard Woodruff <r-woodruff2@ti.com>
9 * Paul Walmsley
10 *
11 * Based on earlier work by Tuukka Tikkanen, Tony Lindgren,
12 * Gordon McNutt and RidgeRun, Inc.
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2 as
16 * published by the Free Software Foundation.
17 */
18#undef DEBUG
19
20#include <linux/kernel.h>
21#include <linux/clk.h>
22#include <linux/io.h>
23
24#include <plat/clock.h>
25#include <plat/prcm.h>
26
27#include "clock.h"
28#include "clock2xxx.h"
29#include "cm.h"
30#include "cm-regbits-24xx.h"
31
32/* CM_CLKEN_PLL.EN_{54,96}M_PLL options (24XX) */
33#define EN_APLL_STOPPED 0
34#define EN_APLL_LOCKED 3
35
36/* CM_CLKSEL1_PLL.APLLS_CLKIN options (24XX) */
37#define APLLS_CLKIN_19_2MHZ 0
38#define APLLS_CLKIN_13MHZ 2
39#define APLLS_CLKIN_12MHZ 3
40
41/* Private functions */
42
43/* Enable an APLL if off */
44static int omap2_clk_apll_enable(struct clk *clk, u32 status_mask)
45{
46 u32 cval, apll_mask;
47
48 apll_mask = EN_APLL_LOCKED << clk->enable_bit;
49
50 cval = cm_read_mod_reg(PLL_MOD, CM_CLKEN);
51
52 if ((cval & apll_mask) == apll_mask)
53 return 0; /* apll already enabled */
54
55 cval &= ~apll_mask;
56 cval |= apll_mask;
57 cm_write_mod_reg(cval, PLL_MOD, CM_CLKEN);
58
59 omap2_cm_wait_idlest(OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), status_mask,
60 clk->name);
61
62 /*
63 * REVISIT: Should we return an error code if omap2_wait_clock_ready()
64 * fails?
65 */
66 return 0;
67}
68
69static int omap2_clk_apll96_enable(struct clk *clk)
70{
71 return omap2_clk_apll_enable(clk, OMAP24XX_ST_96M_APLL);
72}
73
74static int omap2_clk_apll54_enable(struct clk *clk)
75{
76 return omap2_clk_apll_enable(clk, OMAP24XX_ST_54M_APLL);
77}
78
79/* Stop APLL */
80static void omap2_clk_apll_disable(struct clk *clk)
81{
82 u32 cval;
83
84 cval = cm_read_mod_reg(PLL_MOD, CM_CLKEN);
85 cval &= ~(EN_APLL_LOCKED << clk->enable_bit);
86 cm_write_mod_reg(cval, PLL_MOD, CM_CLKEN);
87}
88
89/* Public data */
90
91const struct clkops clkops_apll96 = {
92 .enable = omap2_clk_apll96_enable,
93 .disable = omap2_clk_apll_disable,
94};
95
96const struct clkops clkops_apll54 = {
97 .enable = omap2_clk_apll54_enable,
98 .disable = omap2_clk_apll_disable,
99};
100
101/* Public functions */
102
103u32 omap2xxx_get_apll_clkin(void)
104{
105 u32 aplls, srate = 0;
106
107 aplls = cm_read_mod_reg(PLL_MOD, CM_CLKSEL1);
108 aplls &= OMAP24XX_APLLS_CLKIN_MASK;
109 aplls >>= OMAP24XX_APLLS_CLKIN_SHIFT;
110
111 if (aplls == APLLS_CLKIN_19_2MHZ)
112 srate = 19200000;
113 else if (aplls == APLLS_CLKIN_13MHZ)
114 srate = 13000000;
115 else if (aplls == APLLS_CLKIN_12MHZ)
116 srate = 12000000;
117
118 return srate;
119}
120
diff --git a/arch/arm/mach-omap2/clkt2xxx_dpllcore.c b/arch/arm/mach-omap2/clkt2xxx_dpllcore.c
new file mode 100644
index 000000000000..019048434f13
--- /dev/null
+++ b/arch/arm/mach-omap2/clkt2xxx_dpllcore.c
@@ -0,0 +1,173 @@
1/*
2 * DPLL + CORE_CLK composite clock functions
3 *
4 * Copyright (C) 2005-2008 Texas Instruments, Inc.
5 * Copyright (C) 2004-2010 Nokia Corporation
6 *
7 * Contacts:
8 * Richard Woodruff <r-woodruff2@ti.com>
9 * Paul Walmsley
10 *
11 * Based on earlier work by Tuukka Tikkanen, Tony Lindgren,
12 * Gordon McNutt and RidgeRun, Inc.
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2 as
16 * published by the Free Software Foundation.
17 *
18 * XXX The DPLL and CORE clocks should be split into two separate clock
19 * types.
20 */
21#undef DEBUG
22
23#include <linux/kernel.h>
24#include <linux/errno.h>
25#include <linux/clk.h>
26#include <linux/io.h>
27
28#include <plat/clock.h>
29#include <plat/sram.h>
30#include <plat/sdrc.h>
31
32#include "clock.h"
33#include "clock2xxx.h"
34#include "opp2xxx.h"
35#include "cm.h"
36#include "cm-regbits-24xx.h"
37
38/* #define DOWN_VARIABLE_DPLL 1 */ /* Experimental */
39
40/**
41 * omap2xxx_clk_get_core_rate - return the CORE_CLK rate
42 * @clk: pointer to the combined dpll_ck + core_ck (currently "dpll_ck")
43 *
44 * Returns the CORE_CLK rate. CORE_CLK can have one of three rate
45 * sources on OMAP2xxx: the DPLL CLKOUT rate, DPLL CLKOUTX2, or 32KHz
46 * (the latter is unusual). This currently should be called with
47 * struct clk *dpll_ck, which is a composite clock of dpll_ck and
48 * core_ck.
49 */
50unsigned long omap2xxx_clk_get_core_rate(struct clk *clk)
51{
52 long long core_clk;
53 u32 v;
54
55 core_clk = omap2_get_dpll_rate(clk);
56
57 v = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
58 v &= OMAP24XX_CORE_CLK_SRC_MASK;
59
60 if (v == CORE_CLK_SRC_32K)
61 core_clk = 32768;
62 else
63 core_clk *= v;
64
65 return core_clk;
66}
67
68/*
69 * Uses the current prcm set to tell if a rate is valid.
70 * You can go slower, but not faster within a given rate set.
71 */
72static long omap2_dpllcore_round_rate(unsigned long target_rate)
73{
74 u32 high, low, core_clk_src;
75
76 core_clk_src = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
77 core_clk_src &= OMAP24XX_CORE_CLK_SRC_MASK;
78
79 if (core_clk_src == CORE_CLK_SRC_DPLL) { /* DPLL clockout */
80 high = curr_prcm_set->dpll_speed * 2;
81 low = curr_prcm_set->dpll_speed;
82 } else { /* DPLL clockout x 2 */
83 high = curr_prcm_set->dpll_speed;
84 low = curr_prcm_set->dpll_speed / 2;
85 }
86
87#ifdef DOWN_VARIABLE_DPLL
88 if (target_rate > high)
89 return high;
90 else
91 return target_rate;
92#else
93 if (target_rate > low)
94 return high;
95 else
96 return low;
97#endif
98
99}
100
101unsigned long omap2_dpllcore_recalc(struct clk *clk)
102{
103 return omap2xxx_clk_get_core_rate(clk);
104}
105
106int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate)
107{
108 u32 cur_rate, low, mult, div, valid_rate, done_rate;
109 u32 bypass = 0;
110 struct prcm_config tmpset;
111 const struct dpll_data *dd;
112
113 cur_rate = omap2xxx_clk_get_core_rate(dclk);
114 mult = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
115 mult &= OMAP24XX_CORE_CLK_SRC_MASK;
116
117 if ((rate == (cur_rate / 2)) && (mult == 2)) {
118 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL, 1);
119 } else if ((rate == (cur_rate * 2)) && (mult == 1)) {
120 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
121 } else if (rate != cur_rate) {
122 valid_rate = omap2_dpllcore_round_rate(rate);
123 if (valid_rate != rate)
124 return -EINVAL;
125
126 if (mult == 1)
127 low = curr_prcm_set->dpll_speed;
128 else
129 low = curr_prcm_set->dpll_speed / 2;
130
131 dd = clk->dpll_data;
132 if (!dd)
133 return -EINVAL;
134
135 tmpset.cm_clksel1_pll = __raw_readl(dd->mult_div1_reg);
136 tmpset.cm_clksel1_pll &= ~(dd->mult_mask |
137 dd->div1_mask);
138 div = ((curr_prcm_set->xtal_speed / 1000000) - 1);
139 tmpset.cm_clksel2_pll = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
140 tmpset.cm_clksel2_pll &= ~OMAP24XX_CORE_CLK_SRC_MASK;
141 if (rate > low) {
142 tmpset.cm_clksel2_pll |= CORE_CLK_SRC_DPLL_X2;
143 mult = ((rate / 2) / 1000000);
144 done_rate = CORE_CLK_SRC_DPLL_X2;
145 } else {
146 tmpset.cm_clksel2_pll |= CORE_CLK_SRC_DPLL;
147 mult = (rate / 1000000);
148 done_rate = CORE_CLK_SRC_DPLL;
149 }
150 tmpset.cm_clksel1_pll |= (div << __ffs(dd->mult_mask));
151 tmpset.cm_clksel1_pll |= (mult << __ffs(dd->div1_mask));
152
153 /* Worst case */
154 tmpset.base_sdrc_rfr = SDRC_RFR_CTRL_BYPASS;
155
156 if (rate == curr_prcm_set->xtal_speed) /* If asking for 1-1 */
157 bypass = 1;
158
159 /* For omap2xxx_sdrc_init_params() */
160 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
161
162 /* Force dll lock mode */
163 omap2_set_prcm(tmpset.cm_clksel1_pll, tmpset.base_sdrc_rfr,
164 bypass);
165
166 /* Errata: ret dll entry state */
167 omap2xxx_sdrc_init_params(omap2xxx_sdrc_dll_is_unlocked());
168 omap2xxx_sdrc_reprogram(done_rate, 0);
169 }
170
171 return 0;
172}
173
diff --git a/arch/arm/mach-omap2/clkt2xxx_osc.c b/arch/arm/mach-omap2/clkt2xxx_osc.c
new file mode 100644
index 000000000000..2167be84a5bc
--- /dev/null
+++ b/arch/arm/mach-omap2/clkt2xxx_osc.c
@@ -0,0 +1,62 @@
1/*
2 * OMAP2xxx osc_clk-specific clock code
3 *
4 * Copyright (C) 2005-2008 Texas Instruments, Inc.
5 * Copyright (C) 2004-2010 Nokia Corporation
6 *
7 * Contacts:
8 * Richard Woodruff <r-woodruff2@ti.com>
9 * Paul Walmsley
10 *
11 * Based on earlier work by Tuukka Tikkanen, Tony Lindgren,
12 * Gordon McNutt and RidgeRun, Inc.
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2 as
16 * published by the Free Software Foundation.
17 */
18#undef DEBUG
19
20#include <linux/module.h>
21#include <linux/kernel.h>
22#include <linux/errno.h>
23#include <linux/clk.h>
24#include <linux/io.h>
25
26#include <plat/clock.h>
27
28#include "clock.h"
29#include "clock2xxx.h"
30#include "prm.h"
31#include "prm-regbits-24xx.h"
32
33static int omap2_enable_osc_ck(struct clk *clk)
34{
35 u32 pcc;
36
37 pcc = __raw_readl(prcm_clksrc_ctrl);
38
39 __raw_writel(pcc & ~OMAP_AUTOEXTCLKMODE_MASK, prcm_clksrc_ctrl);
40
41 return 0;
42}
43
44static void omap2_disable_osc_ck(struct clk *clk)
45{
46 u32 pcc;
47
48 pcc = __raw_readl(prcm_clksrc_ctrl);
49
50 __raw_writel(pcc | OMAP_AUTOEXTCLKMODE_MASK, prcm_clksrc_ctrl);
51}
52
53const struct clkops clkops_oscck = {
54 .enable = omap2_enable_osc_ck,
55 .disable = omap2_disable_osc_ck,
56};
57
58unsigned long omap2_osc_clk_recalc(struct clk *clk)
59{
60 return omap2xxx_get_apll_clkin() * omap2xxx_get_sysclkdiv();
61}
62
diff --git a/arch/arm/mach-omap2/clkt2xxx_sys.c b/arch/arm/mach-omap2/clkt2xxx_sys.c
new file mode 100644
index 000000000000..822b5a79f457
--- /dev/null
+++ b/arch/arm/mach-omap2/clkt2xxx_sys.c
@@ -0,0 +1,50 @@
1/*
2 * OMAP2xxx sys_clk-specific clock code
3 *
4 * Copyright (C) 2005-2008 Texas Instruments, Inc.
5 * Copyright (C) 2004-2010 Nokia Corporation
6 *
7 * Contacts:
8 * Richard Woodruff <r-woodruff2@ti.com>
9 * Paul Walmsley
10 *
11 * Based on earlier work by Tuukka Tikkanen, Tony Lindgren,
12 * Gordon McNutt and RidgeRun, Inc.
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2 as
16 * published by the Free Software Foundation.
17 */
18#undef DEBUG
19
20#include <linux/kernel.h>
21#include <linux/errno.h>
22#include <linux/clk.h>
23#include <linux/io.h>
24
25#include <plat/clock.h>
26
27#include "clock.h"
28#include "clock2xxx.h"
29#include "prm.h"
30#include "prm-regbits-24xx.h"
31
32void __iomem *prcm_clksrc_ctrl;
33
34u32 omap2xxx_get_sysclkdiv(void)
35{
36 u32 div;
37
38 div = __raw_readl(prcm_clksrc_ctrl);
39 div &= OMAP_SYSCLKDIV_MASK;
40 div >>= OMAP_SYSCLKDIV_SHIFT;
41
42 return div;
43}
44
45unsigned long omap2xxx_sys_clk_recalc(struct clk *clk)
46{
47 return clk->parent->rate / omap2xxx_get_sysclkdiv();
48}
49
50
diff --git a/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c b/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
new file mode 100644
index 000000000000..3b1eac4d5390
--- /dev/null
+++ b/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
@@ -0,0 +1,254 @@
1/*
2 * OMAP2xxx DVFS virtual clock functions
3 *
4 * Copyright (C) 2005-2008 Texas Instruments, Inc.
5 * Copyright (C) 2004-2010 Nokia Corporation
6 *
7 * Contacts:
8 * Richard Woodruff <r-woodruff2@ti.com>
9 * Paul Walmsley
10 *
11 * Based on earlier work by Tuukka Tikkanen, Tony Lindgren,
12 * Gordon McNutt and RidgeRun, Inc.
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2 as
16 * published by the Free Software Foundation.
17 *
18 * XXX Some of this code should be replaceable by the upcoming OPP layer
19 * code. However, some notion of "rate set" is probably still necessary
20 * for OMAP2xxx at least. Rate sets should be generalized so they can be
21 * used for any OMAP chip, not just OMAP2xxx. In particular, Richard Woodruff
22 * has in the past expressed a preference to use rate sets for OPP changes,
23 * rather than dynamically recalculating the clock tree, so if someone wants
24 * this badly enough to write the code to handle it, we should support it
25 * as an option.
26 */
27#undef DEBUG
28
29#include <linux/kernel.h>
30#include <linux/errno.h>
31#include <linux/clk.h>
32#include <linux/io.h>
33#include <linux/cpufreq.h>
34
35#include <plat/clock.h>
36#include <plat/sram.h>
37#include <plat/sdrc.h>
38
39#include "clock.h"
40#include "clock2xxx.h"
41#include "opp2xxx.h"
42#include "cm.h"
43#include "cm-regbits-24xx.h"
44
45const struct prcm_config *curr_prcm_set;
46const struct prcm_config *rate_table;
47
48/**
49 * omap2_table_mpu_recalc - just return the MPU speed
50 * @clk: virt_prcm_set struct clk
51 *
52 * Set virt_prcm_set's rate to the mpu_speed field of the current PRCM set.
53 */
54unsigned long omap2_table_mpu_recalc(struct clk *clk)
55{
56 return curr_prcm_set->mpu_speed;
57}
58
59/*
60 * Look for a rate equal or less than the target rate given a configuration set.
61 *
62 * What's not entirely clear is "which" field represents the key field.
63 * Some might argue L3-DDR, others ARM, others IVA. This code is simple and
64 * just uses the ARM rates.
65 */
66long omap2_round_to_table_rate(struct clk *clk, unsigned long rate)
67{
68 const struct prcm_config *ptr;
69 long highest_rate;
70 long sys_ck_rate;
71
72 sys_ck_rate = clk_get_rate(sclk);
73
74 highest_rate = -EINVAL;
75
76 for (ptr = rate_table; ptr->mpu_speed; ptr++) {
77 if (!(ptr->flags & cpu_mask))
78 continue;
79 if (ptr->xtal_speed != sys_ck_rate)
80 continue;
81
82 highest_rate = ptr->mpu_speed;
83
84 /* Can check only after xtal frequency check */
85 if (ptr->mpu_speed <= rate)
86 break;
87 }
88 return highest_rate;
89}
90
91/* Sets basic clocks based on the specified rate */
92int omap2_select_table_rate(struct clk *clk, unsigned long rate)
93{
94 u32 cur_rate, done_rate, bypass = 0, tmp;
95 const struct prcm_config *prcm;
96 unsigned long found_speed = 0;
97 unsigned long flags;
98 long sys_ck_rate;
99
100 sys_ck_rate = clk_get_rate(sclk);
101
102 for (prcm = rate_table; prcm->mpu_speed; prcm++) {
103 if (!(prcm->flags & cpu_mask))
104 continue;
105
106 if (prcm->xtal_speed != sys_ck_rate)
107 continue;
108
109 if (prcm->mpu_speed <= rate) {
110 found_speed = prcm->mpu_speed;
111 break;
112 }
113 }
114
115 if (!found_speed) {
116 printk(KERN_INFO "Could not set MPU rate to %luMHz\n",
117 rate / 1000000);
118 return -EINVAL;
119 }
120
121 curr_prcm_set = prcm;
122 cur_rate = omap2xxx_clk_get_core_rate(dclk);
123
124 if (prcm->dpll_speed == cur_rate / 2) {
125 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL, 1);
126 } else if (prcm->dpll_speed == cur_rate * 2) {
127 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
128 } else if (prcm->dpll_speed != cur_rate) {
129 local_irq_save(flags);
130
131 if (prcm->dpll_speed == prcm->xtal_speed)
132 bypass = 1;
133
134 if ((prcm->cm_clksel2_pll & OMAP24XX_CORE_CLK_SRC_MASK) ==
135 CORE_CLK_SRC_DPLL_X2)
136 done_rate = CORE_CLK_SRC_DPLL_X2;
137 else
138 done_rate = CORE_CLK_SRC_DPLL;
139
140 /* MPU divider */
141 cm_write_mod_reg(prcm->cm_clksel_mpu, MPU_MOD, CM_CLKSEL);
142
143 /* dsp + iva1 div(2420), iva2.1(2430) */
144 cm_write_mod_reg(prcm->cm_clksel_dsp,
145 OMAP24XX_DSP_MOD, CM_CLKSEL);
146
147 cm_write_mod_reg(prcm->cm_clksel_gfx, GFX_MOD, CM_CLKSEL);
148
149 /* Major subsystem dividers */
150 tmp = cm_read_mod_reg(CORE_MOD, CM_CLKSEL1) & OMAP24XX_CLKSEL_DSS2_MASK;
151 cm_write_mod_reg(prcm->cm_clksel1_core | tmp, CORE_MOD,
152 CM_CLKSEL1);
153
154 if (cpu_is_omap2430())
155 cm_write_mod_reg(prcm->cm_clksel_mdm,
156 OMAP2430_MDM_MOD, CM_CLKSEL);
157
158 /* x2 to enter omap2xxx_sdrc_init_params() */
159 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
160
161 omap2_set_prcm(prcm->cm_clksel1_pll, prcm->base_sdrc_rfr,
162 bypass);
163
164 omap2xxx_sdrc_init_params(omap2xxx_sdrc_dll_is_unlocked());
165 omap2xxx_sdrc_reprogram(done_rate, 0);
166
167 local_irq_restore(flags);
168 }
169
170 return 0;
171}
172
173#ifdef CONFIG_CPU_FREQ
174/*
175 * Walk PRCM rate table and fillout cpufreq freq_table
176 * XXX This should be replaced by an OPP layer in the near future
177 */
178static struct cpufreq_frequency_table *freq_table;
179
180void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
181{
182 const struct prcm_config *prcm;
183 long sys_ck_rate;
184 int i = 0;
185 int tbl_sz = 0;
186
187 if (!cpu_is_omap24xx())
188 return;
189
190 sys_ck_rate = clk_get_rate(sclk);
191
192 for (prcm = rate_table; prcm->mpu_speed; prcm++) {
193 if (!(prcm->flags & cpu_mask))
194 continue;
195 if (prcm->xtal_speed != sys_ck_rate)
196 continue;
197
198 /* don't put bypass rates in table */
199 if (prcm->dpll_speed == prcm->xtal_speed)
200 continue;
201
202 tbl_sz++;
203 }
204
205 /*
206 * XXX Ensure that we're doing what CPUFreq expects for this error
207 * case and the following one
208 */
209 if (tbl_sz == 0) {
210 pr_warning("%s: no matching entries in rate_table\n",
211 __func__);
212 return;
213 }
214
215 /* Include the CPUFREQ_TABLE_END terminator entry */
216 tbl_sz++;
217
218 freq_table = kzalloc(sizeof(struct cpufreq_frequency_table) * tbl_sz,
219 GFP_ATOMIC);
220 if (!freq_table) {
221 pr_err("%s: could not kzalloc frequency table\n", __func__);
222 return;
223 }
224
225 for (prcm = rate_table; prcm->mpu_speed; prcm++) {
226 if (!(prcm->flags & cpu_mask))
227 continue;
228 if (prcm->xtal_speed != sys_ck_rate)
229 continue;
230
231 /* don't put bypass rates in table */
232 if (prcm->dpll_speed == prcm->xtal_speed)
233 continue;
234
235 freq_table[i].index = i;
236 freq_table[i].frequency = prcm->mpu_speed / 1000;
237 i++;
238 }
239
240 freq_table[i].index = i;
241 freq_table[i].frequency = CPUFREQ_TABLE_END;
242
243 *table = &freq_table[0];
244}
245
246void omap2_clk_exit_cpufreq_table(struct cpufreq_frequency_table **table)
247{
248 if (!cpu_is_omap24xx())
249 return;
250
251 kfree(freq_table);
252}
253
254#endif
diff --git a/arch/arm/mach-omap2/clkt34xx_dpll3m2.c b/arch/arm/mach-omap2/clkt34xx_dpll3m2.c
new file mode 100644
index 000000000000..8716a01d1f5b
--- /dev/null
+++ b/arch/arm/mach-omap2/clkt34xx_dpll3m2.c
@@ -0,0 +1,120 @@
1/*
2 * OMAP34xx M2 divider clock code
3 *
4 * Copyright (C) 2007-2008 Texas Instruments, Inc.
5 * Copyright (C) 2007-2010 Nokia Corporation
6 *
7 * Paul Walmsley
8 * Jouni Högander
9 *
10 * Parts of this code are based on code written by
11 * Richard Woodruff, Tony Lindgren, Tuukka Tikkanen, Karthik Dasu
12 *
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License version 2 as
15 * published by the Free Software Foundation.
16 */
17#undef DEBUG
18
19#include <linux/kernel.h>
20#include <linux/errno.h>
21#include <linux/clk.h>
22#include <linux/io.h>
23
24#include <plat/clock.h>
25#include <plat/sram.h>
26#include <plat/sdrc.h>
27
28#include "clock.h"
29#include "clock34xx.h"
30#include "sdrc.h"
31
32#define CYCLES_PER_MHZ 1000000
33
34/*
35 * CORE DPLL (DPLL3) M2 divider rate programming functions
36 *
37 * These call into SRAM code to do the actual CM writes, since the SDRAM
38 * is clocked from DPLL3.
39 */
40
41/**
42 * omap3_core_dpll_m2_set_rate - set CORE DPLL M2 divider
43 * @clk: struct clk * of DPLL to set
44 * @rate: rounded target rate
45 *
46 * Program the DPLL M2 divider with the rounded target rate. Returns
47 * -EINVAL upon error, or 0 upon success.
48 */
49int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate)
50{
51 u32 new_div = 0;
52 u32 unlock_dll = 0;
53 u32 c;
54 unsigned long validrate, sdrcrate, _mpurate;
55 struct omap_sdrc_params *sdrc_cs0;
56 struct omap_sdrc_params *sdrc_cs1;
57 int ret;
58
59 if (!clk || !rate)
60 return -EINVAL;
61
62 validrate = omap2_clksel_round_rate_div(clk, rate, &new_div);
63 if (validrate != rate)
64 return -EINVAL;
65
66 sdrcrate = sdrc_ick_p->rate;
67 if (rate > clk->rate)
68 sdrcrate <<= ((rate / clk->rate) >> 1);
69 else
70 sdrcrate >>= ((clk->rate / rate) >> 1);
71
72 ret = omap2_sdrc_get_params(sdrcrate, &sdrc_cs0, &sdrc_cs1);
73 if (ret)
74 return -EINVAL;
75
76 if (sdrcrate < MIN_SDRC_DLL_LOCK_FREQ) {
77 pr_debug("clock: will unlock SDRC DLL\n");
78 unlock_dll = 1;
79 }
80
81 /*
82 * XXX This only needs to be done when the CPU frequency changes
83 */
84 _mpurate = arm_fck_p->rate / CYCLES_PER_MHZ;
85 c = (_mpurate << SDRC_MPURATE_SCALE) >> SDRC_MPURATE_BASE_SHIFT;
86 c += 1; /* for safety */
87 c *= SDRC_MPURATE_LOOPS;
88 c >>= SDRC_MPURATE_SCALE;
89 if (c == 0)
90 c = 1;
91
92 pr_debug("clock: changing CORE DPLL rate from %lu to %lu\n", clk->rate,
93 validrate);
94 pr_debug("clock: SDRC CS0 timing params used:"
95 " RFR %08x CTRLA %08x CTRLB %08x MR %08x\n",
96 sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla,
97 sdrc_cs0->actim_ctrlb, sdrc_cs0->mr);
98 if (sdrc_cs1)
99 pr_debug("clock: SDRC CS1 timing params used: "
100 " RFR %08x CTRLA %08x CTRLB %08x MR %08x\n",
101 sdrc_cs1->rfr_ctrl, sdrc_cs1->actim_ctrla,
102 sdrc_cs1->actim_ctrlb, sdrc_cs1->mr);
103
104 if (sdrc_cs1)
105 omap3_configure_core_dpll(
106 new_div, unlock_dll, c, rate > clk->rate,
107 sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla,
108 sdrc_cs0->actim_ctrlb, sdrc_cs0->mr,
109 sdrc_cs1->rfr_ctrl, sdrc_cs1->actim_ctrla,
110 sdrc_cs1->actim_ctrlb, sdrc_cs1->mr);
111 else
112 omap3_configure_core_dpll(
113 new_div, unlock_dll, c, rate > clk->rate,
114 sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla,
115 sdrc_cs0->actim_ctrlb, sdrc_cs0->mr,
116 0, 0, 0, 0);
117
118 return 0;
119}
120
diff --git a/arch/arm/mach-omap2/clkt_clksel.c b/arch/arm/mach-omap2/clkt_clksel.c
new file mode 100644
index 000000000000..25a2363106de
--- /dev/null
+++ b/arch/arm/mach-omap2/clkt_clksel.c
@@ -0,0 +1,417 @@
1/*
2 * clkt_clksel.c - OMAP2/3/4 clksel clock functions
3 *
4 * Copyright (C) 2005-2008 Texas Instruments, Inc.
5 * Copyright (C) 2004-2010 Nokia Corporation
6 *
7 * Contacts:
8 * Richard Woodruff <r-woodruff2@ti.com>
9 * Paul Walmsley
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
14 *
15 * XXX At some point these clksel clocks should be split into
16 * "divider" clocks and "mux" clocks to better match the hardware.
17 *
18 * XXX Currently these clocks are only used in the OMAP2/3/4 code, but
19 * many of the OMAP1 clocks should be convertible to use this
20 * mechanism.
21 */
22#undef DEBUG
23
24#include <linux/kernel.h>
25#include <linux/errno.h>
26#include <linux/clk.h>
27#include <linux/io.h>
28
29#include <plat/clock.h>
30
31#include "clock.h"
32#include "cm.h"
33#include "cm-regbits-24xx.h"
34#include "cm-regbits-34xx.h"
35
36/* Private functions */
37
38/**
39 * _omap2_get_clksel_by_parent - return clksel struct for a given clk & parent
40 * @clk: OMAP struct clk ptr to inspect
41 * @src_clk: OMAP struct clk ptr of the parent clk to search for
42 *
43 * Scan the struct clksel array associated with the clock to find
44 * the element associated with the supplied parent clock address.
45 * Returns a pointer to the struct clksel on success or NULL on error.
46 */
47static const struct clksel *_omap2_get_clksel_by_parent(struct clk *clk,
48 struct clk *src_clk)
49{
50 const struct clksel *clks;
51
52 if (!clk->clksel)
53 return NULL;
54
55 for (clks = clk->clksel; clks->parent; clks++) {
56 if (clks->parent == src_clk)
57 break; /* Found the requested parent */
58 }
59
60 if (!clks->parent) {
61 printk(KERN_ERR "clock: Could not find parent clock %s in "
62 "clksel array of clock %s\n", src_clk->name,
63 clk->name);
64 return NULL;
65 }
66
67 return clks;
68}
69
70/*
71 * Converts encoded control register address into a full address
72 * On error, the return value (parent_div) will be 0.
73 */
74static u32 _omap2_clksel_get_src_field(struct clk *src_clk, struct clk *clk,
75 u32 *field_val)
76{
77 const struct clksel *clks;
78 const struct clksel_rate *clkr;
79
80 clks = _omap2_get_clksel_by_parent(clk, src_clk);
81 if (!clks)
82 return 0;
83
84 for (clkr = clks->rates; clkr->div; clkr++) {
85 if (clkr->flags & cpu_mask && clkr->flags & DEFAULT_RATE)
86 break; /* Found the default rate for this platform */
87 }
88
89 if (!clkr->div) {
90 printk(KERN_ERR "clock: Could not find default rate for "
91 "clock %s parent %s\n", clk->name,
92 src_clk->parent->name);
93 return 0;
94 }
95
96 /* Should never happen. Add a clksel mask to the struct clk. */
97 WARN_ON(clk->clksel_mask == 0);
98
99 *field_val = clkr->val;
100
101 return clkr->div;
102}
103
104
105/* Public functions */
106
107/**
108 * omap2_init_clksel_parent - set a clksel clk's parent field from the hardware
109 * @clk: OMAP clock struct ptr to use
110 *
111 * Given a pointer to a source-selectable struct clk, read the hardware
112 * register and determine what its parent is currently set to. Update the
113 * clk->parent field with the appropriate clk ptr.
114 */
115void omap2_init_clksel_parent(struct clk *clk)
116{
117 const struct clksel *clks;
118 const struct clksel_rate *clkr;
119 u32 r, found = 0;
120
121 if (!clk->clksel)
122 return;
123
124 r = __raw_readl(clk->clksel_reg) & clk->clksel_mask;
125 r >>= __ffs(clk->clksel_mask);
126
127 for (clks = clk->clksel; clks->parent && !found; clks++) {
128 for (clkr = clks->rates; clkr->div && !found; clkr++) {
129 if ((clkr->flags & cpu_mask) && (clkr->val == r)) {
130 if (clk->parent != clks->parent) {
131 pr_debug("clock: inited %s parent "
132 "to %s (was %s)\n",
133 clk->name, clks->parent->name,
134 ((clk->parent) ?
135 clk->parent->name : "NULL"));
136 clk_reparent(clk, clks->parent);
137 };
138 found = 1;
139 }
140 }
141 }
142
143 if (!found)
144 printk(KERN_ERR "clock: init parent: could not find "
145 "regval %0x for clock %s\n", r, clk->name);
146
147 return;
148}
149
150/*
151 * Used for clocks that are part of CLKSEL_xyz governed clocks.
152 * REVISIT: Maybe change to use clk->enable() functions like on omap1?
153 */
154unsigned long omap2_clksel_recalc(struct clk *clk)
155{
156 unsigned long rate;
157 u32 div = 0;
158
159 pr_debug("clock: recalc'ing clksel clk %s\n", clk->name);
160
161 div = omap2_clksel_get_divisor(clk);
162 if (div == 0)
163 return clk->rate;
164
165 rate = clk->parent->rate / div;
166
167 pr_debug("clock: new clock rate is %ld (div %d)\n", rate, div);
168
169 return rate;
170}
171
172/**
173 * omap2_clksel_round_rate_div - find divisor for the given clock and rate
174 * @clk: OMAP struct clk to use
175 * @target_rate: desired clock rate
176 * @new_div: ptr to where we should store the divisor
177 *
178 * Finds 'best' divider value in an array based on the source and target
179 * rates. The divider array must be sorted with smallest divider first.
180 * Note that this will not work for clocks which are part of CONFIG_PARTICIPANT,
181 * they are only settable as part of virtual_prcm set.
182 *
183 * Returns the rounded clock rate or returns 0xffffffff on error.
184 */
185u32 omap2_clksel_round_rate_div(struct clk *clk, unsigned long target_rate,
186 u32 *new_div)
187{
188 unsigned long test_rate;
189 const struct clksel *clks;
190 const struct clksel_rate *clkr;
191 u32 last_div = 0;
192
193 pr_debug("clock: clksel_round_rate_div: %s target_rate %ld\n",
194 clk->name, target_rate);
195
196 *new_div = 1;
197
198 clks = _omap2_get_clksel_by_parent(clk, clk->parent);
199 if (!clks)
200 return ~0;
201
202 for (clkr = clks->rates; clkr->div; clkr++) {
203 if (!(clkr->flags & cpu_mask))
204 continue;
205
206 /* Sanity check */
207 if (clkr->div <= last_div)
208 pr_err("clock: clksel_rate table not sorted "
209 "for clock %s", clk->name);
210
211 last_div = clkr->div;
212
213 test_rate = clk->parent->rate / clkr->div;
214
215 if (test_rate <= target_rate)
216 break; /* found it */
217 }
218
219 if (!clkr->div) {
220 pr_err("clock: Could not find divisor for target "
221 "rate %ld for clock %s parent %s\n", target_rate,
222 clk->name, clk->parent->name);
223 return ~0;
224 }
225
226 *new_div = clkr->div;
227
228 pr_debug("clock: new_div = %d, new_rate = %ld\n", *new_div,
229 (clk->parent->rate / clkr->div));
230
231 return clk->parent->rate / clkr->div;
232}
233
234/**
235 * omap2_clksel_round_rate - find rounded rate for the given clock and rate
236 * @clk: OMAP struct clk to use
237 * @target_rate: desired clock rate
238 *
239 * Compatibility wrapper for OMAP clock framework
240 * Finds best target rate based on the source clock and possible dividers.
241 * rates. The divider array must be sorted with smallest divider first.
242 * Note that this will not work for clocks which are part of CONFIG_PARTICIPANT,
243 * they are only settable as part of virtual_prcm set.
244 *
245 * Returns the rounded clock rate or returns 0xffffffff on error.
246 */
247long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate)
248{
249 u32 new_div;
250
251 return omap2_clksel_round_rate_div(clk, target_rate, &new_div);
252}
253
254
255/* Given a clock and a rate apply a clock specific rounding function */
256long omap2_clk_round_rate(struct clk *clk, unsigned long rate)
257{
258 if (clk->round_rate)
259 return clk->round_rate(clk, rate);
260
261 if (clk->flags & RATE_FIXED)
262 printk(KERN_ERR "clock: generic omap2_clk_round_rate called "
263 "on fixed-rate clock %s\n", clk->name);
264
265 return clk->rate;
266}
267
268/**
269 * omap2_clksel_to_divisor() - turn clksel field value into integer divider
270 * @clk: OMAP struct clk to use
271 * @field_val: register field value to find
272 *
273 * Given a struct clk of a rate-selectable clksel clock, and a register field
274 * value to search for, find the corresponding clock divisor. The register
275 * field value should be pre-masked and shifted down so the LSB is at bit 0
276 * before calling. Returns 0 on error
277 */
278u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val)
279{
280 const struct clksel *clks;
281 const struct clksel_rate *clkr;
282
283 clks = _omap2_get_clksel_by_parent(clk, clk->parent);
284 if (!clks)
285 return 0;
286
287 for (clkr = clks->rates; clkr->div; clkr++) {
288 if ((clkr->flags & cpu_mask) && (clkr->val == field_val))
289 break;
290 }
291
292 if (!clkr->div) {
293 printk(KERN_ERR "clock: Could not find fieldval %d for "
294 "clock %s parent %s\n", field_val, clk->name,
295 clk->parent->name);
296 return 0;
297 }
298
299 return clkr->div;
300}
301
302/**
303 * omap2_divisor_to_clksel() - turn clksel integer divisor into a field value
304 * @clk: OMAP struct clk to use
305 * @div: integer divisor to search for
306 *
307 * Given a struct clk of a rate-selectable clksel clock, and a clock divisor,
308 * find the corresponding register field value. The return register value is
309 * the value before left-shifting. Returns ~0 on error
310 */
311u32 omap2_divisor_to_clksel(struct clk *clk, u32 div)
312{
313 const struct clksel *clks;
314 const struct clksel_rate *clkr;
315
316 /* should never happen */
317 WARN_ON(div == 0);
318
319 clks = _omap2_get_clksel_by_parent(clk, clk->parent);
320 if (!clks)
321 return ~0;
322
323 for (clkr = clks->rates; clkr->div; clkr++) {
324 if ((clkr->flags & cpu_mask) && (clkr->div == div))
325 break;
326 }
327
328 if (!clkr->div) {
329 printk(KERN_ERR "clock: Could not find divisor %d for "
330 "clock %s parent %s\n", div, clk->name,
331 clk->parent->name);
332 return ~0;
333 }
334
335 return clkr->val;
336}
337
338/**
339 * omap2_clksel_get_divisor - get current divider applied to parent clock.
340 * @clk: OMAP struct clk to use.
341 *
342 * Returns the integer divisor upon success or 0 on error.
343 */
344u32 omap2_clksel_get_divisor(struct clk *clk)
345{
346 u32 v;
347
348 if (!clk->clksel_mask)
349 return 0;
350
351 v = __raw_readl(clk->clksel_reg) & clk->clksel_mask;
352 v >>= __ffs(clk->clksel_mask);
353
354 return omap2_clksel_to_divisor(clk, v);
355}
356
357int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)
358{
359 u32 v, field_val, validrate, new_div = 0;
360
361 if (!clk->clksel_mask)
362 return -EINVAL;
363
364 validrate = omap2_clksel_round_rate_div(clk, rate, &new_div);
365 if (validrate != rate)
366 return -EINVAL;
367
368 field_val = omap2_divisor_to_clksel(clk, new_div);
369 if (field_val == ~0)
370 return -EINVAL;
371
372 v = __raw_readl(clk->clksel_reg);
373 v &= ~clk->clksel_mask;
374 v |= field_val << __ffs(clk->clksel_mask);
375 __raw_writel(v, clk->clksel_reg);
376 v = __raw_readl(clk->clksel_reg); /* OCP barrier */
377
378 clk->rate = clk->parent->rate / new_div;
379
380 omap2xxx_clk_commit(clk);
381
382 return 0;
383}
384
385int omap2_clksel_set_parent(struct clk *clk, struct clk *new_parent)
386{
387 u32 field_val, v, parent_div;
388
389 if (!clk->clksel)
390 return -EINVAL;
391
392 parent_div = _omap2_clksel_get_src_field(new_parent, clk, &field_val);
393 if (!parent_div)
394 return -EINVAL;
395
396 /* Set new source value (previous dividers if any in effect) */
397 v = __raw_readl(clk->clksel_reg);
398 v &= ~clk->clksel_mask;
399 v |= field_val << __ffs(clk->clksel_mask);
400 __raw_writel(v, clk->clksel_reg);
401 v = __raw_readl(clk->clksel_reg); /* OCP barrier */
402
403 omap2xxx_clk_commit(clk);
404
405 clk_reparent(clk, new_parent);
406
407 /* CLKSEL clocks follow their parents' rates, divided by a divisor */
408 clk->rate = new_parent->rate;
409
410 if (parent_div > 0)
411 clk->rate /= parent_div;
412
413 pr_debug("clock: set parent of %s to %s (new rate %ld)\n",
414 clk->name, clk->parent->name, clk->rate);
415
416 return 0;
417}
diff --git a/arch/arm/mach-omap2/clkt_dpll.c b/arch/arm/mach-omap2/clkt_dpll.c
new file mode 100644
index 000000000000..9eee0e67d5d6
--- /dev/null
+++ b/arch/arm/mach-omap2/clkt_dpll.c
@@ -0,0 +1,386 @@
1/*
2 * OMAP2/3/4 DPLL clock functions
3 *
4 * Copyright (C) 2005-2008 Texas Instruments, Inc.
5 * Copyright (C) 2004-2010 Nokia Corporation
6 *
7 * Contacts:
8 * Richard Woodruff <r-woodruff2@ti.com>
9 * Paul Walmsley
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
14 */
15#undef DEBUG
16
17#include <linux/kernel.h>
18#include <linux/errno.h>
19#include <linux/clk.h>
20#include <linux/io.h>
21
22#include <asm/div64.h>
23
24#include <plat/clock.h>
25
26#include "clock.h"
27#include "cm.h"
28#include "cm-regbits-24xx.h"
29#include "cm-regbits-34xx.h"
30
31/* DPLL rate rounding: minimum DPLL multiplier, divider values */
32#define DPLL_MIN_MULTIPLIER 1
33#define DPLL_MIN_DIVIDER 1
34
35/* Possible error results from _dpll_test_mult */
36#define DPLL_MULT_UNDERFLOW -1
37
38/*
39 * Scale factor to mitigate roundoff errors in DPLL rate rounding.
40 * The higher the scale factor, the greater the risk of arithmetic overflow,
41 * but the closer the rounded rate to the target rate. DPLL_SCALE_FACTOR
42 * must be a power of DPLL_SCALE_BASE.
43 */
44#define DPLL_SCALE_FACTOR 64
45#define DPLL_SCALE_BASE 2
46#define DPLL_ROUNDING_VAL ((DPLL_SCALE_BASE / 2) * \
47 (DPLL_SCALE_FACTOR / DPLL_SCALE_BASE))
48
49/* DPLL valid Fint frequency band limits - from 34xx TRM Section 4.7.6.2 */
50#define DPLL_FINT_BAND1_MIN 750000
51#define DPLL_FINT_BAND1_MAX 2100000
52#define DPLL_FINT_BAND2_MIN 7500000
53#define DPLL_FINT_BAND2_MAX 21000000
54
55/* _dpll_test_fint() return codes */
56#define DPLL_FINT_UNDERFLOW -1
57#define DPLL_FINT_INVALID -2
58
59/* Private functions */
60
61/*
62 * _dpll_test_fint - test whether an Fint value is valid for the DPLL
63 * @clk: DPLL struct clk to test
64 * @n: divider value (N) to test
65 *
66 * Tests whether a particular divider @n will result in a valid DPLL
67 * internal clock frequency Fint. See the 34xx TRM 4.7.6.2 "DPLL Jitter
68 * Correction". Returns 0 if OK, -1 if the enclosing loop can terminate
69 * (assuming that it is counting N upwards), or -2 if the enclosing loop
70 * should skip to the next iteration (again assuming N is increasing).
71 */
72static int _dpll_test_fint(struct clk *clk, u8 n)
73{
74 struct dpll_data *dd;
75 long fint;
76 int ret = 0;
77
78 dd = clk->dpll_data;
79
80 /* DPLL divider must result in a valid jitter correction val */
81 fint = clk->parent->rate / (n + 1);
82 if (fint < DPLL_FINT_BAND1_MIN) {
83
84 pr_debug("rejecting n=%d due to Fint failure, "
85 "lowering max_divider\n", n);
86 dd->max_divider = n;
87 ret = DPLL_FINT_UNDERFLOW;
88
89 } else if (fint > DPLL_FINT_BAND1_MAX &&
90 fint < DPLL_FINT_BAND2_MIN) {
91
92 pr_debug("rejecting n=%d due to Fint failure\n", n);
93 ret = DPLL_FINT_INVALID;
94
95 } else if (fint > DPLL_FINT_BAND2_MAX) {
96
97 pr_debug("rejecting n=%d due to Fint failure, "
98 "boosting min_divider\n", n);
99 dd->min_divider = n;
100 ret = DPLL_FINT_INVALID;
101
102 }
103
104 return ret;
105}
106
107static unsigned long _dpll_compute_new_rate(unsigned long parent_rate,
108 unsigned int m, unsigned int n)
109{
110 unsigned long long num;
111
112 num = (unsigned long long)parent_rate * m;
113 do_div(num, n);
114 return num;
115}
116
117/*
118 * _dpll_test_mult - test a DPLL multiplier value
119 * @m: pointer to the DPLL m (multiplier) value under test
120 * @n: current DPLL n (divider) value under test
121 * @new_rate: pointer to storage for the resulting rounded rate
122 * @target_rate: the desired DPLL rate
123 * @parent_rate: the DPLL's parent clock rate
124 *
125 * This code tests a DPLL multiplier value, ensuring that the
126 * resulting rate will not be higher than the target_rate, and that
127 * the multiplier value itself is valid for the DPLL. Initially, the
128 * integer pointed to by the m argument should be prescaled by
129 * multiplying by DPLL_SCALE_FACTOR. The code will replace this with
130 * a non-scaled m upon return. This non-scaled m will result in a
131 * new_rate as close as possible to target_rate (but not greater than
132 * target_rate) given the current (parent_rate, n, prescaled m)
133 * triple. Returns DPLL_MULT_UNDERFLOW in the event that the
134 * non-scaled m attempted to underflow, which can allow the calling
135 * function to bail out early; or 0 upon success.
136 */
137static int _dpll_test_mult(int *m, int n, unsigned long *new_rate,
138 unsigned long target_rate,
139 unsigned long parent_rate)
140{
141 int r = 0, carry = 0;
142
143 /* Unscale m and round if necessary */
144 if (*m % DPLL_SCALE_FACTOR >= DPLL_ROUNDING_VAL)
145 carry = 1;
146 *m = (*m / DPLL_SCALE_FACTOR) + carry;
147
148 /*
149 * The new rate must be <= the target rate to avoid programming
150 * a rate that is impossible for the hardware to handle
151 */
152 *new_rate = _dpll_compute_new_rate(parent_rate, *m, n);
153 if (*new_rate > target_rate) {
154 (*m)--;
155 *new_rate = 0;
156 }
157
158 /* Guard against m underflow */
159 if (*m < DPLL_MIN_MULTIPLIER) {
160 *m = DPLL_MIN_MULTIPLIER;
161 *new_rate = 0;
162 r = DPLL_MULT_UNDERFLOW;
163 }
164
165 if (*new_rate == 0)
166 *new_rate = _dpll_compute_new_rate(parent_rate, *m, n);
167
168 return r;
169}
170
171/* Public functions */
172
173void omap2_init_dpll_parent(struct clk *clk)
174{
175 u32 v;
176 struct dpll_data *dd;
177
178 dd = clk->dpll_data;
179 if (!dd)
180 return;
181
182 /* Return bypass rate if DPLL is bypassed */
183 v = __raw_readl(dd->control_reg);
184 v &= dd->enable_mask;
185 v >>= __ffs(dd->enable_mask);
186
187 /* Reparent in case the dpll is in bypass */
188 if (cpu_is_omap24xx()) {
189 if (v == OMAP2XXX_EN_DPLL_LPBYPASS ||
190 v == OMAP2XXX_EN_DPLL_FRBYPASS)
191 clk_reparent(clk, dd->clk_bypass);
192 } else if (cpu_is_omap34xx()) {
193 if (v == OMAP3XXX_EN_DPLL_LPBYPASS ||
194 v == OMAP3XXX_EN_DPLL_FRBYPASS)
195 clk_reparent(clk, dd->clk_bypass);
196 } else if (cpu_is_omap44xx()) {
197 if (v == OMAP4XXX_EN_DPLL_LPBYPASS ||
198 v == OMAP4XXX_EN_DPLL_FRBYPASS ||
199 v == OMAP4XXX_EN_DPLL_MNBYPASS)
200 clk_reparent(clk, dd->clk_bypass);
201 }
202 return;
203}
204
205/**
206 * omap2_get_dpll_rate - returns the current DPLL CLKOUT rate
207 * @clk: struct clk * of a DPLL
208 *
209 * DPLLs can be locked or bypassed - basically, enabled or disabled.
210 * When locked, the DPLL output depends on the M and N values. When
211 * bypassed, on OMAP2xxx, the output rate is either the 32KiHz clock
212 * or sys_clk. Bypass rates on OMAP3 depend on the DPLL: DPLLs 1 and
213 * 2 are bypassed with dpll1_fclk and dpll2_fclk respectively
214 * (generated by DPLL3), while DPLL 3, 4, and 5 bypass rates are sys_clk.
215 * Returns the current DPLL CLKOUT rate (*not* CLKOUTX2) if the DPLL is
216 * locked, or the appropriate bypass rate if the DPLL is bypassed, or 0
217 * if the clock @clk is not a DPLL.
218 */
219u32 omap2_get_dpll_rate(struct clk *clk)
220{
221 long long dpll_clk;
222 u32 dpll_mult, dpll_div, v;
223 struct dpll_data *dd;
224
225 dd = clk->dpll_data;
226 if (!dd)
227 return 0;
228
229 /* Return bypass rate if DPLL is bypassed */
230 v = __raw_readl(dd->control_reg);
231 v &= dd->enable_mask;
232 v >>= __ffs(dd->enable_mask);
233
234 if (cpu_is_omap24xx()) {
235 if (v == OMAP2XXX_EN_DPLL_LPBYPASS ||
236 v == OMAP2XXX_EN_DPLL_FRBYPASS)
237 return dd->clk_bypass->rate;
238 } else if (cpu_is_omap34xx()) {
239 if (v == OMAP3XXX_EN_DPLL_LPBYPASS ||
240 v == OMAP3XXX_EN_DPLL_FRBYPASS)
241 return dd->clk_bypass->rate;
242 } else if (cpu_is_omap44xx()) {
243 if (v == OMAP4XXX_EN_DPLL_LPBYPASS ||
244 v == OMAP4XXX_EN_DPLL_FRBYPASS ||
245 v == OMAP4XXX_EN_DPLL_MNBYPASS)
246 return dd->clk_bypass->rate;
247 }
248
249 v = __raw_readl(dd->mult_div1_reg);
250 dpll_mult = v & dd->mult_mask;
251 dpll_mult >>= __ffs(dd->mult_mask);
252 dpll_div = v & dd->div1_mask;
253 dpll_div >>= __ffs(dd->div1_mask);
254
255 dpll_clk = (long long)dd->clk_ref->rate * dpll_mult;
256 do_div(dpll_clk, dpll_div + 1);
257
258 return dpll_clk;
259}
260
261/* DPLL rate rounding code */
262
263/**
264 * omap2_dpll_set_rate_tolerance: set the error tolerance during rate rounding
265 * @clk: struct clk * of the DPLL
266 * @tolerance: maximum rate error tolerance
267 *
268 * Set the maximum DPLL rate error tolerance for the rate rounding
269 * algorithm. The rate tolerance is an attempt to balance DPLL power
270 * saving (the least divider value "n") vs. rate fidelity (the least
271 * difference between the desired DPLL target rate and the rounded
272 * rate out of the algorithm). So, increasing the tolerance is likely
273 * to decrease DPLL power consumption and increase DPLL rate error.
274 * Returns -EINVAL if provided a null clock ptr or a clk that is not a
275 * DPLL; or 0 upon success.
276 */
277int omap2_dpll_set_rate_tolerance(struct clk *clk, unsigned int tolerance)
278{
279 if (!clk || !clk->dpll_data)
280 return -EINVAL;
281
282 clk->dpll_data->rate_tolerance = tolerance;
283
284 return 0;
285}
286
287/**
288 * omap2_dpll_round_rate - round a target rate for an OMAP DPLL
289 * @clk: struct clk * for a DPLL
290 * @target_rate: desired DPLL clock rate
291 *
292 * Given a DPLL, a desired target rate, and a rate tolerance, round
293 * the target rate to a possible, programmable rate for this DPLL.
294 * Rate tolerance is assumed to be set by the caller before this
295 * function is called. Attempts to select the minimum possible n
296 * within the tolerance to reduce power consumption. Stores the
297 * computed (m, n) in the DPLL's dpll_data structure so set_rate()
298 * will not need to call this (expensive) function again. Returns ~0
299 * if the target rate cannot be rounded, either because the rate is
300 * too low or because the rate tolerance is set too tightly; or the
301 * rounded rate upon success.
302 */
303long omap2_dpll_round_rate(struct clk *clk, unsigned long target_rate)
304{
305 int m, n, r, e, scaled_max_m;
306 unsigned long scaled_rt_rp, new_rate;
307 int min_e = -1, min_e_m = -1, min_e_n = -1;
308 struct dpll_data *dd;
309
310 if (!clk || !clk->dpll_data)
311 return ~0;
312
313 dd = clk->dpll_data;
314
315 pr_debug("clock: starting DPLL round_rate for clock %s, target rate "
316 "%ld\n", clk->name, target_rate);
317
318 scaled_rt_rp = target_rate / (dd->clk_ref->rate / DPLL_SCALE_FACTOR);
319 scaled_max_m = dd->max_multiplier * DPLL_SCALE_FACTOR;
320
321 dd->last_rounded_rate = 0;
322
323 for (n = dd->min_divider; n <= dd->max_divider; n++) {
324
325 /* Is the (input clk, divider) pair valid for the DPLL? */
326 r = _dpll_test_fint(clk, n);
327 if (r == DPLL_FINT_UNDERFLOW)
328 break;
329 else if (r == DPLL_FINT_INVALID)
330 continue;
331
332 /* Compute the scaled DPLL multiplier, based on the divider */
333 m = scaled_rt_rp * n;
334
335 /*
336 * Since we're counting n up, a m overflow means we
337 * can bail out completely (since as n increases in
338 * the next iteration, there's no way that m can
339 * increase beyond the current m)
340 */
341 if (m > scaled_max_m)
342 break;
343
344 r = _dpll_test_mult(&m, n, &new_rate, target_rate,
345 dd->clk_ref->rate);
346
347 /* m can't be set low enough for this n - try with a larger n */
348 if (r == DPLL_MULT_UNDERFLOW)
349 continue;
350
351 e = target_rate - new_rate;
352 pr_debug("clock: n = %d: m = %d: rate error is %d "
353 "(new_rate = %ld)\n", n, m, e, new_rate);
354
355 if (min_e == -1 ||
356 min_e >= (int)(abs(e) - dd->rate_tolerance)) {
357 min_e = e;
358 min_e_m = m;
359 min_e_n = n;
360
361 pr_debug("clock: found new least error %d\n", min_e);
362
363 /* We found good settings -- bail out now */
364 if (min_e <= dd->rate_tolerance)
365 break;
366 }
367 }
368
369 if (min_e < 0) {
370 pr_debug("clock: error: target rate or tolerance too low\n");
371 return ~0;
372 }
373
374 dd->last_rounded_m = min_e_m;
375 dd->last_rounded_n = min_e_n;
376 dd->last_rounded_rate = _dpll_compute_new_rate(dd->clk_ref->rate,
377 min_e_m, min_e_n);
378
379 pr_debug("clock: final least error: e = %d, m = %d, n = %d\n",
380 min_e, min_e_m, min_e_n);
381 pr_debug("clock: final rate: %ld (target rate: %ld)\n",
382 dd->last_rounded_rate, target_rate);
383
384 return dd->last_rounded_rate;
385}
386
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
index 759c72a48f7f..999b91e023b1 100644
--- a/arch/arm/mach-omap2/clock.c
+++ b/arch/arm/mach-omap2/clock.c
@@ -28,10 +28,7 @@
28#include <plat/clockdomain.h> 28#include <plat/clockdomain.h>
29#include <plat/cpu.h> 29#include <plat/cpu.h>
30#include <plat/prcm.h> 30#include <plat/prcm.h>
31#include <asm/div64.h>
32 31
33#include <plat/sdrc.h>
34#include "sdrc.h"
35#include "clock.h" 32#include "clock.h"
36#include "prm.h" 33#include "prm.h"
37#include "prm-regbits-24xx.h" 34#include "prm-regbits-24xx.h"
@@ -39,81 +36,66 @@
39#include "cm-regbits-24xx.h" 36#include "cm-regbits-24xx.h"
40#include "cm-regbits-34xx.h" 37#include "cm-regbits-34xx.h"
41 38
42/* DPLL rate rounding: minimum DPLL multiplier, divider values */
43#define DPLL_MIN_MULTIPLIER 1
44#define DPLL_MIN_DIVIDER 1
45
46/* Possible error results from _dpll_test_mult */
47#define DPLL_MULT_UNDERFLOW -1
48
49/*
50 * Scale factor to mitigate roundoff errors in DPLL rate rounding.
51 * The higher the scale factor, the greater the risk of arithmetic overflow,
52 * but the closer the rounded rate to the target rate. DPLL_SCALE_FACTOR
53 * must be a power of DPLL_SCALE_BASE.
54 */
55#define DPLL_SCALE_FACTOR 64
56#define DPLL_SCALE_BASE 2
57#define DPLL_ROUNDING_VAL ((DPLL_SCALE_BASE / 2) * \
58 (DPLL_SCALE_FACTOR / DPLL_SCALE_BASE))
59
60/* DPLL valid Fint frequency band limits - from 34xx TRM Section 4.7.6.2 */
61#define DPLL_FINT_BAND1_MIN 750000
62#define DPLL_FINT_BAND1_MAX 2100000
63#define DPLL_FINT_BAND2_MIN 7500000
64#define DPLL_FINT_BAND2_MAX 21000000
65
66/* _dpll_test_fint() return codes */
67#define DPLL_FINT_UNDERFLOW -1
68#define DPLL_FINT_INVALID -2
69
70u8 cpu_mask; 39u8 cpu_mask;
71 40
72/*------------------------------------------------------------------------- 41/*-------------------------------------------------------------------------
73 * OMAP2/3/4 specific clock functions 42 * OMAP2/3/4 specific clock functions
74 *-------------------------------------------------------------------------*/ 43 *-------------------------------------------------------------------------*/
75 44
76void omap2_init_dpll_parent(struct clk *clk) 45/* Private functions */
46
47/**
48 * _omap2_module_wait_ready - wait for an OMAP module to leave IDLE
49 * @clk: struct clk * belonging to the module
50 *
51 * If the necessary clocks for the OMAP hardware IP block that
52 * corresponds to clock @clk are enabled, then wait for the module to
53 * indicate readiness (i.e., to leave IDLE). This code does not
54 * belong in the clock code and will be moved in the medium term to
55 * module-dependent code. No return value.
56 */
57static void _omap2_module_wait_ready(struct clk *clk)
77{ 58{
78 u32 v; 59 void __iomem *companion_reg, *idlest_reg;
79 struct dpll_data *dd; 60 u8 other_bit, idlest_bit;
80 61
81 dd = clk->dpll_data; 62 /* Not all modules have multiple clocks that their IDLEST depends on */
82 if (!dd) 63 if (clk->ops->find_companion) {
83 return; 64 clk->ops->find_companion(clk, &companion_reg, &other_bit);
65 if (!(__raw_readl(companion_reg) & (1 << other_bit)))
66 return;
67 }
84 68
85 /* Return bypass rate if DPLL is bypassed */ 69 clk->ops->find_idlest(clk, &idlest_reg, &idlest_bit);
86 v = __raw_readl(dd->control_reg);
87 v &= dd->enable_mask;
88 v >>= __ffs(dd->enable_mask);
89 70
90 /* Reparent in case the dpll is in bypass */ 71 omap2_cm_wait_idlest(idlest_reg, (1 << idlest_bit), clk->name);
91 if (cpu_is_omap24xx()) {
92 if (v == OMAP2XXX_EN_DPLL_LPBYPASS ||
93 v == OMAP2XXX_EN_DPLL_FRBYPASS)
94 clk_reparent(clk, dd->clk_bypass);
95 } else if (cpu_is_omap34xx()) {
96 if (v == OMAP3XXX_EN_DPLL_LPBYPASS ||
97 v == OMAP3XXX_EN_DPLL_FRBYPASS)
98 clk_reparent(clk, dd->clk_bypass);
99 } else if (cpu_is_omap44xx()) {
100 if (v == OMAP4XXX_EN_DPLL_LPBYPASS ||
101 v == OMAP4XXX_EN_DPLL_FRBYPASS ||
102 v == OMAP4XXX_EN_DPLL_MNBYPASS)
103 clk_reparent(clk, dd->clk_bypass);
104 }
105 return;
106} 72}
107 73
74/* Enables clock without considering parent dependencies or use count
75 * REVISIT: Maybe change this to use clk->enable like on omap1?
76 */
77static int _omap2_clk_enable(struct clk *clk)
78{
79 return clk->ops->enable(clk);
80}
81
82/* Disables clock without considering parent dependencies or use count */
83static void _omap2_clk_disable(struct clk *clk)
84{
85 clk->ops->disable(clk);
86}
87
88/* Public functions */
89
108/** 90/**
109 * _omap2xxx_clk_commit - commit clock parent/rate changes in hardware 91 * omap2xxx_clk_commit - commit clock parent/rate changes in hardware
110 * @clk: struct clk * 92 * @clk: struct clk *
111 * 93 *
112 * If @clk has the DELAYED_APP flag set, meaning that parent/rate changes 94 * If @clk has the DELAYED_APP flag set, meaning that parent/rate changes
113 * don't take effect until the VALID_CONFIG bit is written, write the 95 * don't take effect until the VALID_CONFIG bit is written, write the
114 * VALID_CONFIG bit and wait for the write to complete. No return value. 96 * VALID_CONFIG bit and wait for the write to complete. No return value.
115 */ 97 */
116static void _omap2xxx_clk_commit(struct clk *clk) 98void omap2xxx_clk_commit(struct clk *clk)
117{ 99{
118 if (!cpu_is_omap24xx()) 100 if (!cpu_is_omap24xx())
119 return; 101 return;
@@ -127,52 +109,6 @@ static void _omap2xxx_clk_commit(struct clk *clk)
127 prm_read_mod_reg(OMAP24XX_GR_MOD, OMAP2_PRCM_CLKCFG_CTRL_OFFSET); 109 prm_read_mod_reg(OMAP24XX_GR_MOD, OMAP2_PRCM_CLKCFG_CTRL_OFFSET);
128} 110}
129 111
130/*
131 * _dpll_test_fint - test whether an Fint value is valid for the DPLL
132 * @clk: DPLL struct clk to test
133 * @n: divider value (N) to test
134 *
135 * Tests whether a particular divider @n will result in a valid DPLL
136 * internal clock frequency Fint. See the 34xx TRM 4.7.6.2 "DPLL Jitter
137 * Correction". Returns 0 if OK, -1 if the enclosing loop can terminate
138 * (assuming that it is counting N upwards), or -2 if the enclosing loop
139 * should skip to the next iteration (again assuming N is increasing).
140 */
141static int _dpll_test_fint(struct clk *clk, u8 n)
142{
143 struct dpll_data *dd;
144 long fint;
145 int ret = 0;
146
147 dd = clk->dpll_data;
148
149 /* DPLL divider must result in a valid jitter correction val */
150 fint = clk->parent->rate / (n + 1);
151 if (fint < DPLL_FINT_BAND1_MIN) {
152
153 pr_debug("rejecting n=%d due to Fint failure, "
154 "lowering max_divider\n", n);
155 dd->max_divider = n;
156 ret = DPLL_FINT_UNDERFLOW;
157
158 } else if (fint > DPLL_FINT_BAND1_MAX &&
159 fint < DPLL_FINT_BAND2_MIN) {
160
161 pr_debug("rejecting n=%d due to Fint failure\n", n);
162 ret = DPLL_FINT_INVALID;
163
164 } else if (fint > DPLL_FINT_BAND2_MAX) {
165
166 pr_debug("rejecting n=%d due to Fint failure, "
167 "boosting min_divider\n", n);
168 dd->min_divider = n;
169 ret = DPLL_FINT_INVALID;
170
171 }
172
173 return ret;
174}
175
176/** 112/**
177 * omap2_init_clk_clkdm - look up a clockdomain name, store pointer in clk 113 * omap2_init_clk_clkdm - look up a clockdomain name, store pointer in clk
178 * @clk: OMAP clock struct ptr to use 114 * @clk: OMAP clock struct ptr to use
@@ -181,7 +117,6 @@ static int _dpll_test_fint(struct clk *clk, u8 n)
181 * clockdomain pointer, and save it into the struct clk. Intended to be 117 * clockdomain pointer, and save it into the struct clk. Intended to be
182 * called during clk_register(). No return value. 118 * called during clk_register(). No return value.
183 */ 119 */
184#ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once clkdm f/w is in place */
185void omap2_init_clk_clkdm(struct clk *clk) 120void omap2_init_clk_clkdm(struct clk *clk)
186{ 121{
187 struct clockdomain *clkdm; 122 struct clockdomain *clkdm;
@@ -199,117 +134,6 @@ void omap2_init_clk_clkdm(struct clk *clk)
199 "clkdm %s\n", clk->name, clk->clkdm_name); 134 "clkdm %s\n", clk->name, clk->clkdm_name);
200 } 135 }
201} 136}
202#endif
203
204/**
205 * omap2_init_clksel_parent - set a clksel clk's parent field from the hardware
206 * @clk: OMAP clock struct ptr to use
207 *
208 * Given a pointer to a source-selectable struct clk, read the hardware
209 * register and determine what its parent is currently set to. Update the
210 * clk->parent field with the appropriate clk ptr.
211 */
212void omap2_init_clksel_parent(struct clk *clk)
213{
214 const struct clksel *clks;
215 const struct clksel_rate *clkr;
216 u32 r, found = 0;
217
218 if (!clk->clksel)
219 return;
220
221 r = __raw_readl(clk->clksel_reg) & clk->clksel_mask;
222 r >>= __ffs(clk->clksel_mask);
223
224 for (clks = clk->clksel; clks->parent && !found; clks++) {
225 for (clkr = clks->rates; clkr->div && !found; clkr++) {
226 if ((clkr->flags & cpu_mask) && (clkr->val == r)) {
227 if (clk->parent != clks->parent) {
228 pr_debug("clock: inited %s parent "
229 "to %s (was %s)\n",
230 clk->name, clks->parent->name,
231 ((clk->parent) ?
232 clk->parent->name : "NULL"));
233 clk_reparent(clk, clks->parent);
234 };
235 found = 1;
236 }
237 }
238 }
239
240 if (!found)
241 printk(KERN_ERR "clock: init parent: could not find "
242 "regval %0x for clock %s\n", r, clk->name);
243
244 return;
245}
246
247/**
248 * omap2_get_dpll_rate - returns the current DPLL CLKOUT rate
249 * @clk: struct clk * of a DPLL
250 *
251 * DPLLs can be locked or bypassed - basically, enabled or disabled.
252 * When locked, the DPLL output depends on the M and N values. When
253 * bypassed, on OMAP2xxx, the output rate is either the 32KiHz clock
254 * or sys_clk. Bypass rates on OMAP3 depend on the DPLL: DPLLs 1 and
255 * 2 are bypassed with dpll1_fclk and dpll2_fclk respectively
256 * (generated by DPLL3), while DPLL 3, 4, and 5 bypass rates are sys_clk.
257 * Returns the current DPLL CLKOUT rate (*not* CLKOUTX2) if the DPLL is
258 * locked, or the appropriate bypass rate if the DPLL is bypassed, or 0
259 * if the clock @clk is not a DPLL.
260 */
261u32 omap2_get_dpll_rate(struct clk *clk)
262{
263 long long dpll_clk;
264 u32 dpll_mult, dpll_div, v;
265 struct dpll_data *dd;
266
267 dd = clk->dpll_data;
268 if (!dd)
269 return 0;
270
271 /* Return bypass rate if DPLL is bypassed */
272 v = __raw_readl(dd->control_reg);
273 v &= dd->enable_mask;
274 v >>= __ffs(dd->enable_mask);
275
276 if (cpu_is_omap24xx()) {
277 if (v == OMAP2XXX_EN_DPLL_LPBYPASS ||
278 v == OMAP2XXX_EN_DPLL_FRBYPASS)
279 return dd->clk_bypass->rate;
280 } else if (cpu_is_omap34xx()) {
281 if (v == OMAP3XXX_EN_DPLL_LPBYPASS ||
282 v == OMAP3XXX_EN_DPLL_FRBYPASS)
283 return dd->clk_bypass->rate;
284 } else if (cpu_is_omap44xx()) {
285 if (v == OMAP4XXX_EN_DPLL_LPBYPASS ||
286 v == OMAP4XXX_EN_DPLL_FRBYPASS ||
287 v == OMAP4XXX_EN_DPLL_MNBYPASS)
288 return dd->clk_bypass->rate;
289 }
290
291 v = __raw_readl(dd->mult_div1_reg);
292 dpll_mult = v & dd->mult_mask;
293 dpll_mult >>= __ffs(dd->mult_mask);
294 dpll_div = v & dd->div1_mask;
295 dpll_div >>= __ffs(dd->div1_mask);
296
297 dpll_clk = (long long)dd->clk_ref->rate * dpll_mult;
298 do_div(dpll_clk, dpll_div + 1);
299
300 return dpll_clk;
301}
302
303/*
304 * Used for clocks that have the same value as the parent clock,
305 * divided by some factor
306 */
307unsigned long omap2_fixed_divisor_recalc(struct clk *clk)
308{
309 WARN_ON(!clk->fixed_div);
310
311 return clk->parent->rate / clk->fixed_div;
312}
313 137
314/** 138/**
315 * omap2_clk_dflt_find_companion - find companion clock to @clk 139 * omap2_clk_dflt_find_companion - find companion clock to @clk
@@ -370,33 +194,6 @@ void omap2_clk_dflt_find_idlest(struct clk *clk, void __iomem **idlest_reg,
370 *idlest_bit = clk->enable_bit; 194 *idlest_bit = clk->enable_bit;
371} 195}
372 196
373/**
374 * omap2_module_wait_ready - wait for an OMAP module to leave IDLE
375 * @clk: struct clk * belonging to the module
376 *
377 * If the necessary clocks for the OMAP hardware IP block that
378 * corresponds to clock @clk are enabled, then wait for the module to
379 * indicate readiness (i.e., to leave IDLE). This code does not
380 * belong in the clock code and will be moved in the medium term to
381 * module-dependent code. No return value.
382 */
383static void omap2_module_wait_ready(struct clk *clk)
384{
385 void __iomem *companion_reg, *idlest_reg;
386 u8 other_bit, idlest_bit;
387
388 /* Not all modules have multiple clocks that their IDLEST depends on */
389 if (clk->ops->find_companion) {
390 clk->ops->find_companion(clk, &companion_reg, &other_bit);
391 if (!(__raw_readl(companion_reg) & (1 << other_bit)))
392 return;
393 }
394
395 clk->ops->find_idlest(clk, &idlest_reg, &idlest_bit);
396
397 omap2_cm_wait_idlest(idlest_reg, (1 << idlest_bit), clk->name);
398}
399
400int omap2_dflt_clk_enable(struct clk *clk) 197int omap2_dflt_clk_enable(struct clk *clk)
401{ 198{
402 u32 v; 199 u32 v;
@@ -416,7 +213,7 @@ int omap2_dflt_clk_enable(struct clk *clk)
416 v = __raw_readl(clk->enable_reg); /* OCP barrier */ 213 v = __raw_readl(clk->enable_reg); /* OCP barrier */
417 214
418 if (clk->ops->find_idlest) 215 if (clk->ops->find_idlest)
419 omap2_module_wait_ready(clk); 216 _omap2_module_wait_ready(clk);
420 217
421 return 0; 218 return 0;
422} 219}
@@ -456,30 +253,14 @@ const struct clkops clkops_omap2_dflt = {
456 .disable = omap2_dflt_clk_disable, 253 .disable = omap2_dflt_clk_disable,
457}; 254};
458 255
459/* Enables clock without considering parent dependencies or use count
460 * REVISIT: Maybe change this to use clk->enable like on omap1?
461 */
462static int _omap2_clk_enable(struct clk *clk)
463{
464 return clk->ops->enable(clk);
465}
466
467/* Disables clock without considering parent dependencies or use count */
468static void _omap2_clk_disable(struct clk *clk)
469{
470 clk->ops->disable(clk);
471}
472
473void omap2_clk_disable(struct clk *clk) 256void omap2_clk_disable(struct clk *clk)
474{ 257{
475 if (clk->usecount > 0 && !(--clk->usecount)) { 258 if (clk->usecount > 0 && !(--clk->usecount)) {
476 _omap2_clk_disable(clk); 259 _omap2_clk_disable(clk);
477 if (clk->parent) 260 if (clk->parent)
478 omap2_clk_disable(clk->parent); 261 omap2_clk_disable(clk->parent);
479#ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once clkdm f/w is in place */
480 if (clk->clkdm) 262 if (clk->clkdm)
481 omap2_clkdm_clk_disable(clk->clkdm, clk); 263 omap2_clkdm_clk_disable(clk->clkdm, clk);
482#endif
483 264
484 } 265 }
485} 266}
@@ -489,10 +270,8 @@ int omap2_clk_enable(struct clk *clk)
489 int ret = 0; 270 int ret = 0;
490 271
491 if (clk->usecount++ == 0) { 272 if (clk->usecount++ == 0) {
492#ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once clkdm f/w is in place */
493 if (clk->clkdm) 273 if (clk->clkdm)
494 omap2_clkdm_clk_enable(clk->clkdm, clk); 274 omap2_clkdm_clk_enable(clk->clkdm, clk);
495#endif
496 275
497 if (clk->parent) { 276 if (clk->parent) {
498 ret = omap2_clk_enable(clk->parent); 277 ret = omap2_clk_enable(clk->parent);
@@ -511,282 +290,12 @@ int omap2_clk_enable(struct clk *clk)
511 return ret; 290 return ret;
512 291
513err: 292err:
514#ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once clkdm f/w is in place */
515 if (clk->clkdm) 293 if (clk->clkdm)
516 omap2_clkdm_clk_disable(clk->clkdm, clk); 294 omap2_clkdm_clk_disable(clk->clkdm, clk);
517#endif
518 clk->usecount--; 295 clk->usecount--;
519 return ret; 296 return ret;
520} 297}
521 298
522/*
523 * Used for clocks that are part of CLKSEL_xyz governed clocks.
524 * REVISIT: Maybe change to use clk->enable() functions like on omap1?
525 */
526unsigned long omap2_clksel_recalc(struct clk *clk)
527{
528 unsigned long rate;
529 u32 div = 0;
530
531 pr_debug("clock: recalc'ing clksel clk %s\n", clk->name);
532
533 div = omap2_clksel_get_divisor(clk);
534 if (div == 0)
535 return clk->rate;
536
537 rate = clk->parent->rate / div;
538
539 pr_debug("clock: new clock rate is %ld (div %d)\n", rate, div);
540
541 return rate;
542}
543
544/**
545 * omap2_get_clksel_by_parent - return clksel struct for a given clk & parent
546 * @clk: OMAP struct clk ptr to inspect
547 * @src_clk: OMAP struct clk ptr of the parent clk to search for
548 *
549 * Scan the struct clksel array associated with the clock to find
550 * the element associated with the supplied parent clock address.
551 * Returns a pointer to the struct clksel on success or NULL on error.
552 */
553static const struct clksel *omap2_get_clksel_by_parent(struct clk *clk,
554 struct clk *src_clk)
555{
556 const struct clksel *clks;
557
558 if (!clk->clksel)
559 return NULL;
560
561 for (clks = clk->clksel; clks->parent; clks++) {
562 if (clks->parent == src_clk)
563 break; /* Found the requested parent */
564 }
565
566 if (!clks->parent) {
567 printk(KERN_ERR "clock: Could not find parent clock %s in "
568 "clksel array of clock %s\n", src_clk->name,
569 clk->name);
570 return NULL;
571 }
572
573 return clks;
574}
575
576/**
577 * omap2_clksel_round_rate_div - find divisor for the given clock and rate
578 * @clk: OMAP struct clk to use
579 * @target_rate: desired clock rate
580 * @new_div: ptr to where we should store the divisor
581 *
582 * Finds 'best' divider value in an array based on the source and target
583 * rates. The divider array must be sorted with smallest divider first.
584 * Note that this will not work for clocks which are part of CONFIG_PARTICIPANT,
585 * they are only settable as part of virtual_prcm set.
586 *
587 * Returns the rounded clock rate or returns 0xffffffff on error.
588 */
589u32 omap2_clksel_round_rate_div(struct clk *clk, unsigned long target_rate,
590 u32 *new_div)
591{
592 unsigned long test_rate;
593 const struct clksel *clks;
594 const struct clksel_rate *clkr;
595 u32 last_div = 0;
596
597 pr_debug("clock: clksel_round_rate_div: %s target_rate %ld\n",
598 clk->name, target_rate);
599
600 *new_div = 1;
601
602 clks = omap2_get_clksel_by_parent(clk, clk->parent);
603 if (!clks)
604 return ~0;
605
606 for (clkr = clks->rates; clkr->div; clkr++) {
607 if (!(clkr->flags & cpu_mask))
608 continue;
609
610 /* Sanity check */
611 if (clkr->div <= last_div)
612 pr_err("clock: clksel_rate table not sorted "
613 "for clock %s", clk->name);
614
615 last_div = clkr->div;
616
617 test_rate = clk->parent->rate / clkr->div;
618
619 if (test_rate <= target_rate)
620 break; /* found it */
621 }
622
623 if (!clkr->div) {
624 pr_err("clock: Could not find divisor for target "
625 "rate %ld for clock %s parent %s\n", target_rate,
626 clk->name, clk->parent->name);
627 return ~0;
628 }
629
630 *new_div = clkr->div;
631
632 pr_debug("clock: new_div = %d, new_rate = %ld\n", *new_div,
633 (clk->parent->rate / clkr->div));
634
635 return (clk->parent->rate / clkr->div);
636}
637
638/**
639 * omap2_clksel_round_rate - find rounded rate for the given clock and rate
640 * @clk: OMAP struct clk to use
641 * @target_rate: desired clock rate
642 *
643 * Compatibility wrapper for OMAP clock framework
644 * Finds best target rate based on the source clock and possible dividers.
645 * rates. The divider array must be sorted with smallest divider first.
646 * Note that this will not work for clocks which are part of CONFIG_PARTICIPANT,
647 * they are only settable as part of virtual_prcm set.
648 *
649 * Returns the rounded clock rate or returns 0xffffffff on error.
650 */
651long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate)
652{
653 u32 new_div;
654
655 return omap2_clksel_round_rate_div(clk, target_rate, &new_div);
656}
657
658
659/* Given a clock and a rate apply a clock specific rounding function */
660long omap2_clk_round_rate(struct clk *clk, unsigned long rate)
661{
662 if (clk->round_rate)
663 return clk->round_rate(clk, rate);
664
665 if (clk->flags & RATE_FIXED)
666 printk(KERN_ERR "clock: generic omap2_clk_round_rate called "
667 "on fixed-rate clock %s\n", clk->name);
668
669 return clk->rate;
670}
671
672/**
673 * omap2_clksel_to_divisor() - turn clksel field value into integer divider
674 * @clk: OMAP struct clk to use
675 * @field_val: register field value to find
676 *
677 * Given a struct clk of a rate-selectable clksel clock, and a register field
678 * value to search for, find the corresponding clock divisor. The register
679 * field value should be pre-masked and shifted down so the LSB is at bit 0
680 * before calling. Returns 0 on error
681 */
682u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val)
683{
684 const struct clksel *clks;
685 const struct clksel_rate *clkr;
686
687 clks = omap2_get_clksel_by_parent(clk, clk->parent);
688 if (!clks)
689 return 0;
690
691 for (clkr = clks->rates; clkr->div; clkr++) {
692 if ((clkr->flags & cpu_mask) && (clkr->val == field_val))
693 break;
694 }
695
696 if (!clkr->div) {
697 printk(KERN_ERR "clock: Could not find fieldval %d for "
698 "clock %s parent %s\n", field_val, clk->name,
699 clk->parent->name);
700 return 0;
701 }
702
703 return clkr->div;
704}
705
706/**
707 * omap2_divisor_to_clksel() - turn clksel integer divisor into a field value
708 * @clk: OMAP struct clk to use
709 * @div: integer divisor to search for
710 *
711 * Given a struct clk of a rate-selectable clksel clock, and a clock divisor,
712 * find the corresponding register field value. The return register value is
713 * the value before left-shifting. Returns ~0 on error
714 */
715u32 omap2_divisor_to_clksel(struct clk *clk, u32 div)
716{
717 const struct clksel *clks;
718 const struct clksel_rate *clkr;
719
720 /* should never happen */
721 WARN_ON(div == 0);
722
723 clks = omap2_get_clksel_by_parent(clk, clk->parent);
724 if (!clks)
725 return ~0;
726
727 for (clkr = clks->rates; clkr->div; clkr++) {
728 if ((clkr->flags & cpu_mask) && (clkr->div == div))
729 break;
730 }
731
732 if (!clkr->div) {
733 printk(KERN_ERR "clock: Could not find divisor %d for "
734 "clock %s parent %s\n", div, clk->name,
735 clk->parent->name);
736 return ~0;
737 }
738
739 return clkr->val;
740}
741
742/**
743 * omap2_clksel_get_divisor - get current divider applied to parent clock.
744 * @clk: OMAP struct clk to use.
745 *
746 * Returns the integer divisor upon success or 0 on error.
747 */
748u32 omap2_clksel_get_divisor(struct clk *clk)
749{
750 u32 v;
751
752 if (!clk->clksel_mask)
753 return 0;
754
755 v = __raw_readl(clk->clksel_reg) & clk->clksel_mask;
756 v >>= __ffs(clk->clksel_mask);
757
758 return omap2_clksel_to_divisor(clk, v);
759}
760
761int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)
762{
763 u32 v, field_val, validrate, new_div = 0;
764
765 if (!clk->clksel_mask)
766 return -EINVAL;
767
768 validrate = omap2_clksel_round_rate_div(clk, rate, &new_div);
769 if (validrate != rate)
770 return -EINVAL;
771
772 field_val = omap2_divisor_to_clksel(clk, new_div);
773 if (field_val == ~0)
774 return -EINVAL;
775
776 v = __raw_readl(clk->clksel_reg);
777 v &= ~clk->clksel_mask;
778 v |= field_val << __ffs(clk->clksel_mask);
779 __raw_writel(v, clk->clksel_reg);
780 v = __raw_readl(clk->clksel_reg); /* OCP barrier */
781
782 clk->rate = clk->parent->rate / new_div;
783
784 _omap2xxx_clk_commit(clk);
785
786 return 0;
787}
788
789
790/* Set the clock rate for a clock source */ 299/* Set the clock rate for a clock source */
791int omap2_clk_set_rate(struct clk *clk, unsigned long rate) 300int omap2_clk_set_rate(struct clk *clk, unsigned long rate)
792{ 301{
@@ -806,265 +315,15 @@ int omap2_clk_set_rate(struct clk *clk, unsigned long rate)
806 return ret; 315 return ret;
807} 316}
808 317
809/*
810 * Converts encoded control register address into a full address
811 * On error, the return value (parent_div) will be 0.
812 */
813static u32 _omap2_clksel_get_src_field(struct clk *src_clk, struct clk *clk,
814 u32 *field_val)
815{
816 const struct clksel *clks;
817 const struct clksel_rate *clkr;
818
819 clks = omap2_get_clksel_by_parent(clk, src_clk);
820 if (!clks)
821 return 0;
822
823 for (clkr = clks->rates; clkr->div; clkr++) {
824 if (clkr->flags & cpu_mask && clkr->flags & DEFAULT_RATE)
825 break; /* Found the default rate for this platform */
826 }
827
828 if (!clkr->div) {
829 printk(KERN_ERR "clock: Could not find default rate for "
830 "clock %s parent %s\n", clk->name,
831 src_clk->parent->name);
832 return 0;
833 }
834
835 /* Should never happen. Add a clksel mask to the struct clk. */
836 WARN_ON(clk->clksel_mask == 0);
837
838 *field_val = clkr->val;
839
840 return clkr->div;
841}
842
843int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) 318int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
844{ 319{
845 u32 field_val, v, parent_div;
846
847 if (clk->flags & CONFIG_PARTICIPANT) 320 if (clk->flags & CONFIG_PARTICIPANT)
848 return -EINVAL; 321 return -EINVAL;
849 322
850 if (!clk->clksel) 323 if (!clk->clksel)
851 return -EINVAL; 324 return -EINVAL;
852 325
853 parent_div = _omap2_clksel_get_src_field(new_parent, clk, &field_val); 326 return omap2_clksel_set_parent(clk, new_parent);
854 if (!parent_div)
855 return -EINVAL;
856
857 /* Set new source value (previous dividers if any in effect) */
858 v = __raw_readl(clk->clksel_reg);
859 v &= ~clk->clksel_mask;
860 v |= field_val << __ffs(clk->clksel_mask);
861 __raw_writel(v, clk->clksel_reg);
862 v = __raw_readl(clk->clksel_reg); /* OCP barrier */
863
864 _omap2xxx_clk_commit(clk);
865
866 clk_reparent(clk, new_parent);
867
868 /* CLKSEL clocks follow their parents' rates, divided by a divisor */
869 clk->rate = new_parent->rate;
870
871 if (parent_div > 0)
872 clk->rate /= parent_div;
873
874 pr_debug("clock: set parent of %s to %s (new rate %ld)\n",
875 clk->name, clk->parent->name, clk->rate);
876
877 return 0;
878}
879
880/* DPLL rate rounding code */
881
882/**
883 * omap2_dpll_set_rate_tolerance: set the error tolerance during rate rounding
884 * @clk: struct clk * of the DPLL
885 * @tolerance: maximum rate error tolerance
886 *
887 * Set the maximum DPLL rate error tolerance for the rate rounding
888 * algorithm. The rate tolerance is an attempt to balance DPLL power
889 * saving (the least divider value "n") vs. rate fidelity (the least
890 * difference between the desired DPLL target rate and the rounded
891 * rate out of the algorithm). So, increasing the tolerance is likely
892 * to decrease DPLL power consumption and increase DPLL rate error.
893 * Returns -EINVAL if provided a null clock ptr or a clk that is not a
894 * DPLL; or 0 upon success.
895 */
896int omap2_dpll_set_rate_tolerance(struct clk *clk, unsigned int tolerance)
897{
898 if (!clk || !clk->dpll_data)
899 return -EINVAL;
900
901 clk->dpll_data->rate_tolerance = tolerance;
902
903 return 0;
904}
905
906static unsigned long _dpll_compute_new_rate(unsigned long parent_rate,
907 unsigned int m, unsigned int n)
908{
909 unsigned long long num;
910
911 num = (unsigned long long)parent_rate * m;
912 do_div(num, n);
913 return num;
914}
915
916/*
917 * _dpll_test_mult - test a DPLL multiplier value
918 * @m: pointer to the DPLL m (multiplier) value under test
919 * @n: current DPLL n (divider) value under test
920 * @new_rate: pointer to storage for the resulting rounded rate
921 * @target_rate: the desired DPLL rate
922 * @parent_rate: the DPLL's parent clock rate
923 *
924 * This code tests a DPLL multiplier value, ensuring that the
925 * resulting rate will not be higher than the target_rate, and that
926 * the multiplier value itself is valid for the DPLL. Initially, the
927 * integer pointed to by the m argument should be prescaled by
928 * multiplying by DPLL_SCALE_FACTOR. The code will replace this with
929 * a non-scaled m upon return. This non-scaled m will result in a
930 * new_rate as close as possible to target_rate (but not greater than
931 * target_rate) given the current (parent_rate, n, prescaled m)
932 * triple. Returns DPLL_MULT_UNDERFLOW in the event that the
933 * non-scaled m attempted to underflow, which can allow the calling
934 * function to bail out early; or 0 upon success.
935 */
936static int _dpll_test_mult(int *m, int n, unsigned long *new_rate,
937 unsigned long target_rate,
938 unsigned long parent_rate)
939{
940 int r = 0, carry = 0;
941
942 /* Unscale m and round if necessary */
943 if (*m % DPLL_SCALE_FACTOR >= DPLL_ROUNDING_VAL)
944 carry = 1;
945 *m = (*m / DPLL_SCALE_FACTOR) + carry;
946
947 /*
948 * The new rate must be <= the target rate to avoid programming
949 * a rate that is impossible for the hardware to handle
950 */
951 *new_rate = _dpll_compute_new_rate(parent_rate, *m, n);
952 if (*new_rate > target_rate) {
953 (*m)--;
954 *new_rate = 0;
955 }
956
957 /* Guard against m underflow */
958 if (*m < DPLL_MIN_MULTIPLIER) {
959 *m = DPLL_MIN_MULTIPLIER;
960 *new_rate = 0;
961 r = DPLL_MULT_UNDERFLOW;
962 }
963
964 if (*new_rate == 0)
965 *new_rate = _dpll_compute_new_rate(parent_rate, *m, n);
966
967 return r;
968}
969
970/**
971 * omap2_dpll_round_rate - round a target rate for an OMAP DPLL
972 * @clk: struct clk * for a DPLL
973 * @target_rate: desired DPLL clock rate
974 *
975 * Given a DPLL, a desired target rate, and a rate tolerance, round
976 * the target rate to a possible, programmable rate for this DPLL.
977 * Rate tolerance is assumed to be set by the caller before this
978 * function is called. Attempts to select the minimum possible n
979 * within the tolerance to reduce power consumption. Stores the
980 * computed (m, n) in the DPLL's dpll_data structure so set_rate()
981 * will not need to call this (expensive) function again. Returns ~0
982 * if the target rate cannot be rounded, either because the rate is
983 * too low or because the rate tolerance is set too tightly; or the
984 * rounded rate upon success.
985 */
986long omap2_dpll_round_rate(struct clk *clk, unsigned long target_rate)
987{
988 int m, n, r, e, scaled_max_m;
989 unsigned long scaled_rt_rp, new_rate;
990 int min_e = -1, min_e_m = -1, min_e_n = -1;
991 struct dpll_data *dd;
992
993 if (!clk || !clk->dpll_data)
994 return ~0;
995
996 dd = clk->dpll_data;
997
998 pr_debug("clock: starting DPLL round_rate for clock %s, target rate "
999 "%ld\n", clk->name, target_rate);
1000
1001 scaled_rt_rp = target_rate / (dd->clk_ref->rate / DPLL_SCALE_FACTOR);
1002 scaled_max_m = dd->max_multiplier * DPLL_SCALE_FACTOR;
1003
1004 dd->last_rounded_rate = 0;
1005
1006 for (n = dd->min_divider; n <= dd->max_divider; n++) {
1007
1008 /* Is the (input clk, divider) pair valid for the DPLL? */
1009 r = _dpll_test_fint(clk, n);
1010 if (r == DPLL_FINT_UNDERFLOW)
1011 break;
1012 else if (r == DPLL_FINT_INVALID)
1013 continue;
1014
1015 /* Compute the scaled DPLL multiplier, based on the divider */
1016 m = scaled_rt_rp * n;
1017
1018 /*
1019 * Since we're counting n up, a m overflow means we
1020 * can bail out completely (since as n increases in
1021 * the next iteration, there's no way that m can
1022 * increase beyond the current m)
1023 */
1024 if (m > scaled_max_m)
1025 break;
1026
1027 r = _dpll_test_mult(&m, n, &new_rate, target_rate,
1028 dd->clk_ref->rate);
1029
1030 /* m can't be set low enough for this n - try with a larger n */
1031 if (r == DPLL_MULT_UNDERFLOW)
1032 continue;
1033
1034 e = target_rate - new_rate;
1035 pr_debug("clock: n = %d: m = %d: rate error is %d "
1036 "(new_rate = %ld)\n", n, m, e, new_rate);
1037
1038 if (min_e == -1 ||
1039 min_e >= (int)(abs(e) - dd->rate_tolerance)) {
1040 min_e = e;
1041 min_e_m = m;
1042 min_e_n = n;
1043
1044 pr_debug("clock: found new least error %d\n", min_e);
1045
1046 /* We found good settings -- bail out now */
1047 if (min_e <= dd->rate_tolerance)
1048 break;
1049 }
1050 }
1051
1052 if (min_e < 0) {
1053 pr_debug("clock: error: target rate or tolerance too low\n");
1054 return ~0;
1055 }
1056
1057 dd->last_rounded_m = min_e_m;
1058 dd->last_rounded_n = min_e_n;
1059 dd->last_rounded_rate = _dpll_compute_new_rate(dd->clk_ref->rate,
1060 min_e_m, min_e_n);
1061
1062 pr_debug("clock: final least error: e = %d, m = %d, n = %d\n",
1063 min_e, min_e_m, min_e_n);
1064 pr_debug("clock: final rate: %ld (target rate: %ld)\n",
1065 dd->last_rounded_rate, target_rate);
1066
1067 return dd->last_rounded_rate;
1068} 327}
1069 328
1070/*------------------------------------------------------------------------- 329/*-------------------------------------------------------------------------
@@ -1092,3 +351,20 @@ void omap2_clk_disable_unused(struct clk *clk)
1092 pwrdm_clkdm_state_switch(clk->clkdm); 351 pwrdm_clkdm_state_switch(clk->clkdm);
1093} 352}
1094#endif 353#endif
354
355/* Common data */
356
357struct clk_functions omap2_clk_functions = {
358 .clk_enable = omap2_clk_enable,
359 .clk_disable = omap2_clk_disable,
360 .clk_round_rate = omap2_clk_round_rate,
361 .clk_set_rate = omap2_clk_set_rate,
362 .clk_set_parent = omap2_clk_set_parent,
363 .clk_disable_unused = omap2_clk_disable_unused,
364#ifdef CONFIG_CPU_FREQ
365 /* These will be removed when the OPP code is integrated */
366 .clk_init_cpufreq_table = omap2_clk_init_cpufreq_table,
367 .clk_exit_cpufreq_table = omap2_clk_exit_cpufreq_table,
368#endif
369};
370
diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h
index 93c48df3b5b1..7bc344bcbb47 100644
--- a/arch/arm/mach-omap2/clock.h
+++ b/arch/arm/mach-omap2/clock.h
@@ -47,7 +47,6 @@
47#define DPLL_LOW_POWER_BYPASS 0x5 47#define DPLL_LOW_POWER_BYPASS 0x5
48#define DPLL_LOCKED 0x7 48#define DPLL_LOCKED 0x7
49 49
50int omap2_clk_init(void);
51int omap2_clk_enable(struct clk *clk); 50int omap2_clk_enable(struct clk *clk);
52void omap2_clk_disable(struct clk *clk); 51void omap2_clk_disable(struct clk *clk);
53long omap2_clk_round_rate(struct clk *clk, unsigned long rate); 52long omap2_clk_round_rate(struct clk *clk, unsigned long rate);
@@ -78,19 +77,19 @@ u32 omap2_clksel_round_rate_div(struct clk *clk, unsigned long target_rate,
78 u32 *new_div); 77 u32 *new_div);
79u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val); 78u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val);
80u32 omap2_divisor_to_clksel(struct clk *clk, u32 div); 79u32 omap2_divisor_to_clksel(struct clk *clk, u32 div);
81unsigned long omap2_fixed_divisor_recalc(struct clk *clk);
82long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate); 80long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate);
83int omap2_clksel_set_rate(struct clk *clk, unsigned long rate); 81int omap2_clksel_set_rate(struct clk *clk, unsigned long rate);
82int omap2_clksel_set_parent(struct clk *clk, struct clk *new_parent);
84u32 omap2_get_dpll_rate(struct clk *clk); 83u32 omap2_get_dpll_rate(struct clk *clk);
85void omap2_init_dpll_parent(struct clk *clk); 84void omap2_init_dpll_parent(struct clk *clk);
86int omap2_wait_clock_ready(void __iomem *reg, u32 cval, const char *name); 85int omap2_wait_clock_ready(void __iomem *reg, u32 cval, const char *name);
87void omap2_clk_prepare_for_reboot(void);
88int omap2_dflt_clk_enable(struct clk *clk); 86int omap2_dflt_clk_enable(struct clk *clk);
89void omap2_dflt_clk_disable(struct clk *clk); 87void omap2_dflt_clk_disable(struct clk *clk);
90void omap2_clk_dflt_find_companion(struct clk *clk, void __iomem **other_reg, 88void omap2_clk_dflt_find_companion(struct clk *clk, void __iomem **other_reg,
91 u8 *other_bit); 89 u8 *other_bit);
92void omap2_clk_dflt_find_idlest(struct clk *clk, void __iomem **idlest_reg, 90void omap2_clk_dflt_find_idlest(struct clk *clk, void __iomem **idlest_reg,
93 u8 *idlest_bit); 91 u8 *idlest_bit);
92void omap2xxx_clk_commit(struct clk *clk);
94 93
95extern u8 cpu_mask; 94extern u8 cpu_mask;
96 95
@@ -104,5 +103,12 @@ extern const struct clksel_rate gpt_32k_rates[];
104extern const struct clksel_rate gpt_sys_rates[]; 103extern const struct clksel_rate gpt_sys_rates[];
105extern const struct clksel_rate gfx_l3_rates[]; 104extern const struct clksel_rate gfx_l3_rates[];
106 105
106#if defined(CONFIG_ARCH_OMAP24XX) && defined(CONFIG_CPU_FREQ)
107extern void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table);
108extern void omap2_clk_exit_cpufreq_table(struct cpufreq_frequency_table **table);
109#else
110#define omap2_clk_init_cpufreq_table 0
111#define omap2_clk_exit_cpufreq_table 0
112#endif
107 113
108#endif 114#endif
diff --git a/arch/arm/mach-omap2/clock2xxx.c b/arch/arm/mach-omap2/clock2xxx.c
index 5420356eb407..a48b01ab0e35 100644
--- a/arch/arm/mach-omap2/clock2xxx.c
+++ b/arch/arm/mach-omap2/clock2xxx.c
@@ -1,15 +1,15 @@
1/* 1/*
2 * linux/arch/arm/mach-omap2/clock.c 2 * clock2xxx.c - OMAP2xxx-specific clock integration code
3 * 3 *
4 * Copyright (C) 2005-2008 Texas Instruments, Inc. 4 * Copyright (C) 2005-2008 Texas Instruments, Inc.
5 * Copyright (C) 2004-2008 Nokia Corporation 5 * Copyright (C) 2004-2010 Nokia Corporation
6 * 6 *
7 * Contacts: 7 * Contacts:
8 * Richard Woodruff <r-woodruff2@ti.com> 8 * Richard Woodruff <r-woodruff2@ti.com>
9 * Paul Walmsley 9 * Paul Walmsley
10 * 10 *
11 * Based on earlier work by Tuukka Tikkanen, Tony Lindgren, 11 * Based on earlier work by Tuukka Tikkanen, Tony Lindgren,
12 * Gordon McNutt and RidgeRun, Inc. 12 * Gordon McNutt and RidgeRun, Inc.
13 * 13 *
14 * This program is free software; you can redistribute it and/or modify 14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2 as 15 * it under the terms of the GNU General Public License version 2 as
@@ -17,55 +17,25 @@
17 */ 17 */
18#undef DEBUG 18#undef DEBUG
19 19
20#include <linux/module.h>
21#include <linux/kernel.h> 20#include <linux/kernel.h>
22#include <linux/device.h>
23#include <linux/list.h>
24#include <linux/errno.h> 21#include <linux/errno.h>
25#include <linux/delay.h>
26#include <linux/clk.h> 22#include <linux/clk.h>
27#include <linux/io.h> 23#include <linux/io.h>
28#include <linux/cpufreq.h>
29#include <linux/bitops.h>
30 24
31#include <plat/clock.h> 25#include <plat/clock.h>
32#include <plat/sram.h>
33#include <plat/prcm.h>
34#include <plat/clkdev_omap.h>
35#include <asm/div64.h>
36#include <asm/clkdev.h>
37 26
38#include <plat/sdrc.h>
39#include "clock.h" 27#include "clock.h"
40#include "clock2xxx.h" 28#include "clock2xxx.h"
41#include "opp2xxx.h"
42#include "prm.h"
43#include "prm-regbits-24xx.h"
44#include "cm.h" 29#include "cm.h"
45#include "cm-regbits-24xx.h" 30#include "cm-regbits-24xx.h"
46 31
47
48/* CM_CLKEN_PLL.EN_{54,96}M_PLL options (24XX) */
49#define EN_APLL_STOPPED 0
50#define EN_APLL_LOCKED 3
51
52/* CM_CLKSEL1_PLL.APLLS_CLKIN options (24XX) */
53#define APLLS_CLKIN_19_2MHZ 0
54#define APLLS_CLKIN_13MHZ 2
55#define APLLS_CLKIN_12MHZ 3
56
57/* #define DOWN_VARIABLE_DPLL 1 */ /* Experimental */
58
59const struct prcm_config *curr_prcm_set;
60const struct prcm_config *rate_table;
61
62struct clk *vclk, *sclk, *dclk; 32struct clk *vclk, *sclk, *dclk;
63 33
64void __iomem *prcm_clksrc_ctrl; 34/*
65
66/*-------------------------------------------------------------------------
67 * Omap24xx specific clock functions 35 * Omap24xx specific clock functions
68 *-------------------------------------------------------------------------*/ 36 */
37
38#ifdef CONFIG_ARCH_OMAP2430
69 39
70/** 40/**
71 * omap2430_clk_i2chs_find_idlest - return CM_IDLEST info for 2430 I2CHS 41 * omap2430_clk_i2chs_find_idlest - return CM_IDLEST info for 2430 I2CHS
@@ -86,6 +56,10 @@ static void omap2430_clk_i2chs_find_idlest(struct clk *clk,
86 *idlest_bit = clk->enable_bit; 56 *idlest_bit = clk->enable_bit;
87} 57}
88 58
59#else
60#define omap2430_clk_i2chs_find_idlest NULL
61#endif
62
89/* 2430 I2CHS has non-standard IDLEST register */ 63/* 2430 I2CHS has non-standard IDLEST register */
90const struct clkops clkops_omap2430_i2chs_wait = { 64const struct clkops clkops_omap2430_i2chs_wait = {
91 .enable = omap2_dflt_clk_enable, 65 .enable = omap2_dflt_clk_enable,
@@ -94,491 +68,10 @@ const struct clkops clkops_omap2430_i2chs_wait = {
94 .find_companion = omap2_clk_dflt_find_companion, 68 .find_companion = omap2_clk_dflt_find_companion,
95}; 69};
96 70
97/**
98 * omap2xxx_clk_get_core_rate - return the CORE_CLK rate
99 * @clk: pointer to the combined dpll_ck + core_ck (currently "dpll_ck")
100 *
101 * Returns the CORE_CLK rate. CORE_CLK can have one of three rate
102 * sources on OMAP2xxx: the DPLL CLKOUT rate, DPLL CLKOUTX2, or 32KHz
103 * (the latter is unusual). This currently should be called with
104 * struct clk *dpll_ck, which is a composite clock of dpll_ck and
105 * core_ck.
106 */
107unsigned long omap2xxx_clk_get_core_rate(struct clk *clk)
108{
109 long long core_clk;
110 u32 v;
111
112 core_clk = omap2_get_dpll_rate(clk);
113
114 v = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
115 v &= OMAP24XX_CORE_CLK_SRC_MASK;
116
117 if (v == CORE_CLK_SRC_32K)
118 core_clk = 32768;
119 else
120 core_clk *= v;
121
122 return core_clk;
123}
124
125static int omap2_enable_osc_ck(struct clk *clk)
126{
127 u32 pcc;
128
129 pcc = __raw_readl(prcm_clksrc_ctrl);
130
131 __raw_writel(pcc & ~OMAP_AUTOEXTCLKMODE_MASK, prcm_clksrc_ctrl);
132
133 return 0;
134}
135
136static void omap2_disable_osc_ck(struct clk *clk)
137{
138 u32 pcc;
139
140 pcc = __raw_readl(prcm_clksrc_ctrl);
141
142 __raw_writel(pcc | OMAP_AUTOEXTCLKMODE_MASK, prcm_clksrc_ctrl);
143}
144
145const struct clkops clkops_oscck = {
146 .enable = omap2_enable_osc_ck,
147 .disable = omap2_disable_osc_ck,
148};
149
150#ifdef OLD_CK
151/* Recalculate SYST_CLK */
152static void omap2_sys_clk_recalc(struct clk *clk)
153{
154 u32 div = PRCM_CLKSRC_CTRL;
155 div &= (1 << 7) | (1 << 6); /* Test if ext clk divided by 1 or 2 */
156 div >>= clk->rate_offset;
157 clk->rate = (clk->parent->rate / div);
158 propagate_rate(clk);
159}
160#endif /* OLD_CK */
161
162/* Enable an APLL if off */
163static int omap2_clk_apll_enable(struct clk *clk, u32 status_mask)
164{
165 u32 cval, apll_mask;
166
167 apll_mask = EN_APLL_LOCKED << clk->enable_bit;
168
169 cval = cm_read_mod_reg(PLL_MOD, CM_CLKEN);
170
171 if ((cval & apll_mask) == apll_mask)
172 return 0; /* apll already enabled */
173
174 cval &= ~apll_mask;
175 cval |= apll_mask;
176 cm_write_mod_reg(cval, PLL_MOD, CM_CLKEN);
177
178 omap2_cm_wait_idlest(OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), status_mask,
179 clk->name);
180
181 /*
182 * REVISIT: Should we return an error code if omap2_wait_clock_ready()
183 * fails?
184 */
185 return 0;
186}
187
188static int omap2_clk_apll96_enable(struct clk *clk)
189{
190 return omap2_clk_apll_enable(clk, OMAP24XX_ST_96M_APLL);
191}
192
193static int omap2_clk_apll54_enable(struct clk *clk)
194{
195 return omap2_clk_apll_enable(clk, OMAP24XX_ST_54M_APLL);
196}
197
198/* Stop APLL */
199static void omap2_clk_apll_disable(struct clk *clk)
200{
201 u32 cval;
202
203 cval = cm_read_mod_reg(PLL_MOD, CM_CLKEN);
204 cval &= ~(EN_APLL_LOCKED << clk->enable_bit);
205 cm_write_mod_reg(cval, PLL_MOD, CM_CLKEN);
206}
207
208const struct clkops clkops_apll96 = {
209 .enable = omap2_clk_apll96_enable,
210 .disable = omap2_clk_apll_disable,
211};
212
213const struct clkops clkops_apll54 = {
214 .enable = omap2_clk_apll54_enable,
215 .disable = omap2_clk_apll_disable,
216};
217
218/*
219 * Uses the current prcm set to tell if a rate is valid.
220 * You can go slower, but not faster within a given rate set.
221 */
222long omap2_dpllcore_round_rate(unsigned long target_rate)
223{
224 u32 high, low, core_clk_src;
225
226 core_clk_src = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
227 core_clk_src &= OMAP24XX_CORE_CLK_SRC_MASK;
228
229 if (core_clk_src == CORE_CLK_SRC_DPLL) { /* DPLL clockout */
230 high = curr_prcm_set->dpll_speed * 2;
231 low = curr_prcm_set->dpll_speed;
232 } else { /* DPLL clockout x 2 */
233 high = curr_prcm_set->dpll_speed;
234 low = curr_prcm_set->dpll_speed / 2;
235 }
236
237#ifdef DOWN_VARIABLE_DPLL
238 if (target_rate > high)
239 return high;
240 else
241 return target_rate;
242#else
243 if (target_rate > low)
244 return high;
245 else
246 return low;
247#endif
248
249}
250
251unsigned long omap2_dpllcore_recalc(struct clk *clk)
252{
253 return omap2xxx_clk_get_core_rate(clk);
254}
255
256int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate)
257{
258 u32 cur_rate, low, mult, div, valid_rate, done_rate;
259 u32 bypass = 0;
260 struct prcm_config tmpset;
261 const struct dpll_data *dd;
262
263 cur_rate = omap2xxx_clk_get_core_rate(dclk);
264 mult = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
265 mult &= OMAP24XX_CORE_CLK_SRC_MASK;
266
267 if ((rate == (cur_rate / 2)) && (mult == 2)) {
268 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL, 1);
269 } else if ((rate == (cur_rate * 2)) && (mult == 1)) {
270 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
271 } else if (rate != cur_rate) {
272 valid_rate = omap2_dpllcore_round_rate(rate);
273 if (valid_rate != rate)
274 return -EINVAL;
275
276 if (mult == 1)
277 low = curr_prcm_set->dpll_speed;
278 else
279 low = curr_prcm_set->dpll_speed / 2;
280
281 dd = clk->dpll_data;
282 if (!dd)
283 return -EINVAL;
284
285 tmpset.cm_clksel1_pll = __raw_readl(dd->mult_div1_reg);
286 tmpset.cm_clksel1_pll &= ~(dd->mult_mask |
287 dd->div1_mask);
288 div = ((curr_prcm_set->xtal_speed / 1000000) - 1);
289 tmpset.cm_clksel2_pll = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
290 tmpset.cm_clksel2_pll &= ~OMAP24XX_CORE_CLK_SRC_MASK;
291 if (rate > low) {
292 tmpset.cm_clksel2_pll |= CORE_CLK_SRC_DPLL_X2;
293 mult = ((rate / 2) / 1000000);
294 done_rate = CORE_CLK_SRC_DPLL_X2;
295 } else {
296 tmpset.cm_clksel2_pll |= CORE_CLK_SRC_DPLL;
297 mult = (rate / 1000000);
298 done_rate = CORE_CLK_SRC_DPLL;
299 }
300 tmpset.cm_clksel1_pll |= (div << __ffs(dd->mult_mask));
301 tmpset.cm_clksel1_pll |= (mult << __ffs(dd->div1_mask));
302
303 /* Worst case */
304 tmpset.base_sdrc_rfr = SDRC_RFR_CTRL_BYPASS;
305
306 if (rate == curr_prcm_set->xtal_speed) /* If asking for 1-1 */
307 bypass = 1;
308
309 /* For omap2xxx_sdrc_init_params() */
310 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
311
312 /* Force dll lock mode */
313 omap2_set_prcm(tmpset.cm_clksel1_pll, tmpset.base_sdrc_rfr,
314 bypass);
315
316 /* Errata: ret dll entry state */
317 omap2xxx_sdrc_init_params(omap2xxx_sdrc_dll_is_unlocked());
318 omap2xxx_sdrc_reprogram(done_rate, 0);
319 }
320
321 return 0;
322}
323
324/**
325 * omap2_table_mpu_recalc - just return the MPU speed
326 * @clk: virt_prcm_set struct clk
327 *
328 * Set virt_prcm_set's rate to the mpu_speed field of the current PRCM set.
329 */
330unsigned long omap2_table_mpu_recalc(struct clk *clk)
331{
332 return curr_prcm_set->mpu_speed;
333}
334
335/*
336 * Look for a rate equal or less than the target rate given a configuration set.
337 *
338 * What's not entirely clear is "which" field represents the key field.
339 * Some might argue L3-DDR, others ARM, others IVA. This code is simple and
340 * just uses the ARM rates.
341 */
342long omap2_round_to_table_rate(struct clk *clk, unsigned long rate)
343{
344 const struct prcm_config *ptr;
345 long highest_rate;
346 long sys_ck_rate;
347
348 sys_ck_rate = clk_get_rate(sclk);
349
350 highest_rate = -EINVAL;
351
352 for (ptr = rate_table; ptr->mpu_speed; ptr++) {
353 if (!(ptr->flags & cpu_mask))
354 continue;
355 if (ptr->xtal_speed != sys_ck_rate)
356 continue;
357
358 highest_rate = ptr->mpu_speed;
359
360 /* Can check only after xtal frequency check */
361 if (ptr->mpu_speed <= rate)
362 break;
363 }
364 return highest_rate;
365}
366
367/* Sets basic clocks based on the specified rate */
368int omap2_select_table_rate(struct clk *clk, unsigned long rate)
369{
370 u32 cur_rate, done_rate, bypass = 0, tmp;
371 const struct prcm_config *prcm;
372 unsigned long found_speed = 0;
373 unsigned long flags;
374 long sys_ck_rate;
375
376 sys_ck_rate = clk_get_rate(sclk);
377
378 for (prcm = rate_table; prcm->mpu_speed; prcm++) {
379 if (!(prcm->flags & cpu_mask))
380 continue;
381
382 if (prcm->xtal_speed != sys_ck_rate)
383 continue;
384
385 if (prcm->mpu_speed <= rate) {
386 found_speed = prcm->mpu_speed;
387 break;
388 }
389 }
390
391 if (!found_speed) {
392 printk(KERN_INFO "Could not set MPU rate to %luMHz\n",
393 rate / 1000000);
394 return -EINVAL;
395 }
396
397 curr_prcm_set = prcm;
398 cur_rate = omap2xxx_clk_get_core_rate(dclk);
399
400 if (prcm->dpll_speed == cur_rate / 2) {
401 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL, 1);
402 } else if (prcm->dpll_speed == cur_rate * 2) {
403 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
404 } else if (prcm->dpll_speed != cur_rate) {
405 local_irq_save(flags);
406
407 if (prcm->dpll_speed == prcm->xtal_speed)
408 bypass = 1;
409
410 if ((prcm->cm_clksel2_pll & OMAP24XX_CORE_CLK_SRC_MASK) ==
411 CORE_CLK_SRC_DPLL_X2)
412 done_rate = CORE_CLK_SRC_DPLL_X2;
413 else
414 done_rate = CORE_CLK_SRC_DPLL;
415
416 /* MPU divider */
417 cm_write_mod_reg(prcm->cm_clksel_mpu, MPU_MOD, CM_CLKSEL);
418
419 /* dsp + iva1 div(2420), iva2.1(2430) */
420 cm_write_mod_reg(prcm->cm_clksel_dsp,
421 OMAP24XX_DSP_MOD, CM_CLKSEL);
422
423 cm_write_mod_reg(prcm->cm_clksel_gfx, GFX_MOD, CM_CLKSEL);
424
425 /* Major subsystem dividers */
426 tmp = cm_read_mod_reg(CORE_MOD, CM_CLKSEL1) & OMAP24XX_CLKSEL_DSS2_MASK;
427 cm_write_mod_reg(prcm->cm_clksel1_core | tmp, CORE_MOD,
428 CM_CLKSEL1);
429
430 if (cpu_is_omap2430())
431 cm_write_mod_reg(prcm->cm_clksel_mdm,
432 OMAP2430_MDM_MOD, CM_CLKSEL);
433
434 /* x2 to enter omap2xxx_sdrc_init_params() */
435 omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
436
437 omap2_set_prcm(prcm->cm_clksel1_pll, prcm->base_sdrc_rfr,
438 bypass);
439
440 omap2xxx_sdrc_init_params(omap2xxx_sdrc_dll_is_unlocked());
441 omap2xxx_sdrc_reprogram(done_rate, 0);
442
443 local_irq_restore(flags);
444 }
445
446 return 0;
447}
448
449#ifdef CONFIG_CPU_FREQ
450/*
451 * Walk PRCM rate table and fillout cpufreq freq_table
452 * XXX This should be replaced by an OPP layer in the near future
453 */
454static struct cpufreq_frequency_table *freq_table;
455
456void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
457{
458 const struct prcm_config *prcm;
459 long sys_ck_rate;
460 int i = 0;
461 int tbl_sz = 0;
462
463 sys_ck_rate = clk_get_rate(sclk);
464
465 for (prcm = rate_table; prcm->mpu_speed; prcm++) {
466 if (!(prcm->flags & cpu_mask))
467 continue;
468 if (prcm->xtal_speed != sys_ck_rate)
469 continue;
470
471 /* don't put bypass rates in table */
472 if (prcm->dpll_speed == prcm->xtal_speed)
473 continue;
474
475 tbl_sz++;
476 }
477
478 /*
479 * XXX Ensure that we're doing what CPUFreq expects for this error
480 * case and the following one
481 */
482 if (tbl_sz == 0) {
483 pr_warning("%s: no matching entries in rate_table\n",
484 __func__);
485 return;
486 }
487
488 /* Include the CPUFREQ_TABLE_END terminator entry */
489 tbl_sz++;
490
491 freq_table = kzalloc(sizeof(struct cpufreq_frequency_table) * tbl_sz,
492 GFP_ATOMIC);
493 if (!freq_table) {
494 pr_err("%s: could not kzalloc frequency table\n", __func__);
495 return;
496 }
497
498 for (prcm = rate_table; prcm->mpu_speed; prcm++) {
499 if (!(prcm->flags & cpu_mask))
500 continue;
501 if (prcm->xtal_speed != sys_ck_rate)
502 continue;
503
504 /* don't put bypass rates in table */
505 if (prcm->dpll_speed == prcm->xtal_speed)
506 continue;
507
508 freq_table[i].index = i;
509 freq_table[i].frequency = prcm->mpu_speed / 1000;
510 i++;
511 }
512
513 freq_table[i].index = i;
514 freq_table[i].frequency = CPUFREQ_TABLE_END;
515
516 *table = &freq_table[0];
517}
518
519void omap2_clk_exit_cpufreq_table(struct cpufreq_frequency_table **table)
520{
521 kfree(freq_table);
522}
523
524#endif
525
526struct clk_functions omap2_clk_functions = {
527 .clk_enable = omap2_clk_enable,
528 .clk_disable = omap2_clk_disable,
529 .clk_round_rate = omap2_clk_round_rate,
530 .clk_set_rate = omap2_clk_set_rate,
531 .clk_set_parent = omap2_clk_set_parent,
532 .clk_disable_unused = omap2_clk_disable_unused,
533#ifdef CONFIG_CPU_FREQ
534 .clk_init_cpufreq_table = omap2_clk_init_cpufreq_table,
535 .clk_exit_cpufreq_table = omap2_clk_exit_cpufreq_table,
536#endif
537};
538
539static u32 omap2_get_apll_clkin(void)
540{
541 u32 aplls, srate = 0;
542
543 aplls = cm_read_mod_reg(PLL_MOD, CM_CLKSEL1);
544 aplls &= OMAP24XX_APLLS_CLKIN_MASK;
545 aplls >>= OMAP24XX_APLLS_CLKIN_SHIFT;
546
547 if (aplls == APLLS_CLKIN_19_2MHZ)
548 srate = 19200000;
549 else if (aplls == APLLS_CLKIN_13MHZ)
550 srate = 13000000;
551 else if (aplls == APLLS_CLKIN_12MHZ)
552 srate = 12000000;
553
554 return srate;
555}
556
557static u32 omap2_get_sysclkdiv(void)
558{
559 u32 div;
560
561 div = __raw_readl(prcm_clksrc_ctrl);
562 div &= OMAP_SYSCLKDIV_MASK;
563 div >>= OMAP_SYSCLKDIV_SHIFT;
564
565 return div;
566}
567
568unsigned long omap2_osc_clk_recalc(struct clk *clk)
569{
570 return omap2_get_apll_clkin() * omap2_get_sysclkdiv();
571}
572
573unsigned long omap2_sys_clk_recalc(struct clk *clk)
574{
575 return clk->parent->rate / omap2_get_sysclkdiv();
576}
577
578/* 71/*
579 * Set clocks for bypass mode for reboot to work. 72 * Set clocks for bypass mode for reboot to work.
580 */ 73 */
581void omap2_clk_prepare_for_reboot(void) 74void omap2xxx_clk_prepare_for_reboot(void)
582{ 75{
583 u32 rate; 76 u32 rate;
584 77
@@ -593,11 +86,14 @@ void omap2_clk_prepare_for_reboot(void)
593 * Switch the MPU rate if specified on cmdline. 86 * Switch the MPU rate if specified on cmdline.
594 * We cannot do this early until cmdline is parsed. 87 * We cannot do this early until cmdline is parsed.
595 */ 88 */
596static int __init omap2_clk_arch_init(void) 89static int __init omap2xxx_clk_arch_init(void)
597{ 90{
598 struct clk *virt_prcm_set, *sys_ck, *dpll_ck, *mpu_ck; 91 struct clk *virt_prcm_set, *sys_ck, *dpll_ck, *mpu_ck;
599 unsigned long sys_ck_rate; 92 unsigned long sys_ck_rate;
600 93
94 if (!cpu_is_omap24xx())
95 return 0;
96
601 if (!mpurate) 97 if (!mpurate)
602 return -EINVAL; 98 return -EINVAL;
603 99
@@ -621,6 +117,6 @@ static int __init omap2_clk_arch_init(void)
621 117
622 return 0; 118 return 0;
623} 119}
624arch_initcall(omap2_clk_arch_init); 120arch_initcall(omap2xxx_clk_arch_init);
625 121
626 122
diff --git a/arch/arm/mach-omap2/clock2xxx.h b/arch/arm/mach-omap2/clock2xxx.h
index e35efde4bd80..32f3d0aa8fc4 100644
--- a/arch/arm/mach-omap2/clock2xxx.h
+++ b/arch/arm/mach-omap2/clock2xxx.h
@@ -11,12 +11,15 @@
11unsigned long omap2_table_mpu_recalc(struct clk *clk); 11unsigned long omap2_table_mpu_recalc(struct clk *clk);
12int omap2_select_table_rate(struct clk *clk, unsigned long rate); 12int omap2_select_table_rate(struct clk *clk, unsigned long rate);
13long omap2_round_to_table_rate(struct clk *clk, unsigned long rate); 13long omap2_round_to_table_rate(struct clk *clk, unsigned long rate);
14unsigned long omap2_sys_clk_recalc(struct clk *clk); 14unsigned long omap2xxx_sys_clk_recalc(struct clk *clk);
15unsigned long omap2_osc_clk_recalc(struct clk *clk); 15unsigned long omap2_osc_clk_recalc(struct clk *clk);
16unsigned long omap2_sys_clk_recalc(struct clk *clk);
17unsigned long omap2_dpllcore_recalc(struct clk *clk); 16unsigned long omap2_dpllcore_recalc(struct clk *clk);
18int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate); 17int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate);
19unsigned long omap2xxx_clk_get_core_rate(struct clk *clk); 18unsigned long omap2xxx_clk_get_core_rate(struct clk *clk);
19u32 omap2xxx_get_apll_clkin(void);
20u32 omap2xxx_get_sysclkdiv(void);
21void omap2xxx_clk_prepare_for_reboot(void);
22int omap2xxx_clk_init(void);
20 23
21/* REVISIT: These should be set dynamically for CONFIG_MULTI_OMAP2 */ 24/* REVISIT: These should be set dynamically for CONFIG_MULTI_OMAP2 */
22#ifdef CONFIG_ARCH_OMAP2420 25#ifdef CONFIG_ARCH_OMAP2420
diff --git a/arch/arm/mach-omap2/clock2xxx_data.c b/arch/arm/mach-omap2/clock2xxx_data.c
index 97dc7cf7751d..52c7a6c2d9e0 100644
--- a/arch/arm/mach-omap2/clock2xxx_data.c
+++ b/arch/arm/mach-omap2/clock2xxx_data.c
@@ -79,7 +79,7 @@ static struct clk sys_ck = { /* (*12, *13, 19.2, 26, 38.4)MHz */
79 .ops = &clkops_null, 79 .ops = &clkops_null,
80 .parent = &osc_ck, 80 .parent = &osc_ck,
81 .clkdm_name = "wkup_clkdm", 81 .clkdm_name = "wkup_clkdm",
82 .recalc = &omap2_sys_clk_recalc, 82 .recalc = &omap2xxx_sys_clk_recalc,
83}; 83};
84 84
85static struct clk alt_ck = { /* Typical 54M or 48M, may not exist */ 85static struct clk alt_ck = { /* Typical 54M or 48M, may not exist */
@@ -261,7 +261,7 @@ static struct clk func_12m_ck = {
261 .parent = &func_48m_ck, 261 .parent = &func_48m_ck,
262 .fixed_div = 4, 262 .fixed_div = 4,
263 .clkdm_name = "wkup_clkdm", 263 .clkdm_name = "wkup_clkdm",
264 .recalc = &omap2_fixed_divisor_recalc, 264 .recalc = &omap_fixed_divisor_recalc,
265}; 265};
266 266
267/* Secure timer, only available in secure mode */ 267/* Secure timer, only available in secure mode */
@@ -557,7 +557,7 @@ static struct clk iva1_mpu_int_ifck = {
557 .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), 557 .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN),
558 .enable_bit = OMAP2420_EN_IVA_MPU_SHIFT, 558 .enable_bit = OMAP2420_EN_IVA_MPU_SHIFT,
559 .fixed_div = 2, 559 .fixed_div = 2,
560 .recalc = &omap2_fixed_divisor_recalc, 560 .recalc = &omap_fixed_divisor_recalc,
561}; 561};
562 562
563/* 563/*
@@ -2238,7 +2238,7 @@ static struct omap_clk omap24xx_clks[] = {
2238 * init code 2238 * init code
2239 */ 2239 */
2240 2240
2241int __init omap2_clk_init(void) 2241int __init omap2xxx_clk_init(void)
2242{ 2242{
2243 const struct prcm_config *prcm; 2243 const struct prcm_config *prcm;
2244 struct omap_clk *c; 2244 struct omap_clk *c;
@@ -2264,7 +2264,7 @@ int __init omap2_clk_init(void)
2264 2264
2265 osc_ck.rate = omap2_osc_clk_recalc(&osc_ck); 2265 osc_ck.rate = omap2_osc_clk_recalc(&osc_ck);
2266 propagate_rate(&osc_ck); 2266 propagate_rate(&osc_ck);
2267 sys_ck.rate = omap2_sys_clk_recalc(&sys_ck); 2267 sys_ck.rate = omap2xxx_sys_clk_recalc(&sys_ck);
2268 propagate_rate(&sys_ck); 2268 propagate_rate(&sys_ck);
2269 2269
2270 for (c = omap24xx_clks; c < omap24xx_clks + ARRAY_SIZE(omap24xx_clks); c++) 2270 for (c = omap24xx_clks; c < omap24xx_clks + ARRAY_SIZE(omap24xx_clks); c++)
diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
index d4217b93e10b..1f1b5a6b3eea 100644
--- a/arch/arm/mach-omap2/clock34xx.c
+++ b/arch/arm/mach-omap2/clock34xx.c
@@ -2,10 +2,10 @@
2 * OMAP3-specific clock framework functions 2 * OMAP3-specific clock framework functions
3 * 3 *
4 * Copyright (C) 2007-2008 Texas Instruments, Inc. 4 * Copyright (C) 2007-2008 Texas Instruments, Inc.
5 * Copyright (C) 2007-2009 Nokia Corporation 5 * Copyright (C) 2007-2010 Nokia Corporation
6 * 6 *
7 * Written by Paul Walmsley 7 * Paul Walmsley
8 * Testing and integration fixes by Jouni Högander 8 * Jouni Högander
9 * 9 *
10 * Parts of this code are based on code written by 10 * Parts of this code are based on code written by
11 * Richard Woodruff, Tony Lindgren, Tuukka Tikkanen, Karthik Dasu 11 * Richard Woodruff, Tony Lindgren, Tuukka Tikkanen, Karthik Dasu
@@ -16,34 +16,22 @@
16 */ 16 */
17#undef DEBUG 17#undef DEBUG
18 18
19#include <linux/module.h>
20#include <linux/kernel.h> 19#include <linux/kernel.h>
21#include <linux/device.h>
22#include <linux/list.h>
23#include <linux/errno.h> 20#include <linux/errno.h>
24#include <linux/delay.h> 21#include <linux/delay.h>
25#include <linux/clk.h> 22#include <linux/clk.h>
26#include <linux/io.h> 23#include <linux/io.h>
27#include <linux/limits.h>
28#include <linux/bitops.h>
29 24
30#include <plat/cpu.h> 25#include <plat/cpu.h>
31#include <plat/clock.h> 26#include <plat/clock.h>
32#include <plat/sram.h>
33#include <plat/sdrc.h>
34#include <asm/div64.h>
35#include <asm/clkdev.h>
36 27
37#include "clock.h" 28#include "clock.h"
38#include "clock34xx.h" 29#include "clock34xx.h"
39#include "sdrc.h"
40#include "prm.h" 30#include "prm.h"
41#include "prm-regbits-34xx.h" 31#include "prm-regbits-34xx.h"
42#include "cm.h" 32#include "cm.h"
43#include "cm-regbits-34xx.h" 33#include "cm-regbits-34xx.h"
44 34
45#define CYCLES_PER_MHZ 1000000
46
47/* 35/*
48 * DPLL5_FREQ_FOR_USBHOST: USBHOST and USBTLL are the only clocks 36 * DPLL5_FREQ_FOR_USBHOST: USBHOST and USBTLL are the only clocks
49 * that are sourced by DPLL5, and both of these require this clock 37 * that are sourced by DPLL5, and both of these require this clock
@@ -162,129 +150,7 @@ int omap3_dpll4_set_rate(struct clk *clk, unsigned long rate)
162 return omap3_noncore_dpll_set_rate(clk, rate); 150 return omap3_noncore_dpll_set_rate(clk, rate);
163} 151}
164 152
165 153void __init omap3_clk_lock_dpll5(void)
166/*
167 * CORE DPLL (DPLL3) rate programming functions
168 *
169 * These call into SRAM code to do the actual CM writes, since the SDRAM
170 * is clocked from DPLL3.
171 */
172
173/**
174 * omap3_core_dpll_m2_set_rate - set CORE DPLL M2 divider
175 * @clk: struct clk * of DPLL to set
176 * @rate: rounded target rate
177 *
178 * Program the DPLL M2 divider with the rounded target rate. Returns
179 * -EINVAL upon error, or 0 upon success.
180 */
181int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate)
182{
183 u32 new_div = 0;
184 u32 unlock_dll = 0;
185 u32 c;
186 unsigned long validrate, sdrcrate, _mpurate;
187 struct omap_sdrc_params *sdrc_cs0;
188 struct omap_sdrc_params *sdrc_cs1;
189 int ret;
190
191 if (!clk || !rate)
192 return -EINVAL;
193
194 validrate = omap2_clksel_round_rate_div(clk, rate, &new_div);
195 if (validrate != rate)
196 return -EINVAL;
197
198 sdrcrate = sdrc_ick_p->rate;
199 if (rate > clk->rate)
200 sdrcrate <<= ((rate / clk->rate) >> 1);
201 else
202 sdrcrate >>= ((clk->rate / rate) >> 1);
203
204 ret = omap2_sdrc_get_params(sdrcrate, &sdrc_cs0, &sdrc_cs1);
205 if (ret)
206 return -EINVAL;
207
208 if (sdrcrate < MIN_SDRC_DLL_LOCK_FREQ) {
209 pr_debug("clock: will unlock SDRC DLL\n");
210 unlock_dll = 1;
211 }
212
213 /*
214 * XXX This only needs to be done when the CPU frequency changes
215 */
216 _mpurate = arm_fck_p->rate / CYCLES_PER_MHZ;
217 c = (_mpurate << SDRC_MPURATE_SCALE) >> SDRC_MPURATE_BASE_SHIFT;
218 c += 1; /* for safety */
219 c *= SDRC_MPURATE_LOOPS;
220 c >>= SDRC_MPURATE_SCALE;
221 if (c == 0)
222 c = 1;
223
224 pr_debug("clock: changing CORE DPLL rate from %lu to %lu\n", clk->rate,
225 validrate);
226 pr_debug("clock: SDRC CS0 timing params used:"
227 " RFR %08x CTRLA %08x CTRLB %08x MR %08x\n",
228 sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla,
229 sdrc_cs0->actim_ctrlb, sdrc_cs0->mr);
230 if (sdrc_cs1)
231 pr_debug("clock: SDRC CS1 timing params used: "
232 " RFR %08x CTRLA %08x CTRLB %08x MR %08x\n",
233 sdrc_cs1->rfr_ctrl, sdrc_cs1->actim_ctrla,
234 sdrc_cs1->actim_ctrlb, sdrc_cs1->mr);
235
236 if (sdrc_cs1)
237 omap3_configure_core_dpll(
238 new_div, unlock_dll, c, rate > clk->rate,
239 sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla,
240 sdrc_cs0->actim_ctrlb, sdrc_cs0->mr,
241 sdrc_cs1->rfr_ctrl, sdrc_cs1->actim_ctrla,
242 sdrc_cs1->actim_ctrlb, sdrc_cs1->mr);
243 else
244 omap3_configure_core_dpll(
245 new_div, unlock_dll, c, rate > clk->rate,
246 sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla,
247 sdrc_cs0->actim_ctrlb, sdrc_cs0->mr,
248 0, 0, 0, 0);
249
250 return 0;
251}
252
253/* Common clock code */
254
255/*
256 * As it is structured now, this will prevent an OMAP2/3 multiboot
257 * kernel from compiling. This will need further attention.
258 */
259#if defined(CONFIG_ARCH_OMAP3)
260
261struct clk_functions omap2_clk_functions = {
262 .clk_enable = omap2_clk_enable,
263 .clk_disable = omap2_clk_disable,
264 .clk_round_rate = omap2_clk_round_rate,
265 .clk_set_rate = omap2_clk_set_rate,
266 .clk_set_parent = omap2_clk_set_parent,
267 .clk_disable_unused = omap2_clk_disable_unused,
268};
269
270/*
271 * Set clocks for bypass mode for reboot to work.
272 */
273void omap2_clk_prepare_for_reboot(void)
274{
275 /* REVISIT: Not ready for 343x */
276#if 0
277 u32 rate;
278
279 if (vclk == NULL || sclk == NULL)
280 return;
281
282 rate = clk_get_rate(sclk);
283 clk_set_rate(vclk, rate);
284#endif
285}
286
287void omap3_clk_lock_dpll5(void)
288{ 154{
289 struct clk *dpll5_clk; 155 struct clk *dpll5_clk;
290 struct clk *dpll5_m2_clk; 156 struct clk *dpll5_m2_clk;
@@ -306,17 +172,22 @@ void omap3_clk_lock_dpll5(void)
306 return; 172 return;
307} 173}
308 174
175/* Common clock code */
176
309/* REVISIT: Move this init stuff out into clock.c */ 177/* REVISIT: Move this init stuff out into clock.c */
310 178
311/* 179/*
312 * Switch the MPU rate if specified on cmdline. 180 * Switch the MPU rate if specified on cmdline.
313 * We cannot do this early until cmdline is parsed. 181 * We cannot do this early until cmdline is parsed.
314 */ 182 */
315static int __init omap2_clk_arch_init(void) 183static int __init omap3xxx_clk_arch_init(void)
316{ 184{
317 struct clk *osc_sys_ck, *dpll1_ck, *arm_fck, *core_ck; 185 struct clk *osc_sys_ck, *dpll1_ck, *arm_fck, *core_ck;
318 unsigned long osc_sys_rate; 186 unsigned long osc_sys_rate;
319 187
188 if (!cpu_is_omap34xx())
189 return 0;
190
320 if (!mpurate) 191 if (!mpurate)
321 return -EINVAL; 192 return -EINVAL;
322 193
@@ -345,9 +216,6 @@ static int __init omap2_clk_arch_init(void)
345 216
346 return 0; 217 return 0;
347} 218}
348arch_initcall(omap2_clk_arch_init); 219arch_initcall(omap3xxx_clk_arch_init);
349
350
351#endif
352 220
353 221
diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h
index 9a2c07eac9ad..73f2109d6436 100644
--- a/arch/arm/mach-omap2/clock34xx.h
+++ b/arch/arm/mach-omap2/clock34xx.h
@@ -8,6 +8,7 @@
8#ifndef __ARCH_ARM_MACH_OMAP2_CLOCK_34XX_H 8#ifndef __ARCH_ARM_MACH_OMAP2_CLOCK_34XX_H
9#define __ARCH_ARM_MACH_OMAP2_CLOCK_34XX_H 9#define __ARCH_ARM_MACH_OMAP2_CLOCK_34XX_H
10 10
11int omap3xxx_clk_init(void);
11int omap3_dpll4_set_rate(struct clk *clk, unsigned long rate); 12int omap3_dpll4_set_rate(struct clk *clk, unsigned long rate);
12int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate); 13int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate);
13void omap3_clk_lock_dpll5(void); 14void omap3_clk_lock_dpll5(void);
diff --git a/arch/arm/mach-omap2/clock34xx_data.c b/arch/arm/mach-omap2/clock34xx_data.c
index 74930e3158e3..0d04f92f63e1 100644
--- a/arch/arm/mach-omap2/clock34xx_data.c
+++ b/arch/arm/mach-omap2/clock34xx_data.c
@@ -735,7 +735,7 @@ static struct clk omap_12m_fck = {
735 .ops = &clkops_null, 735 .ops = &clkops_null,
736 .parent = &omap_48m_fck, 736 .parent = &omap_48m_fck,
737 .fixed_div = 4, 737 .fixed_div = 4,
738 .recalc = &omap2_fixed_divisor_recalc, 738 .recalc = &omap_fixed_divisor_recalc,
739}; 739};
740 740
741/* This virstual clock is the source for dpll4_m4x2_ck */ 741/* This virstual clock is the source for dpll4_m4x2_ck */
@@ -1588,7 +1588,7 @@ static struct clk ssi_sst_fck_3430es1 = {
1588 .ops = &clkops_null, 1588 .ops = &clkops_null,
1589 .parent = &ssi_ssr_fck_3430es1, 1589 .parent = &ssi_ssr_fck_3430es1,
1590 .fixed_div = 2, 1590 .fixed_div = 2,
1591 .recalc = &omap2_fixed_divisor_recalc, 1591 .recalc = &omap_fixed_divisor_recalc,
1592}; 1592};
1593 1593
1594static struct clk ssi_sst_fck_3430es2 = { 1594static struct clk ssi_sst_fck_3430es2 = {
@@ -1596,7 +1596,7 @@ static struct clk ssi_sst_fck_3430es2 = {
1596 .ops = &clkops_null, 1596 .ops = &clkops_null,
1597 .parent = &ssi_ssr_fck_3430es2, 1597 .parent = &ssi_ssr_fck_3430es2,
1598 .fixed_div = 2, 1598 .fixed_div = 2,
1599 .recalc = &omap2_fixed_divisor_recalc, 1599 .recalc = &omap_fixed_divisor_recalc,
1600}; 1600};
1601 1601
1602 1602
@@ -2988,139 +2988,140 @@ static struct clk wdt1_fck = {
2988 * clkdev 2988 * clkdev
2989 */ 2989 */
2990 2990
2991static struct omap_clk omap34xx_clks[] = { 2991/* XXX At some point we should rename this file to clock3xxx_data.c */
2992 CLK(NULL, "omap_32k_fck", &omap_32k_fck, CK_343X), 2992static struct omap_clk omap3xxx_clks[] = {
2993 CLK(NULL, "virt_12m_ck", &virt_12m_ck, CK_343X), 2993 CLK(NULL, "omap_32k_fck", &omap_32k_fck, CK_3XXX),
2994 CLK(NULL, "virt_13m_ck", &virt_13m_ck, CK_343X), 2994 CLK(NULL, "virt_12m_ck", &virt_12m_ck, CK_3XXX),
2995 CLK(NULL, "virt_16_8m_ck", &virt_16_8m_ck, CK_3430ES2), 2995 CLK(NULL, "virt_13m_ck", &virt_13m_ck, CK_3XXX),
2996 CLK(NULL, "virt_19_2m_ck", &virt_19_2m_ck, CK_343X), 2996 CLK(NULL, "virt_16_8m_ck", &virt_16_8m_ck, CK_3430ES2 | CK_AM35XX),
2997 CLK(NULL, "virt_26m_ck", &virt_26m_ck, CK_343X), 2997 CLK(NULL, "virt_19_2m_ck", &virt_19_2m_ck, CK_3XXX),
2998 CLK(NULL, "virt_38_4m_ck", &virt_38_4m_ck, CK_343X), 2998 CLK(NULL, "virt_26m_ck", &virt_26m_ck, CK_3XXX),
2999 CLK(NULL, "osc_sys_ck", &osc_sys_ck, CK_343X), 2999 CLK(NULL, "virt_38_4m_ck", &virt_38_4m_ck, CK_3XXX),
3000 CLK(NULL, "sys_ck", &sys_ck, CK_343X), 3000 CLK(NULL, "osc_sys_ck", &osc_sys_ck, CK_3XXX),
3001 CLK(NULL, "sys_altclk", &sys_altclk, CK_343X), 3001 CLK(NULL, "sys_ck", &sys_ck, CK_3XXX),
3002 CLK(NULL, "mcbsp_clks", &mcbsp_clks, CK_343X), 3002 CLK(NULL, "sys_altclk", &sys_altclk, CK_3XXX),
3003 CLK(NULL, "sys_clkout1", &sys_clkout1, CK_343X), 3003 CLK(NULL, "mcbsp_clks", &mcbsp_clks, CK_3XXX),
3004 CLK(NULL, "dpll1_ck", &dpll1_ck, CK_343X), 3004 CLK(NULL, "sys_clkout1", &sys_clkout1, CK_3XXX),
3005 CLK(NULL, "dpll1_x2_ck", &dpll1_x2_ck, CK_343X), 3005 CLK(NULL, "dpll1_ck", &dpll1_ck, CK_3XXX),
3006 CLK(NULL, "dpll1_x2m2_ck", &dpll1_x2m2_ck, CK_343X), 3006 CLK(NULL, "dpll1_x2_ck", &dpll1_x2_ck, CK_3XXX),
3007 CLK(NULL, "dpll1_x2m2_ck", &dpll1_x2m2_ck, CK_3XXX),
3007 CLK(NULL, "dpll2_ck", &dpll2_ck, CK_343X), 3008 CLK(NULL, "dpll2_ck", &dpll2_ck, CK_343X),
3008 CLK(NULL, "dpll2_m2_ck", &dpll2_m2_ck, CK_343X), 3009 CLK(NULL, "dpll2_m2_ck", &dpll2_m2_ck, CK_343X),
3009 CLK(NULL, "dpll3_ck", &dpll3_ck, CK_343X), 3010 CLK(NULL, "dpll3_ck", &dpll3_ck, CK_3XXX),
3010 CLK(NULL, "core_ck", &core_ck, CK_343X), 3011 CLK(NULL, "core_ck", &core_ck, CK_3XXX),
3011 CLK(NULL, "dpll3_x2_ck", &dpll3_x2_ck, CK_343X), 3012 CLK(NULL, "dpll3_x2_ck", &dpll3_x2_ck, CK_3XXX),
3012 CLK(NULL, "dpll3_m2_ck", &dpll3_m2_ck, CK_343X), 3013 CLK(NULL, "dpll3_m2_ck", &dpll3_m2_ck, CK_3XXX),
3013 CLK(NULL, "dpll3_m2x2_ck", &dpll3_m2x2_ck, CK_343X), 3014 CLK(NULL, "dpll3_m2x2_ck", &dpll3_m2x2_ck, CK_3XXX),
3014 CLK(NULL, "dpll3_m3_ck", &dpll3_m3_ck, CK_343X), 3015 CLK(NULL, "dpll3_m3_ck", &dpll3_m3_ck, CK_3XXX),
3015 CLK(NULL, "dpll3_m3x2_ck", &dpll3_m3x2_ck, CK_343X), 3016 CLK(NULL, "dpll3_m3x2_ck", &dpll3_m3x2_ck, CK_3XXX),
3016 CLK("etb", "emu_core_alwon_ck", &emu_core_alwon_ck, CK_343X), 3017 CLK("etb", "emu_core_alwon_ck", &emu_core_alwon_ck, CK_3XXX),
3017 CLK(NULL, "dpll4_ck", &dpll4_ck, CK_343X), 3018 CLK(NULL, "dpll4_ck", &dpll4_ck, CK_3XXX),
3018 CLK(NULL, "dpll4_x2_ck", &dpll4_x2_ck, CK_343X), 3019 CLK(NULL, "dpll4_x2_ck", &dpll4_x2_ck, CK_3XXX),
3019 CLK(NULL, "omap_96m_alwon_fck", &omap_96m_alwon_fck, CK_343X), 3020 CLK(NULL, "omap_96m_alwon_fck", &omap_96m_alwon_fck, CK_3XXX),
3020 CLK(NULL, "omap_96m_fck", &omap_96m_fck, CK_343X), 3021 CLK(NULL, "omap_96m_fck", &omap_96m_fck, CK_3XXX),
3021 CLK(NULL, "cm_96m_fck", &cm_96m_fck, CK_343X), 3022 CLK(NULL, "cm_96m_fck", &cm_96m_fck, CK_3XXX),
3022 CLK(NULL, "omap_54m_fck", &omap_54m_fck, CK_343X), 3023 CLK(NULL, "omap_54m_fck", &omap_54m_fck, CK_3XXX),
3023 CLK(NULL, "omap_48m_fck", &omap_48m_fck, CK_343X), 3024 CLK(NULL, "omap_48m_fck", &omap_48m_fck, CK_3XXX),
3024 CLK(NULL, "omap_12m_fck", &omap_12m_fck, CK_343X), 3025 CLK(NULL, "omap_12m_fck", &omap_12m_fck, CK_3XXX),
3025 CLK(NULL, "dpll4_m2_ck", &dpll4_m2_ck, CK_343X), 3026 CLK(NULL, "dpll4_m2_ck", &dpll4_m2_ck, CK_3XXX),
3026 CLK(NULL, "dpll4_m2x2_ck", &dpll4_m2x2_ck, CK_343X), 3027 CLK(NULL, "dpll4_m2x2_ck", &dpll4_m2x2_ck, CK_3XXX),
3027 CLK(NULL, "dpll4_m3_ck", &dpll4_m3_ck, CK_343X), 3028 CLK(NULL, "dpll4_m3_ck", &dpll4_m3_ck, CK_3XXX),
3028 CLK(NULL, "dpll4_m3x2_ck", &dpll4_m3x2_ck, CK_343X), 3029 CLK(NULL, "dpll4_m3x2_ck", &dpll4_m3x2_ck, CK_3XXX),
3029 CLK(NULL, "dpll4_m4_ck", &dpll4_m4_ck, CK_343X), 3030 CLK(NULL, "dpll4_m4_ck", &dpll4_m4_ck, CK_3XXX),
3030 CLK(NULL, "dpll4_m4x2_ck", &dpll4_m4x2_ck, CK_343X), 3031 CLK(NULL, "dpll4_m4x2_ck", &dpll4_m4x2_ck, CK_3XXX),
3031 CLK(NULL, "dpll4_m5_ck", &dpll4_m5_ck, CK_343X), 3032 CLK(NULL, "dpll4_m5_ck", &dpll4_m5_ck, CK_3XXX),
3032 CLK(NULL, "dpll4_m5x2_ck", &dpll4_m5x2_ck, CK_343X), 3033 CLK(NULL, "dpll4_m5x2_ck", &dpll4_m5x2_ck, CK_3XXX),
3033 CLK(NULL, "dpll4_m6_ck", &dpll4_m6_ck, CK_343X), 3034 CLK(NULL, "dpll4_m6_ck", &dpll4_m6_ck, CK_3XXX),
3034 CLK(NULL, "dpll4_m6x2_ck", &dpll4_m6x2_ck, CK_343X), 3035 CLK(NULL, "dpll4_m6x2_ck", &dpll4_m6x2_ck, CK_3XXX),
3035 CLK("etb", "emu_per_alwon_ck", &emu_per_alwon_ck, CK_343X), 3036 CLK("etb", "emu_per_alwon_ck", &emu_per_alwon_ck, CK_3XXX),
3036 CLK(NULL, "dpll5_ck", &dpll5_ck, CK_3430ES2), 3037 CLK(NULL, "dpll5_ck", &dpll5_ck, CK_3430ES2 | CK_AM35XX),
3037 CLK(NULL, "dpll5_m2_ck", &dpll5_m2_ck, CK_3430ES2), 3038 CLK(NULL, "dpll5_m2_ck", &dpll5_m2_ck, CK_3430ES2 | CK_AM35XX),
3038 CLK(NULL, "clkout2_src_ck", &clkout2_src_ck, CK_343X), 3039 CLK(NULL, "clkout2_src_ck", &clkout2_src_ck, CK_3XXX),
3039 CLK(NULL, "sys_clkout2", &sys_clkout2, CK_343X), 3040 CLK(NULL, "sys_clkout2", &sys_clkout2, CK_3XXX),
3040 CLK(NULL, "corex2_fck", &corex2_fck, CK_343X), 3041 CLK(NULL, "corex2_fck", &corex2_fck, CK_3XXX),
3041 CLK(NULL, "dpll1_fck", &dpll1_fck, CK_343X), 3042 CLK(NULL, "dpll1_fck", &dpll1_fck, CK_3XXX),
3042 CLK(NULL, "mpu_ck", &mpu_ck, CK_343X), 3043 CLK(NULL, "mpu_ck", &mpu_ck, CK_3XXX),
3043 CLK(NULL, "arm_fck", &arm_fck, CK_343X), 3044 CLK(NULL, "arm_fck", &arm_fck, CK_3XXX),
3044 CLK("etb", "emu_mpu_alwon_ck", &emu_mpu_alwon_ck, CK_343X), 3045 CLK("etb", "emu_mpu_alwon_ck", &emu_mpu_alwon_ck, CK_3XXX),
3045 CLK(NULL, "dpll2_fck", &dpll2_fck, CK_343X), 3046 CLK(NULL, "dpll2_fck", &dpll2_fck, CK_343X),
3046 CLK(NULL, "iva2_ck", &iva2_ck, CK_343X), 3047 CLK(NULL, "iva2_ck", &iva2_ck, CK_343X),
3047 CLK(NULL, "l3_ick", &l3_ick, CK_343X), 3048 CLK(NULL, "l3_ick", &l3_ick, CK_3XXX),
3048 CLK(NULL, "l4_ick", &l4_ick, CK_343X), 3049 CLK(NULL, "l4_ick", &l4_ick, CK_3XXX),
3049 CLK(NULL, "rm_ick", &rm_ick, CK_343X), 3050 CLK(NULL, "rm_ick", &rm_ick, CK_3XXX),
3050 CLK(NULL, "gfx_l3_ck", &gfx_l3_ck, CK_3430ES1), 3051 CLK(NULL, "gfx_l3_ck", &gfx_l3_ck, CK_3430ES1),
3051 CLK(NULL, "gfx_l3_fck", &gfx_l3_fck, CK_3430ES1), 3052 CLK(NULL, "gfx_l3_fck", &gfx_l3_fck, CK_3430ES1),
3052 CLK(NULL, "gfx_l3_ick", &gfx_l3_ick, CK_3430ES1), 3053 CLK(NULL, "gfx_l3_ick", &gfx_l3_ick, CK_3430ES1),
3053 CLK(NULL, "gfx_cg1_ck", &gfx_cg1_ck, CK_3430ES1), 3054 CLK(NULL, "gfx_cg1_ck", &gfx_cg1_ck, CK_3430ES1),
3054 CLK(NULL, "gfx_cg2_ck", &gfx_cg2_ck, CK_3430ES1), 3055 CLK(NULL, "gfx_cg2_ck", &gfx_cg2_ck, CK_3430ES1),
3055 CLK(NULL, "sgx_fck", &sgx_fck, CK_3430ES2), 3056 CLK(NULL, "sgx_fck", &sgx_fck, CK_3430ES2 | CK_3517),
3056 CLK(NULL, "sgx_ick", &sgx_ick, CK_3430ES2), 3057 CLK(NULL, "sgx_ick", &sgx_ick, CK_3430ES2 | CK_3517),
3057 CLK(NULL, "d2d_26m_fck", &d2d_26m_fck, CK_3430ES1), 3058 CLK(NULL, "d2d_26m_fck", &d2d_26m_fck, CK_3430ES1),
3058 CLK(NULL, "modem_fck", &modem_fck, CK_343X), 3059 CLK(NULL, "modem_fck", &modem_fck, CK_343X),
3059 CLK(NULL, "sad2d_ick", &sad2d_ick, CK_343X), 3060 CLK(NULL, "sad2d_ick", &sad2d_ick, CK_343X),
3060 CLK(NULL, "mad2d_ick", &mad2d_ick, CK_343X), 3061 CLK(NULL, "mad2d_ick", &mad2d_ick, CK_343X),
3061 CLK(NULL, "gpt10_fck", &gpt10_fck, CK_343X), 3062 CLK(NULL, "gpt10_fck", &gpt10_fck, CK_3XXX),
3062 CLK(NULL, "gpt11_fck", &gpt11_fck, CK_343X), 3063 CLK(NULL, "gpt11_fck", &gpt11_fck, CK_3XXX),
3063 CLK(NULL, "cpefuse_fck", &cpefuse_fck, CK_3430ES2), 3064 CLK(NULL, "cpefuse_fck", &cpefuse_fck, CK_3430ES2 | CK_AM35XX),
3064 CLK(NULL, "ts_fck", &ts_fck, CK_3430ES2), 3065 CLK(NULL, "ts_fck", &ts_fck, CK_3430ES2 | CK_AM35XX),
3065 CLK(NULL, "usbtll_fck", &usbtll_fck, CK_3430ES2), 3066 CLK(NULL, "usbtll_fck", &usbtll_fck, CK_3430ES2 | CK_AM35XX),
3066 CLK(NULL, "core_96m_fck", &core_96m_fck, CK_343X), 3067 CLK(NULL, "core_96m_fck", &core_96m_fck, CK_3XXX),
3067 CLK("mmci-omap-hs.2", "fck", &mmchs3_fck, CK_3430ES2), 3068 CLK("mmci-omap-hs.2", "fck", &mmchs3_fck, CK_3430ES2 | CK_AM35XX),
3068 CLK("mmci-omap-hs.1", "fck", &mmchs2_fck, CK_343X), 3069 CLK("mmci-omap-hs.1", "fck", &mmchs2_fck, CK_3XXX),
3069 CLK(NULL, "mspro_fck", &mspro_fck, CK_343X), 3070 CLK(NULL, "mspro_fck", &mspro_fck, CK_343X),
3070 CLK("mmci-omap-hs.0", "fck", &mmchs1_fck, CK_343X), 3071 CLK("mmci-omap-hs.0", "fck", &mmchs1_fck, CK_3XXX),
3071 CLK("i2c_omap.3", "fck", &i2c3_fck, CK_343X), 3072 CLK("i2c_omap.3", "fck", &i2c3_fck, CK_3XXX),
3072 CLK("i2c_omap.2", "fck", &i2c2_fck, CK_343X), 3073 CLK("i2c_omap.2", "fck", &i2c2_fck, CK_3XXX),
3073 CLK("i2c_omap.1", "fck", &i2c1_fck, CK_343X), 3074 CLK("i2c_omap.1", "fck", &i2c1_fck, CK_3XXX),
3074 CLK("omap-mcbsp.5", "fck", &mcbsp5_fck, CK_343X), 3075 CLK("omap-mcbsp.5", "fck", &mcbsp5_fck, CK_3XXX),
3075 CLK("omap-mcbsp.1", "fck", &mcbsp1_fck, CK_343X), 3076 CLK("omap-mcbsp.1", "fck", &mcbsp1_fck, CK_3XXX),
3076 CLK(NULL, "core_48m_fck", &core_48m_fck, CK_343X), 3077 CLK(NULL, "core_48m_fck", &core_48m_fck, CK_3XXX),
3077 CLK("omap2_mcspi.4", "fck", &mcspi4_fck, CK_343X), 3078 CLK("omap2_mcspi.4", "fck", &mcspi4_fck, CK_3XXX),
3078 CLK("omap2_mcspi.3", "fck", &mcspi3_fck, CK_343X), 3079 CLK("omap2_mcspi.3", "fck", &mcspi3_fck, CK_3XXX),
3079 CLK("omap2_mcspi.2", "fck", &mcspi2_fck, CK_343X), 3080 CLK("omap2_mcspi.2", "fck", &mcspi2_fck, CK_3XXX),
3080 CLK("omap2_mcspi.1", "fck", &mcspi1_fck, CK_343X), 3081 CLK("omap2_mcspi.1", "fck", &mcspi1_fck, CK_3XXX),
3081 CLK(NULL, "uart2_fck", &uart2_fck, CK_343X), 3082 CLK(NULL, "uart2_fck", &uart2_fck, CK_3XXX),
3082 CLK(NULL, "uart1_fck", &uart1_fck, CK_343X), 3083 CLK(NULL, "uart1_fck", &uart1_fck, CK_3XXX),
3083 CLK(NULL, "fshostusb_fck", &fshostusb_fck, CK_3430ES1), 3084 CLK(NULL, "fshostusb_fck", &fshostusb_fck, CK_3430ES1),
3084 CLK(NULL, "core_12m_fck", &core_12m_fck, CK_343X), 3085 CLK(NULL, "core_12m_fck", &core_12m_fck, CK_3XXX),
3085 CLK("omap_hdq.0", "fck", &hdq_fck, CK_343X), 3086 CLK("omap_hdq.0", "fck", &hdq_fck, CK_3XXX),
3086 CLK(NULL, "ssi_ssr_fck", &ssi_ssr_fck_3430es1, CK_3430ES1), 3087 CLK(NULL, "ssi_ssr_fck", &ssi_ssr_fck_3430es1, CK_3430ES1),
3087 CLK(NULL, "ssi_ssr_fck", &ssi_ssr_fck_3430es2, CK_3430ES2), 3088 CLK(NULL, "ssi_ssr_fck", &ssi_ssr_fck_3430es2, CK_3430ES2),
3088 CLK(NULL, "ssi_sst_fck", &ssi_sst_fck_3430es1, CK_3430ES1), 3089 CLK(NULL, "ssi_sst_fck", &ssi_sst_fck_3430es1, CK_3430ES1),
3089 CLK(NULL, "ssi_sst_fck", &ssi_sst_fck_3430es2, CK_3430ES2), 3090 CLK(NULL, "ssi_sst_fck", &ssi_sst_fck_3430es2, CK_3430ES2),
3090 CLK(NULL, "core_l3_ick", &core_l3_ick, CK_343X), 3091 CLK(NULL, "core_l3_ick", &core_l3_ick, CK_3XXX),
3091 CLK("musb_hdrc", "ick", &hsotgusb_ick_3430es1, CK_3430ES1), 3092 CLK("musb_hdrc", "ick", &hsotgusb_ick_3430es1, CK_3430ES1),
3092 CLK("musb_hdrc", "ick", &hsotgusb_ick_3430es2, CK_3430ES2), 3093 CLK("musb_hdrc", "ick", &hsotgusb_ick_3430es2, CK_3430ES2),
3093 CLK(NULL, "sdrc_ick", &sdrc_ick, CK_343X), 3094 CLK(NULL, "sdrc_ick", &sdrc_ick, CK_3XXX),
3094 CLK(NULL, "gpmc_fck", &gpmc_fck, CK_343X), 3095 CLK(NULL, "gpmc_fck", &gpmc_fck, CK_3XXX),
3095 CLK(NULL, "security_l3_ick", &security_l3_ick, CK_343X), 3096 CLK(NULL, "security_l3_ick", &security_l3_ick, CK_343X),
3096 CLK(NULL, "pka_ick", &pka_ick, CK_343X), 3097 CLK(NULL, "pka_ick", &pka_ick, CK_343X),
3097 CLK(NULL, "core_l4_ick", &core_l4_ick, CK_343X), 3098 CLK(NULL, "core_l4_ick", &core_l4_ick, CK_3XXX),
3098 CLK(NULL, "usbtll_ick", &usbtll_ick, CK_3430ES2), 3099 CLK(NULL, "usbtll_ick", &usbtll_ick, CK_3430ES2 | CK_AM35XX),
3099 CLK("mmci-omap-hs.2", "ick", &mmchs3_ick, CK_3430ES2), 3100 CLK("mmci-omap-hs.2", "ick", &mmchs3_ick, CK_3430ES2 | CK_AM35XX),
3100 CLK(NULL, "icr_ick", &icr_ick, CK_343X), 3101 CLK(NULL, "icr_ick", &icr_ick, CK_343X),
3101 CLK(NULL, "aes2_ick", &aes2_ick, CK_343X), 3102 CLK(NULL, "aes2_ick", &aes2_ick, CK_343X),
3102 CLK(NULL, "sha12_ick", &sha12_ick, CK_343X), 3103 CLK(NULL, "sha12_ick", &sha12_ick, CK_343X),
3103 CLK(NULL, "des2_ick", &des2_ick, CK_343X), 3104 CLK(NULL, "des2_ick", &des2_ick, CK_343X),
3104 CLK("mmci-omap-hs.1", "ick", &mmchs2_ick, CK_343X), 3105 CLK("mmci-omap-hs.1", "ick", &mmchs2_ick, CK_3XXX),
3105 CLK("mmci-omap-hs.0", "ick", &mmchs1_ick, CK_343X), 3106 CLK("mmci-omap-hs.0", "ick", &mmchs1_ick, CK_3XXX),
3106 CLK(NULL, "mspro_ick", &mspro_ick, CK_343X), 3107 CLK(NULL, "mspro_ick", &mspro_ick, CK_343X),
3107 CLK("omap_hdq.0", "ick", &hdq_ick, CK_343X), 3108 CLK("omap_hdq.0", "ick", &hdq_ick, CK_3XXX),
3108 CLK("omap2_mcspi.4", "ick", &mcspi4_ick, CK_343X), 3109 CLK("omap2_mcspi.4", "ick", &mcspi4_ick, CK_3XXX),
3109 CLK("omap2_mcspi.3", "ick", &mcspi3_ick, CK_343X), 3110 CLK("omap2_mcspi.3", "ick", &mcspi3_ick, CK_3XXX),
3110 CLK("omap2_mcspi.2", "ick", &mcspi2_ick, CK_343X), 3111 CLK("omap2_mcspi.2", "ick", &mcspi2_ick, CK_3XXX),
3111 CLK("omap2_mcspi.1", "ick", &mcspi1_ick, CK_343X), 3112 CLK("omap2_mcspi.1", "ick", &mcspi1_ick, CK_3XXX),
3112 CLK("i2c_omap.3", "ick", &i2c3_ick, CK_343X), 3113 CLK("i2c_omap.3", "ick", &i2c3_ick, CK_3XXX),
3113 CLK("i2c_omap.2", "ick", &i2c2_ick, CK_343X), 3114 CLK("i2c_omap.2", "ick", &i2c2_ick, CK_3XXX),
3114 CLK("i2c_omap.1", "ick", &i2c1_ick, CK_343X), 3115 CLK("i2c_omap.1", "ick", &i2c1_ick, CK_3XXX),
3115 CLK(NULL, "uart2_ick", &uart2_ick, CK_343X), 3116 CLK(NULL, "uart2_ick", &uart2_ick, CK_3XXX),
3116 CLK(NULL, "uart1_ick", &uart1_ick, CK_343X), 3117 CLK(NULL, "uart1_ick", &uart1_ick, CK_3XXX),
3117 CLK(NULL, "gpt11_ick", &gpt11_ick, CK_343X), 3118 CLK(NULL, "gpt11_ick", &gpt11_ick, CK_3XXX),
3118 CLK(NULL, "gpt10_ick", &gpt10_ick, CK_343X), 3119 CLK(NULL, "gpt10_ick", &gpt10_ick, CK_3XXX),
3119 CLK("omap-mcbsp.5", "ick", &mcbsp5_ick, CK_343X), 3120 CLK("omap-mcbsp.5", "ick", &mcbsp5_ick, CK_3XXX),
3120 CLK("omap-mcbsp.1", "ick", &mcbsp1_ick, CK_343X), 3121 CLK("omap-mcbsp.1", "ick", &mcbsp1_ick, CK_3XXX),
3121 CLK(NULL, "fac_ick", &fac_ick, CK_3430ES1), 3122 CLK(NULL, "fac_ick", &fac_ick, CK_3430ES1),
3122 CLK(NULL, "mailboxes_ick", &mailboxes_ick, CK_343X), 3123 CLK(NULL, "mailboxes_ick", &mailboxes_ick, CK_343X),
3123 CLK(NULL, "omapctrl_ick", &omapctrl_ick, CK_343X), 3124 CLK(NULL, "omapctrl_ick", &omapctrl_ick, CK_3XXX),
3124 CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_343X), 3125 CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_343X),
3125 CLK(NULL, "ssi_ick", &ssi_ick_3430es1, CK_3430ES1), 3126 CLK(NULL, "ssi_ick", &ssi_ick_3430es1, CK_3430ES1),
3126 CLK(NULL, "ssi_ick", &ssi_ick_3430es2, CK_3430ES2), 3127 CLK(NULL, "ssi_ick", &ssi_ick_3430es2, CK_3430ES2),
@@ -3131,96 +3132,100 @@ static struct omap_clk omap34xx_clks[] = {
3131 CLK(NULL, "sha11_ick", &sha11_ick, CK_343X), 3132 CLK(NULL, "sha11_ick", &sha11_ick, CK_343X),
3132 CLK(NULL, "des1_ick", &des1_ick, CK_343X), 3133 CLK(NULL, "des1_ick", &des1_ick, CK_343X),
3133 CLK("omapdss", "dss1_fck", &dss1_alwon_fck_3430es1, CK_3430ES1), 3134 CLK("omapdss", "dss1_fck", &dss1_alwon_fck_3430es1, CK_3430ES1),
3134 CLK("omapdss", "dss1_fck", &dss1_alwon_fck_3430es2, CK_3430ES2), 3135 CLK("omapdss", "dss1_fck", &dss1_alwon_fck_3430es2, CK_3430ES2 | CK_AM35XX),
3135 CLK("omapdss", "tv_fck", &dss_tv_fck, CK_343X), 3136 CLK("omapdss", "tv_fck", &dss_tv_fck, CK_3XXX),
3136 CLK("omapdss", "video_fck", &dss_96m_fck, CK_343X), 3137 CLK("omapdss", "video_fck", &dss_96m_fck, CK_3XXX),
3137 CLK("omapdss", "dss2_fck", &dss2_alwon_fck, CK_343X), 3138 CLK("omapdss", "dss2_fck", &dss2_alwon_fck, CK_3XXX),
3138 CLK("omapdss", "ick", &dss_ick_3430es1, CK_3430ES1), 3139 CLK("omapdss", "ick", &dss_ick_3430es1, CK_3430ES1),
3139 CLK("omapdss", "ick", &dss_ick_3430es2, CK_3430ES2), 3140 CLK("omapdss", "ick", &dss_ick_3430es2, CK_3430ES2 | CK_AM35XX),
3140 CLK(NULL, "cam_mclk", &cam_mclk, CK_343X), 3141 CLK(NULL, "cam_mclk", &cam_mclk, CK_343X),
3141 CLK(NULL, "cam_ick", &cam_ick, CK_343X), 3142 CLK(NULL, "cam_ick", &cam_ick, CK_343X),
3142 CLK(NULL, "csi2_96m_fck", &csi2_96m_fck, CK_343X), 3143 CLK(NULL, "csi2_96m_fck", &csi2_96m_fck, CK_343X),
3143 CLK(NULL, "usbhost_120m_fck", &usbhost_120m_fck, CK_3430ES2), 3144 CLK(NULL, "usbhost_120m_fck", &usbhost_120m_fck, CK_3430ES2 | CK_AM35XX),
3144 CLK(NULL, "usbhost_48m_fck", &usbhost_48m_fck, CK_3430ES2), 3145 CLK(NULL, "usbhost_48m_fck", &usbhost_48m_fck, CK_3430ES2 | CK_AM35XX),
3145 CLK(NULL, "usbhost_ick", &usbhost_ick, CK_3430ES2), 3146 CLK(NULL, "usbhost_ick", &usbhost_ick, CK_3430ES2 | CK_AM35XX),
3146 CLK(NULL, "usim_fck", &usim_fck, CK_3430ES2), 3147 CLK(NULL, "usim_fck", &usim_fck, CK_3430ES2),
3147 CLK(NULL, "gpt1_fck", &gpt1_fck, CK_343X), 3148 CLK(NULL, "gpt1_fck", &gpt1_fck, CK_3XXX),
3148 CLK(NULL, "wkup_32k_fck", &wkup_32k_fck, CK_343X), 3149 CLK(NULL, "wkup_32k_fck", &wkup_32k_fck, CK_3XXX),
3149 CLK(NULL, "gpio1_dbck", &gpio1_dbck, CK_343X), 3150 CLK(NULL, "gpio1_dbck", &gpio1_dbck, CK_3XXX),
3150 CLK("omap_wdt", "fck", &wdt2_fck, CK_343X), 3151 CLK("omap_wdt", "fck", &wdt2_fck, CK_3XXX),
3151 CLK(NULL, "wkup_l4_ick", &wkup_l4_ick, CK_343X), 3152 CLK(NULL, "wkup_l4_ick", &wkup_l4_ick, CK_343X),
3152 CLK(NULL, "usim_ick", &usim_ick, CK_3430ES2), 3153 CLK(NULL, "usim_ick", &usim_ick, CK_3430ES2),
3153 CLK("omap_wdt", "ick", &wdt2_ick, CK_343X), 3154 CLK("omap_wdt", "ick", &wdt2_ick, CK_3XXX),
3154 CLK(NULL, "wdt1_ick", &wdt1_ick, CK_343X), 3155 CLK(NULL, "wdt1_ick", &wdt1_ick, CK_3XXX),
3155 CLK(NULL, "gpio1_ick", &gpio1_ick, CK_343X), 3156 CLK(NULL, "gpio1_ick", &gpio1_ick, CK_3XXX),
3156 CLK(NULL, "omap_32ksync_ick", &omap_32ksync_ick, CK_343X), 3157 CLK(NULL, "omap_32ksync_ick", &omap_32ksync_ick, CK_3XXX),
3157 CLK(NULL, "gpt12_ick", &gpt12_ick, CK_343X), 3158 CLK(NULL, "gpt12_ick", &gpt12_ick, CK_3XXX),
3158 CLK(NULL, "gpt1_ick", &gpt1_ick, CK_343X), 3159 CLK(NULL, "gpt1_ick", &gpt1_ick, CK_3XXX),
3159 CLK(NULL, "per_96m_fck", &per_96m_fck, CK_343X), 3160 CLK(NULL, "per_96m_fck", &per_96m_fck, CK_3XXX),
3160 CLK(NULL, "per_48m_fck", &per_48m_fck, CK_343X), 3161 CLK(NULL, "per_48m_fck", &per_48m_fck, CK_3XXX),
3161 CLK(NULL, "uart3_fck", &uart3_fck, CK_343X), 3162 CLK(NULL, "uart3_fck", &uart3_fck, CK_3XXX),
3162 CLK(NULL, "gpt2_fck", &gpt2_fck, CK_343X), 3163 CLK(NULL, "gpt2_fck", &gpt2_fck, CK_3XXX),
3163 CLK(NULL, "gpt3_fck", &gpt3_fck, CK_343X), 3164 CLK(NULL, "gpt3_fck", &gpt3_fck, CK_3XXX),
3164 CLK(NULL, "gpt4_fck", &gpt4_fck, CK_343X), 3165 CLK(NULL, "gpt4_fck", &gpt4_fck, CK_3XXX),
3165 CLK(NULL, "gpt5_fck", &gpt5_fck, CK_343X), 3166 CLK(NULL, "gpt5_fck", &gpt5_fck, CK_3XXX),
3166 CLK(NULL, "gpt6_fck", &gpt6_fck, CK_343X), 3167 CLK(NULL, "gpt6_fck", &gpt6_fck, CK_3XXX),
3167 CLK(NULL, "gpt7_fck", &gpt7_fck, CK_343X), 3168 CLK(NULL, "gpt7_fck", &gpt7_fck, CK_3XXX),
3168 CLK(NULL, "gpt8_fck", &gpt8_fck, CK_343X), 3169 CLK(NULL, "gpt8_fck", &gpt8_fck, CK_3XXX),
3169 CLK(NULL, "gpt9_fck", &gpt9_fck, CK_343X), 3170 CLK(NULL, "gpt9_fck", &gpt9_fck, CK_3XXX),
3170 CLK(NULL, "per_32k_alwon_fck", &per_32k_alwon_fck, CK_343X), 3171 CLK(NULL, "per_32k_alwon_fck", &per_32k_alwon_fck, CK_3XXX),
3171 CLK(NULL, "gpio6_dbck", &gpio6_dbck, CK_343X), 3172 CLK(NULL, "gpio6_dbck", &gpio6_dbck, CK_3XXX),
3172 CLK(NULL, "gpio5_dbck", &gpio5_dbck, CK_343X), 3173 CLK(NULL, "gpio5_dbck", &gpio5_dbck, CK_3XXX),
3173 CLK(NULL, "gpio4_dbck", &gpio4_dbck, CK_343X), 3174 CLK(NULL, "gpio4_dbck", &gpio4_dbck, CK_3XXX),
3174 CLK(NULL, "gpio3_dbck", &gpio3_dbck, CK_343X), 3175 CLK(NULL, "gpio3_dbck", &gpio3_dbck, CK_3XXX),
3175 CLK(NULL, "gpio2_dbck", &gpio2_dbck, CK_343X), 3176 CLK(NULL, "gpio2_dbck", &gpio2_dbck, CK_3XXX),
3176 CLK(NULL, "wdt3_fck", &wdt3_fck, CK_343X), 3177 CLK(NULL, "wdt3_fck", &wdt3_fck, CK_3XXX),
3177 CLK(NULL, "per_l4_ick", &per_l4_ick, CK_343X), 3178 CLK(NULL, "per_l4_ick", &per_l4_ick, CK_3XXX),
3178 CLK(NULL, "gpio6_ick", &gpio6_ick, CK_343X), 3179 CLK(NULL, "gpio6_ick", &gpio6_ick, CK_3XXX),
3179 CLK(NULL, "gpio5_ick", &gpio5_ick, CK_343X), 3180 CLK(NULL, "gpio5_ick", &gpio5_ick, CK_3XXX),
3180 CLK(NULL, "gpio4_ick", &gpio4_ick, CK_343X), 3181 CLK(NULL, "gpio4_ick", &gpio4_ick, CK_3XXX),
3181 CLK(NULL, "gpio3_ick", &gpio3_ick, CK_343X), 3182 CLK(NULL, "gpio3_ick", &gpio3_ick, CK_3XXX),
3182 CLK(NULL, "gpio2_ick", &gpio2_ick, CK_343X), 3183 CLK(NULL, "gpio2_ick", &gpio2_ick, CK_3XXX),
3183 CLK(NULL, "wdt3_ick", &wdt3_ick, CK_343X), 3184 CLK(NULL, "wdt3_ick", &wdt3_ick, CK_3XXX),
3184 CLK(NULL, "uart3_ick", &uart3_ick, CK_343X), 3185 CLK(NULL, "uart3_ick", &uart3_ick, CK_3XXX),
3185 CLK(NULL, "gpt9_ick", &gpt9_ick, CK_343X), 3186 CLK(NULL, "gpt9_ick", &gpt9_ick, CK_3XXX),
3186 CLK(NULL, "gpt8_ick", &gpt8_ick, CK_343X), 3187 CLK(NULL, "gpt8_ick", &gpt8_ick, CK_3XXX),
3187 CLK(NULL, "gpt7_ick", &gpt7_ick, CK_343X), 3188 CLK(NULL, "gpt7_ick", &gpt7_ick, CK_3XXX),
3188 CLK(NULL, "gpt6_ick", &gpt6_ick, CK_343X), 3189 CLK(NULL, "gpt6_ick", &gpt6_ick, CK_3XXX),
3189 CLK(NULL, "gpt5_ick", &gpt5_ick, CK_343X), 3190 CLK(NULL, "gpt5_ick", &gpt5_ick, CK_3XXX),
3190 CLK(NULL, "gpt4_ick", &gpt4_ick, CK_343X), 3191 CLK(NULL, "gpt4_ick", &gpt4_ick, CK_3XXX),
3191 CLK(NULL, "gpt3_ick", &gpt3_ick, CK_343X), 3192 CLK(NULL, "gpt3_ick", &gpt3_ick, CK_3XXX),
3192 CLK(NULL, "gpt2_ick", &gpt2_ick, CK_343X), 3193 CLK(NULL, "gpt2_ick", &gpt2_ick, CK_3XXX),
3193 CLK("omap-mcbsp.2", "ick", &mcbsp2_ick, CK_343X), 3194 CLK("omap-mcbsp.2", "ick", &mcbsp2_ick, CK_3XXX),
3194 CLK("omap-mcbsp.3", "ick", &mcbsp3_ick, CK_343X), 3195 CLK("omap-mcbsp.3", "ick", &mcbsp3_ick, CK_3XXX),
3195 CLK("omap-mcbsp.4", "ick", &mcbsp4_ick, CK_343X), 3196 CLK("omap-mcbsp.4", "ick", &mcbsp4_ick, CK_3XXX),
3196 CLK("omap-mcbsp.2", "fck", &mcbsp2_fck, CK_343X), 3197 CLK("omap-mcbsp.2", "fck", &mcbsp2_fck, CK_3XXX),
3197 CLK("omap-mcbsp.3", "fck", &mcbsp3_fck, CK_343X), 3198 CLK("omap-mcbsp.3", "fck", &mcbsp3_fck, CK_3XXX),
3198 CLK("omap-mcbsp.4", "fck", &mcbsp4_fck, CK_343X), 3199 CLK("omap-mcbsp.4", "fck", &mcbsp4_fck, CK_3XXX),
3199 CLK("etb", "emu_src_ck", &emu_src_ck, CK_343X), 3200 CLK("etb", "emu_src_ck", &emu_src_ck, CK_3XXX),
3200 CLK(NULL, "pclk_fck", &pclk_fck, CK_343X), 3201 CLK(NULL, "pclk_fck", &pclk_fck, CK_3XXX),
3201 CLK(NULL, "pclkx2_fck", &pclkx2_fck, CK_343X), 3202 CLK(NULL, "pclkx2_fck", &pclkx2_fck, CK_3XXX),
3202 CLK(NULL, "atclk_fck", &atclk_fck, CK_343X), 3203 CLK(NULL, "atclk_fck", &atclk_fck, CK_3XXX),
3203 CLK(NULL, "traceclk_src_fck", &traceclk_src_fck, CK_343X), 3204 CLK(NULL, "traceclk_src_fck", &traceclk_src_fck, CK_3XXX),
3204 CLK(NULL, "traceclk_fck", &traceclk_fck, CK_343X), 3205 CLK(NULL, "traceclk_fck", &traceclk_fck, CK_3XXX),
3205 CLK(NULL, "sr1_fck", &sr1_fck, CK_343X), 3206 CLK(NULL, "sr1_fck", &sr1_fck, CK_343X),
3206 CLK(NULL, "sr2_fck", &sr2_fck, CK_343X), 3207 CLK(NULL, "sr2_fck", &sr2_fck, CK_343X),
3207 CLK(NULL, "sr_l4_ick", &sr_l4_ick, CK_343X), 3208 CLK(NULL, "sr_l4_ick", &sr_l4_ick, CK_343X),
3208 CLK(NULL, "secure_32k_fck", &secure_32k_fck, CK_343X), 3209 CLK(NULL, "secure_32k_fck", &secure_32k_fck, CK_3XXX),
3209 CLK(NULL, "gpt12_fck", &gpt12_fck, CK_343X), 3210 CLK(NULL, "gpt12_fck", &gpt12_fck, CK_3XXX),
3210 CLK(NULL, "wdt1_fck", &wdt1_fck, CK_343X), 3211 CLK(NULL, "wdt1_fck", &wdt1_fck, CK_3XXX),
3211}; 3212};
3212 3213
3213 3214
3214int __init omap2_clk_init(void) 3215int __init omap3xxx_clk_init(void)
3215{ 3216{
3216 /* struct prcm_config *prcm; */
3217 struct omap_clk *c; 3217 struct omap_clk *c;
3218 /* u32 clkrate; */ 3218 u32 cpu_clkflg = CK_3XXX;
3219 u32 cpu_clkflg; 3219
3220 3220 if (cpu_is_omap3517()) {
3221 if (cpu_is_omap34xx()) { 3221 cpu_mask = RATE_IN_343X | RATE_IN_3430ES2;
3222 cpu_clkflg |= CK_3517;
3223 } else if (cpu_is_omap3505()) {
3224 cpu_mask = RATE_IN_343X | RATE_IN_3430ES2;
3225 cpu_clkflg |= CK_3505;
3226 } else if (cpu_is_omap34xx()) {
3222 cpu_mask = RATE_IN_343X; 3227 cpu_mask = RATE_IN_343X;
3223 cpu_clkflg = CK_343X; 3228 cpu_clkflg |= CK_343X;
3224 3229
3225 /* 3230 /*
3226 * Update this if there are further clock changes between ES2 3231 * Update this if there are further clock changes between ES2
@@ -3237,31 +3242,16 @@ int __init omap2_clk_init(void)
3237 3242
3238 clk_init(&omap2_clk_functions); 3243 clk_init(&omap2_clk_functions);
3239 3244
3240 for (c = omap34xx_clks; c < omap34xx_clks + ARRAY_SIZE(omap34xx_clks); c++) 3245 for (c = omap3xxx_clks; c < omap3xxx_clks + ARRAY_SIZE(omap3xxx_clks); c++)
3241 clk_preinit(c->lk.clk); 3246 clk_preinit(c->lk.clk);
3242 3247
3243 for (c = omap34xx_clks; c < omap34xx_clks + ARRAY_SIZE(omap34xx_clks); c++) 3248 for (c = omap3xxx_clks; c < omap3xxx_clks + ARRAY_SIZE(omap3xxx_clks); c++)
3244 if (c->cpu & cpu_clkflg) { 3249 if (c->cpu & cpu_clkflg) {
3245 clkdev_add(&c->lk); 3250 clkdev_add(&c->lk);
3246 clk_register(c->lk.clk); 3251 clk_register(c->lk.clk);
3247 omap2_init_clk_clkdm(c->lk.clk); 3252 omap2_init_clk_clkdm(c->lk.clk);
3248 } 3253 }
3249 3254
3250 /* REVISIT: Not yet ready for OMAP3 */
3251#if 0
3252 /* Check the MPU rate set by bootloader */
3253 clkrate = omap2_get_dpll_rate_24xx(&dpll_ck);
3254 for (prcm = rate_table; prcm->mpu_speed; prcm++) {
3255 if (!(prcm->flags & cpu_mask))
3256 continue;
3257 if (prcm->xtal_speed != sys_ck.rate)
3258 continue;
3259 if (prcm->dpll_speed <= clkrate)
3260 break;
3261 }
3262 curr_prcm_set = prcm;
3263#endif
3264
3265 recalculate_root_clocks(); 3255 recalculate_root_clocks();
3266 3256
3267 printk(KERN_INFO "Clocking rate (Crystal/Core/MPU): " 3257 printk(KERN_INFO "Clocking rate (Crystal/Core/MPU): "
diff --git a/arch/arm/mach-omap2/clock44xx.c b/arch/arm/mach-omap2/clock44xx.c
index e370868a79a8..c238717e3760 100644
--- a/arch/arm/mach-omap2/clock44xx.c
+++ b/arch/arm/mach-omap2/clock44xx.c
@@ -13,21 +13,7 @@
13#include <linux/errno.h> 13#include <linux/errno.h>
14#include "clock.h" 14#include "clock.h"
15 15
16struct clk_functions omap2_clk_functions = {
17 .clk_enable = omap2_clk_enable,
18 .clk_disable = omap2_clk_disable,
19 .clk_round_rate = omap2_clk_round_rate,
20 .clk_set_rate = omap2_clk_set_rate,
21 .clk_set_parent = omap2_clk_set_parent,
22 .clk_disable_unused = omap2_clk_disable_unused,
23};
24
25const struct clkops clkops_noncore_dpll_ops = { 16const struct clkops clkops_noncore_dpll_ops = {
26 .enable = &omap3_noncore_dpll_enable, 17 .enable = &omap3_noncore_dpll_enable,
27 .disable = &omap3_noncore_dpll_disable, 18 .disable = &omap3_noncore_dpll_disable,
28}; 19};
29
30void omap2_clk_prepare_for_reboot(void)
31{
32 return;
33}
diff --git a/arch/arm/mach-omap2/clock44xx.h b/arch/arm/mach-omap2/clock44xx.h
index 59b9ced4daa1..1f55b6b574fb 100644
--- a/arch/arm/mach-omap2/clock44xx.h
+++ b/arch/arm/mach-omap2/clock44xx.h
@@ -10,6 +10,8 @@
10#define OMAP4430_MAX_DPLL_MULT 2048 10#define OMAP4430_MAX_DPLL_MULT 2048
11#define OMAP4430_MAX_DPLL_DIV 128 11#define OMAP4430_MAX_DPLL_DIV 128
12 12
13int omap4xxx_clk_init(void);
14
13extern const struct clkops clkops_noncore_dpll_ops; 15extern const struct clkops clkops_noncore_dpll_ops;
14 16
15#endif 17#endif
diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c
index 9d882bcb56e3..35ffe638def8 100644
--- a/arch/arm/mach-omap2/clock44xx_data.c
+++ b/arch/arm/mach-omap2/clock44xx_data.c
@@ -2726,11 +2726,9 @@ static struct omap_clk omap44xx_clks[] = {
2726 CLK(NULL, "utmi_p2_gfclk_ck", &utmi_p2_gfclk_ck, CK_443X), 2726 CLK(NULL, "utmi_p2_gfclk_ck", &utmi_p2_gfclk_ck, CK_443X),
2727}; 2727};
2728 2728
2729int __init omap2_clk_init(void) 2729int __init omap4xxx_clk_init(void)
2730{ 2730{
2731 /* struct prcm_config *prcm; */
2732 struct omap_clk *c; 2731 struct omap_clk *c;
2733 /* u32 clkrate; */
2734 u32 cpu_clkflg; 2732 u32 cpu_clkflg;
2735 2733
2736 if (cpu_is_omap44xx()) { 2734 if (cpu_is_omap44xx()) {
@@ -2749,9 +2747,7 @@ int __init omap2_clk_init(void)
2749 if (c->cpu & cpu_clkflg) { 2747 if (c->cpu & cpu_clkflg) {
2750 clkdev_add(&c->lk); 2748 clkdev_add(&c->lk);
2751 clk_register(c->lk.clk); 2749 clk_register(c->lk.clk);
2752 /* TODO
2753 omap2_init_clk_clkdm(c->lk.clk); 2750 omap2_init_clk_clkdm(c->lk.clk);
2754 */
2755 } 2751 }
2756 2752
2757 recalculate_root_clocks(); 2753 recalculate_root_clocks();
diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c
index dd285f001467..a38a615b422f 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
@@ -26,43 +27,124 @@
26 27
27#include <linux/bitops.h> 28#include <linux/bitops.h>
28 29
29#include <plat/clock.h>
30
31#include "prm.h" 30#include "prm.h"
32#include "prm-regbits-24xx.h" 31#include "prm-regbits-24xx.h"
33#include "cm.h" 32#include "cm.h"
34 33
34#include <plat/clock.h>
35#include <plat/powerdomain.h> 35#include <plat/powerdomain.h>
36#include <plat/clockdomain.h> 36#include <plat/clockdomain.h>
37#include <plat/prcm.h>
37 38
38/* clkdm_list contains all registered struct clockdomains */ 39/* clkdm_list contains all registered struct clockdomains */
39static LIST_HEAD(clkdm_list); 40static LIST_HEAD(clkdm_list);
40 41
41/* clkdm_mutex protects clkdm_list add and del ops */ 42/* array of clockdomain deps to be added/removed when clkdm in hwsup mode */
42static DEFINE_MUTEX(clkdm_mutex); 43static struct clkdm_autodep *autodeps;
43
44/* array of powerdomain deps to be added/removed when clkdm in hwsup mode */
45static struct clkdm_pwrdm_autodep *autodeps;
46 44
47 45
48/* Private functions */ 46/* Private functions */
49 47
48static struct clockdomain *_clkdm_lookup(const char *name)
49{
50 struct clockdomain *clkdm, *temp_clkdm;
51
52 if (!name)
53 return NULL;
54
55 clkdm = NULL;
56
57 list_for_each_entry(temp_clkdm, &clkdm_list, node) {
58 if (!strcmp(name, temp_clkdm->name)) {
59 clkdm = temp_clkdm;
60 break;
61 }
62 }
63
64 return clkdm;
65}
66
67/**
68 * _clkdm_register - register a clockdomain
69 * @clkdm: struct clockdomain * to register
70 *
71 * Adds a clockdomain to the internal clockdomain list.
72 * Returns -EINVAL if given a null pointer, -EEXIST if a clockdomain is
73 * already registered by the provided name, or 0 upon success.
74 */
75static int _clkdm_register(struct clockdomain *clkdm)
76{
77 struct powerdomain *pwrdm;
78
79 if (!clkdm || !clkdm->name)
80 return -EINVAL;
81
82 if (!omap_chip_is(clkdm->omap_chip))
83 return -EINVAL;
84
85 pwrdm = pwrdm_lookup(clkdm->pwrdm.name);
86 if (!pwrdm) {
87 pr_err("clockdomain: %s: powerdomain %s does not exist\n",
88 clkdm->name, clkdm->pwrdm.name);
89 return -EINVAL;
90 }
91 clkdm->pwrdm.ptr = pwrdm;
92
93 /* Verify that the clockdomain is not already registered */
94 if (_clkdm_lookup(clkdm->name))
95 return -EEXIST;
96
97 list_add(&clkdm->node, &clkdm_list);
98
99 pwrdm_add_clkdm(pwrdm, clkdm);
100
101 pr_debug("clockdomain: registered %s\n", clkdm->name);
102
103 return 0;
104}
105
106/* _clkdm_deps_lookup - look up the specified clockdomain in a clkdm list */
107static struct clkdm_dep *_clkdm_deps_lookup(struct clockdomain *clkdm,
108 struct clkdm_dep *deps)
109{
110 struct clkdm_dep *cd;
111
112 if (!clkdm || !deps || !omap_chip_is(clkdm->omap_chip))
113 return ERR_PTR(-EINVAL);
114
115 for (cd = deps; cd->clkdm_name; cd++) {
116 if (!omap_chip_is(cd->omap_chip))
117 continue;
118
119 if (!cd->clkdm && cd->clkdm_name)
120 cd->clkdm = _clkdm_lookup(cd->clkdm_name);
121
122 if (cd->clkdm == clkdm)
123 break;
124 }
125
126 if (!cd->clkdm_name)
127 return ERR_PTR(-ENOENT);
128
129 return cd;
130}
131
50/* 132/*
51 * _autodep_lookup - resolve autodep pwrdm names to pwrdm pointers; store 133 * _autodep_lookup - resolve autodep clkdm names to clkdm pointers; store
52 * @autodep: struct clkdm_pwrdm_autodep * to resolve 134 * @autodep: struct clkdm_autodep * to resolve
53 * 135 *
54 * Resolve autodep powerdomain names to powerdomain pointers via 136 * Resolve autodep clockdomain names to clockdomain pointers via
55 * pwrdm_lookup() and store the pointers in the autodep structure. An 137 * clkdm_lookup() and store the pointers in the autodep structure. An
56 * "autodep" is a powerdomain sleep/wakeup dependency that is 138 * "autodep" is a clockdomain sleep/wakeup dependency that is
57 * automatically added and removed whenever clocks in the associated 139 * automatically added and removed whenever clocks in the associated
58 * clockdomain are enabled or disabled (respectively) when the 140 * clockdomain are enabled or disabled (respectively) when the
59 * clockdomain is in hardware-supervised mode. Meant to be called 141 * clockdomain is in hardware-supervised mode. Meant to be called
60 * once at clockdomain layer initialization, since these should remain 142 * once at clockdomain layer initialization, since these should remain
61 * fixed for a particular architecture. No return value. 143 * fixed for a particular architecture. No return value.
62 */ 144 */
63static void _autodep_lookup(struct clkdm_pwrdm_autodep *autodep) 145static void _autodep_lookup(struct clkdm_autodep *autodep)
64{ 146{
65 struct powerdomain *pwrdm; 147 struct clockdomain *clkdm;
66 148
67 if (!autodep) 149 if (!autodep)
68 return; 150 return;
@@ -70,13 +152,13 @@ static void _autodep_lookup(struct clkdm_pwrdm_autodep *autodep)
70 if (!omap_chip_is(autodep->omap_chip)) 152 if (!omap_chip_is(autodep->omap_chip))
71 return; 153 return;
72 154
73 pwrdm = pwrdm_lookup(autodep->pwrdm.name); 155 clkdm = clkdm_lookup(autodep->clkdm.name);
74 if (!pwrdm) { 156 if (!clkdm) {
75 pr_err("clockdomain: autodeps: powerdomain %s does not exist\n", 157 pr_err("clockdomain: autodeps: clockdomain %s does not exist\n",
76 autodep->pwrdm.name); 158 autodep->clkdm.name);
77 pwrdm = ERR_PTR(-ENOENT); 159 clkdm = ERR_PTR(-ENOENT);
78 } 160 }
79 autodep->pwrdm.ptr = pwrdm; 161 autodep->clkdm.ptr = clkdm;
80} 162}
81 163
82/* 164/*
@@ -89,21 +171,21 @@ static void _autodep_lookup(struct clkdm_pwrdm_autodep *autodep)
89 */ 171 */
90static void _clkdm_add_autodeps(struct clockdomain *clkdm) 172static void _clkdm_add_autodeps(struct clockdomain *clkdm)
91{ 173{
92 struct clkdm_pwrdm_autodep *autodep; 174 struct clkdm_autodep *autodep;
93 175
94 for (autodep = autodeps; autodep->pwrdm.ptr; autodep++) { 176 for (autodep = autodeps; autodep->clkdm.ptr; autodep++) {
95 if (IS_ERR(autodep->pwrdm.ptr)) 177 if (IS_ERR(autodep->clkdm.ptr))
96 continue; 178 continue;
97 179
98 if (!omap_chip_is(autodep->omap_chip)) 180 if (!omap_chip_is(autodep->omap_chip))
99 continue; 181 continue;
100 182
101 pr_debug("clockdomain: adding %s sleepdep/wkdep for " 183 pr_debug("clockdomain: adding %s sleepdep/wkdep for "
102 "pwrdm %s\n", autodep->pwrdm.ptr->name, 184 "clkdm %s\n", autodep->clkdm.ptr->name,
103 clkdm->pwrdm.ptr->name); 185 clkdm->name);
104 186
105 pwrdm_add_sleepdep(clkdm->pwrdm.ptr, autodep->pwrdm.ptr); 187 clkdm_add_sleepdep(clkdm, autodep->clkdm.ptr);
106 pwrdm_add_wkdep(clkdm->pwrdm.ptr, autodep->pwrdm.ptr); 188 clkdm_add_wkdep(clkdm, autodep->clkdm.ptr);
107 } 189 }
108} 190}
109 191
@@ -117,21 +199,21 @@ static void _clkdm_add_autodeps(struct clockdomain *clkdm)
117 */ 199 */
118static void _clkdm_del_autodeps(struct clockdomain *clkdm) 200static void _clkdm_del_autodeps(struct clockdomain *clkdm)
119{ 201{
120 struct clkdm_pwrdm_autodep *autodep; 202 struct clkdm_autodep *autodep;
121 203
122 for (autodep = autodeps; autodep->pwrdm.ptr; autodep++) { 204 for (autodep = autodeps; autodep->clkdm.ptr; autodep++) {
123 if (IS_ERR(autodep->pwrdm.ptr)) 205 if (IS_ERR(autodep->clkdm.ptr))
124 continue; 206 continue;
125 207
126 if (!omap_chip_is(autodep->omap_chip)) 208 if (!omap_chip_is(autodep->omap_chip))
127 continue; 209 continue;
128 210
129 pr_debug("clockdomain: removing %s sleepdep/wkdep for " 211 pr_debug("clockdomain: removing %s sleepdep/wkdep for "
130 "pwrdm %s\n", autodep->pwrdm.ptr->name, 212 "clkdm %s\n", autodep->clkdm.ptr->name,
131 clkdm->pwrdm.ptr->name); 213 clkdm->name);
132 214
133 pwrdm_del_sleepdep(clkdm->pwrdm.ptr, autodep->pwrdm.ptr); 215 clkdm_del_sleepdep(clkdm, autodep->clkdm.ptr);
134 pwrdm_del_wkdep(clkdm->pwrdm.ptr, autodep->pwrdm.ptr); 216 clkdm_del_wkdep(clkdm, autodep->clkdm.ptr);
135 } 217 }
136} 218}
137 219
@@ -145,152 +227,167 @@ static void _clkdm_del_autodeps(struct clockdomain *clkdm)
145 */ 227 */
146static void _omap2_clkdm_set_hwsup(struct clockdomain *clkdm, int enable) 228static void _omap2_clkdm_set_hwsup(struct clockdomain *clkdm, int enable)
147{ 229{
148 u32 v; 230 u32 bits, v;
149 231
150 if (cpu_is_omap24xx()) { 232 if (cpu_is_omap24xx()) {
151 if (enable) 233 if (enable)
152 v = OMAP24XX_CLKSTCTRL_ENABLE_AUTO; 234 bits = OMAP24XX_CLKSTCTRL_ENABLE_AUTO;
153 else 235 else
154 v = OMAP24XX_CLKSTCTRL_DISABLE_AUTO; 236 bits = OMAP24XX_CLKSTCTRL_DISABLE_AUTO;
155 } else if (cpu_is_omap34xx()) { 237 } else if (cpu_is_omap34xx() | cpu_is_omap44xx()) {
156 if (enable) 238 if (enable)
157 v = OMAP34XX_CLKSTCTRL_ENABLE_AUTO; 239 bits = OMAP34XX_CLKSTCTRL_ENABLE_AUTO;
158 else 240 else
159 v = OMAP34XX_CLKSTCTRL_DISABLE_AUTO; 241 bits = OMAP34XX_CLKSTCTRL_DISABLE_AUTO;
160 } else { 242 } else {
161 BUG(); 243 BUG();
162 } 244 }
163 245
164 cm_rmw_mod_reg_bits(clkdm->clktrctrl_mask, 246 bits = bits << __ffs(clkdm->clktrctrl_mask);
165 v << __ffs(clkdm->clktrctrl_mask),
166 clkdm->pwrdm.ptr->prcm_offs, CM_CLKSTCTRL);
167}
168
169static struct clockdomain *_clkdm_lookup(const char *name)
170{
171 struct clockdomain *clkdm, *temp_clkdm;
172
173 if (!name)
174 return NULL;
175 247
176 clkdm = NULL; 248 v = __raw_readl(clkdm->clkstctrl_reg);
249 v &= ~(clkdm->clktrctrl_mask);
250 v |= bits;
251 __raw_writel(v, clkdm->clkstctrl_reg);
177 252
178 list_for_each_entry(temp_clkdm, &clkdm_list, node) {
179 if (!strcmp(name, temp_clkdm->name)) {
180 clkdm = temp_clkdm;
181 break;
182 }
183 }
184
185 return clkdm;
186} 253}
187 254
188
189/* Public functions */
190
191/** 255/**
192 * clkdm_init - set up the clockdomain layer 256 * _init_wkdep_usecount - initialize wkdep usecounts to match hardware
193 * @clkdms: optional pointer to an array of clockdomains to register 257 * @clkdm: clockdomain to initialize wkdep usecounts
194 * @init_autodeps: optional pointer to an array of autodeps to register
195 * 258 *
196 * Set up internal state. If a pointer to an array of clockdomains 259 * Initialize the wakeup dependency usecount variables for clockdomain @clkdm.
197 * was supplied, loop through the list of clockdomains, register all 260 * If a wakeup dependency is present in the hardware, the usecount will be
198 * that are available on the current platform. Similarly, if a 261 * set to 1; otherwise, it will be set to 0. Software should clear all
199 * pointer to an array of clockdomain-powerdomain autodependencies was 262 * software wakeup dependencies prior to calling this function if it wishes
200 * provided, register those. No return value. 263 * to ensure that all usecounts start at 0. No return value.
201 */ 264 */
202void clkdm_init(struct clockdomain **clkdms, 265static void _init_wkdep_usecount(struct clockdomain *clkdm)
203 struct clkdm_pwrdm_autodep *init_autodeps)
204{ 266{
205 struct clockdomain **c = NULL; 267 u32 v;
206 struct clkdm_pwrdm_autodep *autodep = NULL; 268 struct clkdm_dep *cd;
207 269
208 if (clkdms) 270 if (!clkdm->wkdep_srcs)
209 for (c = clkdms; *c; c++) 271 return;
210 clkdm_register(*c);
211 272
212 autodeps = init_autodeps; 273 for (cd = clkdm->wkdep_srcs; cd->clkdm_name; cd++) {
213 if (autodeps) 274 if (!omap_chip_is(cd->omap_chip))
214 for (autodep = autodeps; autodep->pwrdm.ptr; autodep++) 275 continue;
215 _autodep_lookup(autodep); 276
277 if (!cd->clkdm && cd->clkdm_name)
278 cd->clkdm = _clkdm_lookup(cd->clkdm_name);
279
280 if (!cd->clkdm) {
281 WARN(!cd->clkdm, "clockdomain: %s: wkdep clkdm %s not "
282 "found\n", clkdm->name, cd->clkdm_name);
283 continue;
284 }
285
286 v = prm_read_mod_bits_shift(clkdm->pwrdm.ptr->prcm_offs,
287 PM_WKDEP,
288 (1 << cd->clkdm->dep_bit));
289
290 if (v)
291 pr_debug("clockdomain: %s: wakeup dependency already "
292 "set to wake up when %s wakes\n",
293 clkdm->name, cd->clkdm->name);
294
295 atomic_set(&cd->wkdep_usecount, (v) ? 1 : 0);
296 }
216} 297}
217 298
218/** 299/**
219 * clkdm_register - register a clockdomain 300 * _init_sleepdep_usecount - initialize sleepdep usecounts to match hardware
220 * @clkdm: struct clockdomain * to register 301 * @clkdm: clockdomain to initialize sleepdep usecounts
221 * 302 *
222 * Adds a clockdomain to the internal clockdomain list. 303 * Initialize the sleep dependency usecount variables for clockdomain @clkdm.
223 * Returns -EINVAL if given a null pointer, -EEXIST if a clockdomain is 304 * If a sleep dependency is present in the hardware, the usecount will be
224 * already registered by the provided name, or 0 upon success. 305 * set to 1; otherwise, it will be set to 0. Software should clear all
306 * software sleep dependencies prior to calling this function if it wishes
307 * to ensure that all usecounts start at 0. No return value.
225 */ 308 */
226int clkdm_register(struct clockdomain *clkdm) 309static void _init_sleepdep_usecount(struct clockdomain *clkdm)
227{ 310{
228 int ret = -EINVAL; 311 u32 v;
229 struct powerdomain *pwrdm; 312 struct clkdm_dep *cd;
230 313
231 if (!clkdm || !clkdm->name) 314 if (!cpu_is_omap34xx())
232 return -EINVAL; 315 return;
233 316
234 if (!omap_chip_is(clkdm->omap_chip)) 317 if (!clkdm->sleepdep_srcs)
235 return -EINVAL; 318 return;
236 319
237 pwrdm = pwrdm_lookup(clkdm->pwrdm.name); 320 for (cd = clkdm->sleepdep_srcs; cd->clkdm_name; cd++) {
238 if (!pwrdm) { 321 if (!omap_chip_is(cd->omap_chip))
239 pr_err("clockdomain: %s: powerdomain %s does not exist\n", 322 continue;
240 clkdm->name, clkdm->pwrdm.name);
241 return -EINVAL;
242 }
243 clkdm->pwrdm.ptr = pwrdm;
244 323
245 mutex_lock(&clkdm_mutex); 324 if (!cd->clkdm && cd->clkdm_name)
246 /* Verify that the clockdomain is not already registered */ 325 cd->clkdm = _clkdm_lookup(cd->clkdm_name);
247 if (_clkdm_lookup(clkdm->name)) {
248 ret = -EEXIST;
249 goto cr_unlock;
250 }
251 326
252 list_add(&clkdm->node, &clkdm_list); 327 if (!cd->clkdm) {
328 WARN(!cd->clkdm, "clockdomain: %s: sleepdep clkdm %s "
329 "not found\n", clkdm->name, cd->clkdm_name);
330 continue;
331 }
253 332
254 pwrdm_add_clkdm(pwrdm, clkdm); 333 v = prm_read_mod_bits_shift(clkdm->pwrdm.ptr->prcm_offs,
334 OMAP3430_CM_SLEEPDEP,
335 (1 << cd->clkdm->dep_bit));
255 336
256 pr_debug("clockdomain: registered %s\n", clkdm->name); 337 if (v)
257 ret = 0; 338 pr_debug("clockdomain: %s: sleep dependency already "
339 "set to prevent from idling until %s "
340 "idles\n", clkdm->name, cd->clkdm->name);
258 341
259cr_unlock: 342 atomic_set(&cd->sleepdep_usecount, (v) ? 1 : 0);
260 mutex_unlock(&clkdm_mutex); 343 }
344};
261 345
262 return ret; 346/* Public functions */
263}
264 347
265/** 348/**
266 * clkdm_unregister - unregister a clockdomain 349 * clkdm_init - set up the clockdomain layer
267 * @clkdm: struct clockdomain * to unregister 350 * @clkdms: optional pointer to an array of clockdomains to register
351 * @init_autodeps: optional pointer to an array of autodeps to register
268 * 352 *
269 * Removes a clockdomain from the internal clockdomain list. Returns 353 * Set up internal state. If a pointer to an array of clockdomains
270 * -EINVAL if clkdm argument is NULL. 354 * @clkdms was supplied, loop through the list of clockdomains,
355 * register all that are available on the current platform. Similarly,
356 * if a pointer to an array of clockdomain autodependencies
357 * @init_autodeps was provided, register those. No return value.
271 */ 358 */
272int clkdm_unregister(struct clockdomain *clkdm) 359void clkdm_init(struct clockdomain **clkdms,
360 struct clkdm_autodep *init_autodeps)
273{ 361{
274 if (!clkdm) 362 struct clockdomain **c = NULL;
275 return -EINVAL; 363 struct clockdomain *clkdm;
276 364 struct clkdm_autodep *autodep = NULL;
277 pwrdm_del_clkdm(clkdm->pwrdm.ptr, clkdm);
278 365
279 mutex_lock(&clkdm_mutex); 366 if (clkdms)
280 list_del(&clkdm->node); 367 for (c = clkdms; *c; c++)
281 mutex_unlock(&clkdm_mutex); 368 _clkdm_register(*c);
282 369
283 pr_debug("clockdomain: unregistered %s\n", clkdm->name); 370 autodeps = init_autodeps;
371 if (autodeps)
372 for (autodep = autodeps; autodep->clkdm.ptr; autodep++)
373 _autodep_lookup(autodep);
284 374
285 return 0; 375 /*
376 * Ensure that the *dep_usecount registers reflect the current
377 * state of the PRCM.
378 */
379 list_for_each_entry(clkdm, &clkdm_list, node) {
380 _init_wkdep_usecount(clkdm);
381 _init_sleepdep_usecount(clkdm);
382 }
286} 383}
287 384
288/** 385/**
289 * clkdm_lookup - look up a clockdomain by name, return a pointer 386 * clkdm_lookup - look up a clockdomain by name, return a pointer
290 * @name: name of clockdomain 387 * @name: name of clockdomain
291 * 388 *
292 * Find a registered clockdomain by its name. Returns a pointer to the 389 * Find a registered clockdomain by its name @name. Returns a pointer
293 * struct clockdomain if found, or NULL otherwise. 390 * to the struct clockdomain if found, or NULL otherwise.
294 */ 391 */
295struct clockdomain *clkdm_lookup(const char *name) 392struct clockdomain *clkdm_lookup(const char *name)
296{ 393{
@@ -301,14 +398,12 @@ struct clockdomain *clkdm_lookup(const char *name)
301 398
302 clkdm = NULL; 399 clkdm = NULL;
303 400
304 mutex_lock(&clkdm_mutex);
305 list_for_each_entry(temp_clkdm, &clkdm_list, node) { 401 list_for_each_entry(temp_clkdm, &clkdm_list, node) {
306 if (!strcmp(name, temp_clkdm->name)) { 402 if (!strcmp(name, temp_clkdm->name)) {
307 clkdm = temp_clkdm; 403 clkdm = temp_clkdm;
308 break; 404 break;
309 } 405 }
310 } 406 }
311 mutex_unlock(&clkdm_mutex);
312 407
313 return clkdm; 408 return clkdm;
314} 409}
@@ -317,8 +412,8 @@ struct clockdomain *clkdm_lookup(const char *name)
317 * clkdm_for_each - call function on each registered clockdomain 412 * clkdm_for_each - call function on each registered clockdomain
318 * @fn: callback function * 413 * @fn: callback function *
319 * 414 *
320 * Call the supplied function for each registered clockdomain. 415 * Call the supplied function @fn for each registered clockdomain.
321 * The callback function can return anything but 0 to bail 416 * The callback function @fn can return anything but 0 to bail
322 * out early from the iterator. The callback function is called with 417 * out early from the iterator. The callback function is called with
323 * the clkdm_mutex held, so no clockdomain structure manipulation 418 * the clkdm_mutex held, so no clockdomain structure manipulation
324 * functions should be called from the callback, although hardware 419 * functions should be called from the callback, although hardware
@@ -336,13 +431,11 @@ int clkdm_for_each(int (*fn)(struct clockdomain *clkdm, void *user),
336 if (!fn) 431 if (!fn)
337 return -EINVAL; 432 return -EINVAL;
338 433
339 mutex_lock(&clkdm_mutex);
340 list_for_each_entry(clkdm, &clkdm_list, node) { 434 list_for_each_entry(clkdm, &clkdm_list, node) {
341 ret = (*fn)(clkdm, user); 435 ret = (*fn)(clkdm, user);
342 if (ret) 436 if (ret)
343 break; 437 break;
344 } 438 }
345 mutex_unlock(&clkdm_mutex);
346 439
347 return ret; 440 return ret;
348} 441}
@@ -353,7 +446,7 @@ int clkdm_for_each(int (*fn)(struct clockdomain *clkdm, void *user),
353 * @clkdm: struct clockdomain * 446 * @clkdm: struct clockdomain *
354 * 447 *
355 * Return a pointer to the struct powerdomain that the specified clockdomain 448 * Return a pointer to the struct powerdomain that the specified clockdomain
356 * 'clkdm' exists in, or returns NULL if clkdm argument is NULL. 449 * @clkdm exists in, or returns NULL if @clkdm is NULL.
357 */ 450 */
358struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm) 451struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm)
359{ 452{
@@ -367,11 +460,309 @@ struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm)
367/* Hardware clockdomain control */ 460/* Hardware clockdomain control */
368 461
369/** 462/**
463 * clkdm_add_wkdep - add a wakeup dependency from clkdm2 to clkdm1
464 * @clkdm1: wake this struct clockdomain * up (dependent)
465 * @clkdm2: when this struct clockdomain * wakes up (source)
466 *
467 * When the clockdomain represented by @clkdm2 wakes up, wake up
468 * @clkdm1. Implemented in hardware on the OMAP, this feature is
469 * designed to reduce wakeup latency of the dependent clockdomain @clkdm1.
470 * Returns -EINVAL if presented with invalid clockdomain pointers,
471 * -ENOENT if @clkdm2 cannot wake up clkdm1 in hardware, or 0 upon
472 * success.
473 */
474int clkdm_add_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2)
475{
476 struct clkdm_dep *cd;
477
478 if (!clkdm1 || !clkdm2)
479 return -EINVAL;
480
481 cd = _clkdm_deps_lookup(clkdm2, clkdm1->wkdep_srcs);
482 if (IS_ERR(cd)) {
483 pr_debug("clockdomain: hardware cannot set/clear wake up of "
484 "%s when %s wakes up\n", clkdm1->name, clkdm2->name);
485 return PTR_ERR(cd);
486 }
487
488 if (atomic_inc_return(&cd->wkdep_usecount) == 1) {
489 pr_debug("clockdomain: hardware will wake up %s when %s wakes "
490 "up\n", clkdm1->name, clkdm2->name);
491
492 prm_set_mod_reg_bits((1 << clkdm2->dep_bit),
493 clkdm1->pwrdm.ptr->prcm_offs, PM_WKDEP);
494 }
495
496 return 0;
497}
498
499/**
500 * clkdm_del_wkdep - remove a wakeup dependency from clkdm2 to clkdm1
501 * @clkdm1: wake this struct clockdomain * up (dependent)
502 * @clkdm2: when this struct clockdomain * wakes up (source)
503 *
504 * Remove a wakeup dependency causing @clkdm1 to wake up when @clkdm2
505 * wakes up. Returns -EINVAL if presented with invalid clockdomain
506 * pointers, -ENOENT if @clkdm2 cannot wake up clkdm1 in hardware, or
507 * 0 upon success.
508 */
509int clkdm_del_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2)
510{
511 struct clkdm_dep *cd;
512
513 if (!clkdm1 || !clkdm2)
514 return -EINVAL;
515
516 cd = _clkdm_deps_lookup(clkdm2, clkdm1->wkdep_srcs);
517 if (IS_ERR(cd)) {
518 pr_debug("clockdomain: hardware cannot set/clear wake up of "
519 "%s when %s wakes up\n", clkdm1->name, clkdm2->name);
520 return PTR_ERR(cd);
521 }
522
523 if (atomic_dec_return(&cd->wkdep_usecount) == 0) {
524 pr_debug("clockdomain: hardware will no longer wake up %s "
525 "after %s wakes up\n", clkdm1->name, clkdm2->name);
526
527 prm_clear_mod_reg_bits((1 << clkdm2->dep_bit),
528 clkdm1->pwrdm.ptr->prcm_offs, PM_WKDEP);
529 }
530
531 return 0;
532}
533
534/**
535 * clkdm_read_wkdep - read wakeup dependency state from clkdm2 to clkdm1
536 * @clkdm1: wake this struct clockdomain * up (dependent)
537 * @clkdm2: when this struct clockdomain * wakes up (source)
538 *
539 * Return 1 if a hardware wakeup dependency exists wherein @clkdm1 will be
540 * awoken when @clkdm2 wakes up; 0 if dependency is not set; -EINVAL
541 * if either clockdomain pointer is invalid; or -ENOENT if the hardware
542 * is incapable.
543 *
544 * REVISIT: Currently this function only represents software-controllable
545 * wakeup dependencies. Wakeup dependencies fixed in hardware are not
546 * yet handled here.
547 */
548int clkdm_read_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2)
549{
550 struct clkdm_dep *cd;
551
552 if (!clkdm1 || !clkdm2)
553 return -EINVAL;
554
555 cd = _clkdm_deps_lookup(clkdm2, clkdm1->wkdep_srcs);
556 if (IS_ERR(cd)) {
557 pr_debug("clockdomain: hardware cannot set/clear wake up of "
558 "%s when %s wakes up\n", clkdm1->name, clkdm2->name);
559 return PTR_ERR(cd);
560 }
561
562 /* XXX It's faster to return the atomic wkdep_usecount */
563 return prm_read_mod_bits_shift(clkdm1->pwrdm.ptr->prcm_offs, PM_WKDEP,
564 (1 << clkdm2->dep_bit));
565}
566
567/**
568 * clkdm_clear_all_wkdeps - remove all wakeup dependencies from target clkdm
569 * @clkdm: struct clockdomain * to remove all wakeup dependencies from
570 *
571 * Remove all inter-clockdomain wakeup dependencies that could cause
572 * @clkdm to wake. Intended to be used during boot to initialize the
573 * PRCM to a known state, after all clockdomains are put into swsup idle
574 * and woken up. Returns -EINVAL if @clkdm pointer is invalid, or
575 * 0 upon success.
576 */
577int clkdm_clear_all_wkdeps(struct clockdomain *clkdm)
578{
579 struct clkdm_dep *cd;
580 u32 mask = 0;
581
582 if (!clkdm)
583 return -EINVAL;
584
585 for (cd = clkdm->wkdep_srcs; cd && cd->clkdm_name; cd++) {
586 if (!omap_chip_is(cd->omap_chip))
587 continue;
588
589 /* PRM accesses are slow, so minimize them */
590 mask |= 1 << cd->clkdm->dep_bit;
591 atomic_set(&cd->wkdep_usecount, 0);
592 }
593
594 prm_clear_mod_reg_bits(mask, clkdm->pwrdm.ptr->prcm_offs, PM_WKDEP);
595
596 return 0;
597}
598
599/**
600 * clkdm_add_sleepdep - add a sleep dependency from clkdm2 to clkdm1
601 * @clkdm1: prevent this struct clockdomain * from sleeping (dependent)
602 * @clkdm2: when this struct clockdomain * is active (source)
603 *
604 * Prevent @clkdm1 from automatically going inactive (and then to
605 * retention or off) if @clkdm2 is active. Returns -EINVAL if
606 * presented with invalid clockdomain pointers or called on a machine
607 * that does not support software-configurable hardware sleep
608 * dependencies, -ENOENT if the specified dependency cannot be set in
609 * hardware, or 0 upon success.
610 */
611int clkdm_add_sleepdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2)
612{
613 struct clkdm_dep *cd;
614
615 if (!cpu_is_omap34xx())
616 return -EINVAL;
617
618 if (!clkdm1 || !clkdm2)
619 return -EINVAL;
620
621 cd = _clkdm_deps_lookup(clkdm2, clkdm1->sleepdep_srcs);
622 if (IS_ERR(cd)) {
623 pr_debug("clockdomain: hardware cannot set/clear sleep "
624 "dependency affecting %s from %s\n", clkdm1->name,
625 clkdm2->name);
626 return PTR_ERR(cd);
627 }
628
629 if (atomic_inc_return(&cd->sleepdep_usecount) == 1) {
630 pr_debug("clockdomain: will prevent %s from sleeping if %s "
631 "is active\n", clkdm1->name, clkdm2->name);
632
633 cm_set_mod_reg_bits((1 << clkdm2->dep_bit),
634 clkdm1->pwrdm.ptr->prcm_offs,
635 OMAP3430_CM_SLEEPDEP);
636 }
637
638 return 0;
639}
640
641/**
642 * clkdm_del_sleepdep - remove a sleep dependency from clkdm2 to clkdm1
643 * @clkdm1: prevent this struct clockdomain * from sleeping (dependent)
644 * @clkdm2: when this struct clockdomain * is active (source)
645 *
646 * Allow @clkdm1 to automatically go inactive (and then to retention or
647 * off), independent of the activity state of @clkdm2. Returns -EINVAL
648 * if presented with invalid clockdomain pointers or called on a machine
649 * that does not support software-configurable hardware sleep dependencies,
650 * -ENOENT if the specified dependency cannot be cleared in hardware, or
651 * 0 upon success.
652 */
653int clkdm_del_sleepdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2)
654{
655 struct clkdm_dep *cd;
656
657 if (!cpu_is_omap34xx())
658 return -EINVAL;
659
660 if (!clkdm1 || !clkdm2)
661 return -EINVAL;
662
663 cd = _clkdm_deps_lookup(clkdm2, clkdm1->sleepdep_srcs);
664 if (IS_ERR(cd)) {
665 pr_debug("clockdomain: hardware cannot set/clear sleep "
666 "dependency affecting %s from %s\n", clkdm1->name,
667 clkdm2->name);
668 return PTR_ERR(cd);
669 }
670
671 if (atomic_dec_return(&cd->sleepdep_usecount) == 0) {
672 pr_debug("clockdomain: will no longer prevent %s from "
673 "sleeping if %s is active\n", clkdm1->name,
674 clkdm2->name);
675
676 cm_clear_mod_reg_bits((1 << clkdm2->dep_bit),
677 clkdm1->pwrdm.ptr->prcm_offs,
678 OMAP3430_CM_SLEEPDEP);
679 }
680
681 return 0;
682}
683
684/**
685 * clkdm_read_sleepdep - read sleep dependency state from clkdm2 to clkdm1
686 * @clkdm1: prevent this struct clockdomain * from sleeping (dependent)
687 * @clkdm2: when this struct clockdomain * is active (source)
688 *
689 * Return 1 if a hardware sleep dependency exists wherein @clkdm1 will
690 * not be allowed to automatically go inactive if @clkdm2 is active;
691 * 0 if @clkdm1's automatic power state inactivity transition is independent
692 * of @clkdm2's; -EINVAL if either clockdomain pointer is invalid or called
693 * on a machine that does not support software-configurable hardware sleep
694 * dependencies; or -ENOENT if the hardware is incapable.
695 *
696 * REVISIT: Currently this function only represents software-controllable
697 * sleep dependencies. Sleep dependencies fixed in hardware are not
698 * yet handled here.
699 */
700int clkdm_read_sleepdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2)
701{
702 struct clkdm_dep *cd;
703
704 if (!cpu_is_omap34xx())
705 return -EINVAL;
706
707 if (!clkdm1 || !clkdm2)
708 return -EINVAL;
709
710 cd = _clkdm_deps_lookup(clkdm2, clkdm1->sleepdep_srcs);
711 if (IS_ERR(cd)) {
712 pr_debug("clockdomain: hardware cannot set/clear sleep "
713 "dependency affecting %s from %s\n", clkdm1->name,
714 clkdm2->name);
715 return PTR_ERR(cd);
716 }
717
718 /* XXX It's faster to return the atomic sleepdep_usecount */
719 return prm_read_mod_bits_shift(clkdm1->pwrdm.ptr->prcm_offs,
720 OMAP3430_CM_SLEEPDEP,
721 (1 << clkdm2->dep_bit));
722}
723
724/**
725 * clkdm_clear_all_sleepdeps - remove all sleep dependencies from target clkdm
726 * @clkdm: struct clockdomain * to remove all sleep dependencies from
727 *
728 * Remove all inter-clockdomain sleep dependencies that could prevent
729 * @clkdm from idling. Intended to be used during boot to initialize the
730 * PRCM to a known state, after all clockdomains are put into swsup idle
731 * and woken up. Returns -EINVAL if @clkdm pointer is invalid, or
732 * 0 upon success.
733 */
734int clkdm_clear_all_sleepdeps(struct clockdomain *clkdm)
735{
736 struct clkdm_dep *cd;
737 u32 mask = 0;
738
739 if (!cpu_is_omap34xx())
740 return -EINVAL;
741
742 if (!clkdm)
743 return -EINVAL;
744
745 for (cd = clkdm->sleepdep_srcs; cd && cd->clkdm_name; cd++) {
746 if (!omap_chip_is(cd->omap_chip))
747 continue;
748
749 /* PRM accesses are slow, so minimize them */
750 mask |= 1 << cd->clkdm->dep_bit;
751 atomic_set(&cd->sleepdep_usecount, 0);
752 }
753
754 prm_clear_mod_reg_bits(mask, clkdm->pwrdm.ptr->prcm_offs,
755 OMAP3430_CM_SLEEPDEP);
756
757 return 0;
758}
759
760/**
370 * omap2_clkdm_clktrctrl_read - read the clkdm's current state transition mode 761 * omap2_clkdm_clktrctrl_read - read the clkdm's current state transition mode
371 * @clk: struct clk * of a clockdomain 762 * @clkdm: struct clkdm * of a clockdomain
372 * 763 *
373 * Return the clockdomain's current state transition mode from the 764 * Return the clockdomain @clkdm current state transition mode from the
374 * corresponding domain CM_CLKSTCTRL register. Returns -EINVAL if clk 765 * corresponding domain CM_CLKSTCTRL register. Returns -EINVAL if @clkdm
375 * is NULL or the current mode upon success. 766 * is NULL or the current mode upon success.
376 */ 767 */
377static int omap2_clkdm_clktrctrl_read(struct clockdomain *clkdm) 768static int omap2_clkdm_clktrctrl_read(struct clockdomain *clkdm)
@@ -381,7 +772,7 @@ static int omap2_clkdm_clktrctrl_read(struct clockdomain *clkdm)
381 if (!clkdm) 772 if (!clkdm)
382 return -EINVAL; 773 return -EINVAL;
383 774
384 v = cm_read_mod_reg(clkdm->pwrdm.ptr->prcm_offs, CM_CLKSTCTRL); 775 v = __raw_readl(clkdm->clkstctrl_reg);
385 v &= clkdm->clktrctrl_mask; 776 v &= clkdm->clktrctrl_mask;
386 v >>= __ffs(clkdm->clktrctrl_mask); 777 v >>= __ffs(clkdm->clktrctrl_mask);
387 778
@@ -393,7 +784,7 @@ static int omap2_clkdm_clktrctrl_read(struct clockdomain *clkdm)
393 * @clkdm: struct clockdomain * 784 * @clkdm: struct clockdomain *
394 * 785 *
395 * Instruct the CM to force a sleep transition on the specified 786 * Instruct the CM to force a sleep transition on the specified
396 * clockdomain 'clkdm'. Returns -EINVAL if clk is NULL or if 787 * clockdomain @clkdm. Returns -EINVAL if @clkdm is NULL or if
397 * clockdomain does not support software-initiated sleep; 0 upon 788 * clockdomain does not support software-initiated sleep; 0 upon
398 * success. 789 * success.
399 */ 790 */
@@ -413,15 +804,17 @@ int omap2_clkdm_sleep(struct clockdomain *clkdm)
413 if (cpu_is_omap24xx()) { 804 if (cpu_is_omap24xx()) {
414 805
415 cm_set_mod_reg_bits(OMAP24XX_FORCESTATE, 806 cm_set_mod_reg_bits(OMAP24XX_FORCESTATE,
416 clkdm->pwrdm.ptr->prcm_offs, PM_PWSTCTRL); 807 clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL);
417 808
418 } else if (cpu_is_omap34xx()) { 809 } else if (cpu_is_omap34xx() | cpu_is_omap44xx()) {
419 810
420 u32 v = (OMAP34XX_CLKSTCTRL_FORCE_SLEEP << 811 u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_SLEEP <<
421 __ffs(clkdm->clktrctrl_mask)); 812 __ffs(clkdm->clktrctrl_mask));
422 813
423 cm_rmw_mod_reg_bits(clkdm->clktrctrl_mask, v, 814 u32 v = __raw_readl(clkdm->clkstctrl_reg);
424 clkdm->pwrdm.ptr->prcm_offs, CM_CLKSTCTRL); 815 v &= ~(clkdm->clktrctrl_mask);
816 v |= bits;
817 __raw_writel(v, clkdm->clkstctrl_reg);
425 818
426 } else { 819 } else {
427 BUG(); 820 BUG();
@@ -435,7 +828,7 @@ int omap2_clkdm_sleep(struct clockdomain *clkdm)
435 * @clkdm: struct clockdomain * 828 * @clkdm: struct clockdomain *
436 * 829 *
437 * Instruct the CM to force a wakeup transition on the specified 830 * Instruct the CM to force a wakeup transition on the specified
438 * clockdomain 'clkdm'. Returns -EINVAL if clkdm is NULL or if the 831 * clockdomain @clkdm. Returns -EINVAL if @clkdm is NULL or if the
439 * clockdomain does not support software-controlled wakeup; 0 upon 832 * clockdomain does not support software-controlled wakeup; 0 upon
440 * success. 833 * success.
441 */ 834 */
@@ -455,15 +848,17 @@ int omap2_clkdm_wakeup(struct clockdomain *clkdm)
455 if (cpu_is_omap24xx()) { 848 if (cpu_is_omap24xx()) {
456 849
457 cm_clear_mod_reg_bits(OMAP24XX_FORCESTATE, 850 cm_clear_mod_reg_bits(OMAP24XX_FORCESTATE,
458 clkdm->pwrdm.ptr->prcm_offs, PM_PWSTCTRL); 851 clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL);
459 852
460 } else if (cpu_is_omap34xx()) { 853 } else if (cpu_is_omap34xx() | cpu_is_omap44xx()) {
461 854
462 u32 v = (OMAP34XX_CLKSTCTRL_FORCE_WAKEUP << 855 u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_WAKEUP <<
463 __ffs(clkdm->clktrctrl_mask)); 856 __ffs(clkdm->clktrctrl_mask));
464 857
465 cm_rmw_mod_reg_bits(clkdm->clktrctrl_mask, v, 858 u32 v = __raw_readl(clkdm->clkstctrl_reg);
466 clkdm->pwrdm.ptr->prcm_offs, CM_CLKSTCTRL); 859 v &= ~(clkdm->clktrctrl_mask);
860 v |= bits;
861 __raw_writel(v, clkdm->clkstctrl_reg);
467 862
468 } else { 863 } else {
469 BUG(); 864 BUG();
@@ -476,7 +871,7 @@ int omap2_clkdm_wakeup(struct clockdomain *clkdm)
476 * omap2_clkdm_allow_idle - enable hwsup idle transitions for clkdm 871 * omap2_clkdm_allow_idle - enable hwsup idle transitions for clkdm
477 * @clkdm: struct clockdomain * 872 * @clkdm: struct clockdomain *
478 * 873 *
479 * Allow the hardware to automatically switch the clockdomain into 874 * Allow the hardware to automatically switch the clockdomain @clkdm into
480 * active or idle states, as needed by downstream clocks. If the 875 * active or idle states, as needed by downstream clocks. If the
481 * clockdomain has any downstream clocks enabled in the clock 876 * clockdomain has any downstream clocks enabled in the clock
482 * framework, wkdep/sleepdep autodependencies are added; this is so 877 * framework, wkdep/sleepdep autodependencies are added; this is so
@@ -509,8 +904,8 @@ void omap2_clkdm_allow_idle(struct clockdomain *clkdm)
509 * @clkdm: struct clockdomain * 904 * @clkdm: struct clockdomain *
510 * 905 *
511 * Prevent the hardware from automatically switching the clockdomain 906 * Prevent the hardware from automatically switching the clockdomain
512 * into inactive or idle states. If the clockdomain has downstream 907 * @clkdm into inactive or idle states. If the clockdomain has
513 * clocks enabled in the clock framework, wkdep/sleepdep 908 * downstream clocks enabled in the clock framework, wkdep/sleepdep
514 * autodependencies are removed. No return value. 909 * autodependencies are removed. No return value.
515 */ 910 */
516void omap2_clkdm_deny_idle(struct clockdomain *clkdm) 911void omap2_clkdm_deny_idle(struct clockdomain *clkdm)
@@ -541,14 +936,14 @@ void omap2_clkdm_deny_idle(struct clockdomain *clkdm)
541 * @clkdm: struct clockdomain * 936 * @clkdm: struct clockdomain *
542 * @clk: struct clk * of the enabled downstream clock 937 * @clk: struct clk * of the enabled downstream clock
543 * 938 *
544 * Increment the usecount of this clockdomain 'clkdm' and ensure that 939 * Increment the usecount of the clockdomain @clkdm and ensure that it
545 * it is awake. Intended to be called by clk_enable() code. If the 940 * is awake before @clk is enabled. Intended to be called by
546 * clockdomain is in software-supervised idle mode, force the 941 * clk_enable() code. If the clockdomain is in software-supervised
547 * clockdomain to wake. If the clockdomain is in hardware-supervised 942 * idle mode, force the clockdomain to wake. If the clockdomain is in
548 * idle mode, add clkdm-pwrdm autodependencies, to ensure that devices 943 * hardware-supervised idle mode, add clkdm-pwrdm autodependencies, to
549 * in the clockdomain can be read from/written to by on-chip processors. 944 * ensure that devices in the clockdomain can be read from/written to
550 * Returns -EINVAL if passed null pointers; returns 0 upon success or 945 * by on-chip processors. Returns -EINVAL if passed null pointers;
551 * if the clockdomain is in hwsup idle mode. 946 * returns 0 upon success or if the clockdomain is in hwsup idle mode.
552 */ 947 */
553int omap2_clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk) 948int omap2_clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk)
554{ 949{
@@ -559,7 +954,7 @@ int omap2_clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk)
559 * downstream clocks for debugging purposes? 954 * downstream clocks for debugging purposes?
560 */ 955 */
561 956
562 if (!clkdm || !clk || !clkdm->clktrctrl_mask) 957 if (!clkdm || !clk || !clkdm->clkstctrl_reg)
563 return -EINVAL; 958 return -EINVAL;
564 959
565 if (atomic_inc_return(&clkdm->usecount) > 1) 960 if (atomic_inc_return(&clkdm->usecount) > 1)
@@ -593,13 +988,14 @@ int omap2_clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk)
593 * @clkdm: struct clockdomain * 988 * @clkdm: struct clockdomain *
594 * @clk: struct clk * of the disabled downstream clock 989 * @clk: struct clk * of the disabled downstream clock
595 * 990 *
596 * Decrement the usecount of this clockdomain 'clkdm'. Intended to be 991 * Decrement the usecount of this clockdomain @clkdm when @clk is
597 * called by clk_disable() code. If the usecount goes to 0, put the 992 * disabled. Intended to be called by clk_disable() code. If the
598 * clockdomain to sleep (software-supervised mode) or remove the 993 * clockdomain usecount goes to 0, put the clockdomain to sleep
599 * clkdm-pwrdm autodependencies (hardware-supervised mode). Returns 994 * (software-supervised mode) or remove the clkdm autodependencies
600 * -EINVAL if passed null pointers; -ERANGE if the clkdm usecount 995 * (hardware-supervised mode). Returns -EINVAL if passed null
601 * underflows and debugging is enabled; or returns 0 upon success or 996 * pointers; -ERANGE if the @clkdm usecount underflows and debugging
602 * if the clockdomain is in hwsup idle mode. 997 * is enabled; or returns 0 upon success or if the clockdomain is in
998 * hwsup idle mode.
603 */ 999 */
604int omap2_clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk) 1000int omap2_clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk)
605{ 1001{
@@ -610,7 +1006,7 @@ int omap2_clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk)
610 * downstream clocks for debugging purposes? 1006 * downstream clocks for debugging purposes?
611 */ 1007 */
612 1008
613 if (!clkdm || !clk || !clkdm->clktrctrl_mask) 1009 if (!clkdm || !clk || !clkdm->clkstctrl_reg)
614 return -EINVAL; 1010 return -EINVAL;
615 1011
616#ifdef DEBUG 1012#ifdef DEBUG
diff --git a/arch/arm/mach-omap2/clockdomains.h b/arch/arm/mach-omap2/clockdomains.h
index c4ee0761d908..7db6298493fd 100644
--- a/arch/arm/mach-omap2/clockdomains.h
+++ b/arch/arm/mach-omap2/clockdomains.h
@@ -1,16 +1,420 @@
1/* 1/*
2 * OMAP2/3 clockdomains 2 * OMAP2/3 clockdomains
3 * 3 *
4 * Copyright (C) 2008 Texas Instruments, Inc. 4 * Copyright (C) 2008-2009 Texas Instruments, Inc.
5 * Copyright (C) 2008 Nokia Corporation 5 * Copyright (C) 2008-2010 Nokia Corporation
6 * 6 *
7 * Written by Paul Walmsley 7 * Written by Paul Walmsley and Jouni Högander
8 *
9 * This file contains clockdomains and clockdomain wakeup/sleep
10 * dependencies for the OMAP2/3 chips. Some notes:
11 *
12 * A useful validation rule for struct clockdomain: Any clockdomain
13 * referenced by a wkdep_srcs or sleepdep_srcs array must have a
14 * dep_bit assigned. So wkdep_srcs/sleepdep_srcs are really just
15 * software-controllable dependencies. Non-software-controllable
16 * dependencies do exist, but they are not encoded below (yet).
17 *
18 * 24xx does not support programmable sleep dependencies (SLEEPDEP)
19 *
20 * The overly-specific dep_bit names are due to a bit name collision
21 * with CM_FCLKEN_{DSP,IVA2}. The DSP/IVA2 PM_WKDEP and CM_SLEEPDEP shift
22 * value are the same for all powerdomains: 2
23 *
24 * XXX should dep_bit be a mask, so we can test to see if it is 0 as a
25 * sanity check?
26 * XXX encode hardware fixed wakeup dependencies -- esp. for 3430 CORE
27 */
28
29/*
30 * To-Do List
31 * -> Port the Sleep/Wakeup dependencies for the domains
32 * from the Power domain framework
8 */ 33 */
9 34
10#ifndef __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H 35#ifndef __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H
11#define __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H 36#define __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H
12 37
13#include <plat/clockdomain.h> 38#include <plat/clockdomain.h>
39#include "cm.h"
40#include "prm.h"
41
42/*
43 * Clockdomain dependencies for wkdeps/sleepdeps
44 *
45 * XXX Hardware dependencies (e.g., dependencies that cannot be
46 * changed in software) are not included here yet, but should be.
47 */
48
49/* OMAP2/3-common wakeup dependencies */
50
51/*
52 * 2420/2430 PM_WKDEP_GFX: CORE, MPU, WKUP
53 * 3430ES1 PM_WKDEP_GFX: adds IVA2, removes CORE
54 * 3430ES2 PM_WKDEP_SGX: adds IVA2, removes CORE
55 * These can share data since they will never be present simultaneously
56 * on the same device.
57 */
58static struct clkdm_dep gfx_sgx_wkdeps[] = {
59 {
60 .clkdm_name = "core_l3_clkdm",
61 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
62 },
63 {
64 .clkdm_name = "core_l4_clkdm",
65 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
66 },
67 {
68 .clkdm_name = "iva2_clkdm",
69 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
70 },
71 {
72 .clkdm_name = "mpu_clkdm",
73 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX |
74 CHIP_IS_OMAP3430)
75 },
76 {
77 .clkdm_name = "wkup_clkdm",
78 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX |
79 CHIP_IS_OMAP3430)
80 },
81 { NULL },
82};
83
84
85/* 24XX-specific possible dependencies */
86
87#ifdef CONFIG_ARCH_OMAP24XX
88
89/* Wakeup dependency source arrays */
90
91/* 2420/2430 PM_WKDEP_DSP: CORE, MPU, WKUP */
92static struct clkdm_dep dsp_24xx_wkdeps[] = {
93 {
94 .clkdm_name = "core_l3_clkdm",
95 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
96 },
97 {
98 .clkdm_name = "core_l4_clkdm",
99 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
100 },
101 {
102 .clkdm_name = "mpu_clkdm",
103 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
104 },
105 {
106 .clkdm_name = "wkup_clkdm",
107 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
108 },
109 { NULL },
110};
111
112/*
113 * 2420 PM_WKDEP_MPU: CORE, DSP, WKUP
114 * 2430 adds MDM
115 */
116static struct clkdm_dep mpu_24xx_wkdeps[] = {
117 {
118 .clkdm_name = "core_l3_clkdm",
119 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
120 },
121 {
122 .clkdm_name = "core_l4_clkdm",
123 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
124 },
125 {
126 .clkdm_name = "dsp_clkdm",
127 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
128 },
129 {
130 .clkdm_name = "wkup_clkdm",
131 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
132 },
133 {
134 .clkdm_name = "mdm_clkdm",
135 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430)
136 },
137 { NULL },
138};
139
140/*
141 * 2420 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP
142 * 2430 adds MDM
143 */
144static struct clkdm_dep core_24xx_wkdeps[] = {
145 {
146 .clkdm_name = "dsp_clkdm",
147 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
148 },
149 {
150 .clkdm_name = "gfx_clkdm",
151 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
152 },
153 {
154 .clkdm_name = "mpu_clkdm",
155 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
156 },
157 {
158 .clkdm_name = "wkup_clkdm",
159 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
160 },
161 {
162 .clkdm_name = "mdm_clkdm",
163 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430)
164 },
165 { NULL },
166};
167
168#endif
169
170
171/* 2430-specific possible wakeup dependencies */
172
173#ifdef CONFIG_ARCH_OMAP2430
174
175/* 2430 PM_WKDEP_MDM: CORE, MPU, WKUP */
176static struct clkdm_dep mdm_2430_wkdeps[] = {
177 {
178 .clkdm_name = "core_l3_clkdm",
179 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
180 },
181 {
182 .clkdm_name = "core_l4_clkdm",
183 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
184 },
185 {
186 .clkdm_name = "mpu_clkdm",
187 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
188 },
189 {
190 .clkdm_name = "wkup_clkdm",
191 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
192 },
193 { NULL },
194};
195
196#endif /* CONFIG_ARCH_OMAP2430 */
197
198
199/* OMAP3-specific possible dependencies */
200
201#ifdef CONFIG_ARCH_OMAP3
202
203/* 3430: PM_WKDEP_PER: CORE, IVA2, MPU, WKUP */
204static struct clkdm_dep per_wkdeps[] = {
205 {
206 .clkdm_name = "core_l3_clkdm",
207 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
208 },
209 {
210 .clkdm_name = "core_l4_clkdm",
211 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
212 },
213 {
214 .clkdm_name = "iva2_clkdm",
215 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
216 },
217 {
218 .clkdm_name = "mpu_clkdm",
219 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
220 },
221 {
222 .clkdm_name = "wkup_clkdm",
223 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
224 },
225 { NULL },
226};
227
228/* 3430ES2: PM_WKDEP_USBHOST: CORE, IVA2, MPU, WKUP */
229static struct clkdm_dep usbhost_wkdeps[] = {
230 {
231 .clkdm_name = "core_l3_clkdm",
232 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
233 },
234 {
235 .clkdm_name = "core_l4_clkdm",
236 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
237 },
238 {
239 .clkdm_name = "iva2_clkdm",
240 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
241 },
242 {
243 .clkdm_name = "mpu_clkdm",
244 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
245 },
246 {
247 .clkdm_name = "wkup_clkdm",
248 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
249 },
250 { NULL },
251};
252
253/* 3430 PM_WKDEP_MPU: CORE, IVA2, DSS, PER */
254static struct clkdm_dep mpu_3xxx_wkdeps[] = {
255 {
256 .clkdm_name = "core_l3_clkdm",
257 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
258 },
259 {
260 .clkdm_name = "core_l4_clkdm",
261 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
262 },
263 {
264 .clkdm_name = "iva2_clkdm",
265 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
266 },
267 {
268 .clkdm_name = "dss_clkdm",
269 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
270 },
271 {
272 .clkdm_name = "per_clkdm",
273 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
274 },
275 { NULL },
276};
277
278/* 3430 PM_WKDEP_IVA2: CORE, MPU, WKUP, DSS, PER */
279static struct clkdm_dep iva2_wkdeps[] = {
280 {
281 .clkdm_name = "core_l3_clkdm",
282 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
283 },
284 {
285 .clkdm_name = "core_l4_clkdm",
286 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
287 },
288 {
289 .clkdm_name = "mpu_clkdm",
290 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
291 },
292 {
293 .clkdm_name = "wkup_clkdm",
294 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
295 },
296 {
297 .clkdm_name = "dss_clkdm",
298 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
299 },
300 {
301 .clkdm_name = "per_clkdm",
302 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
303 },
304 { NULL },
305};
306
307
308/* 3430 PM_WKDEP_CAM: IVA2, MPU, WKUP */
309static struct clkdm_dep cam_wkdeps[] = {
310 {
311 .clkdm_name = "iva2_clkdm",
312 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
313 },
314 {
315 .clkdm_name = "mpu_clkdm",
316 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
317 },
318 {
319 .clkdm_name = "wkup_clkdm",
320 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
321 },
322 { NULL },
323};
324
325/* 3430 PM_WKDEP_DSS: IVA2, MPU, WKUP */
326static struct clkdm_dep dss_wkdeps[] = {
327 {
328 .clkdm_name = "iva2_clkdm",
329 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
330 },
331 {
332 .clkdm_name = "mpu_clkdm",
333 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
334 },
335 {
336 .clkdm_name = "wkup_clkdm",
337 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
338 },
339 { NULL },
340};
341
342/* 3430: PM_WKDEP_NEON: MPU */
343static struct clkdm_dep neon_wkdeps[] = {
344 {
345 .clkdm_name = "mpu_clkdm",
346 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
347 },
348 { NULL },
349};
350
351
352/* Sleep dependency source arrays for OMAP3-specific clkdms */
353
354/* 3430: CM_SLEEPDEP_DSS: MPU, IVA */
355static struct clkdm_dep dss_sleepdeps[] = {
356 {
357 .clkdm_name = "mpu_clkdm",
358 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
359 },
360 {
361 .clkdm_name = "iva2_clkdm",
362 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
363 },
364 { NULL },
365};
366
367/* 3430: CM_SLEEPDEP_PER: MPU, IVA */
368static struct clkdm_dep per_sleepdeps[] = {
369 {
370 .clkdm_name = "mpu_clkdm",
371 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
372 },
373 {
374 .clkdm_name = "iva2_clkdm",
375 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
376 },
377 { NULL },
378};
379
380/* 3430ES2: CM_SLEEPDEP_USBHOST: MPU, IVA */
381static struct clkdm_dep usbhost_sleepdeps[] = {
382 {
383 .clkdm_name = "mpu_clkdm",
384 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
385 },
386 {
387 .clkdm_name = "iva2_clkdm",
388 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
389 },
390 { NULL },
391};
392
393/* 3430: CM_SLEEPDEP_CAM: MPU */
394static struct clkdm_dep cam_sleepdeps[] = {
395 {
396 .clkdm_name = "mpu_clkdm",
397 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
398 },
399 { NULL },
400};
401
402/*
403 * 3430ES1: CM_SLEEPDEP_GFX: MPU
404 * 3430ES2: CM_SLEEPDEP_SGX: MPU
405 * These can share data since they will never be present simultaneously
406 * on the same device.
407 */
408static struct clkdm_dep gfx_sgx_sleepdeps[] = {
409 {
410 .clkdm_name = "mpu_clkdm",
411 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
412 },
413 { NULL },
414};
415
416#endif /* CONFIG_ARCH_OMAP3 */
417
14 418
15/* 419/*
16 * OMAP2/3-common clockdomains 420 * OMAP2/3-common clockdomains
@@ -21,10 +425,13 @@
21 * sys_clkout/sys_clkout2. 425 * sys_clkout/sys_clkout2.
22 */ 426 */
23 427
428#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
429
24/* This is an implicit clockdomain - it is never defined as such in TRM */ 430/* This is an implicit clockdomain - it is never defined as such in TRM */
25static struct clockdomain wkup_clkdm = { 431static struct clockdomain wkup_clkdm = {
26 .name = "wkup_clkdm", 432 .name = "wkup_clkdm",
27 .pwrdm = { .name = "wkup_pwrdm" }, 433 .pwrdm = { .name = "wkup_pwrdm" },
434 .dep_bit = OMAP_EN_WKUP_SHIFT,
28 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430), 435 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
29}; 436};
30 437
@@ -40,6 +447,8 @@ static struct clockdomain cm_clkdm = {
40 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430), 447 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
41}; 448};
42 449
450#endif
451
43/* 452/*
44 * 2420-only clockdomains 453 * 2420-only clockdomains
45 */ 454 */
@@ -50,6 +459,8 @@ static struct clockdomain mpu_2420_clkdm = {
50 .name = "mpu_clkdm", 459 .name = "mpu_clkdm",
51 .pwrdm = { .name = "mpu_pwrdm" }, 460 .pwrdm = { .name = "mpu_pwrdm" },
52 .flags = CLKDM_CAN_HWSUP, 461 .flags = CLKDM_CAN_HWSUP,
462 .clkstctrl_reg = OMAP2420_CM_REGADDR(MPU_MOD, OMAP2_CM_CLKSTCTRL),
463 .wkdep_srcs = mpu_24xx_wkdeps,
53 .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK, 464 .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
54 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), 465 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
55}; 466};
@@ -58,11 +469,64 @@ static struct clockdomain iva1_2420_clkdm = {
58 .name = "iva1_clkdm", 469 .name = "iva1_clkdm",
59 .pwrdm = { .name = "dsp_pwrdm" }, 470 .pwrdm = { .name = "dsp_pwrdm" },
60 .flags = CLKDM_CAN_HWSUP_SWSUP, 471 .flags = CLKDM_CAN_HWSUP_SWSUP,
472 .clkstctrl_reg = OMAP2420_CM_REGADDR(OMAP24XX_DSP_MOD,
473 OMAP2_CM_CLKSTCTRL),
474 .dep_bit = OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT,
475 .wkdep_srcs = dsp_24xx_wkdeps,
61 .clktrctrl_mask = OMAP2420_AUTOSTATE_IVA_MASK, 476 .clktrctrl_mask = OMAP2420_AUTOSTATE_IVA_MASK,
62 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), 477 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
63}; 478};
64 479
65#endif /* CONFIG_ARCH_OMAP2420 */ 480static struct clockdomain dsp_2420_clkdm = {
481 .name = "dsp_clkdm",
482 .pwrdm = { .name = "dsp_pwrdm" },
483 .flags = CLKDM_CAN_HWSUP_SWSUP,
484 .clkstctrl_reg = OMAP2420_CM_REGADDR(OMAP24XX_DSP_MOD,
485 OMAP2_CM_CLKSTCTRL),
486 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
487 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
488};
489
490static struct clockdomain gfx_2420_clkdm = {
491 .name = "gfx_clkdm",
492 .pwrdm = { .name = "gfx_pwrdm" },
493 .flags = CLKDM_CAN_HWSUP_SWSUP,
494 .clkstctrl_reg = OMAP2420_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
495 .wkdep_srcs = gfx_sgx_wkdeps,
496 .clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
497 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
498};
499
500static struct clockdomain core_l3_2420_clkdm = {
501 .name = "core_l3_clkdm",
502 .pwrdm = { .name = "core_pwrdm" },
503 .flags = CLKDM_CAN_HWSUP,
504 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
505 .wkdep_srcs = core_24xx_wkdeps,
506 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
507 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
508};
509
510static struct clockdomain core_l4_2420_clkdm = {
511 .name = "core_l4_clkdm",
512 .pwrdm = { .name = "core_pwrdm" },
513 .flags = CLKDM_CAN_HWSUP,
514 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
515 .wkdep_srcs = core_24xx_wkdeps,
516 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
517 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
518};
519
520static struct clockdomain dss_2420_clkdm = {
521 .name = "dss_clkdm",
522 .pwrdm = { .name = "core_pwrdm" },
523 .flags = CLKDM_CAN_HWSUP,
524 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
525 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
526 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
527};
528
529#endif /* CONFIG_ARCH_OMAP2420 */
66 530
67 531
68/* 532/*
@@ -75,80 +539,105 @@ static struct clockdomain mpu_2430_clkdm = {
75 .name = "mpu_clkdm", 539 .name = "mpu_clkdm",
76 .pwrdm = { .name = "mpu_pwrdm" }, 540 .pwrdm = { .name = "mpu_pwrdm" },
77 .flags = CLKDM_CAN_HWSUP_SWSUP, 541 .flags = CLKDM_CAN_HWSUP_SWSUP,
542 .clkstctrl_reg = OMAP2430_CM_REGADDR(MPU_MOD,
543 OMAP2_CM_CLKSTCTRL),
544 .wkdep_srcs = mpu_24xx_wkdeps,
78 .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK, 545 .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
79 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), 546 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
80}; 547};
81 548
549/* Another case of bit name collisions between several registers: EN_MDM */
82static struct clockdomain mdm_clkdm = { 550static struct clockdomain mdm_clkdm = {
83 .name = "mdm_clkdm", 551 .name = "mdm_clkdm",
84 .pwrdm = { .name = "mdm_pwrdm" }, 552 .pwrdm = { .name = "mdm_pwrdm" },
85 .flags = CLKDM_CAN_HWSUP_SWSUP, 553 .flags = CLKDM_CAN_HWSUP_SWSUP,
554 .clkstctrl_reg = OMAP2430_CM_REGADDR(OMAP2430_MDM_MOD,
555 OMAP2_CM_CLKSTCTRL),
556 .dep_bit = OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT,
557 .wkdep_srcs = mdm_2430_wkdeps,
86 .clktrctrl_mask = OMAP2430_AUTOSTATE_MDM_MASK, 558 .clktrctrl_mask = OMAP2430_AUTOSTATE_MDM_MASK,
87 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), 559 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
88}; 560};
89 561
90#endif /* CONFIG_ARCH_OMAP2430 */ 562static struct clockdomain dsp_2430_clkdm = {
91
92
93/*
94 * 24XX-only clockdomains
95 */
96
97#if defined(CONFIG_ARCH_OMAP24XX)
98
99static struct clockdomain dsp_clkdm = {
100 .name = "dsp_clkdm", 563 .name = "dsp_clkdm",
101 .pwrdm = { .name = "dsp_pwrdm" }, 564 .pwrdm = { .name = "dsp_pwrdm" },
102 .flags = CLKDM_CAN_HWSUP_SWSUP, 565 .flags = CLKDM_CAN_HWSUP_SWSUP,
566 .clkstctrl_reg = OMAP2430_CM_REGADDR(OMAP24XX_DSP_MOD,
567 OMAP2_CM_CLKSTCTRL),
568 .dep_bit = OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT,
569 .wkdep_srcs = dsp_24xx_wkdeps,
103 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK, 570 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
104 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 571 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
105}; 572};
106 573
107static struct clockdomain gfx_24xx_clkdm = { 574static struct clockdomain gfx_2430_clkdm = {
108 .name = "gfx_clkdm", 575 .name = "gfx_clkdm",
109 .pwrdm = { .name = "gfx_pwrdm" }, 576 .pwrdm = { .name = "gfx_pwrdm" },
110 .flags = CLKDM_CAN_HWSUP_SWSUP, 577 .flags = CLKDM_CAN_HWSUP_SWSUP,
578 .clkstctrl_reg = OMAP2430_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
579 .wkdep_srcs = gfx_sgx_wkdeps,
111 .clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK, 580 .clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
112 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 581 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
113}; 582};
114 583
115static struct clockdomain core_l3_24xx_clkdm = { 584/*
585 * XXX add usecounting for clkdm dependencies, otherwise the presence
586 * of a single dep bit for core_l3_24xx_clkdm and core_l4_24xx_clkdm
587 * could cause trouble
588 */
589static struct clockdomain core_l3_2430_clkdm = {
116 .name = "core_l3_clkdm", 590 .name = "core_l3_clkdm",
117 .pwrdm = { .name = "core_pwrdm" }, 591 .pwrdm = { .name = "core_pwrdm" },
118 .flags = CLKDM_CAN_HWSUP, 592 .flags = CLKDM_CAN_HWSUP,
593 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
594 .dep_bit = OMAP24XX_EN_CORE_SHIFT,
595 .wkdep_srcs = core_24xx_wkdeps,
119 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK, 596 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
120 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 597 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
121}; 598};
122 599
123static struct clockdomain core_l4_24xx_clkdm = { 600/*
601 * XXX add usecounting for clkdm dependencies, otherwise the presence
602 * of a single dep bit for core_l3_24xx_clkdm and core_l4_24xx_clkdm
603 * could cause trouble
604 */
605static struct clockdomain core_l4_2430_clkdm = {
124 .name = "core_l4_clkdm", 606 .name = "core_l4_clkdm",
125 .pwrdm = { .name = "core_pwrdm" }, 607 .pwrdm = { .name = "core_pwrdm" },
126 .flags = CLKDM_CAN_HWSUP, 608 .flags = CLKDM_CAN_HWSUP,
609 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
610 .dep_bit = OMAP24XX_EN_CORE_SHIFT,
611 .wkdep_srcs = core_24xx_wkdeps,
127 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK, 612 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
128 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 613 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
129}; 614};
130 615
131static struct clockdomain dss_24xx_clkdm = { 616static struct clockdomain dss_2430_clkdm = {
132 .name = "dss_clkdm", 617 .name = "dss_clkdm",
133 .pwrdm = { .name = "core_pwrdm" }, 618 .pwrdm = { .name = "core_pwrdm" },
134 .flags = CLKDM_CAN_HWSUP, 619 .flags = CLKDM_CAN_HWSUP,
620 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
135 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK, 621 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
136 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 622 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
137}; 623};
138 624
139#endif /* CONFIG_ARCH_OMAP24XX */ 625#endif /* CONFIG_ARCH_OMAP2430 */
140 626
141 627
142/* 628/*
143 * 34xx clockdomains 629 * OMAP3 clockdomains
144 */ 630 */
145 631
146#if defined(CONFIG_ARCH_OMAP34XX) 632#if defined(CONFIG_ARCH_OMAP3)
147 633
148static struct clockdomain mpu_34xx_clkdm = { 634static struct clockdomain mpu_3xxx_clkdm = {
149 .name = "mpu_clkdm", 635 .name = "mpu_clkdm",
150 .pwrdm = { .name = "mpu_pwrdm" }, 636 .pwrdm = { .name = "mpu_pwrdm" },
151 .flags = CLKDM_CAN_HWSUP | CLKDM_CAN_FORCE_WAKEUP, 637 .flags = CLKDM_CAN_HWSUP | CLKDM_CAN_FORCE_WAKEUP,
638 .clkstctrl_reg = OMAP34XX_CM_REGADDR(MPU_MOD, OMAP2_CM_CLKSTCTRL),
639 .dep_bit = OMAP3430_EN_MPU_SHIFT,
640 .wkdep_srcs = mpu_3xxx_wkdeps,
152 .clktrctrl_mask = OMAP3430_CLKTRCTRL_MPU_MASK, 641 .clktrctrl_mask = OMAP3430_CLKTRCTRL_MPU_MASK,
153 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 642 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
154}; 643};
@@ -157,6 +646,9 @@ static struct clockdomain neon_clkdm = {
157 .name = "neon_clkdm", 646 .name = "neon_clkdm",
158 .pwrdm = { .name = "neon_pwrdm" }, 647 .pwrdm = { .name = "neon_pwrdm" },
159 .flags = CLKDM_CAN_HWSUP_SWSUP, 648 .flags = CLKDM_CAN_HWSUP_SWSUP,
649 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_NEON_MOD,
650 OMAP2_CM_CLKSTCTRL),
651 .wkdep_srcs = neon_wkdeps,
160 .clktrctrl_mask = OMAP3430_CLKTRCTRL_NEON_MASK, 652 .clktrctrl_mask = OMAP3430_CLKTRCTRL_NEON_MASK,
161 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 653 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
162}; 654};
@@ -165,6 +657,10 @@ static struct clockdomain iva2_clkdm = {
165 .name = "iva2_clkdm", 657 .name = "iva2_clkdm",
166 .pwrdm = { .name = "iva2_pwrdm" }, 658 .pwrdm = { .name = "iva2_pwrdm" },
167 .flags = CLKDM_CAN_HWSUP_SWSUP, 659 .flags = CLKDM_CAN_HWSUP_SWSUP,
660 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_IVA2_MOD,
661 OMAP2_CM_CLKSTCTRL),
662 .dep_bit = OMAP3430_PM_WKDEP_MPU_EN_IVA2_SHIFT,
663 .wkdep_srcs = iva2_wkdeps,
168 .clktrctrl_mask = OMAP3430_CLKTRCTRL_IVA2_MASK, 664 .clktrctrl_mask = OMAP3430_CLKTRCTRL_IVA2_MASK,
169 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 665 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
170}; 666};
@@ -173,6 +669,9 @@ static struct clockdomain gfx_3430es1_clkdm = {
173 .name = "gfx_clkdm", 669 .name = "gfx_clkdm",
174 .pwrdm = { .name = "gfx_pwrdm" }, 670 .pwrdm = { .name = "gfx_pwrdm" },
175 .flags = CLKDM_CAN_HWSUP_SWSUP, 671 .flags = CLKDM_CAN_HWSUP_SWSUP,
672 .clkstctrl_reg = OMAP34XX_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
673 .wkdep_srcs = gfx_sgx_wkdeps,
674 .sleepdep_srcs = gfx_sgx_sleepdeps,
176 .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_GFX_MASK, 675 .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_GFX_MASK,
177 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1), 676 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1),
178}; 677};
@@ -181,6 +680,10 @@ static struct clockdomain sgx_clkdm = {
181 .name = "sgx_clkdm", 680 .name = "sgx_clkdm",
182 .pwrdm = { .name = "sgx_pwrdm" }, 681 .pwrdm = { .name = "sgx_pwrdm" },
183 .flags = CLKDM_CAN_HWSUP_SWSUP, 682 .flags = CLKDM_CAN_HWSUP_SWSUP,
683 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430ES2_SGX_MOD,
684 OMAP2_CM_CLKSTCTRL),
685 .wkdep_srcs = gfx_sgx_wkdeps,
686 .sleepdep_srcs = gfx_sgx_sleepdeps,
184 .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_SGX_MASK, 687 .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_SGX_MASK,
185 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2), 688 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
186}; 689};
@@ -196,30 +699,51 @@ static struct clockdomain d2d_clkdm = {
196 .name = "d2d_clkdm", 699 .name = "d2d_clkdm",
197 .pwrdm = { .name = "core_pwrdm" }, 700 .pwrdm = { .name = "core_pwrdm" },
198 .flags = CLKDM_CAN_HWSUP_SWSUP, 701 .flags = CLKDM_CAN_HWSUP_SWSUP,
702 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
199 .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_D2D_MASK, 703 .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_D2D_MASK,
200 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 704 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
201}; 705};
202 706
203static struct clockdomain core_l3_34xx_clkdm = { 707/*
708 * XXX add usecounting for clkdm dependencies, otherwise the presence
709 * of a single dep bit for core_l3_3xxx_clkdm and core_l4_3xxx_clkdm
710 * could cause trouble
711 */
712static struct clockdomain core_l3_3xxx_clkdm = {
204 .name = "core_l3_clkdm", 713 .name = "core_l3_clkdm",
205 .pwrdm = { .name = "core_pwrdm" }, 714 .pwrdm = { .name = "core_pwrdm" },
206 .flags = CLKDM_CAN_HWSUP, 715 .flags = CLKDM_CAN_HWSUP,
716 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
717 .dep_bit = OMAP3430_EN_CORE_SHIFT,
207 .clktrctrl_mask = OMAP3430_CLKTRCTRL_L3_MASK, 718 .clktrctrl_mask = OMAP3430_CLKTRCTRL_L3_MASK,
208 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 719 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
209}; 720};
210 721
211static struct clockdomain core_l4_34xx_clkdm = { 722/*
723 * XXX add usecounting for clkdm dependencies, otherwise the presence
724 * of a single dep bit for core_l3_3xxx_clkdm and core_l4_3xxx_clkdm
725 * could cause trouble
726 */
727static struct clockdomain core_l4_3xxx_clkdm = {
212 .name = "core_l4_clkdm", 728 .name = "core_l4_clkdm",
213 .pwrdm = { .name = "core_pwrdm" }, 729 .pwrdm = { .name = "core_pwrdm" },
214 .flags = CLKDM_CAN_HWSUP, 730 .flags = CLKDM_CAN_HWSUP,
731 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
732 .dep_bit = OMAP3430_EN_CORE_SHIFT,
215 .clktrctrl_mask = OMAP3430_CLKTRCTRL_L4_MASK, 733 .clktrctrl_mask = OMAP3430_CLKTRCTRL_L4_MASK,
216 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 734 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
217}; 735};
218 736
219static struct clockdomain dss_34xx_clkdm = { 737/* Another case of bit name collisions between several registers: EN_DSS */
738static struct clockdomain dss_3xxx_clkdm = {
220 .name = "dss_clkdm", 739 .name = "dss_clkdm",
221 .pwrdm = { .name = "dss_pwrdm" }, 740 .pwrdm = { .name = "dss_pwrdm" },
222 .flags = CLKDM_CAN_HWSUP_SWSUP, 741 .flags = CLKDM_CAN_HWSUP_SWSUP,
742 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD,
743 OMAP2_CM_CLKSTCTRL),
744 .dep_bit = OMAP3430_PM_WKDEP_MPU_EN_DSS_SHIFT,
745 .wkdep_srcs = dss_wkdeps,
746 .sleepdep_srcs = dss_sleepdeps,
223 .clktrctrl_mask = OMAP3430_CLKTRCTRL_DSS_MASK, 747 .clktrctrl_mask = OMAP3430_CLKTRCTRL_DSS_MASK,
224 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 748 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
225}; 749};
@@ -228,6 +752,10 @@ static struct clockdomain cam_clkdm = {
228 .name = "cam_clkdm", 752 .name = "cam_clkdm",
229 .pwrdm = { .name = "cam_pwrdm" }, 753 .pwrdm = { .name = "cam_pwrdm" },
230 .flags = CLKDM_CAN_HWSUP_SWSUP, 754 .flags = CLKDM_CAN_HWSUP_SWSUP,
755 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_CAM_MOD,
756 OMAP2_CM_CLKSTCTRL),
757 .wkdep_srcs = cam_wkdeps,
758 .sleepdep_srcs = cam_sleepdeps,
231 .clktrctrl_mask = OMAP3430_CLKTRCTRL_CAM_MASK, 759 .clktrctrl_mask = OMAP3430_CLKTRCTRL_CAM_MASK,
232 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 760 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
233}; 761};
@@ -236,6 +764,10 @@ static struct clockdomain usbhost_clkdm = {
236 .name = "usbhost_clkdm", 764 .name = "usbhost_clkdm",
237 .pwrdm = { .name = "usbhost_pwrdm" }, 765 .pwrdm = { .name = "usbhost_pwrdm" },
238 .flags = CLKDM_CAN_HWSUP_SWSUP, 766 .flags = CLKDM_CAN_HWSUP_SWSUP,
767 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430ES2_USBHOST_MOD,
768 OMAP2_CM_CLKSTCTRL),
769 .wkdep_srcs = usbhost_wkdeps,
770 .sleepdep_srcs = usbhost_sleepdeps,
239 .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_USBHOST_MASK, 771 .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_USBHOST_MASK,
240 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2), 772 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
241}; 773};
@@ -244,6 +776,11 @@ static struct clockdomain per_clkdm = {
244 .name = "per_clkdm", 776 .name = "per_clkdm",
245 .pwrdm = { .name = "per_pwrdm" }, 777 .pwrdm = { .name = "per_pwrdm" },
246 .flags = CLKDM_CAN_HWSUP_SWSUP, 778 .flags = CLKDM_CAN_HWSUP_SWSUP,
779 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD,
780 OMAP2_CM_CLKSTCTRL),
781 .dep_bit = OMAP3430_EN_PER_SHIFT,
782 .wkdep_srcs = per_wkdeps,
783 .sleepdep_srcs = per_sleepdeps,
247 .clktrctrl_mask = OMAP3430_CLKTRCTRL_PER_MASK, 784 .clktrctrl_mask = OMAP3430_CLKTRCTRL_PER_MASK,
248 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 785 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
249}; 786};
@@ -256,6 +793,8 @@ static struct clockdomain emu_clkdm = {
256 .name = "emu_clkdm", 793 .name = "emu_clkdm",
257 .pwrdm = { .name = "emu_pwrdm" }, 794 .pwrdm = { .name = "emu_pwrdm" },
258 .flags = /* CLKDM_CAN_ENABLE_AUTO | */CLKDM_CAN_SWSUP, 795 .flags = /* CLKDM_CAN_ENABLE_AUTO | */CLKDM_CAN_SWSUP,
796 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_EMU_MOD,
797 OMAP2_CM_CLKSTCTRL),
259 .clktrctrl_mask = OMAP3430_CLKTRCTRL_EMU_MASK, 798 .clktrctrl_mask = OMAP3430_CLKTRCTRL_EMU_MASK,
260 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 799 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
261}; 800};
@@ -290,64 +829,70 @@ static struct clockdomain dpll5_clkdm = {
290 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2), 829 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
291}; 830};
292 831
293#endif /* CONFIG_ARCH_OMAP34XX */ 832#endif /* CONFIG_ARCH_OMAP3 */
833
834#include "clockdomains44xx.h"
294 835
295/* 836/*
296 * Clockdomain-powerdomain hwsup dependencies (34XX only) 837 * Clockdomain hwsup dependencies (OMAP3 only)
297 */ 838 */
298 839
299static struct clkdm_pwrdm_autodep clkdm_pwrdm_autodeps[] = { 840static struct clkdm_autodep clkdm_autodeps[] = {
300 { 841 {
301 .pwrdm = { .name = "mpu_pwrdm" }, 842 .clkdm = { .name = "mpu_clkdm" },
302 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430) 843 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
303 }, 844 },
304 { 845 {
305 .pwrdm = { .name = "iva2_pwrdm" }, 846 .clkdm = { .name = "iva2_clkdm" },
306 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430) 847 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
307 }, 848 },
308 { 849 {
309 .pwrdm = { .name = NULL }, 850 .clkdm = { .name = NULL },
310 } 851 }
311}; 852};
312 853
313/* 854/*
314 * 855 * List of clockdomain pointers per platform
315 */ 856 */
316 857
317static struct clockdomain *clockdomains_omap[] = { 858static struct clockdomain *clockdomains_omap[] = {
318 859
860#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
319 &wkup_clkdm, 861 &wkup_clkdm,
320 &cm_clkdm, 862 &cm_clkdm,
321 &prm_clkdm, 863 &prm_clkdm,
864#endif
322 865
323#ifdef CONFIG_ARCH_OMAP2420 866#ifdef CONFIG_ARCH_OMAP2420
324 &mpu_2420_clkdm, 867 &mpu_2420_clkdm,
325 &iva1_2420_clkdm, 868 &iva1_2420_clkdm,
869 &dsp_2420_clkdm,
870 &gfx_2420_clkdm,
871 &core_l3_2420_clkdm,
872 &core_l4_2420_clkdm,
873 &dss_2420_clkdm,
326#endif 874#endif
327 875
328#ifdef CONFIG_ARCH_OMAP2430 876#ifdef CONFIG_ARCH_OMAP2430
329 &mpu_2430_clkdm, 877 &mpu_2430_clkdm,
330 &mdm_clkdm, 878 &mdm_clkdm,
879 &dsp_2430_clkdm,
880 &gfx_2430_clkdm,
881 &core_l3_2430_clkdm,
882 &core_l4_2430_clkdm,
883 &dss_2430_clkdm,
331#endif 884#endif
332 885
333#ifdef CONFIG_ARCH_OMAP24XX 886#ifdef CONFIG_ARCH_OMAP3
334 &dsp_clkdm, 887 &mpu_3xxx_clkdm,
335 &gfx_24xx_clkdm,
336 &core_l3_24xx_clkdm,
337 &core_l4_24xx_clkdm,
338 &dss_24xx_clkdm,
339#endif
340
341#ifdef CONFIG_ARCH_OMAP34XX
342 &mpu_34xx_clkdm,
343 &neon_clkdm, 888 &neon_clkdm,
344 &iva2_clkdm, 889 &iva2_clkdm,
345 &gfx_3430es1_clkdm, 890 &gfx_3430es1_clkdm,
346 &sgx_clkdm, 891 &sgx_clkdm,
347 &d2d_clkdm, 892 &d2d_clkdm,
348 &core_l3_34xx_clkdm, 893 &core_l3_3xxx_clkdm,
349 &core_l4_34xx_clkdm, 894 &core_l4_3xxx_clkdm,
350 &dss_34xx_clkdm, 895 &dss_3xxx_clkdm,
351 &cam_clkdm, 896 &cam_clkdm,
352 &usbhost_clkdm, 897 &usbhost_clkdm,
353 &per_clkdm, 898 &per_clkdm,
@@ -359,6 +904,33 @@ static struct clockdomain *clockdomains_omap[] = {
359 &dpll5_clkdm, 904 &dpll5_clkdm,
360#endif 905#endif
361 906
907#ifdef CONFIG_ARCH_OMAP4
908 &l4_cefuse_44xx_clkdm,
909 &l4_cfg_44xx_clkdm,
910 &tesla_44xx_clkdm,
911 &l3_gfx_44xx_clkdm,
912 &ivahd_44xx_clkdm,
913 &l4_secure_44xx_clkdm,
914 &l4_per_44xx_clkdm,
915 &abe_44xx_clkdm,
916 &l3_instr_44xx_clkdm,
917 &l3_init_44xx_clkdm,
918 &mpuss_44xx_clkdm,
919 &mpu0_44xx_clkdm,
920 &mpu1_44xx_clkdm,
921 &l3_emif_44xx_clkdm,
922 &l4_ao_44xx_clkdm,
923 &ducati_44xx_clkdm,
924 &l3_2_44xx_clkdm,
925 &l3_1_44xx_clkdm,
926 &l3_d2d_44xx_clkdm,
927 &iss_44xx_clkdm,
928 &l3_dss_44xx_clkdm,
929 &l4_wkup_44xx_clkdm,
930 &emu_sys_44xx_clkdm,
931 &l3_dma_44xx_clkdm,
932#endif
933
362 NULL, 934 NULL,
363}; 935};
364 936
diff --git a/arch/arm/mach-omap2/clockdomains44xx.h b/arch/arm/mach-omap2/clockdomains44xx.h
new file mode 100644
index 000000000000..438aaee2e392
--- /dev/null
+++ b/arch/arm/mach-omap2/clockdomains44xx.h
@@ -0,0 +1,250 @@
1/*
2 * OMAP4 Clock domains framework
3 *
4 * Copyright (C) 2009 Texas Instruments, Inc.
5 * Copyright (C) 2009 Nokia Corporation
6 *
7 * Abhijit Pagare (abhijitpagare@ti.com)
8 * Benoit Cousson (b-cousson@ti.com)
9 *
10 * This file is automatically generated from the OMAP hardware databases.
11 * We respectfully ask that any modifications to this file be coordinated
12 * with the public linux-omap@vger.kernel.org mailing list and the
13 * authors above to ensure that the autogeneration scripts are kept
14 * up-to-date with the file contents.
15 *
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License version 2 as
18 * published by the Free Software Foundation.
19 */
20
21/*
22 * To-Do List
23 * -> Populate the Sleep/Wakeup dependencies for the domains
24 */
25
26#ifndef __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS44XX_H
27#define __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS44XX_H
28
29#include <plat/clockdomain.h>
30
31#if defined(CONFIG_ARCH_OMAP4)
32
33static struct clockdomain l4_cefuse_44xx_clkdm = {
34 .name = "l4_cefuse_clkdm",
35 .pwrdm = { .name = "cefuse_pwrdm" },
36 .clkstctrl_reg = OMAP4430_CM_CEFUSE_CLKSTCTRL,
37 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
38 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
39 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
40};
41
42static struct clockdomain l4_cfg_44xx_clkdm = {
43 .name = "l4_cfg_clkdm",
44 .pwrdm = { .name = "core_pwrdm" },
45 .clkstctrl_reg = OMAP4430_CM_L4CFG_CLKSTCTRL,
46 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
47 .flags = CLKDM_CAN_HWSUP,
48 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
49};
50
51static struct clockdomain tesla_44xx_clkdm = {
52 .name = "tesla_clkdm",
53 .pwrdm = { .name = "tesla_pwrdm" },
54 .clkstctrl_reg = OMAP4430_CM_TESLA_CLKSTCTRL,
55 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
56 .flags = CLKDM_CAN_HWSUP_SWSUP,
57 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
58};
59
60static struct clockdomain l3_gfx_44xx_clkdm = {
61 .name = "l3_gfx_clkdm",
62 .pwrdm = { .name = "gfx_pwrdm" },
63 .clkstctrl_reg = OMAP4430_CM_GFX_CLKSTCTRL,
64 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
65 .flags = CLKDM_CAN_HWSUP_SWSUP,
66 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
67};
68
69static struct clockdomain ivahd_44xx_clkdm = {
70 .name = "ivahd_clkdm",
71 .pwrdm = { .name = "ivahd_pwrdm" },
72 .clkstctrl_reg = OMAP4430_CM_IVAHD_CLKSTCTRL,
73 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
74 .flags = CLKDM_CAN_HWSUP_SWSUP,
75 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
76};
77
78static struct clockdomain l4_secure_44xx_clkdm = {
79 .name = "l4_secure_clkdm",
80 .pwrdm = { .name = "l4per_pwrdm" },
81 .clkstctrl_reg = OMAP4430_CM_L4SEC_CLKSTCTRL,
82 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
83 .flags = CLKDM_CAN_HWSUP_SWSUP,
84 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
85};
86
87static struct clockdomain l4_per_44xx_clkdm = {
88 .name = "l4_per_clkdm",
89 .pwrdm = { .name = "l4per_pwrdm" },
90 .clkstctrl_reg = OMAP4430_CM_L4PER_CLKSTCTRL,
91 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
92 .flags = CLKDM_CAN_HWSUP_SWSUP,
93 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
94};
95
96static struct clockdomain abe_44xx_clkdm = {
97 .name = "abe_clkdm",
98 .pwrdm = { .name = "abe_pwrdm" },
99 .clkstctrl_reg = OMAP4430_CM1_ABE_CLKSTCTRL,
100 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
101 .flags = CLKDM_CAN_HWSUP_SWSUP,
102 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
103};
104
105static struct clockdomain l3_instr_44xx_clkdm = {
106 .name = "l3_instr_clkdm",
107 .pwrdm = { .name = "core_pwrdm" },
108 .clkstctrl_reg = OMAP4430_CM_L3INSTR_CLKSTCTRL,
109 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
110 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
111};
112
113static struct clockdomain l3_init_44xx_clkdm = {
114 .name = "l3_init_clkdm",
115 .pwrdm = { .name = "l3init_pwrdm" },
116 .clkstctrl_reg = OMAP4430_CM_L3INIT_CLKSTCTRL,
117 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
118 .flags = CLKDM_CAN_HWSUP_SWSUP,
119 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
120};
121
122static struct clockdomain mpuss_44xx_clkdm = {
123 .name = "mpuss_clkdm",
124 .pwrdm = { .name = "mpu_pwrdm" },
125 .clkstctrl_reg = OMAP4430_CM_MPU_CLKSTCTRL,
126 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
127 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
128 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
129};
130
131static struct clockdomain mpu0_44xx_clkdm = {
132 .name = "mpu0_clkdm",
133 .pwrdm = { .name = "cpu0_pwrdm" },
134 .clkstctrl_reg = OMAP4430_CM_PDA_CPU0_CLKSTCTRL,
135 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
136 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
137 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
138};
139
140static struct clockdomain mpu1_44xx_clkdm = {
141 .name = "mpu1_clkdm",
142 .pwrdm = { .name = "cpu1_pwrdm" },
143 .clkstctrl_reg = OMAP4430_CM_PDA_CPU1_CLKSTCTRL,
144 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
145 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
146 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
147};
148
149static struct clockdomain l3_emif_44xx_clkdm = {
150 .name = "l3_emif_clkdm",
151 .pwrdm = { .name = "core_pwrdm" },
152 .clkstctrl_reg = OMAP4430_CM_MEMIF_CLKSTCTRL,
153 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
154 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
155 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
156};
157
158static struct clockdomain l4_ao_44xx_clkdm = {
159 .name = "l4_ao_clkdm",
160 .pwrdm = { .name = "always_on_core_pwrdm" },
161 .clkstctrl_reg = OMAP4430_CM_ALWON_CLKSTCTRL,
162 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
163 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
164 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
165};
166
167static struct clockdomain ducati_44xx_clkdm = {
168 .name = "ducati_clkdm",
169 .pwrdm = { .name = "core_pwrdm" },
170 .clkstctrl_reg = OMAP4430_CM_DUCATI_CLKSTCTRL,
171 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
172 .flags = CLKDM_CAN_HWSUP_SWSUP,
173 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
174};
175
176static struct clockdomain l3_2_44xx_clkdm = {
177 .name = "l3_2_clkdm",
178 .pwrdm = { .name = "core_pwrdm" },
179 .clkstctrl_reg = OMAP4430_CM_L3_2_CLKSTCTRL,
180 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
181 .flags = CLKDM_CAN_HWSUP,
182 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
183};
184
185static struct clockdomain l3_1_44xx_clkdm = {
186 .name = "l3_1_clkdm",
187 .pwrdm = { .name = "core_pwrdm" },
188 .clkstctrl_reg = OMAP4430_CM_L3_1_CLKSTCTRL,
189 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
190 .flags = CLKDM_CAN_HWSUP,
191 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
192};
193
194static struct clockdomain l3_d2d_44xx_clkdm = {
195 .name = "l3_d2d_clkdm",
196 .pwrdm = { .name = "core_pwrdm" },
197 .clkstctrl_reg = OMAP4430_CM_D2D_CLKSTCTRL,
198 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
199 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
200 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
201};
202
203static struct clockdomain iss_44xx_clkdm = {
204 .name = "iss_clkdm",
205 .pwrdm = { .name = "cam_pwrdm" },
206 .clkstctrl_reg = OMAP4430_CM_CAM_CLKSTCTRL,
207 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
208 .flags = CLKDM_CAN_HWSUP_SWSUP,
209 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
210};
211
212static struct clockdomain l3_dss_44xx_clkdm = {
213 .name = "l3_dss_clkdm",
214 .pwrdm = { .name = "dss_pwrdm" },
215 .clkstctrl_reg = OMAP4430_CM_DSS_CLKSTCTRL,
216 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
217 .flags = CLKDM_CAN_HWSUP_SWSUP,
218 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
219};
220
221static struct clockdomain l4_wkup_44xx_clkdm = {
222 .name = "l4_wkup_clkdm",
223 .pwrdm = { .name = "wkup_pwrdm" },
224 .clkstctrl_reg = OMAP4430_CM_WKUP_CLKSTCTRL,
225 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
226 .flags = CLKDM_CAN_HWSUP,
227 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
228};
229
230static struct clockdomain emu_sys_44xx_clkdm = {
231 .name = "emu_sys_clkdm",
232 .pwrdm = { .name = "emu_pwrdm" },
233 .clkstctrl_reg = OMAP4430_CM_EMU_CLKSTCTRL,
234 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
235 .flags = CLKDM_CAN_HWSUP,
236 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
237};
238
239static struct clockdomain l3_dma_44xx_clkdm = {
240 .name = "l3_dma_clkdm",
241 .pwrdm = { .name = "core_pwrdm" },
242 .clkstctrl_reg = OMAP4430_CM_SDMA_CLKSTCTRL,
243 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
244 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
245 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
246};
247
248#endif
249
250#endif
diff --git a/arch/arm/mach-omap2/cm-regbits-44xx.h b/arch/arm/mach-omap2/cm-regbits-44xx.h
index 0e67f75aa35c..ac8458e43252 100644
--- a/arch/arm/mach-omap2/cm-regbits-44xx.h
+++ b/arch/arm/mach-omap2/cm-regbits-44xx.h
@@ -26,7 +26,7 @@
26 26
27 27
28/* Used by CM_L3_1_DYNAMICDEP, CM_MPU_DYNAMICDEP, CM_TESLA_DYNAMICDEP */ 28/* Used by CM_L3_1_DYNAMICDEP, CM_MPU_DYNAMICDEP, CM_TESLA_DYNAMICDEP */
29#define OMAP4430_ABE_DYNDEP_SHIFT (1 << 3) 29#define OMAP4430_ABE_DYNDEP_SHIFT 3
30#define OMAP4430_ABE_DYNDEP_MASK BITFIELD(3, 3) 30#define OMAP4430_ABE_DYNDEP_MASK BITFIELD(3, 3)
31 31
32/* 32/*
@@ -34,15 +34,15 @@
34 * CM_L3INIT_STATICDEP, CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP, 34 * CM_L3INIT_STATICDEP, CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP,
35 * CM_TESLA_STATICDEP 35 * CM_TESLA_STATICDEP
36 */ 36 */
37#define OMAP4430_ABE_STATDEP_SHIFT (1 << 3) 37#define OMAP4430_ABE_STATDEP_SHIFT 3
38#define OMAP4430_ABE_STATDEP_MASK BITFIELD(3, 3) 38#define OMAP4430_ABE_STATDEP_MASK BITFIELD(3, 3)
39 39
40/* Used by CM_L4CFG_DYNAMICDEP */ 40/* Used by CM_L4CFG_DYNAMICDEP */
41#define OMAP4430_ALWONCORE_DYNDEP_SHIFT (1 << 16) 41#define OMAP4430_ALWONCORE_DYNDEP_SHIFT 16
42#define OMAP4430_ALWONCORE_DYNDEP_MASK BITFIELD(16, 16) 42#define OMAP4430_ALWONCORE_DYNDEP_MASK BITFIELD(16, 16)
43 43
44/* Used by CM_DUCATI_STATICDEP, CM_MPU_STATICDEP, CM_TESLA_STATICDEP */ 44/* Used by CM_DUCATI_STATICDEP, CM_MPU_STATICDEP, CM_TESLA_STATICDEP */
45#define OMAP4430_ALWONCORE_STATDEP_SHIFT (1 << 16) 45#define OMAP4430_ALWONCORE_STATDEP_SHIFT 16
46#define OMAP4430_ALWONCORE_STATDEP_MASK BITFIELD(16, 16) 46#define OMAP4430_ALWONCORE_STATDEP_MASK BITFIELD(16, 16)
47 47
48/* 48/*
@@ -50,371 +50,371 @@
50 * CM_AUTOIDLE_DPLL_CORE_RESTORE, CM_AUTOIDLE_DPLL_ABE, CM_AUTOIDLE_DPLL_CORE, 50 * CM_AUTOIDLE_DPLL_CORE_RESTORE, CM_AUTOIDLE_DPLL_ABE, CM_AUTOIDLE_DPLL_CORE,
51 * CM_AUTOIDLE_DPLL_DDRPHY, CM_AUTOIDLE_DPLL_IVA, CM_AUTOIDLE_DPLL_MPU 51 * CM_AUTOIDLE_DPLL_DDRPHY, CM_AUTOIDLE_DPLL_IVA, CM_AUTOIDLE_DPLL_MPU
52 */ 52 */
53#define OMAP4430_AUTO_DPLL_MODE_SHIFT (1 << 0) 53#define OMAP4430_AUTO_DPLL_MODE_SHIFT 0
54#define OMAP4430_AUTO_DPLL_MODE_MASK BITFIELD(0, 2) 54#define OMAP4430_AUTO_DPLL_MODE_MASK BITFIELD(0, 2)
55 55
56/* Used by CM_L4CFG_DYNAMICDEP */ 56/* Used by CM_L4CFG_DYNAMICDEP */
57#define OMAP4430_CEFUSE_DYNDEP_SHIFT (1 << 17) 57#define OMAP4430_CEFUSE_DYNDEP_SHIFT 17
58#define OMAP4430_CEFUSE_DYNDEP_MASK BITFIELD(17, 17) 58#define OMAP4430_CEFUSE_DYNDEP_MASK BITFIELD(17, 17)
59 59
60/* Used by CM_DUCATI_STATICDEP, CM_MPU_STATICDEP, CM_TESLA_STATICDEP */ 60/* Used by CM_DUCATI_STATICDEP, CM_MPU_STATICDEP, CM_TESLA_STATICDEP */
61#define OMAP4430_CEFUSE_STATDEP_SHIFT (1 << 17) 61#define OMAP4430_CEFUSE_STATDEP_SHIFT 17
62#define OMAP4430_CEFUSE_STATDEP_MASK BITFIELD(17, 17) 62#define OMAP4430_CEFUSE_STATDEP_MASK BITFIELD(17, 17)
63 63
64/* Used by CM1_ABE_CLKSTCTRL */ 64/* Used by CM1_ABE_CLKSTCTRL */
65#define OMAP4430_CLKACTIVITY_ABE_24M_GFCLK_SHIFT (1 << 13) 65#define OMAP4430_CLKACTIVITY_ABE_24M_GFCLK_SHIFT 13
66#define OMAP4430_CLKACTIVITY_ABE_24M_GFCLK_MASK BITFIELD(13, 13) 66#define OMAP4430_CLKACTIVITY_ABE_24M_GFCLK_MASK BITFIELD(13, 13)
67 67
68/* Used by CM1_ABE_CLKSTCTRL */ 68/* Used by CM1_ABE_CLKSTCTRL */
69#define OMAP4430_CLKACTIVITY_ABE_ALWON_32K_CLK_SHIFT (1 << 12) 69#define OMAP4430_CLKACTIVITY_ABE_ALWON_32K_CLK_SHIFT 12
70#define OMAP4430_CLKACTIVITY_ABE_ALWON_32K_CLK_MASK BITFIELD(12, 12) 70#define OMAP4430_CLKACTIVITY_ABE_ALWON_32K_CLK_MASK BITFIELD(12, 12)
71 71
72/* Used by CM_WKUP_CLKSTCTRL */ 72/* Used by CM_WKUP_CLKSTCTRL */
73#define OMAP4430_CLKACTIVITY_ABE_LP_CLK_SHIFT (1 << 9) 73#define OMAP4430_CLKACTIVITY_ABE_LP_CLK_SHIFT 9
74#define OMAP4430_CLKACTIVITY_ABE_LP_CLK_MASK BITFIELD(9, 9) 74#define OMAP4430_CLKACTIVITY_ABE_LP_CLK_MASK BITFIELD(9, 9)
75 75
76/* Used by CM1_ABE_CLKSTCTRL */ 76/* Used by CM1_ABE_CLKSTCTRL */
77#define OMAP4430_CLKACTIVITY_ABE_SYSCLK_SHIFT (1 << 11) 77#define OMAP4430_CLKACTIVITY_ABE_SYSCLK_SHIFT 11
78#define OMAP4430_CLKACTIVITY_ABE_SYSCLK_MASK BITFIELD(11, 11) 78#define OMAP4430_CLKACTIVITY_ABE_SYSCLK_MASK BITFIELD(11, 11)
79 79
80/* Used by CM1_ABE_CLKSTCTRL */ 80/* Used by CM1_ABE_CLKSTCTRL */
81#define OMAP4430_CLKACTIVITY_ABE_X2_CLK_SHIFT (1 << 8) 81#define OMAP4430_CLKACTIVITY_ABE_X2_CLK_SHIFT 8
82#define OMAP4430_CLKACTIVITY_ABE_X2_CLK_MASK BITFIELD(8, 8) 82#define OMAP4430_CLKACTIVITY_ABE_X2_CLK_MASK BITFIELD(8, 8)
83 83
84/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */ 84/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */
85#define OMAP4430_CLKACTIVITY_ASYNC_DLL_CLK_SHIFT (1 << 11) 85#define OMAP4430_CLKACTIVITY_ASYNC_DLL_CLK_SHIFT 11
86#define OMAP4430_CLKACTIVITY_ASYNC_DLL_CLK_MASK BITFIELD(11, 11) 86#define OMAP4430_CLKACTIVITY_ASYNC_DLL_CLK_MASK BITFIELD(11, 11)
87 87
88/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */ 88/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */
89#define OMAP4430_CLKACTIVITY_ASYNC_PHY1_CLK_SHIFT (1 << 12) 89#define OMAP4430_CLKACTIVITY_ASYNC_PHY1_CLK_SHIFT 12
90#define OMAP4430_CLKACTIVITY_ASYNC_PHY1_CLK_MASK BITFIELD(12, 12) 90#define OMAP4430_CLKACTIVITY_ASYNC_PHY1_CLK_MASK BITFIELD(12, 12)
91 91
92/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */ 92/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */
93#define OMAP4430_CLKACTIVITY_ASYNC_PHY2_CLK_SHIFT (1 << 13) 93#define OMAP4430_CLKACTIVITY_ASYNC_PHY2_CLK_SHIFT 13
94#define OMAP4430_CLKACTIVITY_ASYNC_PHY2_CLK_MASK BITFIELD(13, 13) 94#define OMAP4430_CLKACTIVITY_ASYNC_PHY2_CLK_MASK BITFIELD(13, 13)
95 95
96/* Used by CM_CAM_CLKSTCTRL */ 96/* Used by CM_CAM_CLKSTCTRL */
97#define OMAP4430_CLKACTIVITY_CAM_PHY_CTRL_GCLK_SHIFT (1 << 9) 97#define OMAP4430_CLKACTIVITY_CAM_PHY_CTRL_GCLK_SHIFT 9
98#define OMAP4430_CLKACTIVITY_CAM_PHY_CTRL_GCLK_MASK BITFIELD(9, 9) 98#define OMAP4430_CLKACTIVITY_CAM_PHY_CTRL_GCLK_MASK BITFIELD(9, 9)
99 99
100/* Used by CM_EMU_CLKSTCTRL */ 100/* Used by CM_EMU_CLKSTCTRL */
101#define OMAP4430_CLKACTIVITY_CORE_DPLL_EMU_CLK_SHIFT (1 << 9) 101#define OMAP4430_CLKACTIVITY_CORE_DPLL_EMU_CLK_SHIFT 9
102#define OMAP4430_CLKACTIVITY_CORE_DPLL_EMU_CLK_MASK BITFIELD(9, 9) 102#define OMAP4430_CLKACTIVITY_CORE_DPLL_EMU_CLK_MASK BITFIELD(9, 9)
103 103
104/* Used by CM_CEFUSE_CLKSTCTRL */ 104/* Used by CM_CEFUSE_CLKSTCTRL */
105#define OMAP4430_CLKACTIVITY_CUST_EFUSE_SYS_CLK_SHIFT (1 << 9) 105#define OMAP4430_CLKACTIVITY_CUST_EFUSE_SYS_CLK_SHIFT 9
106#define OMAP4430_CLKACTIVITY_CUST_EFUSE_SYS_CLK_MASK BITFIELD(9, 9) 106#define OMAP4430_CLKACTIVITY_CUST_EFUSE_SYS_CLK_MASK BITFIELD(9, 9)
107 107
108/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */ 108/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */
109#define OMAP4430_CLKACTIVITY_DLL_CLK_SHIFT (1 << 9) 109#define OMAP4430_CLKACTIVITY_DLL_CLK_SHIFT 9
110#define OMAP4430_CLKACTIVITY_DLL_CLK_MASK BITFIELD(9, 9) 110#define OMAP4430_CLKACTIVITY_DLL_CLK_MASK BITFIELD(9, 9)
111 111
112/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 112/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
113#define OMAP4430_CLKACTIVITY_DMT10_GFCLK_SHIFT (1 << 9) 113#define OMAP4430_CLKACTIVITY_DMT10_GFCLK_SHIFT 9
114#define OMAP4430_CLKACTIVITY_DMT10_GFCLK_MASK BITFIELD(9, 9) 114#define OMAP4430_CLKACTIVITY_DMT10_GFCLK_MASK BITFIELD(9, 9)
115 115
116/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 116/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
117#define OMAP4430_CLKACTIVITY_DMT11_GFCLK_SHIFT (1 << 10) 117#define OMAP4430_CLKACTIVITY_DMT11_GFCLK_SHIFT 10
118#define OMAP4430_CLKACTIVITY_DMT11_GFCLK_MASK BITFIELD(10, 10) 118#define OMAP4430_CLKACTIVITY_DMT11_GFCLK_MASK BITFIELD(10, 10)
119 119
120/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 120/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
121#define OMAP4430_CLKACTIVITY_DMT2_GFCLK_SHIFT (1 << 11) 121#define OMAP4430_CLKACTIVITY_DMT2_GFCLK_SHIFT 11
122#define OMAP4430_CLKACTIVITY_DMT2_GFCLK_MASK BITFIELD(11, 11) 122#define OMAP4430_CLKACTIVITY_DMT2_GFCLK_MASK BITFIELD(11, 11)
123 123
124/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 124/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
125#define OMAP4430_CLKACTIVITY_DMT3_GFCLK_SHIFT (1 << 12) 125#define OMAP4430_CLKACTIVITY_DMT3_GFCLK_SHIFT 12
126#define OMAP4430_CLKACTIVITY_DMT3_GFCLK_MASK BITFIELD(12, 12) 126#define OMAP4430_CLKACTIVITY_DMT3_GFCLK_MASK BITFIELD(12, 12)
127 127
128/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 128/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
129#define OMAP4430_CLKACTIVITY_DMT4_GFCLK_SHIFT (1 << 13) 129#define OMAP4430_CLKACTIVITY_DMT4_GFCLK_SHIFT 13
130#define OMAP4430_CLKACTIVITY_DMT4_GFCLK_MASK BITFIELD(13, 13) 130#define OMAP4430_CLKACTIVITY_DMT4_GFCLK_MASK BITFIELD(13, 13)
131 131
132/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 132/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
133#define OMAP4430_CLKACTIVITY_DMT9_GFCLK_SHIFT (1 << 14) 133#define OMAP4430_CLKACTIVITY_DMT9_GFCLK_SHIFT 14
134#define OMAP4430_CLKACTIVITY_DMT9_GFCLK_MASK BITFIELD(14, 14) 134#define OMAP4430_CLKACTIVITY_DMT9_GFCLK_MASK BITFIELD(14, 14)
135 135
136/* Used by CM_DSS_CLKSTCTRL */ 136/* Used by CM_DSS_CLKSTCTRL */
137#define OMAP4430_CLKACTIVITY_DSS_ALWON_SYS_CLK_SHIFT (1 << 10) 137#define OMAP4430_CLKACTIVITY_DSS_ALWON_SYS_CLK_SHIFT 10
138#define OMAP4430_CLKACTIVITY_DSS_ALWON_SYS_CLK_MASK BITFIELD(10, 10) 138#define OMAP4430_CLKACTIVITY_DSS_ALWON_SYS_CLK_MASK BITFIELD(10, 10)
139 139
140/* Used by CM_DSS_CLKSTCTRL */ 140/* Used by CM_DSS_CLKSTCTRL */
141#define OMAP4430_CLKACTIVITY_DSS_FCLK_SHIFT (1 << 9) 141#define OMAP4430_CLKACTIVITY_DSS_FCLK_SHIFT 9
142#define OMAP4430_CLKACTIVITY_DSS_FCLK_MASK BITFIELD(9, 9) 142#define OMAP4430_CLKACTIVITY_DSS_FCLK_MASK BITFIELD(9, 9)
143 143
144/* Used by CM_DUCATI_CLKSTCTRL */ 144/* Used by CM_DUCATI_CLKSTCTRL */
145#define OMAP4430_CLKACTIVITY_DUCATI_GCLK_SHIFT (1 << 8) 145#define OMAP4430_CLKACTIVITY_DUCATI_GCLK_SHIFT 8
146#define OMAP4430_CLKACTIVITY_DUCATI_GCLK_MASK BITFIELD(8, 8) 146#define OMAP4430_CLKACTIVITY_DUCATI_GCLK_MASK BITFIELD(8, 8)
147 147
148/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 148/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
149#define OMAP4430_CLKACTIVITY_EMAC_50MHZ_CLK_SHIFT (1 << 10) 149#define OMAP4430_CLKACTIVITY_EMAC_50MHZ_CLK_SHIFT 10
150#define OMAP4430_CLKACTIVITY_EMAC_50MHZ_CLK_MASK BITFIELD(10, 10) 150#define OMAP4430_CLKACTIVITY_EMAC_50MHZ_CLK_MASK BITFIELD(10, 10)
151 151
152/* Used by CM_EMU_CLKSTCTRL */ 152/* Used by CM_EMU_CLKSTCTRL */
153#define OMAP4430_CLKACTIVITY_EMU_SYS_CLK_SHIFT (1 << 8) 153#define OMAP4430_CLKACTIVITY_EMU_SYS_CLK_SHIFT 8
154#define OMAP4430_CLKACTIVITY_EMU_SYS_CLK_MASK BITFIELD(8, 8) 154#define OMAP4430_CLKACTIVITY_EMU_SYS_CLK_MASK BITFIELD(8, 8)
155 155
156/* Used by CM_CAM_CLKSTCTRL */ 156/* Used by CM_CAM_CLKSTCTRL */
157#define OMAP4430_CLKACTIVITY_FDIF_GFCLK_SHIFT (1 << 10) 157#define OMAP4430_CLKACTIVITY_FDIF_GFCLK_SHIFT 10
158#define OMAP4430_CLKACTIVITY_FDIF_GFCLK_MASK BITFIELD(10, 10) 158#define OMAP4430_CLKACTIVITY_FDIF_GFCLK_MASK BITFIELD(10, 10)
159 159
160/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 160/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
161#define OMAP4430_CLKACTIVITY_FUNC_12M_GFCLK_SHIFT (1 << 15) 161#define OMAP4430_CLKACTIVITY_FUNC_12M_GFCLK_SHIFT 15
162#define OMAP4430_CLKACTIVITY_FUNC_12M_GFCLK_MASK BITFIELD(15, 15) 162#define OMAP4430_CLKACTIVITY_FUNC_12M_GFCLK_MASK BITFIELD(15, 15)
163 163
164/* Used by CM1_ABE_CLKSTCTRL */ 164/* Used by CM1_ABE_CLKSTCTRL */
165#define OMAP4430_CLKACTIVITY_FUNC_24M_GFCLK_SHIFT (1 << 10) 165#define OMAP4430_CLKACTIVITY_FUNC_24M_GFCLK_SHIFT 10
166#define OMAP4430_CLKACTIVITY_FUNC_24M_GFCLK_MASK BITFIELD(10, 10) 166#define OMAP4430_CLKACTIVITY_FUNC_24M_GFCLK_MASK BITFIELD(10, 10)
167 167
168/* Used by CM_DSS_CLKSTCTRL */ 168/* Used by CM_DSS_CLKSTCTRL */
169#define OMAP4430_CLKACTIVITY_HDMI_PHY_48MHZ_GFCLK_SHIFT (1 << 11) 169#define OMAP4430_CLKACTIVITY_HDMI_PHY_48MHZ_GFCLK_SHIFT 11
170#define OMAP4430_CLKACTIVITY_HDMI_PHY_48MHZ_GFCLK_MASK BITFIELD(11, 11) 170#define OMAP4430_CLKACTIVITY_HDMI_PHY_48MHZ_GFCLK_MASK BITFIELD(11, 11)
171 171
172/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 172/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
173#define OMAP4430_CLKACTIVITY_HSIC_P1_480M_GFCLK_SHIFT (1 << 20) 173#define OMAP4430_CLKACTIVITY_HSIC_P1_480M_GFCLK_SHIFT 20
174#define OMAP4430_CLKACTIVITY_HSIC_P1_480M_GFCLK_MASK BITFIELD(20, 20) 174#define OMAP4430_CLKACTIVITY_HSIC_P1_480M_GFCLK_MASK BITFIELD(20, 20)
175 175
176/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 176/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
177#define OMAP4430_CLKACTIVITY_HSIC_P1_GFCLK_SHIFT (1 << 26) 177#define OMAP4430_CLKACTIVITY_HSIC_P1_GFCLK_SHIFT 26
178#define OMAP4430_CLKACTIVITY_HSIC_P1_GFCLK_MASK BITFIELD(26, 26) 178#define OMAP4430_CLKACTIVITY_HSIC_P1_GFCLK_MASK BITFIELD(26, 26)
179 179
180/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 180/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
181#define OMAP4430_CLKACTIVITY_HSIC_P2_480M_GFCLK_SHIFT (1 << 21) 181#define OMAP4430_CLKACTIVITY_HSIC_P2_480M_GFCLK_SHIFT 21
182#define OMAP4430_CLKACTIVITY_HSIC_P2_480M_GFCLK_MASK BITFIELD(21, 21) 182#define OMAP4430_CLKACTIVITY_HSIC_P2_480M_GFCLK_MASK BITFIELD(21, 21)
183 183
184/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 184/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
185#define OMAP4430_CLKACTIVITY_HSIC_P2_GFCLK_SHIFT (1 << 27) 185#define OMAP4430_CLKACTIVITY_HSIC_P2_GFCLK_SHIFT 27
186#define OMAP4430_CLKACTIVITY_HSIC_P2_GFCLK_MASK BITFIELD(27, 27) 186#define OMAP4430_CLKACTIVITY_HSIC_P2_GFCLK_MASK BITFIELD(27, 27)
187 187
188/* Used by CM_L3INIT_CLKSTCTRL */ 188/* Used by CM_L3INIT_CLKSTCTRL */
189#define OMAP4430_CLKACTIVITY_INIT_32K_GFCLK_SHIFT (1 << 31) 189#define OMAP4430_CLKACTIVITY_INIT_32K_GFCLK_SHIFT 31
190#define OMAP4430_CLKACTIVITY_INIT_32K_GFCLK_MASK BITFIELD(31, 31) 190#define OMAP4430_CLKACTIVITY_INIT_32K_GFCLK_MASK BITFIELD(31, 31)
191 191
192/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 192/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
193#define OMAP4430_CLKACTIVITY_INIT_48MC_GFCLK_SHIFT (1 << 13) 193#define OMAP4430_CLKACTIVITY_INIT_48MC_GFCLK_SHIFT 13
194#define OMAP4430_CLKACTIVITY_INIT_48MC_GFCLK_MASK BITFIELD(13, 13) 194#define OMAP4430_CLKACTIVITY_INIT_48MC_GFCLK_MASK BITFIELD(13, 13)
195 195
196/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 196/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
197#define OMAP4430_CLKACTIVITY_INIT_48M_GFCLK_SHIFT (1 << 12) 197#define OMAP4430_CLKACTIVITY_INIT_48M_GFCLK_SHIFT 12
198#define OMAP4430_CLKACTIVITY_INIT_48M_GFCLK_MASK BITFIELD(12, 12) 198#define OMAP4430_CLKACTIVITY_INIT_48M_GFCLK_MASK BITFIELD(12, 12)
199 199
200/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 200/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
201#define OMAP4430_CLKACTIVITY_INIT_60M_P1_GFCLK_SHIFT (1 << 28) 201#define OMAP4430_CLKACTIVITY_INIT_60M_P1_GFCLK_SHIFT 28
202#define OMAP4430_CLKACTIVITY_INIT_60M_P1_GFCLK_MASK BITFIELD(28, 28) 202#define OMAP4430_CLKACTIVITY_INIT_60M_P1_GFCLK_MASK BITFIELD(28, 28)
203 203
204/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 204/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
205#define OMAP4430_CLKACTIVITY_INIT_60M_P2_GFCLK_SHIFT (1 << 29) 205#define OMAP4430_CLKACTIVITY_INIT_60M_P2_GFCLK_SHIFT 29
206#define OMAP4430_CLKACTIVITY_INIT_60M_P2_GFCLK_MASK BITFIELD(29, 29) 206#define OMAP4430_CLKACTIVITY_INIT_60M_P2_GFCLK_MASK BITFIELD(29, 29)
207 207
208/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 208/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
209#define OMAP4430_CLKACTIVITY_INIT_96M_GFCLK_SHIFT (1 << 11) 209#define OMAP4430_CLKACTIVITY_INIT_96M_GFCLK_SHIFT 11
210#define OMAP4430_CLKACTIVITY_INIT_96M_GFCLK_MASK BITFIELD(11, 11) 210#define OMAP4430_CLKACTIVITY_INIT_96M_GFCLK_MASK BITFIELD(11, 11)
211 211
212/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 212/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
213#define OMAP4430_CLKACTIVITY_INIT_HSI_GFCLK_SHIFT (1 << 16) 213#define OMAP4430_CLKACTIVITY_INIT_HSI_GFCLK_SHIFT 16
214#define OMAP4430_CLKACTIVITY_INIT_HSI_GFCLK_MASK BITFIELD(16, 16) 214#define OMAP4430_CLKACTIVITY_INIT_HSI_GFCLK_MASK BITFIELD(16, 16)
215 215
216/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 216/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
217#define OMAP4430_CLKACTIVITY_INIT_HSMMC1_GFCLK_SHIFT (1 << 17) 217#define OMAP4430_CLKACTIVITY_INIT_HSMMC1_GFCLK_SHIFT 17
218#define OMAP4430_CLKACTIVITY_INIT_HSMMC1_GFCLK_MASK BITFIELD(17, 17) 218#define OMAP4430_CLKACTIVITY_INIT_HSMMC1_GFCLK_MASK BITFIELD(17, 17)
219 219
220/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 220/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
221#define OMAP4430_CLKACTIVITY_INIT_HSMMC2_GFCLK_SHIFT (1 << 18) 221#define OMAP4430_CLKACTIVITY_INIT_HSMMC2_GFCLK_SHIFT 18
222#define OMAP4430_CLKACTIVITY_INIT_HSMMC2_GFCLK_MASK BITFIELD(18, 18) 222#define OMAP4430_CLKACTIVITY_INIT_HSMMC2_GFCLK_MASK BITFIELD(18, 18)
223 223
224/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 224/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
225#define OMAP4430_CLKACTIVITY_INIT_HSMMC6_GFCLK_SHIFT (1 << 19) 225#define OMAP4430_CLKACTIVITY_INIT_HSMMC6_GFCLK_SHIFT 19
226#define OMAP4430_CLKACTIVITY_INIT_HSMMC6_GFCLK_MASK BITFIELD(19, 19) 226#define OMAP4430_CLKACTIVITY_INIT_HSMMC6_GFCLK_MASK BITFIELD(19, 19)
227 227
228/* Used by CM_CAM_CLKSTCTRL */ 228/* Used by CM_CAM_CLKSTCTRL */
229#define OMAP4430_CLKACTIVITY_ISS_GCLK_SHIFT (1 << 8) 229#define OMAP4430_CLKACTIVITY_ISS_GCLK_SHIFT 8
230#define OMAP4430_CLKACTIVITY_ISS_GCLK_MASK BITFIELD(8, 8) 230#define OMAP4430_CLKACTIVITY_ISS_GCLK_MASK BITFIELD(8, 8)
231 231
232/* Used by CM_IVAHD_CLKSTCTRL */ 232/* Used by CM_IVAHD_CLKSTCTRL */
233#define OMAP4430_CLKACTIVITY_IVAHD_ROOT_CLK_SHIFT (1 << 8) 233#define OMAP4430_CLKACTIVITY_IVAHD_ROOT_CLK_SHIFT 8
234#define OMAP4430_CLKACTIVITY_IVAHD_ROOT_CLK_MASK BITFIELD(8, 8) 234#define OMAP4430_CLKACTIVITY_IVAHD_ROOT_CLK_MASK BITFIELD(8, 8)
235 235
236/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 236/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
237#define OMAP4430_CLKACTIVITY_L3INIT_DPLL_ALWON_CLK_SHIFT (1 << 14) 237#define OMAP4430_CLKACTIVITY_L3INIT_DPLL_ALWON_CLK_SHIFT 14
238#define OMAP4430_CLKACTIVITY_L3INIT_DPLL_ALWON_CLK_MASK BITFIELD(14, 14) 238#define OMAP4430_CLKACTIVITY_L3INIT_DPLL_ALWON_CLK_MASK BITFIELD(14, 14)
239 239
240/* Used by CM_L3_1_CLKSTCTRL, CM_L3_1_CLKSTCTRL_RESTORE */ 240/* Used by CM_L3_1_CLKSTCTRL, CM_L3_1_CLKSTCTRL_RESTORE */
241#define OMAP4430_CLKACTIVITY_L3_1_GICLK_SHIFT (1 << 8) 241#define OMAP4430_CLKACTIVITY_L3_1_GICLK_SHIFT 8
242#define OMAP4430_CLKACTIVITY_L3_1_GICLK_MASK BITFIELD(8, 8) 242#define OMAP4430_CLKACTIVITY_L3_1_GICLK_MASK BITFIELD(8, 8)
243 243
244/* Used by CM_L3_2_CLKSTCTRL, CM_L3_2_CLKSTCTRL_RESTORE */ 244/* Used by CM_L3_2_CLKSTCTRL, CM_L3_2_CLKSTCTRL_RESTORE */
245#define OMAP4430_CLKACTIVITY_L3_2_GICLK_SHIFT (1 << 8) 245#define OMAP4430_CLKACTIVITY_L3_2_GICLK_SHIFT 8
246#define OMAP4430_CLKACTIVITY_L3_2_GICLK_MASK BITFIELD(8, 8) 246#define OMAP4430_CLKACTIVITY_L3_2_GICLK_MASK BITFIELD(8, 8)
247 247
248/* Used by CM_D2D_CLKSTCTRL */ 248/* Used by CM_D2D_CLKSTCTRL */
249#define OMAP4430_CLKACTIVITY_L3_D2D_GICLK_SHIFT (1 << 8) 249#define OMAP4430_CLKACTIVITY_L3_D2D_GICLK_SHIFT 8
250#define OMAP4430_CLKACTIVITY_L3_D2D_GICLK_MASK BITFIELD(8, 8) 250#define OMAP4430_CLKACTIVITY_L3_D2D_GICLK_MASK BITFIELD(8, 8)
251 251
252/* Used by CM_SDMA_CLKSTCTRL */ 252/* Used by CM_SDMA_CLKSTCTRL */
253#define OMAP4430_CLKACTIVITY_L3_DMA_GICLK_SHIFT (1 << 8) 253#define OMAP4430_CLKACTIVITY_L3_DMA_GICLK_SHIFT 8
254#define OMAP4430_CLKACTIVITY_L3_DMA_GICLK_MASK BITFIELD(8, 8) 254#define OMAP4430_CLKACTIVITY_L3_DMA_GICLK_MASK BITFIELD(8, 8)
255 255
256/* Used by CM_DSS_CLKSTCTRL */ 256/* Used by CM_DSS_CLKSTCTRL */
257#define OMAP4430_CLKACTIVITY_L3_DSS_GICLK_SHIFT (1 << 8) 257#define OMAP4430_CLKACTIVITY_L3_DSS_GICLK_SHIFT 8
258#define OMAP4430_CLKACTIVITY_L3_DSS_GICLK_MASK BITFIELD(8, 8) 258#define OMAP4430_CLKACTIVITY_L3_DSS_GICLK_MASK BITFIELD(8, 8)
259 259
260/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */ 260/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */
261#define OMAP4430_CLKACTIVITY_L3_EMIF_GICLK_SHIFT (1 << 8) 261#define OMAP4430_CLKACTIVITY_L3_EMIF_GICLK_SHIFT 8
262#define OMAP4430_CLKACTIVITY_L3_EMIF_GICLK_MASK BITFIELD(8, 8) 262#define OMAP4430_CLKACTIVITY_L3_EMIF_GICLK_MASK BITFIELD(8, 8)
263 263
264/* Used by CM_GFX_CLKSTCTRL */ 264/* Used by CM_GFX_CLKSTCTRL */
265#define OMAP4430_CLKACTIVITY_L3_GFX_GICLK_SHIFT (1 << 8) 265#define OMAP4430_CLKACTIVITY_L3_GFX_GICLK_SHIFT 8
266#define OMAP4430_CLKACTIVITY_L3_GFX_GICLK_MASK BITFIELD(8, 8) 266#define OMAP4430_CLKACTIVITY_L3_GFX_GICLK_MASK BITFIELD(8, 8)
267 267
268/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 268/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
269#define OMAP4430_CLKACTIVITY_L3_INIT_GICLK_SHIFT (1 << 8) 269#define OMAP4430_CLKACTIVITY_L3_INIT_GICLK_SHIFT 8
270#define OMAP4430_CLKACTIVITY_L3_INIT_GICLK_MASK BITFIELD(8, 8) 270#define OMAP4430_CLKACTIVITY_L3_INIT_GICLK_MASK BITFIELD(8, 8)
271 271
272/* Used by CM_L3INSTR_CLKSTCTRL */ 272/* Used by CM_L3INSTR_CLKSTCTRL */
273#define OMAP4430_CLKACTIVITY_L3_INSTR_GICLK_SHIFT (1 << 8) 273#define OMAP4430_CLKACTIVITY_L3_INSTR_GICLK_SHIFT 8
274#define OMAP4430_CLKACTIVITY_L3_INSTR_GICLK_MASK BITFIELD(8, 8) 274#define OMAP4430_CLKACTIVITY_L3_INSTR_GICLK_MASK BITFIELD(8, 8)
275 275
276/* Used by CM_L4SEC_CLKSTCTRL */ 276/* Used by CM_L4SEC_CLKSTCTRL */
277#define OMAP4430_CLKACTIVITY_L3_SECURE_GICLK_SHIFT (1 << 8) 277#define OMAP4430_CLKACTIVITY_L3_SECURE_GICLK_SHIFT 8
278#define OMAP4430_CLKACTIVITY_L3_SECURE_GICLK_MASK BITFIELD(8, 8) 278#define OMAP4430_CLKACTIVITY_L3_SECURE_GICLK_MASK BITFIELD(8, 8)
279 279
280/* Used by CM_ALWON_CLKSTCTRL */ 280/* Used by CM_ALWON_CLKSTCTRL */
281#define OMAP4430_CLKACTIVITY_L4_AO_ICLK_SHIFT (1 << 8) 281#define OMAP4430_CLKACTIVITY_L4_AO_ICLK_SHIFT 8
282#define OMAP4430_CLKACTIVITY_L4_AO_ICLK_MASK BITFIELD(8, 8) 282#define OMAP4430_CLKACTIVITY_L4_AO_ICLK_MASK BITFIELD(8, 8)
283 283
284/* Used by CM_CEFUSE_CLKSTCTRL */ 284/* Used by CM_CEFUSE_CLKSTCTRL */
285#define OMAP4430_CLKACTIVITY_L4_CEFUSE_GICLK_SHIFT (1 << 8) 285#define OMAP4430_CLKACTIVITY_L4_CEFUSE_GICLK_SHIFT 8
286#define OMAP4430_CLKACTIVITY_L4_CEFUSE_GICLK_MASK BITFIELD(8, 8) 286#define OMAP4430_CLKACTIVITY_L4_CEFUSE_GICLK_MASK BITFIELD(8, 8)
287 287
288/* Used by CM_L4CFG_CLKSTCTRL, CM_L4CFG_CLKSTCTRL_RESTORE */ 288/* Used by CM_L4CFG_CLKSTCTRL, CM_L4CFG_CLKSTCTRL_RESTORE */
289#define OMAP4430_CLKACTIVITY_L4_CFG_GICLK_SHIFT (1 << 8) 289#define OMAP4430_CLKACTIVITY_L4_CFG_GICLK_SHIFT 8
290#define OMAP4430_CLKACTIVITY_L4_CFG_GICLK_MASK BITFIELD(8, 8) 290#define OMAP4430_CLKACTIVITY_L4_CFG_GICLK_MASK BITFIELD(8, 8)
291 291
292/* Used by CM_D2D_CLKSTCTRL */ 292/* Used by CM_D2D_CLKSTCTRL */
293#define OMAP4430_CLKACTIVITY_L4_D2D_GICLK_SHIFT (1 << 9) 293#define OMAP4430_CLKACTIVITY_L4_D2D_GICLK_SHIFT 9
294#define OMAP4430_CLKACTIVITY_L4_D2D_GICLK_MASK BITFIELD(9, 9) 294#define OMAP4430_CLKACTIVITY_L4_D2D_GICLK_MASK BITFIELD(9, 9)
295 295
296/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 296/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
297#define OMAP4430_CLKACTIVITY_L4_INIT_GICLK_SHIFT (1 << 9) 297#define OMAP4430_CLKACTIVITY_L4_INIT_GICLK_SHIFT 9
298#define OMAP4430_CLKACTIVITY_L4_INIT_GICLK_MASK BITFIELD(9, 9) 298#define OMAP4430_CLKACTIVITY_L4_INIT_GICLK_MASK BITFIELD(9, 9)
299 299
300/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 300/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
301#define OMAP4430_CLKACTIVITY_L4_PER_GICLK_SHIFT (1 << 8) 301#define OMAP4430_CLKACTIVITY_L4_PER_GICLK_SHIFT 8
302#define OMAP4430_CLKACTIVITY_L4_PER_GICLK_MASK BITFIELD(8, 8) 302#define OMAP4430_CLKACTIVITY_L4_PER_GICLK_MASK BITFIELD(8, 8)
303 303
304/* Used by CM_L4SEC_CLKSTCTRL */ 304/* Used by CM_L4SEC_CLKSTCTRL */
305#define OMAP4430_CLKACTIVITY_L4_SECURE_GICLK_SHIFT (1 << 9) 305#define OMAP4430_CLKACTIVITY_L4_SECURE_GICLK_SHIFT 9
306#define OMAP4430_CLKACTIVITY_L4_SECURE_GICLK_MASK BITFIELD(9, 9) 306#define OMAP4430_CLKACTIVITY_L4_SECURE_GICLK_MASK BITFIELD(9, 9)
307 307
308/* Used by CM_WKUP_CLKSTCTRL */ 308/* Used by CM_WKUP_CLKSTCTRL */
309#define OMAP4430_CLKACTIVITY_L4_WKUP_GICLK_SHIFT (1 << 12) 309#define OMAP4430_CLKACTIVITY_L4_WKUP_GICLK_SHIFT 12
310#define OMAP4430_CLKACTIVITY_L4_WKUP_GICLK_MASK BITFIELD(12, 12) 310#define OMAP4430_CLKACTIVITY_L4_WKUP_GICLK_MASK BITFIELD(12, 12)
311 311
312/* Used by CM_MPU_CLKSTCTRL, CM_MPU_CLKSTCTRL_RESTORE */ 312/* Used by CM_MPU_CLKSTCTRL, CM_MPU_CLKSTCTRL_RESTORE */
313#define OMAP4430_CLKACTIVITY_MPU_DPLL_CLK_SHIFT (1 << 8) 313#define OMAP4430_CLKACTIVITY_MPU_DPLL_CLK_SHIFT 8
314#define OMAP4430_CLKACTIVITY_MPU_DPLL_CLK_MASK BITFIELD(8, 8) 314#define OMAP4430_CLKACTIVITY_MPU_DPLL_CLK_MASK BITFIELD(8, 8)
315 315
316/* Used by CM1_ABE_CLKSTCTRL */ 316/* Used by CM1_ABE_CLKSTCTRL */
317#define OMAP4430_CLKACTIVITY_OCP_ABE_GICLK_SHIFT (1 << 9) 317#define OMAP4430_CLKACTIVITY_OCP_ABE_GICLK_SHIFT 9
318#define OMAP4430_CLKACTIVITY_OCP_ABE_GICLK_MASK BITFIELD(9, 9) 318#define OMAP4430_CLKACTIVITY_OCP_ABE_GICLK_MASK BITFIELD(9, 9)
319 319
320/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 320/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
321#define OMAP4430_CLKACTIVITY_PER_24MC_GFCLK_SHIFT (1 << 16) 321#define OMAP4430_CLKACTIVITY_PER_24MC_GFCLK_SHIFT 16
322#define OMAP4430_CLKACTIVITY_PER_24MC_GFCLK_MASK BITFIELD(16, 16) 322#define OMAP4430_CLKACTIVITY_PER_24MC_GFCLK_MASK BITFIELD(16, 16)
323 323
324/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 324/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
325#define OMAP4430_CLKACTIVITY_PER_32K_GFCLK_SHIFT (1 << 17) 325#define OMAP4430_CLKACTIVITY_PER_32K_GFCLK_SHIFT 17
326#define OMAP4430_CLKACTIVITY_PER_32K_GFCLK_MASK BITFIELD(17, 17) 326#define OMAP4430_CLKACTIVITY_PER_32K_GFCLK_MASK BITFIELD(17, 17)
327 327
328/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 328/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
329#define OMAP4430_CLKACTIVITY_PER_48M_GFCLK_SHIFT (1 << 18) 329#define OMAP4430_CLKACTIVITY_PER_48M_GFCLK_SHIFT 18
330#define OMAP4430_CLKACTIVITY_PER_48M_GFCLK_MASK BITFIELD(18, 18) 330#define OMAP4430_CLKACTIVITY_PER_48M_GFCLK_MASK BITFIELD(18, 18)
331 331
332/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 332/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
333#define OMAP4430_CLKACTIVITY_PER_96M_GFCLK_SHIFT (1 << 19) 333#define OMAP4430_CLKACTIVITY_PER_96M_GFCLK_SHIFT 19
334#define OMAP4430_CLKACTIVITY_PER_96M_GFCLK_MASK BITFIELD(19, 19) 334#define OMAP4430_CLKACTIVITY_PER_96M_GFCLK_MASK BITFIELD(19, 19)
335 335
336/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 336/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
337#define OMAP4430_CLKACTIVITY_PER_ABE_24M_GFCLK_SHIFT (1 << 25) 337#define OMAP4430_CLKACTIVITY_PER_ABE_24M_GFCLK_SHIFT 25
338#define OMAP4430_CLKACTIVITY_PER_ABE_24M_GFCLK_MASK BITFIELD(25, 25) 338#define OMAP4430_CLKACTIVITY_PER_ABE_24M_GFCLK_MASK BITFIELD(25, 25)
339 339
340/* Used by CM_EMU_CLKSTCTRL */ 340/* Used by CM_EMU_CLKSTCTRL */
341#define OMAP4430_CLKACTIVITY_PER_DPLL_EMU_CLK_SHIFT (1 << 10) 341#define OMAP4430_CLKACTIVITY_PER_DPLL_EMU_CLK_SHIFT 10
342#define OMAP4430_CLKACTIVITY_PER_DPLL_EMU_CLK_MASK BITFIELD(10, 10) 342#define OMAP4430_CLKACTIVITY_PER_DPLL_EMU_CLK_MASK BITFIELD(10, 10)
343 343
344/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 344/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
345#define OMAP4430_CLKACTIVITY_PER_MCASP2_GFCLK_SHIFT (1 << 20) 345#define OMAP4430_CLKACTIVITY_PER_MCASP2_GFCLK_SHIFT 20
346#define OMAP4430_CLKACTIVITY_PER_MCASP2_GFCLK_MASK BITFIELD(20, 20) 346#define OMAP4430_CLKACTIVITY_PER_MCASP2_GFCLK_MASK BITFIELD(20, 20)
347 347
348/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 348/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
349#define OMAP4430_CLKACTIVITY_PER_MCASP3_GFCLK_SHIFT (1 << 21) 349#define OMAP4430_CLKACTIVITY_PER_MCASP3_GFCLK_SHIFT 21
350#define OMAP4430_CLKACTIVITY_PER_MCASP3_GFCLK_MASK BITFIELD(21, 21) 350#define OMAP4430_CLKACTIVITY_PER_MCASP3_GFCLK_MASK BITFIELD(21, 21)
351 351
352/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 352/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
353#define OMAP4430_CLKACTIVITY_PER_MCBSP4_GFCLK_SHIFT (1 << 22) 353#define OMAP4430_CLKACTIVITY_PER_MCBSP4_GFCLK_SHIFT 22
354#define OMAP4430_CLKACTIVITY_PER_MCBSP4_GFCLK_MASK BITFIELD(22, 22) 354#define OMAP4430_CLKACTIVITY_PER_MCBSP4_GFCLK_MASK BITFIELD(22, 22)
355 355
356/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */ 356/* Used by CM_L4PER_CLKSTCTRL, CM_L4PER_CLKSTCTRL_RESTORE */
357#define OMAP4430_CLKACTIVITY_PER_SYS_GFCLK_SHIFT (1 << 24) 357#define OMAP4430_CLKACTIVITY_PER_SYS_GFCLK_SHIFT 24
358#define OMAP4430_CLKACTIVITY_PER_SYS_GFCLK_MASK BITFIELD(24, 24) 358#define OMAP4430_CLKACTIVITY_PER_SYS_GFCLK_MASK BITFIELD(24, 24)
359 359
360/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */ 360/* Used by CM_MEMIF_CLKSTCTRL, CM_MEMIF_CLKSTCTRL_RESTORE */
361#define OMAP4430_CLKACTIVITY_PHY_ROOT_CLK_SHIFT (1 << 10) 361#define OMAP4430_CLKACTIVITY_PHY_ROOT_CLK_SHIFT 10
362#define OMAP4430_CLKACTIVITY_PHY_ROOT_CLK_MASK BITFIELD(10, 10) 362#define OMAP4430_CLKACTIVITY_PHY_ROOT_CLK_MASK BITFIELD(10, 10)
363 363
364/* Used by CM_GFX_CLKSTCTRL */ 364/* Used by CM_GFX_CLKSTCTRL */
365#define OMAP4430_CLKACTIVITY_SGX_GFCLK_SHIFT (1 << 9) 365#define OMAP4430_CLKACTIVITY_SGX_GFCLK_SHIFT 9
366#define OMAP4430_CLKACTIVITY_SGX_GFCLK_MASK BITFIELD(9, 9) 366#define OMAP4430_CLKACTIVITY_SGX_GFCLK_MASK BITFIELD(9, 9)
367 367
368/* Used by CM_ALWON_CLKSTCTRL */ 368/* Used by CM_ALWON_CLKSTCTRL */
369#define OMAP4430_CLKACTIVITY_SR_CORE_SYSCLK_SHIFT (1 << 11) 369#define OMAP4430_CLKACTIVITY_SR_CORE_SYSCLK_SHIFT 11
370#define OMAP4430_CLKACTIVITY_SR_CORE_SYSCLK_MASK BITFIELD(11, 11) 370#define OMAP4430_CLKACTIVITY_SR_CORE_SYSCLK_MASK BITFIELD(11, 11)
371 371
372/* Used by CM_ALWON_CLKSTCTRL */ 372/* Used by CM_ALWON_CLKSTCTRL */
373#define OMAP4430_CLKACTIVITY_SR_IVA_SYSCLK_SHIFT (1 << 10) 373#define OMAP4430_CLKACTIVITY_SR_IVA_SYSCLK_SHIFT 10
374#define OMAP4430_CLKACTIVITY_SR_IVA_SYSCLK_MASK BITFIELD(10, 10) 374#define OMAP4430_CLKACTIVITY_SR_IVA_SYSCLK_MASK BITFIELD(10, 10)
375 375
376/* Used by CM_ALWON_CLKSTCTRL */ 376/* Used by CM_ALWON_CLKSTCTRL */
377#define OMAP4430_CLKACTIVITY_SR_MPU_SYSCLK_SHIFT (1 << 9) 377#define OMAP4430_CLKACTIVITY_SR_MPU_SYSCLK_SHIFT 9
378#define OMAP4430_CLKACTIVITY_SR_MPU_SYSCLK_MASK BITFIELD(9, 9) 378#define OMAP4430_CLKACTIVITY_SR_MPU_SYSCLK_MASK BITFIELD(9, 9)
379 379
380/* Used by CM_WKUP_CLKSTCTRL */ 380/* Used by CM_WKUP_CLKSTCTRL */
381#define OMAP4430_CLKACTIVITY_SYS_CLK_SHIFT (1 << 8) 381#define OMAP4430_CLKACTIVITY_SYS_CLK_SHIFT 8
382#define OMAP4430_CLKACTIVITY_SYS_CLK_MASK BITFIELD(8, 8) 382#define OMAP4430_CLKACTIVITY_SYS_CLK_MASK BITFIELD(8, 8)
383 383
384/* Used by CM_TESLA_CLKSTCTRL */ 384/* Used by CM_TESLA_CLKSTCTRL */
385#define OMAP4430_CLKACTIVITY_TESLA_ROOT_CLK_SHIFT (1 << 8) 385#define OMAP4430_CLKACTIVITY_TESLA_ROOT_CLK_SHIFT 8
386#define OMAP4430_CLKACTIVITY_TESLA_ROOT_CLK_MASK BITFIELD(8, 8) 386#define OMAP4430_CLKACTIVITY_TESLA_ROOT_CLK_MASK BITFIELD(8, 8)
387 387
388/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 388/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
389#define OMAP4430_CLKACTIVITY_TLL_CH0_GFCLK_SHIFT (1 << 22) 389#define OMAP4430_CLKACTIVITY_TLL_CH0_GFCLK_SHIFT 22
390#define OMAP4430_CLKACTIVITY_TLL_CH0_GFCLK_MASK BITFIELD(22, 22) 390#define OMAP4430_CLKACTIVITY_TLL_CH0_GFCLK_MASK BITFIELD(22, 22)
391 391
392/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 392/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
393#define OMAP4430_CLKACTIVITY_TLL_CH1_GFCLK_SHIFT (1 << 23) 393#define OMAP4430_CLKACTIVITY_TLL_CH1_GFCLK_SHIFT 23
394#define OMAP4430_CLKACTIVITY_TLL_CH1_GFCLK_MASK BITFIELD(23, 23) 394#define OMAP4430_CLKACTIVITY_TLL_CH1_GFCLK_MASK BITFIELD(23, 23)
395 395
396/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 396/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
397#define OMAP4430_CLKACTIVITY_TLL_CH2_GFCLK_SHIFT (1 << 24) 397#define OMAP4430_CLKACTIVITY_TLL_CH2_GFCLK_SHIFT 24
398#define OMAP4430_CLKACTIVITY_TLL_CH2_GFCLK_MASK BITFIELD(24, 24) 398#define OMAP4430_CLKACTIVITY_TLL_CH2_GFCLK_MASK BITFIELD(24, 24)
399 399
400/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 400/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
401#define OMAP4430_CLKACTIVITY_USB_DPLL_HS_CLK_SHIFT (1 << 15) 401#define OMAP4430_CLKACTIVITY_USB_DPLL_HS_CLK_SHIFT 15
402#define OMAP4430_CLKACTIVITY_USB_DPLL_HS_CLK_MASK BITFIELD(15, 15) 402#define OMAP4430_CLKACTIVITY_USB_DPLL_HS_CLK_MASK BITFIELD(15, 15)
403 403
404/* Used by CM_WKUP_CLKSTCTRL */ 404/* Used by CM_WKUP_CLKSTCTRL */
405#define OMAP4430_CLKACTIVITY_USIM_GFCLK_SHIFT (1 << 10) 405#define OMAP4430_CLKACTIVITY_USIM_GFCLK_SHIFT 10
406#define OMAP4430_CLKACTIVITY_USIM_GFCLK_MASK BITFIELD(10, 10) 406#define OMAP4430_CLKACTIVITY_USIM_GFCLK_MASK BITFIELD(10, 10)
407 407
408/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 408/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
409#define OMAP4430_CLKACTIVITY_UTMI_P3_GFCLK_SHIFT (1 << 30) 409#define OMAP4430_CLKACTIVITY_UTMI_P3_GFCLK_SHIFT 30
410#define OMAP4430_CLKACTIVITY_UTMI_P3_GFCLK_MASK BITFIELD(30, 30) 410#define OMAP4430_CLKACTIVITY_UTMI_P3_GFCLK_MASK BITFIELD(30, 30)
411 411
412/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */ 412/* Used by CM_L3INIT_CLKSTCTRL, CM_L3INIT_CLKSTCTRL_RESTORE */
413#define OMAP4430_CLKACTIVITY_UTMI_ROOT_GFCLK_SHIFT (1 << 25) 413#define OMAP4430_CLKACTIVITY_UTMI_ROOT_GFCLK_SHIFT 25
414#define OMAP4430_CLKACTIVITY_UTMI_ROOT_GFCLK_MASK BITFIELD(25, 25) 414#define OMAP4430_CLKACTIVITY_UTMI_ROOT_GFCLK_MASK BITFIELD(25, 25)
415 415
416/* Used by CM_WKUP_CLKSTCTRL */ 416/* Used by CM_WKUP_CLKSTCTRL */
417#define OMAP4430_CLKACTIVITY_WKUP_32K_GFCLK_SHIFT (1 << 11) 417#define OMAP4430_CLKACTIVITY_WKUP_32K_GFCLK_SHIFT 11
418#define OMAP4430_CLKACTIVITY_WKUP_32K_GFCLK_MASK BITFIELD(11, 11) 418#define OMAP4430_CLKACTIVITY_WKUP_32K_GFCLK_MASK BITFIELD(11, 11)
419 419
420/* 420/*
@@ -426,7 +426,7 @@
426 * CM1_ABE_TIMER5_CLKCTRL, CM1_ABE_TIMER6_CLKCTRL, CM1_ABE_TIMER7_CLKCTRL, 426 * CM1_ABE_TIMER5_CLKCTRL, CM1_ABE_TIMER6_CLKCTRL, CM1_ABE_TIMER7_CLKCTRL,
427 * CM1_ABE_TIMER8_CLKCTRL 427 * CM1_ABE_TIMER8_CLKCTRL
428 */ 428 */
429#define OMAP4430_CLKSEL_SHIFT (1 << 24) 429#define OMAP4430_CLKSEL_SHIFT 24
430#define OMAP4430_CLKSEL_MASK BITFIELD(24, 24) 430#define OMAP4430_CLKSEL_MASK BITFIELD(24, 24)
431 431
432/* 432/*
@@ -434,43 +434,43 @@
434 * CM_DPLL_SYS_REF_CLKSEL, CM_L4_WKUP_CLKSEL, CM_CLKSEL_DUCATI_ISS_ROOT, 434 * CM_DPLL_SYS_REF_CLKSEL, CM_L4_WKUP_CLKSEL, CM_CLKSEL_DUCATI_ISS_ROOT,
435 * CM_CLKSEL_USB_60MHZ 435 * CM_CLKSEL_USB_60MHZ
436 */ 436 */
437#define OMAP4430_CLKSEL_0_0_SHIFT (1 << 0) 437#define OMAP4430_CLKSEL_0_0_SHIFT 0
438#define OMAP4430_CLKSEL_0_0_MASK BITFIELD(0, 0) 438#define OMAP4430_CLKSEL_0_0_MASK BITFIELD(0, 0)
439 439
440/* Renamed from CLKSEL Used by CM_BYPCLK_DPLL_IVA, CM_BYPCLK_DPLL_MPU */ 440/* Renamed from CLKSEL Used by CM_BYPCLK_DPLL_IVA, CM_BYPCLK_DPLL_MPU */
441#define OMAP4430_CLKSEL_0_1_SHIFT (1 << 0) 441#define OMAP4430_CLKSEL_0_1_SHIFT 0
442#define OMAP4430_CLKSEL_0_1_MASK BITFIELD(0, 1) 442#define OMAP4430_CLKSEL_0_1_MASK BITFIELD(0, 1)
443 443
444/* Renamed from CLKSEL Used by CM_L3INIT_HSI_CLKCTRL */ 444/* Renamed from CLKSEL Used by CM_L3INIT_HSI_CLKCTRL */
445#define OMAP4430_CLKSEL_24_25_SHIFT (1 << 24) 445#define OMAP4430_CLKSEL_24_25_SHIFT 24
446#define OMAP4430_CLKSEL_24_25_MASK BITFIELD(24, 25) 446#define OMAP4430_CLKSEL_24_25_MASK BITFIELD(24, 25)
447 447
448/* Used by CM_L3INIT_USB_OTG_CLKCTRL */ 448/* Used by CM_L3INIT_USB_OTG_CLKCTRL */
449#define OMAP4430_CLKSEL_60M_SHIFT (1 << 24) 449#define OMAP4430_CLKSEL_60M_SHIFT 24
450#define OMAP4430_CLKSEL_60M_MASK BITFIELD(24, 24) 450#define OMAP4430_CLKSEL_60M_MASK BITFIELD(24, 24)
451 451
452/* Used by CM1_ABE_AESS_CLKCTRL */ 452/* Used by CM1_ABE_AESS_CLKCTRL */
453#define OMAP4430_CLKSEL_AESS_FCLK_SHIFT (1 << 24) 453#define OMAP4430_CLKSEL_AESS_FCLK_SHIFT 24
454#define OMAP4430_CLKSEL_AESS_FCLK_MASK BITFIELD(24, 24) 454#define OMAP4430_CLKSEL_AESS_FCLK_MASK BITFIELD(24, 24)
455 455
456/* Used by CM_CLKSEL_CORE_RESTORE, CM_CLKSEL_CORE */ 456/* Used by CM_CLKSEL_CORE_RESTORE, CM_CLKSEL_CORE */
457#define OMAP4430_CLKSEL_CORE_SHIFT (1 << 0) 457#define OMAP4430_CLKSEL_CORE_SHIFT 0
458#define OMAP4430_CLKSEL_CORE_MASK BITFIELD(0, 0) 458#define OMAP4430_CLKSEL_CORE_MASK BITFIELD(0, 0)
459 459
460/* Renamed from CLKSEL_CORE Used by CM_SHADOW_FREQ_CONFIG2 */ 460/* Renamed from CLKSEL_CORE Used by CM_SHADOW_FREQ_CONFIG2 */
461#define OMAP4430_CLKSEL_CORE_1_1_SHIFT (1 << 1) 461#define OMAP4430_CLKSEL_CORE_1_1_SHIFT 1
462#define OMAP4430_CLKSEL_CORE_1_1_MASK BITFIELD(1, 1) 462#define OMAP4430_CLKSEL_CORE_1_1_MASK BITFIELD(1, 1)
463 463
464/* Used by CM_WKUP_USIM_CLKCTRL */ 464/* Used by CM_WKUP_USIM_CLKCTRL */
465#define OMAP4430_CLKSEL_DIV_SHIFT (1 << 24) 465#define OMAP4430_CLKSEL_DIV_SHIFT 24
466#define OMAP4430_CLKSEL_DIV_MASK BITFIELD(24, 24) 466#define OMAP4430_CLKSEL_DIV_MASK BITFIELD(24, 24)
467 467
468/* Used by CM_CAM_FDIF_CLKCTRL */ 468/* Used by CM_CAM_FDIF_CLKCTRL */
469#define OMAP4430_CLKSEL_FCLK_SHIFT (1 << 24) 469#define OMAP4430_CLKSEL_FCLK_SHIFT 24
470#define OMAP4430_CLKSEL_FCLK_MASK BITFIELD(24, 25) 470#define OMAP4430_CLKSEL_FCLK_MASK BITFIELD(24, 25)
471 471
472/* Used by CM_L4PER_MCBSP4_CLKCTRL */ 472/* Used by CM_L4PER_MCBSP4_CLKCTRL */
473#define OMAP4430_CLKSEL_INTERNAL_SOURCE_SHIFT (1 << 25) 473#define OMAP4430_CLKSEL_INTERNAL_SOURCE_SHIFT 25
474#define OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK BITFIELD(25, 25) 474#define OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK BITFIELD(25, 25)
475 475
476/* 476/*
@@ -478,58 +478,58 @@
478 * CM1_ABE_MCASP_CLKCTRL, CM1_ABE_MCBSP1_CLKCTRL, CM1_ABE_MCBSP2_CLKCTRL, 478 * CM1_ABE_MCASP_CLKCTRL, CM1_ABE_MCBSP1_CLKCTRL, CM1_ABE_MCBSP2_CLKCTRL,
479 * CM1_ABE_MCBSP3_CLKCTRL 479 * CM1_ABE_MCBSP3_CLKCTRL
480 */ 480 */
481#define OMAP4430_CLKSEL_INTERNAL_SOURCE_CM1_ABE_DMIC_SHIFT (1 << 26) 481#define OMAP4430_CLKSEL_INTERNAL_SOURCE_CM1_ABE_DMIC_SHIFT 26
482#define OMAP4430_CLKSEL_INTERNAL_SOURCE_CM1_ABE_DMIC_MASK BITFIELD(26, 27) 482#define OMAP4430_CLKSEL_INTERNAL_SOURCE_CM1_ABE_DMIC_MASK BITFIELD(26, 27)
483 483
484/* Used by CM_CLKSEL_CORE_RESTORE, CM_CLKSEL_CORE */ 484/* Used by CM_CLKSEL_CORE_RESTORE, CM_CLKSEL_CORE */
485#define OMAP4430_CLKSEL_L3_SHIFT (1 << 4) 485#define OMAP4430_CLKSEL_L3_SHIFT 4
486#define OMAP4430_CLKSEL_L3_MASK BITFIELD(4, 4) 486#define OMAP4430_CLKSEL_L3_MASK BITFIELD(4, 4)
487 487
488/* Renamed from CLKSEL_L3 Used by CM_SHADOW_FREQ_CONFIG2 */ 488/* Renamed from CLKSEL_L3 Used by CM_SHADOW_FREQ_CONFIG2 */
489#define OMAP4430_CLKSEL_L3_SHADOW_SHIFT (1 << 2) 489#define OMAP4430_CLKSEL_L3_SHADOW_SHIFT 2
490#define OMAP4430_CLKSEL_L3_SHADOW_MASK BITFIELD(2, 2) 490#define OMAP4430_CLKSEL_L3_SHADOW_MASK BITFIELD(2, 2)
491 491
492/* Used by CM_CLKSEL_CORE_RESTORE, CM_CLKSEL_CORE */ 492/* Used by CM_CLKSEL_CORE_RESTORE, CM_CLKSEL_CORE */
493#define OMAP4430_CLKSEL_L4_SHIFT (1 << 8) 493#define OMAP4430_CLKSEL_L4_SHIFT 8
494#define OMAP4430_CLKSEL_L4_MASK BITFIELD(8, 8) 494#define OMAP4430_CLKSEL_L4_MASK BITFIELD(8, 8)
495 495
496/* Used by CM_CLKSEL_ABE */ 496/* Used by CM_CLKSEL_ABE */
497#define OMAP4430_CLKSEL_OPP_SHIFT (1 << 0) 497#define OMAP4430_CLKSEL_OPP_SHIFT 0
498#define OMAP4430_CLKSEL_OPP_MASK BITFIELD(0, 1) 498#define OMAP4430_CLKSEL_OPP_MASK BITFIELD(0, 1)
499 499
500/* Used by CM_GFX_GFX_CLKCTRL */ 500/* Used by CM_GFX_GFX_CLKCTRL */
501#define OMAP4430_CLKSEL_PER_192M_SHIFT (1 << 25) 501#define OMAP4430_CLKSEL_PER_192M_SHIFT 25
502#define OMAP4430_CLKSEL_PER_192M_MASK BITFIELD(25, 26) 502#define OMAP4430_CLKSEL_PER_192M_MASK BITFIELD(25, 26)
503 503
504/* Used by CM_EMU_DEBUGSS_CLKCTRL */ 504/* Used by CM_EMU_DEBUGSS_CLKCTRL */
505#define OMAP4430_CLKSEL_PMD_STM_CLK_SHIFT (1 << 27) 505#define OMAP4430_CLKSEL_PMD_STM_CLK_SHIFT 27
506#define OMAP4430_CLKSEL_PMD_STM_CLK_MASK BITFIELD(27, 29) 506#define OMAP4430_CLKSEL_PMD_STM_CLK_MASK BITFIELD(27, 29)
507 507
508/* Used by CM_EMU_DEBUGSS_CLKCTRL */ 508/* Used by CM_EMU_DEBUGSS_CLKCTRL */
509#define OMAP4430_CLKSEL_PMD_TRACE_CLK_SHIFT (1 << 24) 509#define OMAP4430_CLKSEL_PMD_TRACE_CLK_SHIFT 24
510#define OMAP4430_CLKSEL_PMD_TRACE_CLK_MASK BITFIELD(24, 26) 510#define OMAP4430_CLKSEL_PMD_TRACE_CLK_MASK BITFIELD(24, 26)
511 511
512/* Used by CM_GFX_GFX_CLKCTRL */ 512/* Used by CM_GFX_GFX_CLKCTRL */
513#define OMAP4430_CLKSEL_SGX_FCLK_SHIFT (1 << 24) 513#define OMAP4430_CLKSEL_SGX_FCLK_SHIFT 24
514#define OMAP4430_CLKSEL_SGX_FCLK_MASK BITFIELD(24, 24) 514#define OMAP4430_CLKSEL_SGX_FCLK_MASK BITFIELD(24, 24)
515 515
516/* 516/*
517 * Used by CM1_ABE_DMIC_CLKCTRL, CM1_ABE_MCASP_CLKCTRL, CM1_ABE_MCBSP1_CLKCTRL, 517 * Used by CM1_ABE_DMIC_CLKCTRL, CM1_ABE_MCASP_CLKCTRL, CM1_ABE_MCBSP1_CLKCTRL,
518 * CM1_ABE_MCBSP2_CLKCTRL, CM1_ABE_MCBSP3_CLKCTRL 518 * CM1_ABE_MCBSP2_CLKCTRL, CM1_ABE_MCBSP3_CLKCTRL
519 */ 519 */
520#define OMAP4430_CLKSEL_SOURCE_SHIFT (1 << 24) 520#define OMAP4430_CLKSEL_SOURCE_SHIFT 24
521#define OMAP4430_CLKSEL_SOURCE_MASK BITFIELD(24, 25) 521#define OMAP4430_CLKSEL_SOURCE_MASK BITFIELD(24, 25)
522 522
523/* Renamed from CLKSEL_SOURCE Used by CM_L4PER_MCBSP4_CLKCTRL */ 523/* Renamed from CLKSEL_SOURCE Used by CM_L4PER_MCBSP4_CLKCTRL */
524#define OMAP4430_CLKSEL_SOURCE_24_24_SHIFT (1 << 24) 524#define OMAP4430_CLKSEL_SOURCE_24_24_SHIFT 24
525#define OMAP4430_CLKSEL_SOURCE_24_24_MASK BITFIELD(24, 24) 525#define OMAP4430_CLKSEL_SOURCE_24_24_MASK BITFIELD(24, 24)
526 526
527/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */ 527/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */
528#define OMAP4430_CLKSEL_UTMI_P1_SHIFT (1 << 24) 528#define OMAP4430_CLKSEL_UTMI_P1_SHIFT 24
529#define OMAP4430_CLKSEL_UTMI_P1_MASK BITFIELD(24, 24) 529#define OMAP4430_CLKSEL_UTMI_P1_MASK BITFIELD(24, 24)
530 530
531/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */ 531/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */
532#define OMAP4430_CLKSEL_UTMI_P2_SHIFT (1 << 25) 532#define OMAP4430_CLKSEL_UTMI_P2_SHIFT 25
533#define OMAP4430_CLKSEL_UTMI_P2_MASK BITFIELD(25, 25) 533#define OMAP4430_CLKSEL_UTMI_P2_MASK BITFIELD(25, 25)
534 534
535/* 535/*
@@ -544,23 +544,23 @@
544 * CM_IVAHD_CLKSTCTRL, CM_DSS_CLKSTCTRL, CM_MPU_CLKSTCTRL, CM_TESLA_CLKSTCTRL, 544 * CM_IVAHD_CLKSTCTRL, CM_DSS_CLKSTCTRL, CM_MPU_CLKSTCTRL, CM_TESLA_CLKSTCTRL,
545 * CM1_ABE_CLKSTCTRL, CM_MPU_CLKSTCTRL_RESTORE 545 * CM1_ABE_CLKSTCTRL, CM_MPU_CLKSTCTRL_RESTORE
546 */ 546 */
547#define OMAP4430_CLKTRCTRL_SHIFT (1 << 0) 547#define OMAP4430_CLKTRCTRL_SHIFT 0
548#define OMAP4430_CLKTRCTRL_MASK BITFIELD(0, 1) 548#define OMAP4430_CLKTRCTRL_MASK BITFIELD(0, 1)
549 549
550/* Used by CM_EMU_OVERRIDE_DPLL_CORE */ 550/* Used by CM_EMU_OVERRIDE_DPLL_CORE */
551#define OMAP4430_CORE_DPLL_EMU_DIV_SHIFT (1 << 0) 551#define OMAP4430_CORE_DPLL_EMU_DIV_SHIFT 0
552#define OMAP4430_CORE_DPLL_EMU_DIV_MASK BITFIELD(0, 6) 552#define OMAP4430_CORE_DPLL_EMU_DIV_MASK BITFIELD(0, 6)
553 553
554/* Used by CM_EMU_OVERRIDE_DPLL_CORE */ 554/* Used by CM_EMU_OVERRIDE_DPLL_CORE */
555#define OMAP4430_CORE_DPLL_EMU_MULT_SHIFT (1 << 8) 555#define OMAP4430_CORE_DPLL_EMU_MULT_SHIFT 8
556#define OMAP4430_CORE_DPLL_EMU_MULT_MASK BITFIELD(8, 18) 556#define OMAP4430_CORE_DPLL_EMU_MULT_MASK BITFIELD(8, 18)
557 557
558/* Used by CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP */ 558/* Used by CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP */
559#define OMAP4430_D2D_DYNDEP_SHIFT (1 << 18) 559#define OMAP4430_D2D_DYNDEP_SHIFT 18
560#define OMAP4430_D2D_DYNDEP_MASK BITFIELD(18, 18) 560#define OMAP4430_D2D_DYNDEP_MASK BITFIELD(18, 18)
561 561
562/* Used by CM_MPU_STATICDEP */ 562/* Used by CM_MPU_STATICDEP */
563#define OMAP4430_D2D_STATDEP_SHIFT (1 << 18) 563#define OMAP4430_D2D_STATDEP_SHIFT 18
564#define OMAP4430_D2D_STATDEP_MASK BITFIELD(18, 18) 564#define OMAP4430_D2D_STATDEP_MASK BITFIELD(18, 18)
565 565
566/* 566/*
@@ -570,19 +570,19 @@
570 * CM_SSC_DELTAMSTEP_DPLL_DDRPHY, CM_SSC_DELTAMSTEP_DPLL_IVA, 570 * CM_SSC_DELTAMSTEP_DPLL_DDRPHY, CM_SSC_DELTAMSTEP_DPLL_IVA,
571 * CM_SSC_DELTAMSTEP_DPLL_MPU 571 * CM_SSC_DELTAMSTEP_DPLL_MPU
572 */ 572 */
573#define OMAP4430_DELTAMSTEP_SHIFT (1 << 0) 573#define OMAP4430_DELTAMSTEP_SHIFT 0
574#define OMAP4430_DELTAMSTEP_MASK BITFIELD(0, 19) 574#define OMAP4430_DELTAMSTEP_MASK BITFIELD(0, 19)
575 575
576/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */ 576/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */
577#define OMAP4430_DLL_OVERRIDE_SHIFT (1 << 2) 577#define OMAP4430_DLL_OVERRIDE_SHIFT 2
578#define OMAP4430_DLL_OVERRIDE_MASK BITFIELD(2, 2) 578#define OMAP4430_DLL_OVERRIDE_MASK BITFIELD(2, 2)
579 579
580/* Renamed from DLL_OVERRIDE Used by CM_DLL_CTRL */ 580/* Renamed from DLL_OVERRIDE Used by CM_DLL_CTRL */
581#define OMAP4430_DLL_OVERRIDE_0_0_SHIFT (1 << 0) 581#define OMAP4430_DLL_OVERRIDE_0_0_SHIFT 0
582#define OMAP4430_DLL_OVERRIDE_0_0_MASK BITFIELD(0, 0) 582#define OMAP4430_DLL_OVERRIDE_0_0_MASK BITFIELD(0, 0)
583 583
584/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */ 584/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */
585#define OMAP4430_DLL_RESET_SHIFT (1 << 3) 585#define OMAP4430_DLL_RESET_SHIFT 3
586#define OMAP4430_DLL_RESET_MASK BITFIELD(3, 3) 586#define OMAP4430_DLL_RESET_MASK BITFIELD(3, 3)
587 587
588/* 588/*
@@ -590,40 +590,40 @@
590 * CM_CLKSEL_DPLL_CORE_RESTORE, CM_CLKSEL_DPLL_ABE, CM_CLKSEL_DPLL_CORE, 590 * CM_CLKSEL_DPLL_CORE_RESTORE, CM_CLKSEL_DPLL_ABE, CM_CLKSEL_DPLL_CORE,
591 * CM_CLKSEL_DPLL_DDRPHY, CM_CLKSEL_DPLL_IVA, CM_CLKSEL_DPLL_MPU 591 * CM_CLKSEL_DPLL_DDRPHY, CM_CLKSEL_DPLL_IVA, CM_CLKSEL_DPLL_MPU
592 */ 592 */
593#define OMAP4430_DPLL_BYP_CLKSEL_SHIFT (1 << 23) 593#define OMAP4430_DPLL_BYP_CLKSEL_SHIFT 23
594#define OMAP4430_DPLL_BYP_CLKSEL_MASK BITFIELD(23, 23) 594#define OMAP4430_DPLL_BYP_CLKSEL_MASK BITFIELD(23, 23)
595 595
596/* Used by CM_CLKDCOLDO_DPLL_USB */ 596/* Used by CM_CLKDCOLDO_DPLL_USB */
597#define OMAP4430_DPLL_CLKDCOLDO_GATE_CTRL_SHIFT (1 << 8) 597#define OMAP4430_DPLL_CLKDCOLDO_GATE_CTRL_SHIFT 8
598#define OMAP4430_DPLL_CLKDCOLDO_GATE_CTRL_MASK BITFIELD(8, 8) 598#define OMAP4430_DPLL_CLKDCOLDO_GATE_CTRL_MASK BITFIELD(8, 8)
599 599
600/* Used by CM_CLKSEL_DPLL_CORE_RESTORE, CM_CLKSEL_DPLL_CORE */ 600/* Used by CM_CLKSEL_DPLL_CORE_RESTORE, CM_CLKSEL_DPLL_CORE */
601#define OMAP4430_DPLL_CLKOUTHIF_CLKSEL_SHIFT (1 << 20) 601#define OMAP4430_DPLL_CLKOUTHIF_CLKSEL_SHIFT 20
602#define OMAP4430_DPLL_CLKOUTHIF_CLKSEL_MASK BITFIELD(20, 20) 602#define OMAP4430_DPLL_CLKOUTHIF_CLKSEL_MASK BITFIELD(20, 20)
603 603
604/* 604/*
605 * Used by CM_DIV_M3_DPLL_PER, CM_DIV_M3_DPLL_CORE_RESTORE, CM_DIV_M3_DPLL_ABE, 605 * Used by CM_DIV_M3_DPLL_PER, CM_DIV_M3_DPLL_CORE_RESTORE, CM_DIV_M3_DPLL_ABE,
606 * CM_DIV_M3_DPLL_CORE 606 * CM_DIV_M3_DPLL_CORE
607 */ 607 */
608#define OMAP4430_DPLL_CLKOUTHIF_DIV_SHIFT (1 << 0) 608#define OMAP4430_DPLL_CLKOUTHIF_DIV_SHIFT 0
609#define OMAP4430_DPLL_CLKOUTHIF_DIV_MASK BITFIELD(0, 4) 609#define OMAP4430_DPLL_CLKOUTHIF_DIV_MASK BITFIELD(0, 4)
610 610
611/* 611/*
612 * Used by CM_DIV_M3_DPLL_PER, CM_DIV_M3_DPLL_CORE_RESTORE, CM_DIV_M3_DPLL_ABE, 612 * Used by CM_DIV_M3_DPLL_PER, CM_DIV_M3_DPLL_CORE_RESTORE, CM_DIV_M3_DPLL_ABE,
613 * CM_DIV_M3_DPLL_CORE 613 * CM_DIV_M3_DPLL_CORE
614 */ 614 */
615#define OMAP4430_DPLL_CLKOUTHIF_DIVCHACK_SHIFT (1 << 5) 615#define OMAP4430_DPLL_CLKOUTHIF_DIVCHACK_SHIFT 5
616#define OMAP4430_DPLL_CLKOUTHIF_DIVCHACK_MASK BITFIELD(5, 5) 616#define OMAP4430_DPLL_CLKOUTHIF_DIVCHACK_MASK BITFIELD(5, 5)
617 617
618/* 618/*
619 * Used by CM_DIV_M3_DPLL_PER, CM_DIV_M3_DPLL_CORE_RESTORE, CM_DIV_M3_DPLL_ABE, 619 * Used by CM_DIV_M3_DPLL_PER, CM_DIV_M3_DPLL_CORE_RESTORE, CM_DIV_M3_DPLL_ABE,
620 * CM_DIV_M3_DPLL_CORE 620 * CM_DIV_M3_DPLL_CORE
621 */ 621 */
622#define OMAP4430_DPLL_CLKOUTHIF_GATE_CTRL_SHIFT (1 << 8) 622#define OMAP4430_DPLL_CLKOUTHIF_GATE_CTRL_SHIFT 8
623#define OMAP4430_DPLL_CLKOUTHIF_GATE_CTRL_MASK BITFIELD(8, 8) 623#define OMAP4430_DPLL_CLKOUTHIF_GATE_CTRL_MASK BITFIELD(8, 8)
624 624
625/* Used by CM_DIV_M2_DPLL_PER, CM_DIV_M2_DPLL_UNIPRO, CM_DIV_M2_DPLL_ABE */ 625/* Used by CM_DIV_M2_DPLL_PER, CM_DIV_M2_DPLL_UNIPRO, CM_DIV_M2_DPLL_ABE */
626#define OMAP4430_DPLL_CLKOUTX2_GATE_CTRL_SHIFT (1 << 10) 626#define OMAP4430_DPLL_CLKOUTX2_GATE_CTRL_SHIFT 10
627#define OMAP4430_DPLL_CLKOUTX2_GATE_CTRL_MASK BITFIELD(10, 10) 627#define OMAP4430_DPLL_CLKOUTX2_GATE_CTRL_MASK BITFIELD(10, 10)
628 628
629/* 629/*
@@ -631,11 +631,11 @@
631 * CM_DIV_M2_DPLL_CORE_RESTORE, CM_DIV_M2_DPLL_ABE, CM_DIV_M2_DPLL_CORE, 631 * CM_DIV_M2_DPLL_CORE_RESTORE, CM_DIV_M2_DPLL_ABE, CM_DIV_M2_DPLL_CORE,
632 * CM_DIV_M2_DPLL_DDRPHY, CM_DIV_M2_DPLL_MPU 632 * CM_DIV_M2_DPLL_DDRPHY, CM_DIV_M2_DPLL_MPU
633 */ 633 */
634#define OMAP4430_DPLL_CLKOUT_DIV_SHIFT (1 << 0) 634#define OMAP4430_DPLL_CLKOUT_DIV_SHIFT 0
635#define OMAP4430_DPLL_CLKOUT_DIV_MASK BITFIELD(0, 4) 635#define OMAP4430_DPLL_CLKOUT_DIV_MASK BITFIELD(0, 4)
636 636
637/* Renamed from DPLL_CLKOUT_DIV Used by CM_DIV_M2_DPLL_USB */ 637/* Renamed from DPLL_CLKOUT_DIV Used by CM_DIV_M2_DPLL_USB */
638#define OMAP4430_DPLL_CLKOUT_DIV_0_6_SHIFT (1 << 0) 638#define OMAP4430_DPLL_CLKOUT_DIV_0_6_SHIFT 0
639#define OMAP4430_DPLL_CLKOUT_DIV_0_6_MASK BITFIELD(0, 6) 639#define OMAP4430_DPLL_CLKOUT_DIV_0_6_MASK BITFIELD(0, 6)
640 640
641/* 641/*
@@ -643,11 +643,11 @@
643 * CM_DIV_M2_DPLL_CORE_RESTORE, CM_DIV_M2_DPLL_ABE, CM_DIV_M2_DPLL_CORE, 643 * CM_DIV_M2_DPLL_CORE_RESTORE, CM_DIV_M2_DPLL_ABE, CM_DIV_M2_DPLL_CORE,
644 * CM_DIV_M2_DPLL_DDRPHY, CM_DIV_M2_DPLL_MPU 644 * CM_DIV_M2_DPLL_DDRPHY, CM_DIV_M2_DPLL_MPU
645 */ 645 */
646#define OMAP4430_DPLL_CLKOUT_DIVCHACK_SHIFT (1 << 5) 646#define OMAP4430_DPLL_CLKOUT_DIVCHACK_SHIFT 5
647#define OMAP4430_DPLL_CLKOUT_DIVCHACK_MASK BITFIELD(5, 5) 647#define OMAP4430_DPLL_CLKOUT_DIVCHACK_MASK BITFIELD(5, 5)
648 648
649/* Renamed from DPLL_CLKOUT_DIVCHACK Used by CM_DIV_M2_DPLL_USB */ 649/* Renamed from DPLL_CLKOUT_DIVCHACK Used by CM_DIV_M2_DPLL_USB */
650#define OMAP4430_DPLL_CLKOUT_DIVCHACK_M2_USB_SHIFT (1 << 7) 650#define OMAP4430_DPLL_CLKOUT_DIVCHACK_M2_USB_SHIFT 7
651#define OMAP4430_DPLL_CLKOUT_DIVCHACK_M2_USB_MASK BITFIELD(7, 7) 651#define OMAP4430_DPLL_CLKOUT_DIVCHACK_M2_USB_MASK BITFIELD(7, 7)
652 652
653/* 653/*
@@ -655,23 +655,23 @@
655 * CM_DIV_M2_DPLL_ABE, CM_DIV_M2_DPLL_CORE, CM_DIV_M2_DPLL_DDRPHY, 655 * CM_DIV_M2_DPLL_ABE, CM_DIV_M2_DPLL_CORE, CM_DIV_M2_DPLL_DDRPHY,
656 * CM_DIV_M2_DPLL_MPU 656 * CM_DIV_M2_DPLL_MPU
657 */ 657 */
658#define OMAP4430_DPLL_CLKOUT_GATE_CTRL_SHIFT (1 << 8) 658#define OMAP4430_DPLL_CLKOUT_GATE_CTRL_SHIFT 8
659#define OMAP4430_DPLL_CLKOUT_GATE_CTRL_MASK BITFIELD(8, 8) 659#define OMAP4430_DPLL_CLKOUT_GATE_CTRL_MASK BITFIELD(8, 8)
660 660
661/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */ 661/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */
662#define OMAP4430_DPLL_CORE_DPLL_EN_SHIFT (1 << 8) 662#define OMAP4430_DPLL_CORE_DPLL_EN_SHIFT 8
663#define OMAP4430_DPLL_CORE_DPLL_EN_MASK BITFIELD(8, 10) 663#define OMAP4430_DPLL_CORE_DPLL_EN_MASK BITFIELD(8, 10)
664 664
665/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */ 665/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */
666#define OMAP4430_DPLL_CORE_M2_DIV_SHIFT (1 << 11) 666#define OMAP4430_DPLL_CORE_M2_DIV_SHIFT 11
667#define OMAP4430_DPLL_CORE_M2_DIV_MASK BITFIELD(11, 15) 667#define OMAP4430_DPLL_CORE_M2_DIV_MASK BITFIELD(11, 15)
668 668
669/* Used by CM_SHADOW_FREQ_CONFIG2 */ 669/* Used by CM_SHADOW_FREQ_CONFIG2 */
670#define OMAP4430_DPLL_CORE_M5_DIV_SHIFT (1 << 3) 670#define OMAP4430_DPLL_CORE_M5_DIV_SHIFT 3
671#define OMAP4430_DPLL_CORE_M5_DIV_MASK BITFIELD(3, 7) 671#define OMAP4430_DPLL_CORE_M5_DIV_MASK BITFIELD(3, 7)
672 672
673/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */ 673/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */
674#define OMAP4430_DPLL_CORE_SYS_REF_CLKSEL_SHIFT (1 << 1) 674#define OMAP4430_DPLL_CORE_SYS_REF_CLKSEL_SHIFT 1
675#define OMAP4430_DPLL_CORE_SYS_REF_CLKSEL_MASK BITFIELD(1, 1) 675#define OMAP4430_DPLL_CORE_SYS_REF_CLKSEL_MASK BITFIELD(1, 1)
676 676
677/* 677/*
@@ -679,11 +679,11 @@
679 * CM_CLKSEL_DPLL_CORE_RESTORE, CM_CLKSEL_DPLL_ABE, CM_CLKSEL_DPLL_CORE, 679 * CM_CLKSEL_DPLL_CORE_RESTORE, CM_CLKSEL_DPLL_ABE, CM_CLKSEL_DPLL_CORE,
680 * CM_CLKSEL_DPLL_DDRPHY, CM_CLKSEL_DPLL_IVA, CM_CLKSEL_DPLL_MPU 680 * CM_CLKSEL_DPLL_DDRPHY, CM_CLKSEL_DPLL_IVA, CM_CLKSEL_DPLL_MPU
681 */ 681 */
682#define OMAP4430_DPLL_DIV_SHIFT (1 << 0) 682#define OMAP4430_DPLL_DIV_SHIFT 0
683#define OMAP4430_DPLL_DIV_MASK BITFIELD(0, 6) 683#define OMAP4430_DPLL_DIV_MASK BITFIELD(0, 6)
684 684
685/* Renamed from DPLL_DIV Used by CM_CLKSEL_DPLL_USB */ 685/* Renamed from DPLL_DIV Used by CM_CLKSEL_DPLL_USB */
686#define OMAP4430_DPLL_DIV_0_7_SHIFT (1 << 0) 686#define OMAP4430_DPLL_DIV_0_7_SHIFT 0
687#define OMAP4430_DPLL_DIV_0_7_MASK BITFIELD(0, 7) 687#define OMAP4430_DPLL_DIV_0_7_MASK BITFIELD(0, 7)
688 688
689/* 689/*
@@ -691,11 +691,11 @@
691 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE, 691 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE,
692 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU 692 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU
693 */ 693 */
694#define OMAP4430_DPLL_DRIFTGUARD_EN_SHIFT (1 << 8) 694#define OMAP4430_DPLL_DRIFTGUARD_EN_SHIFT 8
695#define OMAP4430_DPLL_DRIFTGUARD_EN_MASK BITFIELD(8, 8) 695#define OMAP4430_DPLL_DRIFTGUARD_EN_MASK BITFIELD(8, 8)
696 696
697/* Renamed from DPLL_DRIFTGUARD_EN Used by CM_CLKMODE_DPLL_UNIPRO */ 697/* Renamed from DPLL_DRIFTGUARD_EN Used by CM_CLKMODE_DPLL_UNIPRO */
698#define OMAP4430_DPLL_DRIFTGUARD_EN_3_3_SHIFT (1 << 3) 698#define OMAP4430_DPLL_DRIFTGUARD_EN_3_3_SHIFT 3
699#define OMAP4430_DPLL_DRIFTGUARD_EN_3_3_MASK BITFIELD(3, 3) 699#define OMAP4430_DPLL_DRIFTGUARD_EN_3_3_MASK BITFIELD(3, 3)
700 700
701/* 701/*
@@ -703,7 +703,7 @@
703 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE, 703 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE,
704 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU 704 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU
705 */ 705 */
706#define OMAP4430_DPLL_EN_SHIFT (1 << 0) 706#define OMAP4430_DPLL_EN_SHIFT 0
707#define OMAP4430_DPLL_EN_MASK BITFIELD(0, 2) 707#define OMAP4430_DPLL_EN_MASK BITFIELD(0, 2)
708 708
709/* 709/*
@@ -711,7 +711,7 @@
711 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE, 711 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE,
712 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU 712 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU
713 */ 713 */
714#define OMAP4430_DPLL_LPMODE_EN_SHIFT (1 << 10) 714#define OMAP4430_DPLL_LPMODE_EN_SHIFT 10
715#define OMAP4430_DPLL_LPMODE_EN_MASK BITFIELD(10, 10) 715#define OMAP4430_DPLL_LPMODE_EN_MASK BITFIELD(10, 10)
716 716
717/* 717/*
@@ -719,11 +719,11 @@
719 * CM_CLKSEL_DPLL_CORE_RESTORE, CM_CLKSEL_DPLL_ABE, CM_CLKSEL_DPLL_CORE, 719 * CM_CLKSEL_DPLL_CORE_RESTORE, CM_CLKSEL_DPLL_ABE, CM_CLKSEL_DPLL_CORE,
720 * CM_CLKSEL_DPLL_DDRPHY, CM_CLKSEL_DPLL_IVA, CM_CLKSEL_DPLL_MPU 720 * CM_CLKSEL_DPLL_DDRPHY, CM_CLKSEL_DPLL_IVA, CM_CLKSEL_DPLL_MPU
721 */ 721 */
722#define OMAP4430_DPLL_MULT_SHIFT (1 << 8) 722#define OMAP4430_DPLL_MULT_SHIFT 8
723#define OMAP4430_DPLL_MULT_MASK BITFIELD(8, 18) 723#define OMAP4430_DPLL_MULT_MASK BITFIELD(8, 18)
724 724
725/* Renamed from DPLL_MULT Used by CM_CLKSEL_DPLL_USB */ 725/* Renamed from DPLL_MULT Used by CM_CLKSEL_DPLL_USB */
726#define OMAP4430_DPLL_MULT_USB_SHIFT (1 << 8) 726#define OMAP4430_DPLL_MULT_USB_SHIFT 8
727#define OMAP4430_DPLL_MULT_USB_MASK BITFIELD(8, 19) 727#define OMAP4430_DPLL_MULT_USB_MASK BITFIELD(8, 19)
728 728
729/* 729/*
@@ -731,11 +731,11 @@
731 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE, 731 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE,
732 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU 732 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU
733 */ 733 */
734#define OMAP4430_DPLL_REGM4XEN_SHIFT (1 << 11) 734#define OMAP4430_DPLL_REGM4XEN_SHIFT 11
735#define OMAP4430_DPLL_REGM4XEN_MASK BITFIELD(11, 11) 735#define OMAP4430_DPLL_REGM4XEN_MASK BITFIELD(11, 11)
736 736
737/* Used by CM_CLKSEL_DPLL_USB */ 737/* Used by CM_CLKSEL_DPLL_USB */
738#define OMAP4430_DPLL_SD_DIV_SHIFT (1 << 24) 738#define OMAP4430_DPLL_SD_DIV_SHIFT 24
739#define OMAP4430_DPLL_SD_DIV_MASK BITFIELD(24, 31) 739#define OMAP4430_DPLL_SD_DIV_MASK BITFIELD(24, 31)
740 740
741/* 741/*
@@ -743,7 +743,7 @@
743 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE, 743 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE,
744 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU 744 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU
745 */ 745 */
746#define OMAP4430_DPLL_SSC_ACK_SHIFT (1 << 13) 746#define OMAP4430_DPLL_SSC_ACK_SHIFT 13
747#define OMAP4430_DPLL_SSC_ACK_MASK BITFIELD(13, 13) 747#define OMAP4430_DPLL_SSC_ACK_MASK BITFIELD(13, 13)
748 748
749/* 749/*
@@ -751,7 +751,7 @@
751 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE, 751 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE,
752 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU 752 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU
753 */ 753 */
754#define OMAP4430_DPLL_SSC_DOWNSPREAD_SHIFT (1 << 14) 754#define OMAP4430_DPLL_SSC_DOWNSPREAD_SHIFT 14
755#define OMAP4430_DPLL_SSC_DOWNSPREAD_MASK BITFIELD(14, 14) 755#define OMAP4430_DPLL_SSC_DOWNSPREAD_MASK BITFIELD(14, 14)
756 756
757/* 757/*
@@ -759,154 +759,154 @@
759 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE, 759 * CM_CLKMODE_DPLL_CORE_RESTORE, CM_CLKMODE_DPLL_ABE, CM_CLKMODE_DPLL_CORE,
760 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU 760 * CM_CLKMODE_DPLL_DDRPHY, CM_CLKMODE_DPLL_IVA, CM_CLKMODE_DPLL_MPU
761 */ 761 */
762#define OMAP4430_DPLL_SSC_EN_SHIFT (1 << 12) 762#define OMAP4430_DPLL_SSC_EN_SHIFT 12
763#define OMAP4430_DPLL_SSC_EN_MASK BITFIELD(12, 12) 763#define OMAP4430_DPLL_SSC_EN_MASK BITFIELD(12, 12)
764 764
765/* Used by CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP, CM_L4PER_DYNAMICDEP */ 765/* Used by CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP, CM_L4PER_DYNAMICDEP */
766#define OMAP4430_DSS_DYNDEP_SHIFT (1 << 8) 766#define OMAP4430_DSS_DYNDEP_SHIFT 8
767#define OMAP4430_DSS_DYNDEP_MASK BITFIELD(8, 8) 767#define OMAP4430_DSS_DYNDEP_MASK BITFIELD(8, 8)
768 768
769/* 769/*
770 * Used by CM_DUCATI_STATICDEP, CM_SDMA_STATICDEP, CM_SDMA_STATICDEP_RESTORE, 770 * Used by CM_DUCATI_STATICDEP, CM_SDMA_STATICDEP, CM_SDMA_STATICDEP_RESTORE,
771 * CM_MPU_STATICDEP 771 * CM_MPU_STATICDEP
772 */ 772 */
773#define OMAP4430_DSS_STATDEP_SHIFT (1 << 8) 773#define OMAP4430_DSS_STATDEP_SHIFT 8
774#define OMAP4430_DSS_STATDEP_MASK BITFIELD(8, 8) 774#define OMAP4430_DSS_STATDEP_MASK BITFIELD(8, 8)
775 775
776/* Used by CM_L3_2_DYNAMICDEP */ 776/* Used by CM_L3_2_DYNAMICDEP */
777#define OMAP4430_DUCATI_DYNDEP_SHIFT (1 << 0) 777#define OMAP4430_DUCATI_DYNDEP_SHIFT 0
778#define OMAP4430_DUCATI_DYNDEP_MASK BITFIELD(0, 0) 778#define OMAP4430_DUCATI_DYNDEP_MASK BITFIELD(0, 0)
779 779
780/* Used by CM_SDMA_STATICDEP, CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP */ 780/* Used by CM_SDMA_STATICDEP, CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP */
781#define OMAP4430_DUCATI_STATDEP_SHIFT (1 << 0) 781#define OMAP4430_DUCATI_STATDEP_SHIFT 0
782#define OMAP4430_DUCATI_STATDEP_MASK BITFIELD(0, 0) 782#define OMAP4430_DUCATI_STATDEP_MASK BITFIELD(0, 0)
783 783
784/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */ 784/* Used by CM_SHADOW_FREQ_CONFIG1_RESTORE, CM_SHADOW_FREQ_CONFIG1 */
785#define OMAP4430_FREQ_UPDATE_SHIFT (1 << 0) 785#define OMAP4430_FREQ_UPDATE_SHIFT 0
786#define OMAP4430_FREQ_UPDATE_MASK BITFIELD(0, 0) 786#define OMAP4430_FREQ_UPDATE_MASK BITFIELD(0, 0)
787 787
788/* Used by CM_L3_2_DYNAMICDEP */ 788/* Used by CM_L3_2_DYNAMICDEP */
789#define OMAP4430_GFX_DYNDEP_SHIFT (1 << 10) 789#define OMAP4430_GFX_DYNDEP_SHIFT 10
790#define OMAP4430_GFX_DYNDEP_MASK BITFIELD(10, 10) 790#define OMAP4430_GFX_DYNDEP_MASK BITFIELD(10, 10)
791 791
792/* Used by CM_DUCATI_STATICDEP, CM_MPU_STATICDEP */ 792/* Used by CM_DUCATI_STATICDEP, CM_MPU_STATICDEP */
793#define OMAP4430_GFX_STATDEP_SHIFT (1 << 10) 793#define OMAP4430_GFX_STATDEP_SHIFT 10
794#define OMAP4430_GFX_STATDEP_MASK BITFIELD(10, 10) 794#define OMAP4430_GFX_STATDEP_MASK BITFIELD(10, 10)
795 795
796/* Used by CM_SHADOW_FREQ_CONFIG2 */ 796/* Used by CM_SHADOW_FREQ_CONFIG2 */
797#define OMAP4430_GPMC_FREQ_UPDATE_SHIFT (1 << 0) 797#define OMAP4430_GPMC_FREQ_UPDATE_SHIFT 0
798#define OMAP4430_GPMC_FREQ_UPDATE_MASK BITFIELD(0, 0) 798#define OMAP4430_GPMC_FREQ_UPDATE_MASK BITFIELD(0, 0)
799 799
800/* 800/*
801 * Used by CM_DIV_M4_DPLL_PER, CM_DIV_M4_DPLL_CORE_RESTORE, 801 * Used by CM_DIV_M4_DPLL_PER, CM_DIV_M4_DPLL_CORE_RESTORE,
802 * CM_DIV_M4_DPLL_CORE, CM_DIV_M4_DPLL_DDRPHY, CM_DIV_M4_DPLL_IVA 802 * CM_DIV_M4_DPLL_CORE, CM_DIV_M4_DPLL_DDRPHY, CM_DIV_M4_DPLL_IVA
803 */ 803 */
804#define OMAP4430_HSDIVIDER_CLKOUT1_DIV_SHIFT (1 << 0) 804#define OMAP4430_HSDIVIDER_CLKOUT1_DIV_SHIFT 0
805#define OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK BITFIELD(0, 4) 805#define OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK BITFIELD(0, 4)
806 806
807/* 807/*
808 * Used by CM_DIV_M4_DPLL_PER, CM_DIV_M4_DPLL_CORE_RESTORE, 808 * Used by CM_DIV_M4_DPLL_PER, CM_DIV_M4_DPLL_CORE_RESTORE,
809 * CM_DIV_M4_DPLL_CORE, CM_DIV_M4_DPLL_DDRPHY, CM_DIV_M4_DPLL_IVA 809 * CM_DIV_M4_DPLL_CORE, CM_DIV_M4_DPLL_DDRPHY, CM_DIV_M4_DPLL_IVA
810 */ 810 */
811#define OMAP4430_HSDIVIDER_CLKOUT1_DIVCHACK_SHIFT (1 << 5) 811#define OMAP4430_HSDIVIDER_CLKOUT1_DIVCHACK_SHIFT 5
812#define OMAP4430_HSDIVIDER_CLKOUT1_DIVCHACK_MASK BITFIELD(5, 5) 812#define OMAP4430_HSDIVIDER_CLKOUT1_DIVCHACK_MASK BITFIELD(5, 5)
813 813
814/* 814/*
815 * Used by CM_DIV_M4_DPLL_PER, CM_DIV_M4_DPLL_CORE_RESTORE, 815 * Used by CM_DIV_M4_DPLL_PER, CM_DIV_M4_DPLL_CORE_RESTORE,
816 * CM_DIV_M4_DPLL_CORE, CM_DIV_M4_DPLL_DDRPHY, CM_DIV_M4_DPLL_IVA 816 * CM_DIV_M4_DPLL_CORE, CM_DIV_M4_DPLL_DDRPHY, CM_DIV_M4_DPLL_IVA
817 */ 817 */
818#define OMAP4430_HSDIVIDER_CLKOUT1_GATE_CTRL_SHIFT (1 << 8) 818#define OMAP4430_HSDIVIDER_CLKOUT1_GATE_CTRL_SHIFT 8
819#define OMAP4430_HSDIVIDER_CLKOUT1_GATE_CTRL_MASK BITFIELD(8, 8) 819#define OMAP4430_HSDIVIDER_CLKOUT1_GATE_CTRL_MASK BITFIELD(8, 8)
820 820
821/* 821/*
822 * Used by CM_DIV_M4_DPLL_PER, CM_DIV_M4_DPLL_CORE_RESTORE, 822 * Used by CM_DIV_M4_DPLL_PER, CM_DIV_M4_DPLL_CORE_RESTORE,
823 * CM_DIV_M4_DPLL_CORE, CM_DIV_M4_DPLL_DDRPHY, CM_DIV_M4_DPLL_IVA 823 * CM_DIV_M4_DPLL_CORE, CM_DIV_M4_DPLL_DDRPHY, CM_DIV_M4_DPLL_IVA
824 */ 824 */
825#define OMAP4430_HSDIVIDER_CLKOUT1_PWDN_SHIFT (1 << 12) 825#define OMAP4430_HSDIVIDER_CLKOUT1_PWDN_SHIFT 12
826#define OMAP4430_HSDIVIDER_CLKOUT1_PWDN_MASK BITFIELD(12, 12) 826#define OMAP4430_HSDIVIDER_CLKOUT1_PWDN_MASK BITFIELD(12, 12)
827 827
828/* 828/*
829 * Used by CM_DIV_M5_DPLL_PER, CM_DIV_M5_DPLL_CORE_RESTORE, 829 * Used by CM_DIV_M5_DPLL_PER, CM_DIV_M5_DPLL_CORE_RESTORE,
830 * CM_DIV_M5_DPLL_CORE, CM_DIV_M5_DPLL_DDRPHY, CM_DIV_M5_DPLL_IVA 830 * CM_DIV_M5_DPLL_CORE, CM_DIV_M5_DPLL_DDRPHY, CM_DIV_M5_DPLL_IVA
831 */ 831 */
832#define OMAP4430_HSDIVIDER_CLKOUT2_DIV_SHIFT (1 << 0) 832#define OMAP4430_HSDIVIDER_CLKOUT2_DIV_SHIFT 0
833#define OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK BITFIELD(0, 4) 833#define OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK BITFIELD(0, 4)
834 834
835/* 835/*
836 * Used by CM_DIV_M5_DPLL_PER, CM_DIV_M5_DPLL_CORE_RESTORE, 836 * Used by CM_DIV_M5_DPLL_PER, CM_DIV_M5_DPLL_CORE_RESTORE,
837 * CM_DIV_M5_DPLL_CORE, CM_DIV_M5_DPLL_DDRPHY, CM_DIV_M5_DPLL_IVA 837 * CM_DIV_M5_DPLL_CORE, CM_DIV_M5_DPLL_DDRPHY, CM_DIV_M5_DPLL_IVA
838 */ 838 */
839#define OMAP4430_HSDIVIDER_CLKOUT2_DIVCHACK_SHIFT (1 << 5) 839#define OMAP4430_HSDIVIDER_CLKOUT2_DIVCHACK_SHIFT 5
840#define OMAP4430_HSDIVIDER_CLKOUT2_DIVCHACK_MASK BITFIELD(5, 5) 840#define OMAP4430_HSDIVIDER_CLKOUT2_DIVCHACK_MASK BITFIELD(5, 5)
841 841
842/* 842/*
843 * Used by CM_DIV_M5_DPLL_PER, CM_DIV_M5_DPLL_CORE_RESTORE, 843 * Used by CM_DIV_M5_DPLL_PER, CM_DIV_M5_DPLL_CORE_RESTORE,
844 * CM_DIV_M5_DPLL_CORE, CM_DIV_M5_DPLL_DDRPHY, CM_DIV_M5_DPLL_IVA 844 * CM_DIV_M5_DPLL_CORE, CM_DIV_M5_DPLL_DDRPHY, CM_DIV_M5_DPLL_IVA
845 */ 845 */
846#define OMAP4430_HSDIVIDER_CLKOUT2_GATE_CTRL_SHIFT (1 << 8) 846#define OMAP4430_HSDIVIDER_CLKOUT2_GATE_CTRL_SHIFT 8
847#define OMAP4430_HSDIVIDER_CLKOUT2_GATE_CTRL_MASK BITFIELD(8, 8) 847#define OMAP4430_HSDIVIDER_CLKOUT2_GATE_CTRL_MASK BITFIELD(8, 8)
848 848
849/* 849/*
850 * Used by CM_DIV_M5_DPLL_PER, CM_DIV_M5_DPLL_CORE_RESTORE, 850 * Used by CM_DIV_M5_DPLL_PER, CM_DIV_M5_DPLL_CORE_RESTORE,
851 * CM_DIV_M5_DPLL_CORE, CM_DIV_M5_DPLL_DDRPHY, CM_DIV_M5_DPLL_IVA 851 * CM_DIV_M5_DPLL_CORE, CM_DIV_M5_DPLL_DDRPHY, CM_DIV_M5_DPLL_IVA
852 */ 852 */
853#define OMAP4430_HSDIVIDER_CLKOUT2_PWDN_SHIFT (1 << 12) 853#define OMAP4430_HSDIVIDER_CLKOUT2_PWDN_SHIFT 12
854#define OMAP4430_HSDIVIDER_CLKOUT2_PWDN_MASK BITFIELD(12, 12) 854#define OMAP4430_HSDIVIDER_CLKOUT2_PWDN_MASK BITFIELD(12, 12)
855 855
856/* 856/*
857 * Used by CM_DIV_M6_DPLL_PER, CM_DIV_M6_DPLL_CORE_RESTORE, 857 * Used by CM_DIV_M6_DPLL_PER, CM_DIV_M6_DPLL_CORE_RESTORE,
858 * CM_DIV_M6_DPLL_CORE, CM_DIV_M6_DPLL_DDRPHY 858 * CM_DIV_M6_DPLL_CORE, CM_DIV_M6_DPLL_DDRPHY
859 */ 859 */
860#define OMAP4430_HSDIVIDER_CLKOUT3_DIV_SHIFT (1 << 0) 860#define OMAP4430_HSDIVIDER_CLKOUT3_DIV_SHIFT 0
861#define OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK BITFIELD(0, 4) 861#define OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK BITFIELD(0, 4)
862 862
863/* 863/*
864 * Used by CM_DIV_M6_DPLL_PER, CM_DIV_M6_DPLL_CORE_RESTORE, 864 * Used by CM_DIV_M6_DPLL_PER, CM_DIV_M6_DPLL_CORE_RESTORE,
865 * CM_DIV_M6_DPLL_CORE, CM_DIV_M6_DPLL_DDRPHY 865 * CM_DIV_M6_DPLL_CORE, CM_DIV_M6_DPLL_DDRPHY
866 */ 866 */
867#define OMAP4430_HSDIVIDER_CLKOUT3_DIVCHACK_SHIFT (1 << 5) 867#define OMAP4430_HSDIVIDER_CLKOUT3_DIVCHACK_SHIFT 5
868#define OMAP4430_HSDIVIDER_CLKOUT3_DIVCHACK_MASK BITFIELD(5, 5) 868#define OMAP4430_HSDIVIDER_CLKOUT3_DIVCHACK_MASK BITFIELD(5, 5)
869 869
870/* 870/*
871 * Used by CM_DIV_M6_DPLL_PER, CM_DIV_M6_DPLL_CORE_RESTORE, 871 * Used by CM_DIV_M6_DPLL_PER, CM_DIV_M6_DPLL_CORE_RESTORE,
872 * CM_DIV_M6_DPLL_CORE, CM_DIV_M6_DPLL_DDRPHY 872 * CM_DIV_M6_DPLL_CORE, CM_DIV_M6_DPLL_DDRPHY
873 */ 873 */
874#define OMAP4430_HSDIVIDER_CLKOUT3_GATE_CTRL_SHIFT (1 << 8) 874#define OMAP4430_HSDIVIDER_CLKOUT3_GATE_CTRL_SHIFT 8
875#define OMAP4430_HSDIVIDER_CLKOUT3_GATE_CTRL_MASK BITFIELD(8, 8) 875#define OMAP4430_HSDIVIDER_CLKOUT3_GATE_CTRL_MASK BITFIELD(8, 8)
876 876
877/* 877/*
878 * Used by CM_DIV_M6_DPLL_PER, CM_DIV_M6_DPLL_CORE_RESTORE, 878 * Used by CM_DIV_M6_DPLL_PER, CM_DIV_M6_DPLL_CORE_RESTORE,
879 * CM_DIV_M6_DPLL_CORE, CM_DIV_M6_DPLL_DDRPHY 879 * CM_DIV_M6_DPLL_CORE, CM_DIV_M6_DPLL_DDRPHY
880 */ 880 */
881#define OMAP4430_HSDIVIDER_CLKOUT3_PWDN_SHIFT (1 << 12) 881#define OMAP4430_HSDIVIDER_CLKOUT3_PWDN_SHIFT 12
882#define OMAP4430_HSDIVIDER_CLKOUT3_PWDN_MASK BITFIELD(12, 12) 882#define OMAP4430_HSDIVIDER_CLKOUT3_PWDN_MASK BITFIELD(12, 12)
883 883
884/* 884/*
885 * Used by CM_DIV_M7_DPLL_PER, CM_DIV_M7_DPLL_CORE_RESTORE, 885 * Used by CM_DIV_M7_DPLL_PER, CM_DIV_M7_DPLL_CORE_RESTORE,
886 * CM_DIV_M7_DPLL_CORE 886 * CM_DIV_M7_DPLL_CORE
887 */ 887 */
888#define OMAP4430_HSDIVIDER_CLKOUT4_DIV_SHIFT (1 << 0) 888#define OMAP4430_HSDIVIDER_CLKOUT4_DIV_SHIFT 0
889#define OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK BITFIELD(0, 4) 889#define OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK BITFIELD(0, 4)
890 890
891/* 891/*
892 * Used by CM_DIV_M7_DPLL_PER, CM_DIV_M7_DPLL_CORE_RESTORE, 892 * Used by CM_DIV_M7_DPLL_PER, CM_DIV_M7_DPLL_CORE_RESTORE,
893 * CM_DIV_M7_DPLL_CORE 893 * CM_DIV_M7_DPLL_CORE
894 */ 894 */
895#define OMAP4430_HSDIVIDER_CLKOUT4_DIVCHACK_SHIFT (1 << 5) 895#define OMAP4430_HSDIVIDER_CLKOUT4_DIVCHACK_SHIFT 5
896#define OMAP4430_HSDIVIDER_CLKOUT4_DIVCHACK_MASK BITFIELD(5, 5) 896#define OMAP4430_HSDIVIDER_CLKOUT4_DIVCHACK_MASK BITFIELD(5, 5)
897 897
898/* 898/*
899 * Used by CM_DIV_M7_DPLL_PER, CM_DIV_M7_DPLL_CORE_RESTORE, 899 * Used by CM_DIV_M7_DPLL_PER, CM_DIV_M7_DPLL_CORE_RESTORE,
900 * CM_DIV_M7_DPLL_CORE 900 * CM_DIV_M7_DPLL_CORE
901 */ 901 */
902#define OMAP4430_HSDIVIDER_CLKOUT4_GATE_CTRL_SHIFT (1 << 8) 902#define OMAP4430_HSDIVIDER_CLKOUT4_GATE_CTRL_SHIFT 8
903#define OMAP4430_HSDIVIDER_CLKOUT4_GATE_CTRL_MASK BITFIELD(8, 8) 903#define OMAP4430_HSDIVIDER_CLKOUT4_GATE_CTRL_MASK BITFIELD(8, 8)
904 904
905/* 905/*
906 * Used by CM_DIV_M7_DPLL_PER, CM_DIV_M7_DPLL_CORE_RESTORE, 906 * Used by CM_DIV_M7_DPLL_PER, CM_DIV_M7_DPLL_CORE_RESTORE,
907 * CM_DIV_M7_DPLL_CORE 907 * CM_DIV_M7_DPLL_CORE
908 */ 908 */
909#define OMAP4430_HSDIVIDER_CLKOUT4_PWDN_SHIFT (1 << 12) 909#define OMAP4430_HSDIVIDER_CLKOUT4_PWDN_SHIFT 12
910#define OMAP4430_HSDIVIDER_CLKOUT4_PWDN_MASK BITFIELD(12, 12) 910#define OMAP4430_HSDIVIDER_CLKOUT4_PWDN_MASK BITFIELD(12, 12)
911 911
912/* 912/*
@@ -962,22 +962,22 @@
962 * CM1_ABE_TIMER6_CLKCTRL, CM1_ABE_TIMER7_CLKCTRL, CM1_ABE_TIMER8_CLKCTRL, 962 * CM1_ABE_TIMER6_CLKCTRL, CM1_ABE_TIMER7_CLKCTRL, CM1_ABE_TIMER8_CLKCTRL,
963 * CM1_ABE_WDT3_CLKCTRL, CM_CM1_PROFILING_CLKCTRL 963 * CM1_ABE_WDT3_CLKCTRL, CM_CM1_PROFILING_CLKCTRL
964 */ 964 */
965#define OMAP4430_IDLEST_SHIFT (1 << 16) 965#define OMAP4430_IDLEST_SHIFT 16
966#define OMAP4430_IDLEST_MASK BITFIELD(16, 17) 966#define OMAP4430_IDLEST_MASK BITFIELD(16, 17)
967 967
968/* Used by CM_DUCATI_DYNAMICDEP, CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP */ 968/* Used by CM_DUCATI_DYNAMICDEP, CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP */
969#define OMAP4430_ISS_DYNDEP_SHIFT (1 << 9) 969#define OMAP4430_ISS_DYNDEP_SHIFT 9
970#define OMAP4430_ISS_DYNDEP_MASK BITFIELD(9, 9) 970#define OMAP4430_ISS_DYNDEP_MASK BITFIELD(9, 9)
971 971
972/* 972/*
973 * Used by CM_DUCATI_STATICDEP, CM_SDMA_STATICDEP, CM_SDMA_STATICDEP_RESTORE, 973 * Used by CM_DUCATI_STATICDEP, CM_SDMA_STATICDEP, CM_SDMA_STATICDEP_RESTORE,
974 * CM_MPU_STATICDEP, CM_TESLA_STATICDEP 974 * CM_MPU_STATICDEP, CM_TESLA_STATICDEP
975 */ 975 */
976#define OMAP4430_ISS_STATDEP_SHIFT (1 << 9) 976#define OMAP4430_ISS_STATDEP_SHIFT 9
977#define OMAP4430_ISS_STATDEP_MASK BITFIELD(9, 9) 977#define OMAP4430_ISS_STATDEP_MASK BITFIELD(9, 9)
978 978
979/* Used by CM_L3_2_DYNAMICDEP, CM_TESLA_DYNAMICDEP */ 979/* Used by CM_L3_2_DYNAMICDEP, CM_TESLA_DYNAMICDEP */
980#define OMAP4430_IVAHD_DYNDEP_SHIFT (1 << 2) 980#define OMAP4430_IVAHD_DYNDEP_SHIFT 2
981#define OMAP4430_IVAHD_DYNDEP_MASK BITFIELD(2, 2) 981#define OMAP4430_IVAHD_DYNDEP_MASK BITFIELD(2, 2)
982 982
983/* 983/*
@@ -986,25 +986,25 @@
986 * CM_SDMA_STATICDEP_RESTORE, CM_DSS_STATICDEP, CM_MPU_STATICDEP, 986 * CM_SDMA_STATICDEP_RESTORE, CM_DSS_STATICDEP, CM_MPU_STATICDEP,
987 * CM_TESLA_STATICDEP 987 * CM_TESLA_STATICDEP
988 */ 988 */
989#define OMAP4430_IVAHD_STATDEP_SHIFT (1 << 2) 989#define OMAP4430_IVAHD_STATDEP_SHIFT 2
990#define OMAP4430_IVAHD_STATDEP_MASK BITFIELD(2, 2) 990#define OMAP4430_IVAHD_STATDEP_MASK BITFIELD(2, 2)
991 991
992/* Used by CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP, CM_L4PER_DYNAMICDEP */ 992/* Used by CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP, CM_L4PER_DYNAMICDEP */
993#define OMAP4430_L3INIT_DYNDEP_SHIFT (1 << 7) 993#define OMAP4430_L3INIT_DYNDEP_SHIFT 7
994#define OMAP4430_L3INIT_DYNDEP_MASK BITFIELD(7, 7) 994#define OMAP4430_L3INIT_DYNDEP_MASK BITFIELD(7, 7)
995 995
996/* 996/*
997 * Used by CM_D2D_STATICDEP, CM_DUCATI_STATICDEP, CM_SDMA_STATICDEP, 997 * Used by CM_D2D_STATICDEP, CM_DUCATI_STATICDEP, CM_SDMA_STATICDEP,
998 * CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP, CM_TESLA_STATICDEP 998 * CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP, CM_TESLA_STATICDEP
999 */ 999 */
1000#define OMAP4430_L3INIT_STATDEP_SHIFT (1 << 7) 1000#define OMAP4430_L3INIT_STATDEP_SHIFT 7
1001#define OMAP4430_L3INIT_STATDEP_MASK BITFIELD(7, 7) 1001#define OMAP4430_L3INIT_STATDEP_MASK BITFIELD(7, 7)
1002 1002
1003/* 1003/*
1004 * Used by CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP, CM_L3INIT_DYNAMICDEP, 1004 * Used by CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP, CM_L3INIT_DYNAMICDEP,
1005 * CM_DSS_DYNAMICDEP, CM_MPU_DYNAMICDEP, CM_TESLA_DYNAMICDEP 1005 * CM_DSS_DYNAMICDEP, CM_MPU_DYNAMICDEP, CM_TESLA_DYNAMICDEP
1006 */ 1006 */
1007#define OMAP4430_L3_1_DYNDEP_SHIFT (1 << 5) 1007#define OMAP4430_L3_1_DYNDEP_SHIFT 5
1008#define OMAP4430_L3_1_DYNDEP_MASK BITFIELD(5, 5) 1008#define OMAP4430_L3_1_DYNDEP_MASK BITFIELD(5, 5)
1009 1009
1010/* 1010/*
@@ -1013,7 +1013,7 @@
1013 * CM_SDMA_STATICDEP_RESTORE, CM_IVAHD_STATICDEP, CM_DSS_STATICDEP, 1013 * CM_SDMA_STATICDEP_RESTORE, CM_IVAHD_STATICDEP, CM_DSS_STATICDEP,
1014 * CM_MPU_STATICDEP, CM_TESLA_STATICDEP 1014 * CM_MPU_STATICDEP, CM_TESLA_STATICDEP
1015 */ 1015 */
1016#define OMAP4430_L3_1_STATDEP_SHIFT (1 << 5) 1016#define OMAP4430_L3_1_STATDEP_SHIFT 5
1017#define OMAP4430_L3_1_STATDEP_MASK BITFIELD(5, 5) 1017#define OMAP4430_L3_1_STATDEP_MASK BITFIELD(5, 5)
1018 1018
1019/* 1019/*
@@ -1022,7 +1022,7 @@
1022 * CM_GFX_DYNAMICDEP, CM_L4SEC_DYNAMICDEP, CM_L3INIT_DYNAMICDEP, 1022 * CM_GFX_DYNAMICDEP, CM_L4SEC_DYNAMICDEP, CM_L3INIT_DYNAMICDEP,
1023 * CM_CAM_DYNAMICDEP, CM_IVAHD_DYNAMICDEP 1023 * CM_CAM_DYNAMICDEP, CM_IVAHD_DYNAMICDEP
1024 */ 1024 */
1025#define OMAP4430_L3_2_DYNDEP_SHIFT (1 << 6) 1025#define OMAP4430_L3_2_DYNDEP_SHIFT 6
1026#define OMAP4430_L3_2_DYNDEP_MASK BITFIELD(6, 6) 1026#define OMAP4430_L3_2_DYNDEP_MASK BITFIELD(6, 6)
1027 1027
1028/* 1028/*
@@ -1031,11 +1031,11 @@
1031 * CM_SDMA_STATICDEP_RESTORE, CM_IVAHD_STATICDEP, CM_DSS_STATICDEP, 1031 * CM_SDMA_STATICDEP_RESTORE, CM_IVAHD_STATICDEP, CM_DSS_STATICDEP,
1032 * CM_MPU_STATICDEP, CM_TESLA_STATICDEP 1032 * CM_MPU_STATICDEP, CM_TESLA_STATICDEP
1033 */ 1033 */
1034#define OMAP4430_L3_2_STATDEP_SHIFT (1 << 6) 1034#define OMAP4430_L3_2_STATDEP_SHIFT 6
1035#define OMAP4430_L3_2_STATDEP_MASK BITFIELD(6, 6) 1035#define OMAP4430_L3_2_STATDEP_MASK BITFIELD(6, 6)
1036 1036
1037/* Used by CM_L3_1_DYNAMICDEP */ 1037/* Used by CM_L3_1_DYNAMICDEP */
1038#define OMAP4430_L4CFG_DYNDEP_SHIFT (1 << 12) 1038#define OMAP4430_L4CFG_DYNDEP_SHIFT 12
1039#define OMAP4430_L4CFG_DYNDEP_MASK BITFIELD(12, 12) 1039#define OMAP4430_L4CFG_DYNDEP_MASK BITFIELD(12, 12)
1040 1040
1041/* 1041/*
@@ -1043,11 +1043,11 @@
1043 * CM_L3INIT_STATICDEP, CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP, 1043 * CM_L3INIT_STATICDEP, CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP,
1044 * CM_TESLA_STATICDEP 1044 * CM_TESLA_STATICDEP
1045 */ 1045 */
1046#define OMAP4430_L4CFG_STATDEP_SHIFT (1 << 12) 1046#define OMAP4430_L4CFG_STATDEP_SHIFT 12
1047#define OMAP4430_L4CFG_STATDEP_MASK BITFIELD(12, 12) 1047#define OMAP4430_L4CFG_STATDEP_MASK BITFIELD(12, 12)
1048 1048
1049/* Used by CM_L3_2_DYNAMICDEP */ 1049/* Used by CM_L3_2_DYNAMICDEP */
1050#define OMAP4430_L4PER_DYNDEP_SHIFT (1 << 13) 1050#define OMAP4430_L4PER_DYNDEP_SHIFT 13
1051#define OMAP4430_L4PER_DYNDEP_MASK BITFIELD(13, 13) 1051#define OMAP4430_L4PER_DYNDEP_MASK BITFIELD(13, 13)
1052 1052
1053/* 1053/*
@@ -1055,36 +1055,36 @@
1055 * CM_L4SEC_STATICDEP, CM_L3INIT_STATICDEP, CM_SDMA_STATICDEP_RESTORE, 1055 * CM_L4SEC_STATICDEP, CM_L3INIT_STATICDEP, CM_SDMA_STATICDEP_RESTORE,
1056 * CM_MPU_STATICDEP, CM_TESLA_STATICDEP 1056 * CM_MPU_STATICDEP, CM_TESLA_STATICDEP
1057 */ 1057 */
1058#define OMAP4430_L4PER_STATDEP_SHIFT (1 << 13) 1058#define OMAP4430_L4PER_STATDEP_SHIFT 13
1059#define OMAP4430_L4PER_STATDEP_MASK BITFIELD(13, 13) 1059#define OMAP4430_L4PER_STATDEP_MASK BITFIELD(13, 13)
1060 1060
1061/* Used by CM_L3_2_DYNAMICDEP, CM_L4PER_DYNAMICDEP */ 1061/* Used by CM_L3_2_DYNAMICDEP, CM_L4PER_DYNAMICDEP */
1062#define OMAP4430_L4SEC_DYNDEP_SHIFT (1 << 14) 1062#define OMAP4430_L4SEC_DYNDEP_SHIFT 14
1063#define OMAP4430_L4SEC_DYNDEP_MASK BITFIELD(14, 14) 1063#define OMAP4430_L4SEC_DYNDEP_MASK BITFIELD(14, 14)
1064 1064
1065/* 1065/*
1066 * Used by CM_DUCATI_STATICDEP, CM_SDMA_STATICDEP, CM_L3INIT_STATICDEP, 1066 * Used by CM_DUCATI_STATICDEP, CM_SDMA_STATICDEP, CM_L3INIT_STATICDEP,
1067 * CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP 1067 * CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP
1068 */ 1068 */
1069#define OMAP4430_L4SEC_STATDEP_SHIFT (1 << 14) 1069#define OMAP4430_L4SEC_STATDEP_SHIFT 14
1070#define OMAP4430_L4SEC_STATDEP_MASK BITFIELD(14, 14) 1070#define OMAP4430_L4SEC_STATDEP_MASK BITFIELD(14, 14)
1071 1071
1072/* Used by CM_L4CFG_DYNAMICDEP */ 1072/* Used by CM_L4CFG_DYNAMICDEP */
1073#define OMAP4430_L4WKUP_DYNDEP_SHIFT (1 << 15) 1073#define OMAP4430_L4WKUP_DYNDEP_SHIFT 15
1074#define OMAP4430_L4WKUP_DYNDEP_MASK BITFIELD(15, 15) 1074#define OMAP4430_L4WKUP_DYNDEP_MASK BITFIELD(15, 15)
1075 1075
1076/* 1076/*
1077 * Used by CM_DUCATI_STATICDEP, CM_SDMA_STATICDEP, CM_L3INIT_STATICDEP, 1077 * Used by CM_DUCATI_STATICDEP, CM_SDMA_STATICDEP, CM_L3INIT_STATICDEP,
1078 * CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP, CM_TESLA_STATICDEP 1078 * CM_SDMA_STATICDEP_RESTORE, CM_MPU_STATICDEP, CM_TESLA_STATICDEP
1079 */ 1079 */
1080#define OMAP4430_L4WKUP_STATDEP_SHIFT (1 << 15) 1080#define OMAP4430_L4WKUP_STATDEP_SHIFT 15
1081#define OMAP4430_L4WKUP_STATDEP_MASK BITFIELD(15, 15) 1081#define OMAP4430_L4WKUP_STATDEP_MASK BITFIELD(15, 15)
1082 1082
1083/* 1083/*
1084 * Used by CM_D2D_DYNAMICDEP, CM_L3_1_DYNAMICDEP, CM_L4CFG_DYNAMICDEP, 1084 * Used by CM_D2D_DYNAMICDEP, CM_L3_1_DYNAMICDEP, CM_L4CFG_DYNAMICDEP,
1085 * CM_MPU_DYNAMICDEP 1085 * CM_MPU_DYNAMICDEP
1086 */ 1086 */
1087#define OMAP4430_MEMIF_DYNDEP_SHIFT (1 << 4) 1087#define OMAP4430_MEMIF_DYNDEP_SHIFT 4
1088#define OMAP4430_MEMIF_DYNDEP_MASK BITFIELD(4, 4) 1088#define OMAP4430_MEMIF_DYNDEP_MASK BITFIELD(4, 4)
1089 1089
1090/* 1090/*
@@ -1093,7 +1093,7 @@
1093 * CM_SDMA_STATICDEP_RESTORE, CM_IVAHD_STATICDEP, CM_DSS_STATICDEP, 1093 * CM_SDMA_STATICDEP_RESTORE, CM_IVAHD_STATICDEP, CM_DSS_STATICDEP,
1094 * CM_MPU_STATICDEP, CM_TESLA_STATICDEP 1094 * CM_MPU_STATICDEP, CM_TESLA_STATICDEP
1095 */ 1095 */
1096#define OMAP4430_MEMIF_STATDEP_SHIFT (1 << 4) 1096#define OMAP4430_MEMIF_STATDEP_SHIFT 4
1097#define OMAP4430_MEMIF_STATDEP_MASK BITFIELD(4, 4) 1097#define OMAP4430_MEMIF_STATDEP_MASK BITFIELD(4, 4)
1098 1098
1099/* 1099/*
@@ -1103,7 +1103,7 @@
1103 * CM_SSC_MODFREQDIV_DPLL_DDRPHY, CM_SSC_MODFREQDIV_DPLL_IVA, 1103 * CM_SSC_MODFREQDIV_DPLL_DDRPHY, CM_SSC_MODFREQDIV_DPLL_IVA,
1104 * CM_SSC_MODFREQDIV_DPLL_MPU 1104 * CM_SSC_MODFREQDIV_DPLL_MPU
1105 */ 1105 */
1106#define OMAP4430_MODFREQDIV_EXPONENT_SHIFT (1 << 8) 1106#define OMAP4430_MODFREQDIV_EXPONENT_SHIFT 8
1107#define OMAP4430_MODFREQDIV_EXPONENT_MASK BITFIELD(8, 10) 1107#define OMAP4430_MODFREQDIV_EXPONENT_MASK BITFIELD(8, 10)
1108 1108
1109/* 1109/*
@@ -1113,7 +1113,7 @@
1113 * CM_SSC_MODFREQDIV_DPLL_DDRPHY, CM_SSC_MODFREQDIV_DPLL_IVA, 1113 * CM_SSC_MODFREQDIV_DPLL_DDRPHY, CM_SSC_MODFREQDIV_DPLL_IVA,
1114 * CM_SSC_MODFREQDIV_DPLL_MPU 1114 * CM_SSC_MODFREQDIV_DPLL_MPU
1115 */ 1115 */
1116#define OMAP4430_MODFREQDIV_MANTISSA_SHIFT (1 << 0) 1116#define OMAP4430_MODFREQDIV_MANTISSA_SHIFT 0
1117#define OMAP4430_MODFREQDIV_MANTISSA_MASK BITFIELD(0, 6) 1117#define OMAP4430_MODFREQDIV_MANTISSA_MASK BITFIELD(0, 6)
1118 1118
1119/* 1119/*
@@ -1169,23 +1169,23 @@
1169 * CM1_ABE_TIMER6_CLKCTRL, CM1_ABE_TIMER7_CLKCTRL, CM1_ABE_TIMER8_CLKCTRL, 1169 * CM1_ABE_TIMER6_CLKCTRL, CM1_ABE_TIMER7_CLKCTRL, CM1_ABE_TIMER8_CLKCTRL,
1170 * CM1_ABE_WDT3_CLKCTRL, CM_CM1_PROFILING_CLKCTRL 1170 * CM1_ABE_WDT3_CLKCTRL, CM_CM1_PROFILING_CLKCTRL
1171 */ 1171 */
1172#define OMAP4430_MODULEMODE_SHIFT (1 << 0) 1172#define OMAP4430_MODULEMODE_SHIFT 0
1173#define OMAP4430_MODULEMODE_MASK BITFIELD(0, 1) 1173#define OMAP4430_MODULEMODE_MASK BITFIELD(0, 1)
1174 1174
1175/* Used by CM_DSS_DSS_CLKCTRL */ 1175/* Used by CM_DSS_DSS_CLKCTRL */
1176#define OMAP4430_OPTFCLKEN_48MHZ_CLK_SHIFT (1 << 9) 1176#define OMAP4430_OPTFCLKEN_48MHZ_CLK_SHIFT 9
1177#define OMAP4430_OPTFCLKEN_48MHZ_CLK_MASK BITFIELD(9, 9) 1177#define OMAP4430_OPTFCLKEN_48MHZ_CLK_MASK BITFIELD(9, 9)
1178 1178
1179/* Used by CM_WKUP_BANDGAP_CLKCTRL */ 1179/* Used by CM_WKUP_BANDGAP_CLKCTRL */
1180#define OMAP4430_OPTFCLKEN_BGAP_32K_SHIFT (1 << 8) 1180#define OMAP4430_OPTFCLKEN_BGAP_32K_SHIFT 8
1181#define OMAP4430_OPTFCLKEN_BGAP_32K_MASK BITFIELD(8, 8) 1181#define OMAP4430_OPTFCLKEN_BGAP_32K_MASK BITFIELD(8, 8)
1182 1182
1183/* Used by CM_L3INIT_USBPHYOCP2SCP_CLKCTRL */ 1183/* Used by CM_L3INIT_USBPHYOCP2SCP_CLKCTRL */
1184#define OMAP4430_OPTFCLKEN_CLK32K_SHIFT (1 << 9) 1184#define OMAP4430_OPTFCLKEN_CLK32K_SHIFT 9
1185#define OMAP4430_OPTFCLKEN_CLK32K_MASK BITFIELD(9, 9) 1185#define OMAP4430_OPTFCLKEN_CLK32K_MASK BITFIELD(9, 9)
1186 1186
1187/* Used by CM_CAM_ISS_CLKCTRL */ 1187/* Used by CM_CAM_ISS_CLKCTRL */
1188#define OMAP4430_OPTFCLKEN_CTRLCLK_SHIFT (1 << 8) 1188#define OMAP4430_OPTFCLKEN_CTRLCLK_SHIFT 8
1189#define OMAP4430_OPTFCLKEN_CTRLCLK_MASK BITFIELD(8, 8) 1189#define OMAP4430_OPTFCLKEN_CTRLCLK_MASK BITFIELD(8, 8)
1190 1190
1191/* 1191/*
@@ -1195,119 +1195,119 @@
1195 * CM_L4PER_GPIO3_CLKCTRL_RESTORE, CM_L4PER_GPIO4_CLKCTRL_RESTORE, 1195 * CM_L4PER_GPIO3_CLKCTRL_RESTORE, CM_L4PER_GPIO4_CLKCTRL_RESTORE,
1196 * CM_L4PER_GPIO5_CLKCTRL_RESTORE, CM_L4PER_GPIO6_CLKCTRL_RESTORE 1196 * CM_L4PER_GPIO5_CLKCTRL_RESTORE, CM_L4PER_GPIO6_CLKCTRL_RESTORE
1197 */ 1197 */
1198#define OMAP4430_OPTFCLKEN_DBCLK_SHIFT (1 << 8) 1198#define OMAP4430_OPTFCLKEN_DBCLK_SHIFT 8
1199#define OMAP4430_OPTFCLKEN_DBCLK_MASK BITFIELD(8, 8) 1199#define OMAP4430_OPTFCLKEN_DBCLK_MASK BITFIELD(8, 8)
1200 1200
1201/* Used by CM_MEMIF_DLL_CLKCTRL, CM_MEMIF_DLL_H_CLKCTRL */ 1201/* Used by CM_MEMIF_DLL_CLKCTRL, CM_MEMIF_DLL_H_CLKCTRL */
1202#define OMAP4430_OPTFCLKEN_DLL_CLK_SHIFT (1 << 8) 1202#define OMAP4430_OPTFCLKEN_DLL_CLK_SHIFT 8
1203#define OMAP4430_OPTFCLKEN_DLL_CLK_MASK BITFIELD(8, 8) 1203#define OMAP4430_OPTFCLKEN_DLL_CLK_MASK BITFIELD(8, 8)
1204 1204
1205/* Used by CM_DSS_DSS_CLKCTRL */ 1205/* Used by CM_DSS_DSS_CLKCTRL */
1206#define OMAP4430_OPTFCLKEN_DSSCLK_SHIFT (1 << 8) 1206#define OMAP4430_OPTFCLKEN_DSSCLK_SHIFT 8
1207#define OMAP4430_OPTFCLKEN_DSSCLK_MASK BITFIELD(8, 8) 1207#define OMAP4430_OPTFCLKEN_DSSCLK_MASK BITFIELD(8, 8)
1208 1208
1209/* Used by CM1_ABE_SLIMBUS_CLKCTRL */ 1209/* Used by CM1_ABE_SLIMBUS_CLKCTRL */
1210#define OMAP4430_OPTFCLKEN_FCLK0_SHIFT (1 << 8) 1210#define OMAP4430_OPTFCLKEN_FCLK0_SHIFT 8
1211#define OMAP4430_OPTFCLKEN_FCLK0_MASK BITFIELD(8, 8) 1211#define OMAP4430_OPTFCLKEN_FCLK0_MASK BITFIELD(8, 8)
1212 1212
1213/* Used by CM1_ABE_SLIMBUS_CLKCTRL */ 1213/* Used by CM1_ABE_SLIMBUS_CLKCTRL */
1214#define OMAP4430_OPTFCLKEN_FCLK1_SHIFT (1 << 9) 1214#define OMAP4430_OPTFCLKEN_FCLK1_SHIFT 9
1215#define OMAP4430_OPTFCLKEN_FCLK1_MASK BITFIELD(9, 9) 1215#define OMAP4430_OPTFCLKEN_FCLK1_MASK BITFIELD(9, 9)
1216 1216
1217/* Used by CM1_ABE_SLIMBUS_CLKCTRL */ 1217/* Used by CM1_ABE_SLIMBUS_CLKCTRL */
1218#define OMAP4430_OPTFCLKEN_FCLK2_SHIFT (1 << 10) 1218#define OMAP4430_OPTFCLKEN_FCLK2_SHIFT 10
1219#define OMAP4430_OPTFCLKEN_FCLK2_MASK BITFIELD(10, 10) 1219#define OMAP4430_OPTFCLKEN_FCLK2_MASK BITFIELD(10, 10)
1220 1220
1221/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */ 1221/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */
1222#define OMAP4430_OPTFCLKEN_FUNC48MCLK_SHIFT (1 << 15) 1222#define OMAP4430_OPTFCLKEN_FUNC48MCLK_SHIFT 15
1223#define OMAP4430_OPTFCLKEN_FUNC48MCLK_MASK BITFIELD(15, 15) 1223#define OMAP4430_OPTFCLKEN_FUNC48MCLK_MASK BITFIELD(15, 15)
1224 1224
1225/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */ 1225/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */
1226#define OMAP4430_OPTFCLKEN_HSIC480M_P1_CLK_SHIFT (1 << 13) 1226#define OMAP4430_OPTFCLKEN_HSIC480M_P1_CLK_SHIFT 13
1227#define OMAP4430_OPTFCLKEN_HSIC480M_P1_CLK_MASK BITFIELD(13, 13) 1227#define OMAP4430_OPTFCLKEN_HSIC480M_P1_CLK_MASK BITFIELD(13, 13)
1228 1228
1229/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */ 1229/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */
1230#define OMAP4430_OPTFCLKEN_HSIC480M_P2_CLK_SHIFT (1 << 14) 1230#define OMAP4430_OPTFCLKEN_HSIC480M_P2_CLK_SHIFT 14
1231#define OMAP4430_OPTFCLKEN_HSIC480M_P2_CLK_MASK BITFIELD(14, 14) 1231#define OMAP4430_OPTFCLKEN_HSIC480M_P2_CLK_MASK BITFIELD(14, 14)
1232 1232
1233/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */ 1233/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */
1234#define OMAP4430_OPTFCLKEN_HSIC60M_P1_CLK_SHIFT (1 << 11) 1234#define OMAP4430_OPTFCLKEN_HSIC60M_P1_CLK_SHIFT 11
1235#define OMAP4430_OPTFCLKEN_HSIC60M_P1_CLK_MASK BITFIELD(11, 11) 1235#define OMAP4430_OPTFCLKEN_HSIC60M_P1_CLK_MASK BITFIELD(11, 11)
1236 1236
1237/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */ 1237/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */
1238#define OMAP4430_OPTFCLKEN_HSIC60M_P2_CLK_SHIFT (1 << 12) 1238#define OMAP4430_OPTFCLKEN_HSIC60M_P2_CLK_SHIFT 12
1239#define OMAP4430_OPTFCLKEN_HSIC60M_P2_CLK_MASK BITFIELD(12, 12) 1239#define OMAP4430_OPTFCLKEN_HSIC60M_P2_CLK_MASK BITFIELD(12, 12)
1240 1240
1241/* Used by CM_L4PER_SLIMBUS2_CLKCTRL */ 1241/* Used by CM_L4PER_SLIMBUS2_CLKCTRL */
1242#define OMAP4430_OPTFCLKEN_PER24MC_GFCLK_SHIFT (1 << 8) 1242#define OMAP4430_OPTFCLKEN_PER24MC_GFCLK_SHIFT 8
1243#define OMAP4430_OPTFCLKEN_PER24MC_GFCLK_MASK BITFIELD(8, 8) 1243#define OMAP4430_OPTFCLKEN_PER24MC_GFCLK_MASK BITFIELD(8, 8)
1244 1244
1245/* Used by CM_L4PER_SLIMBUS2_CLKCTRL */ 1245/* Used by CM_L4PER_SLIMBUS2_CLKCTRL */
1246#define OMAP4430_OPTFCLKEN_PERABE24M_GFCLK_SHIFT (1 << 9) 1246#define OMAP4430_OPTFCLKEN_PERABE24M_GFCLK_SHIFT 9
1247#define OMAP4430_OPTFCLKEN_PERABE24M_GFCLK_MASK BITFIELD(9, 9) 1247#define OMAP4430_OPTFCLKEN_PERABE24M_GFCLK_MASK BITFIELD(9, 9)
1248 1248
1249/* Used by CM_L3INIT_USBPHYOCP2SCP_CLKCTRL */ 1249/* Used by CM_L3INIT_USBPHYOCP2SCP_CLKCTRL */
1250#define OMAP4430_OPTFCLKEN_PHY_48M_SHIFT (1 << 8) 1250#define OMAP4430_OPTFCLKEN_PHY_48M_SHIFT 8
1251#define OMAP4430_OPTFCLKEN_PHY_48M_MASK BITFIELD(8, 8) 1251#define OMAP4430_OPTFCLKEN_PHY_48M_MASK BITFIELD(8, 8)
1252 1252
1253/* Used by CM_L4PER_SLIMBUS2_CLKCTRL */ 1253/* Used by CM_L4PER_SLIMBUS2_CLKCTRL */
1254#define OMAP4430_OPTFCLKEN_SLIMBUS_CLK_SHIFT (1 << 10) 1254#define OMAP4430_OPTFCLKEN_SLIMBUS_CLK_SHIFT 10
1255#define OMAP4430_OPTFCLKEN_SLIMBUS_CLK_MASK BITFIELD(10, 10) 1255#define OMAP4430_OPTFCLKEN_SLIMBUS_CLK_MASK BITFIELD(10, 10)
1256 1256
1257/* Renamed from OPTFCLKEN_SLIMBUS_CLK Used by CM1_ABE_SLIMBUS_CLKCTRL */ 1257/* Renamed from OPTFCLKEN_SLIMBUS_CLK Used by CM1_ABE_SLIMBUS_CLKCTRL */
1258#define OMAP4430_OPTFCLKEN_SLIMBUS_CLK_11_11_SHIFT (1 << 11) 1258#define OMAP4430_OPTFCLKEN_SLIMBUS_CLK_11_11_SHIFT 11
1259#define OMAP4430_OPTFCLKEN_SLIMBUS_CLK_11_11_MASK BITFIELD(11, 11) 1259#define OMAP4430_OPTFCLKEN_SLIMBUS_CLK_11_11_MASK BITFIELD(11, 11)
1260 1260
1261/* Used by CM_DSS_DSS_CLKCTRL */ 1261/* Used by CM_DSS_DSS_CLKCTRL */
1262#define OMAP4430_OPTFCLKEN_SYS_CLK_SHIFT (1 << 10) 1262#define OMAP4430_OPTFCLKEN_SYS_CLK_SHIFT 10
1263#define OMAP4430_OPTFCLKEN_SYS_CLK_MASK BITFIELD(10, 10) 1263#define OMAP4430_OPTFCLKEN_SYS_CLK_MASK BITFIELD(10, 10)
1264 1264
1265/* Used by CM_DSS_DSS_CLKCTRL */ 1265/* Used by CM_DSS_DSS_CLKCTRL */
1266#define OMAP4430_OPTFCLKEN_TV_CLK_SHIFT (1 << 11) 1266#define OMAP4430_OPTFCLKEN_TV_CLK_SHIFT 11
1267#define OMAP4430_OPTFCLKEN_TV_CLK_MASK BITFIELD(11, 11) 1267#define OMAP4430_OPTFCLKEN_TV_CLK_MASK BITFIELD(11, 11)
1268 1268
1269/* Used by CM_L3INIT_UNIPRO1_CLKCTRL */ 1269/* Used by CM_L3INIT_UNIPRO1_CLKCTRL */
1270#define OMAP4430_OPTFCLKEN_TXPHYCLK_SHIFT (1 << 8) 1270#define OMAP4430_OPTFCLKEN_TXPHYCLK_SHIFT 8
1271#define OMAP4430_OPTFCLKEN_TXPHYCLK_MASK BITFIELD(8, 8) 1271#define OMAP4430_OPTFCLKEN_TXPHYCLK_MASK BITFIELD(8, 8)
1272 1272
1273/* Used by CM_L3INIT_USB_TLL_CLKCTRL, CM_L3INIT_USB_TLL_CLKCTRL_RESTORE */ 1273/* Used by CM_L3INIT_USB_TLL_CLKCTRL, CM_L3INIT_USB_TLL_CLKCTRL_RESTORE */
1274#define OMAP4430_OPTFCLKEN_USB_CH0_CLK_SHIFT (1 << 8) 1274#define OMAP4430_OPTFCLKEN_USB_CH0_CLK_SHIFT 8
1275#define OMAP4430_OPTFCLKEN_USB_CH0_CLK_MASK BITFIELD(8, 8) 1275#define OMAP4430_OPTFCLKEN_USB_CH0_CLK_MASK BITFIELD(8, 8)
1276 1276
1277/* Used by CM_L3INIT_USB_TLL_CLKCTRL, CM_L3INIT_USB_TLL_CLKCTRL_RESTORE */ 1277/* Used by CM_L3INIT_USB_TLL_CLKCTRL, CM_L3INIT_USB_TLL_CLKCTRL_RESTORE */
1278#define OMAP4430_OPTFCLKEN_USB_CH1_CLK_SHIFT (1 << 9) 1278#define OMAP4430_OPTFCLKEN_USB_CH1_CLK_SHIFT 9
1279#define OMAP4430_OPTFCLKEN_USB_CH1_CLK_MASK BITFIELD(9, 9) 1279#define OMAP4430_OPTFCLKEN_USB_CH1_CLK_MASK BITFIELD(9, 9)
1280 1280
1281/* Used by CM_L3INIT_USB_TLL_CLKCTRL, CM_L3INIT_USB_TLL_CLKCTRL_RESTORE */ 1281/* Used by CM_L3INIT_USB_TLL_CLKCTRL, CM_L3INIT_USB_TLL_CLKCTRL_RESTORE */
1282#define OMAP4430_OPTFCLKEN_USB_CH2_CLK_SHIFT (1 << 10) 1282#define OMAP4430_OPTFCLKEN_USB_CH2_CLK_SHIFT 10
1283#define OMAP4430_OPTFCLKEN_USB_CH2_CLK_MASK BITFIELD(10, 10) 1283#define OMAP4430_OPTFCLKEN_USB_CH2_CLK_MASK BITFIELD(10, 10)
1284 1284
1285/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */ 1285/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */
1286#define OMAP4430_OPTFCLKEN_UTMI_P1_CLK_SHIFT (1 << 8) 1286#define OMAP4430_OPTFCLKEN_UTMI_P1_CLK_SHIFT 8
1287#define OMAP4430_OPTFCLKEN_UTMI_P1_CLK_MASK BITFIELD(8, 8) 1287#define OMAP4430_OPTFCLKEN_UTMI_P1_CLK_MASK BITFIELD(8, 8)
1288 1288
1289/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */ 1289/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */
1290#define OMAP4430_OPTFCLKEN_UTMI_P2_CLK_SHIFT (1 << 9) 1290#define OMAP4430_OPTFCLKEN_UTMI_P2_CLK_SHIFT 9
1291#define OMAP4430_OPTFCLKEN_UTMI_P2_CLK_MASK BITFIELD(9, 9) 1291#define OMAP4430_OPTFCLKEN_UTMI_P2_CLK_MASK BITFIELD(9, 9)
1292 1292
1293/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */ 1293/* Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_HOST_CLKCTRL_RESTORE */
1294#define OMAP4430_OPTFCLKEN_UTMI_P3_CLK_SHIFT (1 << 10) 1294#define OMAP4430_OPTFCLKEN_UTMI_P3_CLK_SHIFT 10
1295#define OMAP4430_OPTFCLKEN_UTMI_P3_CLK_MASK BITFIELD(10, 10) 1295#define OMAP4430_OPTFCLKEN_UTMI_P3_CLK_MASK BITFIELD(10, 10)
1296 1296
1297/* Used by CM_L3INIT_USB_OTG_CLKCTRL */ 1297/* Used by CM_L3INIT_USB_OTG_CLKCTRL */
1298#define OMAP4430_OPTFCLKEN_XCLK_SHIFT (1 << 8) 1298#define OMAP4430_OPTFCLKEN_XCLK_SHIFT 8
1299#define OMAP4430_OPTFCLKEN_XCLK_MASK BITFIELD(8, 8) 1299#define OMAP4430_OPTFCLKEN_XCLK_MASK BITFIELD(8, 8)
1300 1300
1301/* Used by CM_EMU_OVERRIDE_DPLL_PER, CM_EMU_OVERRIDE_DPLL_CORE */ 1301/* Used by CM_EMU_OVERRIDE_DPLL_PER, CM_EMU_OVERRIDE_DPLL_CORE */
1302#define OMAP4430_OVERRIDE_ENABLE_SHIFT (1 << 19) 1302#define OMAP4430_OVERRIDE_ENABLE_SHIFT 19
1303#define OMAP4430_OVERRIDE_ENABLE_MASK BITFIELD(19, 19) 1303#define OMAP4430_OVERRIDE_ENABLE_MASK BITFIELD(19, 19)
1304 1304
1305/* Used by CM_CLKSEL_ABE */ 1305/* Used by CM_CLKSEL_ABE */
1306#define OMAP4430_PAD_CLKS_GATE_SHIFT (1 << 8) 1306#define OMAP4430_PAD_CLKS_GATE_SHIFT 8
1307#define OMAP4430_PAD_CLKS_GATE_MASK BITFIELD(8, 8) 1307#define OMAP4430_PAD_CLKS_GATE_MASK BITFIELD(8, 8)
1308 1308
1309/* Used by CM_CORE_DVFS_CURRENT, CM_IVA_DVFS_CURRENT */ 1309/* Used by CM_CORE_DVFS_CURRENT, CM_IVA_DVFS_CURRENT */
1310#define OMAP4430_PERF_CURRENT_SHIFT (1 << 0) 1310#define OMAP4430_PERF_CURRENT_SHIFT 0
1311#define OMAP4430_PERF_CURRENT_MASK BITFIELD(0, 7) 1311#define OMAP4430_PERF_CURRENT_MASK BITFIELD(0, 7)
1312 1312
1313/* 1313/*
@@ -1315,66 +1315,66 @@
1315 * CM_CORE_DVFS_PERF4, CM_IVA_DVFS_PERF_ABE, CM_IVA_DVFS_PERF_IVAHD, 1315 * CM_CORE_DVFS_PERF4, CM_IVA_DVFS_PERF_ABE, CM_IVA_DVFS_PERF_IVAHD,
1316 * CM_IVA_DVFS_PERF_TESLA 1316 * CM_IVA_DVFS_PERF_TESLA
1317 */ 1317 */
1318#define OMAP4430_PERF_REQ_SHIFT (1 << 0) 1318#define OMAP4430_PERF_REQ_SHIFT 0
1319#define OMAP4430_PERF_REQ_MASK BITFIELD(0, 7) 1319#define OMAP4430_PERF_REQ_MASK BITFIELD(0, 7)
1320 1320
1321/* Used by CM_EMU_OVERRIDE_DPLL_PER */ 1321/* Used by CM_EMU_OVERRIDE_DPLL_PER */
1322#define OMAP4430_PER_DPLL_EMU_DIV_SHIFT (1 << 0) 1322#define OMAP4430_PER_DPLL_EMU_DIV_SHIFT 0
1323#define OMAP4430_PER_DPLL_EMU_DIV_MASK BITFIELD(0, 6) 1323#define OMAP4430_PER_DPLL_EMU_DIV_MASK BITFIELD(0, 6)
1324 1324
1325/* Used by CM_EMU_OVERRIDE_DPLL_PER */ 1325/* Used by CM_EMU_OVERRIDE_DPLL_PER */
1326#define OMAP4430_PER_DPLL_EMU_MULT_SHIFT (1 << 8) 1326#define OMAP4430_PER_DPLL_EMU_MULT_SHIFT 8
1327#define OMAP4430_PER_DPLL_EMU_MULT_MASK BITFIELD(8, 18) 1327#define OMAP4430_PER_DPLL_EMU_MULT_MASK BITFIELD(8, 18)
1328 1328
1329/* Used by CM_RESTORE_ST */ 1329/* Used by CM_RESTORE_ST */
1330#define OMAP4430_PHASE1_COMPLETED_SHIFT (1 << 0) 1330#define OMAP4430_PHASE1_COMPLETED_SHIFT 0
1331#define OMAP4430_PHASE1_COMPLETED_MASK BITFIELD(0, 0) 1331#define OMAP4430_PHASE1_COMPLETED_MASK BITFIELD(0, 0)
1332 1332
1333/* Used by CM_RESTORE_ST */ 1333/* Used by CM_RESTORE_ST */
1334#define OMAP4430_PHASE2A_COMPLETED_SHIFT (1 << 1) 1334#define OMAP4430_PHASE2A_COMPLETED_SHIFT 1
1335#define OMAP4430_PHASE2A_COMPLETED_MASK BITFIELD(1, 1) 1335#define OMAP4430_PHASE2A_COMPLETED_MASK BITFIELD(1, 1)
1336 1336
1337/* Used by CM_RESTORE_ST */ 1337/* Used by CM_RESTORE_ST */
1338#define OMAP4430_PHASE2B_COMPLETED_SHIFT (1 << 2) 1338#define OMAP4430_PHASE2B_COMPLETED_SHIFT 2
1339#define OMAP4430_PHASE2B_COMPLETED_MASK BITFIELD(2, 2) 1339#define OMAP4430_PHASE2B_COMPLETED_MASK BITFIELD(2, 2)
1340 1340
1341/* Used by CM_EMU_DEBUGSS_CLKCTRL */ 1341/* Used by CM_EMU_DEBUGSS_CLKCTRL */
1342#define OMAP4430_PMD_STM_MUX_CTRL_SHIFT (1 << 20) 1342#define OMAP4430_PMD_STM_MUX_CTRL_SHIFT 20
1343#define OMAP4430_PMD_STM_MUX_CTRL_MASK BITFIELD(20, 21) 1343#define OMAP4430_PMD_STM_MUX_CTRL_MASK BITFIELD(20, 21)
1344 1344
1345/* Used by CM_EMU_DEBUGSS_CLKCTRL */ 1345/* Used by CM_EMU_DEBUGSS_CLKCTRL */
1346#define OMAP4430_PMD_TRACE_MUX_CTRL_SHIFT (1 << 22) 1346#define OMAP4430_PMD_TRACE_MUX_CTRL_SHIFT 22
1347#define OMAP4430_PMD_TRACE_MUX_CTRL_MASK BITFIELD(22, 23) 1347#define OMAP4430_PMD_TRACE_MUX_CTRL_MASK BITFIELD(22, 23)
1348 1348
1349/* Used by CM_DYN_DEP_PRESCAL */ 1349/* Used by CM_DYN_DEP_PRESCAL */
1350#define OMAP4430_PRESCAL_SHIFT (1 << 0) 1350#define OMAP4430_PRESCAL_SHIFT 0
1351#define OMAP4430_PRESCAL_MASK BITFIELD(0, 5) 1351#define OMAP4430_PRESCAL_MASK BITFIELD(0, 5)
1352 1352
1353/* Used by REVISION_CM2, REVISION_CM1 */ 1353/* Used by REVISION_CM2, REVISION_CM1 */
1354#define OMAP4430_REV_SHIFT (1 << 0) 1354#define OMAP4430_REV_SHIFT 0
1355#define OMAP4430_REV_MASK BITFIELD(0, 7) 1355#define OMAP4430_REV_MASK BITFIELD(0, 7)
1356 1356
1357/* 1357/*
1358 * Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_TLL_CLKCTRL, 1358 * Used by CM_L3INIT_USB_HOST_CLKCTRL, CM_L3INIT_USB_TLL_CLKCTRL,
1359 * CM_L3INIT_USB_HOST_CLKCTRL_RESTORE, CM_L3INIT_USB_TLL_CLKCTRL_RESTORE 1359 * CM_L3INIT_USB_HOST_CLKCTRL_RESTORE, CM_L3INIT_USB_TLL_CLKCTRL_RESTORE
1360 */ 1360 */
1361#define OMAP4430_SAR_MODE_SHIFT (1 << 4) 1361#define OMAP4430_SAR_MODE_SHIFT 4
1362#define OMAP4430_SAR_MODE_MASK BITFIELD(4, 4) 1362#define OMAP4430_SAR_MODE_MASK BITFIELD(4, 4)
1363 1363
1364/* Used by CM_SCALE_FCLK */ 1364/* Used by CM_SCALE_FCLK */
1365#define OMAP4430_SCALE_FCLK_SHIFT (1 << 0) 1365#define OMAP4430_SCALE_FCLK_SHIFT 0
1366#define OMAP4430_SCALE_FCLK_MASK BITFIELD(0, 0) 1366#define OMAP4430_SCALE_FCLK_MASK BITFIELD(0, 0)
1367 1367
1368/* Used by CM_L4CFG_DYNAMICDEP */ 1368/* Used by CM_L4CFG_DYNAMICDEP */
1369#define OMAP4430_SDMA_DYNDEP_SHIFT (1 << 11) 1369#define OMAP4430_SDMA_DYNDEP_SHIFT 11
1370#define OMAP4430_SDMA_DYNDEP_MASK BITFIELD(11, 11) 1370#define OMAP4430_SDMA_DYNDEP_MASK BITFIELD(11, 11)
1371 1371
1372/* Used by CM_DUCATI_STATICDEP, CM_MPU_STATICDEP */ 1372/* Used by CM_DUCATI_STATICDEP, CM_MPU_STATICDEP */
1373#define OMAP4430_SDMA_STATDEP_SHIFT (1 << 11) 1373#define OMAP4430_SDMA_STATDEP_SHIFT 11
1374#define OMAP4430_SDMA_STATDEP_MASK BITFIELD(11, 11) 1374#define OMAP4430_SDMA_STATDEP_MASK BITFIELD(11, 11)
1375 1375
1376/* Used by CM_CLKSEL_ABE */ 1376/* Used by CM_CLKSEL_ABE */
1377#define OMAP4430_SLIMBUS_CLK_GATE_SHIFT (1 << 10) 1377#define OMAP4430_SLIMBUS_CLK_GATE_SHIFT 10
1378#define OMAP4430_SLIMBUS_CLK_GATE_MASK BITFIELD(10, 10) 1378#define OMAP4430_SLIMBUS_CLK_GATE_MASK BITFIELD(10, 10)
1379 1379
1380/* 1380/*
@@ -1390,7 +1390,7 @@
1390 * CM_IVAHD_IVAHD_CLKCTRL, CM_DSS_DEISS_CLKCTRL, CM_DSS_DSS_CLKCTRL, 1390 * CM_IVAHD_IVAHD_CLKCTRL, CM_DSS_DEISS_CLKCTRL, CM_DSS_DSS_CLKCTRL,
1391 * CM_MPU_MPU_CLKCTRL, CM_TESLA_TESLA_CLKCTRL, CM1_ABE_AESS_CLKCTRL 1391 * CM_MPU_MPU_CLKCTRL, CM_TESLA_TESLA_CLKCTRL, CM1_ABE_AESS_CLKCTRL
1392 */ 1392 */
1393#define OMAP4430_STBYST_SHIFT (1 << 18) 1393#define OMAP4430_STBYST_SHIFT 18
1394#define OMAP4430_STBYST_MASK BITFIELD(18, 18) 1394#define OMAP4430_STBYST_MASK BITFIELD(18, 18)
1395 1395
1396/* 1396/*
@@ -1398,11 +1398,11 @@
1398 * CM_IDLEST_DPLL_ABE, CM_IDLEST_DPLL_CORE, CM_IDLEST_DPLL_DDRPHY, 1398 * CM_IDLEST_DPLL_ABE, CM_IDLEST_DPLL_CORE, CM_IDLEST_DPLL_DDRPHY,
1399 * CM_IDLEST_DPLL_IVA, CM_IDLEST_DPLL_MPU 1399 * CM_IDLEST_DPLL_IVA, CM_IDLEST_DPLL_MPU
1400 */ 1400 */
1401#define OMAP4430_ST_DPLL_CLK_SHIFT (1 << 0) 1401#define OMAP4430_ST_DPLL_CLK_SHIFT 0
1402#define OMAP4430_ST_DPLL_CLK_MASK BITFIELD(0, 0) 1402#define OMAP4430_ST_DPLL_CLK_MASK BITFIELD(0, 0)
1403 1403
1404/* Used by CM_CLKDCOLDO_DPLL_USB */ 1404/* Used by CM_CLKDCOLDO_DPLL_USB */
1405#define OMAP4430_ST_DPLL_CLKDCOLDO_SHIFT (1 << 9) 1405#define OMAP4430_ST_DPLL_CLKDCOLDO_SHIFT 9
1406#define OMAP4430_ST_DPLL_CLKDCOLDO_MASK BITFIELD(9, 9) 1406#define OMAP4430_ST_DPLL_CLKDCOLDO_MASK BITFIELD(9, 9)
1407 1407
1408/* 1408/*
@@ -1410,58 +1410,58 @@
1410 * CM_DIV_M2_DPLL_ABE, CM_DIV_M2_DPLL_CORE, CM_DIV_M2_DPLL_DDRPHY, 1410 * CM_DIV_M2_DPLL_ABE, CM_DIV_M2_DPLL_CORE, CM_DIV_M2_DPLL_DDRPHY,
1411 * CM_DIV_M2_DPLL_MPU 1411 * CM_DIV_M2_DPLL_MPU
1412 */ 1412 */
1413#define OMAP4430_ST_DPLL_CLKOUT_SHIFT (1 << 9) 1413#define OMAP4430_ST_DPLL_CLKOUT_SHIFT 9
1414#define OMAP4430_ST_DPLL_CLKOUT_MASK BITFIELD(9, 9) 1414#define OMAP4430_ST_DPLL_CLKOUT_MASK BITFIELD(9, 9)
1415 1415
1416/* 1416/*
1417 * Used by CM_DIV_M3_DPLL_PER, CM_DIV_M3_DPLL_CORE_RESTORE, CM_DIV_M3_DPLL_ABE, 1417 * Used by CM_DIV_M3_DPLL_PER, CM_DIV_M3_DPLL_CORE_RESTORE, CM_DIV_M3_DPLL_ABE,
1418 * CM_DIV_M3_DPLL_CORE 1418 * CM_DIV_M3_DPLL_CORE
1419 */ 1419 */
1420#define OMAP4430_ST_DPLL_CLKOUTHIF_SHIFT (1 << 9) 1420#define OMAP4430_ST_DPLL_CLKOUTHIF_SHIFT 9
1421#define OMAP4430_ST_DPLL_CLKOUTHIF_MASK BITFIELD(9, 9) 1421#define OMAP4430_ST_DPLL_CLKOUTHIF_MASK BITFIELD(9, 9)
1422 1422
1423/* Used by CM_DIV_M2_DPLL_PER, CM_DIV_M2_DPLL_UNIPRO, CM_DIV_M2_DPLL_ABE */ 1423/* Used by CM_DIV_M2_DPLL_PER, CM_DIV_M2_DPLL_UNIPRO, CM_DIV_M2_DPLL_ABE */
1424#define OMAP4430_ST_DPLL_CLKOUTX2_SHIFT (1 << 11) 1424#define OMAP4430_ST_DPLL_CLKOUTX2_SHIFT 11
1425#define OMAP4430_ST_DPLL_CLKOUTX2_MASK BITFIELD(11, 11) 1425#define OMAP4430_ST_DPLL_CLKOUTX2_MASK BITFIELD(11, 11)
1426 1426
1427/* 1427/*
1428 * Used by CM_DIV_M4_DPLL_PER, CM_DIV_M4_DPLL_CORE_RESTORE, 1428 * Used by CM_DIV_M4_DPLL_PER, CM_DIV_M4_DPLL_CORE_RESTORE,
1429 * CM_DIV_M4_DPLL_CORE, CM_DIV_M4_DPLL_DDRPHY, CM_DIV_M4_DPLL_IVA 1429 * CM_DIV_M4_DPLL_CORE, CM_DIV_M4_DPLL_DDRPHY, CM_DIV_M4_DPLL_IVA
1430 */ 1430 */
1431#define OMAP4430_ST_HSDIVIDER_CLKOUT1_SHIFT (1 << 9) 1431#define OMAP4430_ST_HSDIVIDER_CLKOUT1_SHIFT 9
1432#define OMAP4430_ST_HSDIVIDER_CLKOUT1_MASK BITFIELD(9, 9) 1432#define OMAP4430_ST_HSDIVIDER_CLKOUT1_MASK BITFIELD(9, 9)
1433 1433
1434/* 1434/*
1435 * Used by CM_DIV_M5_DPLL_PER, CM_DIV_M5_DPLL_CORE_RESTORE, 1435 * Used by CM_DIV_M5_DPLL_PER, CM_DIV_M5_DPLL_CORE_RESTORE,
1436 * CM_DIV_M5_DPLL_CORE, CM_DIV_M5_DPLL_DDRPHY, CM_DIV_M5_DPLL_IVA 1436 * CM_DIV_M5_DPLL_CORE, CM_DIV_M5_DPLL_DDRPHY, CM_DIV_M5_DPLL_IVA
1437 */ 1437 */
1438#define OMAP4430_ST_HSDIVIDER_CLKOUT2_SHIFT (1 << 9) 1438#define OMAP4430_ST_HSDIVIDER_CLKOUT2_SHIFT 9
1439#define OMAP4430_ST_HSDIVIDER_CLKOUT2_MASK BITFIELD(9, 9) 1439#define OMAP4430_ST_HSDIVIDER_CLKOUT2_MASK BITFIELD(9, 9)
1440 1440
1441/* 1441/*
1442 * Used by CM_DIV_M6_DPLL_PER, CM_DIV_M6_DPLL_CORE_RESTORE, 1442 * Used by CM_DIV_M6_DPLL_PER, CM_DIV_M6_DPLL_CORE_RESTORE,
1443 * CM_DIV_M6_DPLL_CORE, CM_DIV_M6_DPLL_DDRPHY 1443 * CM_DIV_M6_DPLL_CORE, CM_DIV_M6_DPLL_DDRPHY
1444 */ 1444 */
1445#define OMAP4430_ST_HSDIVIDER_CLKOUT3_SHIFT (1 << 9) 1445#define OMAP4430_ST_HSDIVIDER_CLKOUT3_SHIFT 9
1446#define OMAP4430_ST_HSDIVIDER_CLKOUT3_MASK BITFIELD(9, 9) 1446#define OMAP4430_ST_HSDIVIDER_CLKOUT3_MASK BITFIELD(9, 9)
1447 1447
1448/* 1448/*
1449 * Used by CM_DIV_M7_DPLL_PER, CM_DIV_M7_DPLL_CORE_RESTORE, 1449 * Used by CM_DIV_M7_DPLL_PER, CM_DIV_M7_DPLL_CORE_RESTORE,
1450 * CM_DIV_M7_DPLL_CORE 1450 * CM_DIV_M7_DPLL_CORE
1451 */ 1451 */
1452#define OMAP4430_ST_HSDIVIDER_CLKOUT4_SHIFT (1 << 9) 1452#define OMAP4430_ST_HSDIVIDER_CLKOUT4_SHIFT 9
1453#define OMAP4430_ST_HSDIVIDER_CLKOUT4_MASK BITFIELD(9, 9) 1453#define OMAP4430_ST_HSDIVIDER_CLKOUT4_MASK BITFIELD(9, 9)
1454 1454
1455/* Used by CM_SYS_CLKSEL */ 1455/* Used by CM_SYS_CLKSEL */
1456#define OMAP4430_SYS_CLKSEL_SHIFT (1 << 0) 1456#define OMAP4430_SYS_CLKSEL_SHIFT 0
1457#define OMAP4430_SYS_CLKSEL_MASK BITFIELD(0, 2) 1457#define OMAP4430_SYS_CLKSEL_MASK BITFIELD(0, 2)
1458 1458
1459/* Used by CM_L4CFG_DYNAMICDEP */ 1459/* Used by CM_L4CFG_DYNAMICDEP */
1460#define OMAP4430_TESLA_DYNDEP_SHIFT (1 << 1) 1460#define OMAP4430_TESLA_DYNDEP_SHIFT 1
1461#define OMAP4430_TESLA_DYNDEP_MASK BITFIELD(1, 1) 1461#define OMAP4430_TESLA_DYNDEP_MASK BITFIELD(1, 1)
1462 1462
1463/* Used by CM_DUCATI_STATICDEP, CM_MPU_STATICDEP */ 1463/* Used by CM_DUCATI_STATICDEP, CM_MPU_STATICDEP */
1464#define OMAP4430_TESLA_STATDEP_SHIFT (1 << 1) 1464#define OMAP4430_TESLA_STATDEP_SHIFT 1
1465#define OMAP4430_TESLA_STATDEP_MASK BITFIELD(1, 1) 1465#define OMAP4430_TESLA_STATDEP_MASK BITFIELD(1, 1)
1466 1466
1467/* 1467/*
@@ -1469,6 +1469,6 @@
1469 * CM_L3_1_DYNAMICDEP, CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP, 1469 * CM_L3_1_DYNAMICDEP, CM_L3_2_DYNAMICDEP, CM_L4CFG_DYNAMICDEP,
1470 * CM_L4PER_DYNAMICDEP, CM_MPU_DYNAMICDEP, CM_TESLA_DYNAMICDEP 1470 * CM_L4PER_DYNAMICDEP, CM_MPU_DYNAMICDEP, CM_TESLA_DYNAMICDEP
1471 */ 1471 */
1472#define OMAP4430_WINDOWSIZE_SHIFT (1 << 24) 1472#define OMAP4430_WINDOWSIZE_SHIFT 24
1473#define OMAP4430_WINDOWSIZE_MASK BITFIELD(24, 27) 1473#define OMAP4430_WINDOWSIZE_MASK BITFIELD(24, 27)
1474#endif 1474#endif
diff --git a/arch/arm/mach-omap2/cm.h b/arch/arm/mach-omap2/cm.h
index 90a4086fbdf4..4e4ac8ccd7f5 100644
--- a/arch/arm/mach-omap2/cm.h
+++ b/arch/arm/mach-omap2/cm.h
@@ -67,7 +67,8 @@
67#define CM_CLKSEL 0x0040 67#define CM_CLKSEL 0x0040
68#define CM_CLKSEL1 CM_CLKSEL 68#define CM_CLKSEL1 CM_CLKSEL
69#define CM_CLKSEL2 0x0044 69#define CM_CLKSEL2 0x0044
70#define CM_CLKSTCTRL 0x0048 70#define OMAP2_CM_CLKSTCTRL 0x0048
71#define OMAP4_CM_CLKSTCTRL 0x0000
71 72
72 73
73/* Architecture-specific registers */ 74/* Architecture-specific registers */
@@ -88,7 +89,7 @@
88#define OMAP3430_CM_CLKSEL1_PLL CM_CLKSEL 89#define OMAP3430_CM_CLKSEL1_PLL CM_CLKSEL
89#define OMAP3430_CM_CLKSEL2_PLL CM_CLKSEL2 90#define OMAP3430_CM_CLKSEL2_PLL CM_CLKSEL2
90#define OMAP3430_CM_SLEEPDEP CM_CLKSEL2 91#define OMAP3430_CM_SLEEPDEP CM_CLKSEL2
91#define OMAP3430_CM_CLKSEL3 CM_CLKSTCTRL 92#define OMAP3430_CM_CLKSEL3 OMAP2_CM_CLKSTCTRL
92#define OMAP3430_CM_CLKSTST 0x004c 93#define OMAP3430_CM_CLKSTST 0x004c
93#define OMAP3430ES2_CM_CLKSEL4 0x004c 94#define OMAP3430ES2_CM_CLKSEL4 0x004c
94#define OMAP3430ES2_CM_CLKSEL5 0x0050 95#define OMAP3430ES2_CM_CLKSEL5 0x0050
diff --git a/arch/arm/mach-omap2/dpll.c b/arch/arm/mach-omap2/dpll3xxx.c
index f6055b493294..2b559fc64855 100644
--- a/arch/arm/mach-omap2/dpll.c
+++ b/arch/arm/mach-omap2/dpll3xxx.c
@@ -44,17 +44,7 @@
44 44
45#define MAX_DPLL_WAIT_TRIES 1000000 45#define MAX_DPLL_WAIT_TRIES 1000000
46 46
47 47/* Private functions */
48/**
49 * omap3_dpll_recalc - recalculate DPLL rate
50 * @clk: DPLL struct clk
51 *
52 * Recalculate and propagate the DPLL rate.
53 */
54unsigned long omap3_dpll_recalc(struct clk *clk)
55{
56 return omap2_get_dpll_rate(clk);
57}
58 48
59/* _omap3_dpll_write_clken - write clken_bits arg to a DPLL's enable bits */ 49/* _omap3_dpll_write_clken - write clken_bits arg to a DPLL's enable bits */
60static void _omap3_dpll_write_clken(struct clk *clk, u8 clken_bits) 50static void _omap3_dpll_write_clken(struct clk *clk, u8 clken_bits)
@@ -136,8 +126,6 @@ static u16 _omap3_dpll_compute_freqsel(struct clk *clk, u8 n)
136 return f; 126 return f;
137} 127}
138 128
139/* Non-CORE DPLL (e.g., DPLLs that do not control SDRC) clock functions */
140
141/* 129/*
142 * _omap3_noncore_dpll_lock - instruct a DPLL to lock and wait for readiness 130 * _omap3_noncore_dpll_lock - instruct a DPLL to lock and wait for readiness
143 * @clk: pointer to a DPLL struct clk 131 * @clk: pointer to a DPLL struct clk
@@ -237,6 +225,63 @@ static int _omap3_noncore_dpll_stop(struct clk *clk)
237 return 0; 225 return 0;
238} 226}
239 227
228/*
229 * _omap3_noncore_dpll_program - set non-core DPLL M,N values directly
230 * @clk: struct clk * of DPLL to set
231 * @m: DPLL multiplier to set
232 * @n: DPLL divider to set
233 * @freqsel: FREQSEL value to set
234 *
235 * Program the DPLL with the supplied M, N values, and wait for the DPLL to
236 * lock.. Returns -EINVAL upon error, or 0 upon success.
237 */
238static int omap3_noncore_dpll_program(struct clk *clk, u16 m, u8 n, u16 freqsel)
239{
240 struct dpll_data *dd = clk->dpll_data;
241 u32 v;
242
243 /* 3430 ES2 TRM: 4.7.6.9 DPLL Programming Sequence */
244 _omap3_noncore_dpll_bypass(clk);
245
246 /* Set jitter correction */
247 if (!cpu_is_omap44xx()) {
248 v = __raw_readl(dd->control_reg);
249 v &= ~dd->freqsel_mask;
250 v |= freqsel << __ffs(dd->freqsel_mask);
251 __raw_writel(v, dd->control_reg);
252 }
253
254 /* Set DPLL multiplier, divider */
255 v = __raw_readl(dd->mult_div1_reg);
256 v &= ~(dd->mult_mask | dd->div1_mask);
257 v |= m << __ffs(dd->mult_mask);
258 v |= (n - 1) << __ffs(dd->div1_mask);
259 __raw_writel(v, dd->mult_div1_reg);
260
261 /* We let the clock framework set the other output dividers later */
262
263 /* REVISIT: Set ramp-up delay? */
264
265 _omap3_noncore_dpll_lock(clk);
266
267 return 0;
268}
269
270/* Public functions */
271
272/**
273 * omap3_dpll_recalc - recalculate DPLL rate
274 * @clk: DPLL struct clk
275 *
276 * Recalculate and propagate the DPLL rate.
277 */
278unsigned long omap3_dpll_recalc(struct clk *clk)
279{
280 return omap2_get_dpll_rate(clk);
281}
282
283/* Non-CORE DPLL (e.g., DPLLs that do not control SDRC) clock functions */
284
240/** 285/**
241 * omap3_noncore_dpll_enable - instruct a DPLL to enter bypass or lock mode 286 * omap3_noncore_dpll_enable - instruct a DPLL to enter bypass or lock mode
242 * @clk: pointer to a DPLL struct clk 287 * @clk: pointer to a DPLL struct clk
@@ -292,48 +337,6 @@ void omap3_noncore_dpll_disable(struct clk *clk)
292 337
293/* Non-CORE DPLL rate set code */ 338/* Non-CORE DPLL rate set code */
294 339
295/*
296 * omap3_noncore_dpll_program - set non-core DPLL M,N values directly
297 * @clk: struct clk * of DPLL to set
298 * @m: DPLL multiplier to set
299 * @n: DPLL divider to set
300 * @freqsel: FREQSEL value to set
301 *
302 * Program the DPLL with the supplied M, N values, and wait for the DPLL to
303 * lock.. Returns -EINVAL upon error, or 0 upon success.
304 */
305int omap3_noncore_dpll_program(struct clk *clk, u16 m, u8 n, u16 freqsel)
306{
307 struct dpll_data *dd = clk->dpll_data;
308 u32 v;
309
310 /* 3430 ES2 TRM: 4.7.6.9 DPLL Programming Sequence */
311 _omap3_noncore_dpll_bypass(clk);
312
313 /* Set jitter correction */
314 if (!cpu_is_omap44xx()) {
315 v = __raw_readl(dd->control_reg);
316 v &= ~dd->freqsel_mask;
317 v |= freqsel << __ffs(dd->freqsel_mask);
318 __raw_writel(v, dd->control_reg);
319 }
320
321 /* Set DPLL multiplier, divider */
322 v = __raw_readl(dd->mult_div1_reg);
323 v &= ~(dd->mult_mask | dd->div1_mask);
324 v |= m << __ffs(dd->mult_mask);
325 v |= (n - 1) << __ffs(dd->div1_mask);
326 __raw_writel(v, dd->mult_div1_reg);
327
328 /* We let the clock framework set the other output dividers later */
329
330 /* REVISIT: Set ramp-up delay? */
331
332 _omap3_noncore_dpll_lock(clk);
333
334 return 0;
335}
336
337/** 340/**
338 * omap3_noncore_dpll_set_rate - set non-core DPLL rate 341 * omap3_noncore_dpll_set_rate - set non-core DPLL rate
339 * @clk: struct clk * of DPLL to set 342 * @clk: struct clk * of DPLL to set
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index 3d65c50bd017..9e7c4aeeae02 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -281,6 +281,7 @@ void __init omap4_check_revision(void)
281 281
282 if ((hawkeye == 0xb852) && (rev == 0x0)) { 282 if ((hawkeye == 0xb852) && (rev == 0x0)) {
283 omap_revision = OMAP4430_REV_ES1_0; 283 omap_revision = OMAP4430_REV_ES1_0;
284 omap_chip.oc |= CHIP_IS_OMAP4430ES1;
284 pr_info("OMAP%04x %s\n", omap_rev() >> 16, rev_name); 285 pr_info("OMAP%04x %s\n", omap_rev() >> 16, rev_name);
285 return; 286 return;
286 } 287 }
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 5a7996402c53..01ef2ae93593 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -35,7 +35,9 @@
35#include <plat/serial.h> 35#include <plat/serial.h>
36#include <plat/vram.h> 36#include <plat/vram.h>
37 37
38#include "clock.h" 38#include "clock2xxx.h"
39#include "clock34xx.h"
40#include "clock44xx.h"
39 41
40#include <plat/omap-pm.h> 42#include <plat/omap-pm.h>
41#include <plat/powerdomain.h> 43#include <plat/powerdomain.h>
@@ -312,15 +314,24 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
312 else if (cpu_is_omap34xx()) 314 else if (cpu_is_omap34xx())
313 hwmods = omap34xx_hwmods; 315 hwmods = omap34xx_hwmods;
314 316
317 pwrdm_init(powerdomains_omap);
318 clkdm_init(clockdomains_omap, clkdm_autodeps);
315#ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */ 319#ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */
316 /* The OPP tables have to be registered before a clk init */ 320 /* The OPP tables have to be registered before a clk init */
317 omap_hwmod_init(hwmods); 321 omap_hwmod_init(hwmods);
318 omap2_mux_init(); 322 omap2_mux_init();
319 omap_pm_if_early_init(mpu_opps, dsp_opps, l3_opps); 323 omap_pm_if_early_init(mpu_opps, dsp_opps, l3_opps);
320 pwrdm_init(powerdomains_omap);
321 clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps);
322#endif 324#endif
323 omap2_clk_init(); 325
326 if (cpu_is_omap24xx())
327 omap2xxx_clk_init();
328 else if (cpu_is_omap34xx())
329 omap3xxx_clk_init();
330 else if (cpu_is_omap44xx())
331 omap4xxx_clk_init();
332 else
333 pr_err("Could not init clock framework - unknown CPU\n");
334
324 omap_serial_early_init(); 335 omap_serial_early_init();
325#ifndef CONFIG_ARCH_OMAP4 336#ifndef CONFIG_ARCH_OMAP4
326 omap_hwmod_late_init(); 337 omap_hwmod_late_init();
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 478ae585ca39..70912d1c71e0 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -299,15 +299,14 @@ static int _disable_wakeup(struct omap_hwmod *oh)
299 * be accessed by the IVA, there should be a sleepdep between the IVA 299 * be accessed by the IVA, there should be a sleepdep between the IVA
300 * initiator and the module). Only applies to modules in smart-idle 300 * initiator and the module). Only applies to modules in smart-idle
301 * mode. Returns -EINVAL upon error or passes along 301 * mode. Returns -EINVAL upon error or passes along
302 * pwrdm_add_sleepdep() value upon success. 302 * clkdm_add_sleepdep() value upon success.
303 */ 303 */
304static int _add_initiator_dep(struct omap_hwmod *oh, struct omap_hwmod *init_oh) 304static int _add_initiator_dep(struct omap_hwmod *oh, struct omap_hwmod *init_oh)
305{ 305{
306 if (!oh->_clk) 306 if (!oh->_clk)
307 return -EINVAL; 307 return -EINVAL;
308 308
309 return pwrdm_add_sleepdep(oh->_clk->clkdm->pwrdm.ptr, 309 return clkdm_add_sleepdep(oh->_clk->clkdm, init_oh->_clk->clkdm);
310 init_oh->_clk->clkdm->pwrdm.ptr);
311} 310}
312 311
313/** 312/**
@@ -320,15 +319,14 @@ static int _add_initiator_dep(struct omap_hwmod *oh, struct omap_hwmod *init_oh)
320 * be accessed by the IVA, there should be no sleepdep between the IVA 319 * be accessed by the IVA, there should be no sleepdep between the IVA
321 * initiator and the module). Only applies to modules in smart-idle 320 * initiator and the module). Only applies to modules in smart-idle
322 * mode. Returns -EINVAL upon error or passes along 321 * mode. Returns -EINVAL upon error or passes along
323 * pwrdm_add_sleepdep() value upon success. 322 * clkdm_del_sleepdep() value upon success.
324 */ 323 */
325static int _del_initiator_dep(struct omap_hwmod *oh, struct omap_hwmod *init_oh) 324static int _del_initiator_dep(struct omap_hwmod *oh, struct omap_hwmod *init_oh)
326{ 325{
327 if (!oh->_clk) 326 if (!oh->_clk)
328 return -EINVAL; 327 return -EINVAL;
329 328
330 return pwrdm_del_sleepdep(oh->_clk->clkdm->pwrdm.ptr, 329 return clkdm_del_sleepdep(oh->_clk->clkdm, init_oh->_clk->clkdm);
331 init_oh->_clk->clkdm->pwrdm.ptr);
332} 330}
333 331
334/** 332/**
@@ -994,6 +992,23 @@ void omap_hwmod_writel(u32 v, struct omap_hwmod *oh, u16 reg_offs)
994 __raw_writel(v, oh->_rt_va + reg_offs); 992 __raw_writel(v, oh->_rt_va + reg_offs);
995} 993}
996 994
995int omap_hwmod_set_slave_idlemode(struct omap_hwmod *oh, u8 idlemode)
996{
997 u32 v;
998 int retval = 0;
999
1000 if (!oh)
1001 return -EINVAL;
1002
1003 v = oh->_sysc_cache;
1004
1005 retval = _set_slave_idlemode(oh, idlemode, &v);
1006 if (!retval)
1007 _write_sysconfig(v, oh);
1008
1009 return retval;
1010}
1011
997/** 1012/**
998 * omap_hwmod_register - register a struct omap_hwmod 1013 * omap_hwmod_register - register a struct omap_hwmod
999 * @oh: struct omap_hwmod * 1014 * @oh: struct omap_hwmod *
diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c
index a0866268aa41..0ce356f351a3 100644
--- a/arch/arm/mach-omap2/pm-debug.c
+++ b/arch/arm/mach-omap2/pm-debug.c
@@ -67,9 +67,9 @@ void omap2_pm_dump(int mode, int resume, unsigned int us)
67#if 0 67#if 0
68 /* MPU */ 68 /* MPU */
69 DUMP_PRM_MOD_REG(OCP_MOD, OMAP2_PRM_IRQENABLE_MPU_OFFSET); 69 DUMP_PRM_MOD_REG(OCP_MOD, OMAP2_PRM_IRQENABLE_MPU_OFFSET);
70 DUMP_CM_MOD_REG(MPU_MOD, CM_CLKSTCTRL); 70 DUMP_CM_MOD_REG(MPU_MOD, OMAP2_CM_CLKSTCTRL);
71 DUMP_PRM_MOD_REG(MPU_MOD, PM_PWSTCTRL); 71 DUMP_PRM_MOD_REG(MPU_MOD, OMAP2_PM_PWSTCTRL);
72 DUMP_PRM_MOD_REG(MPU_MOD, PM_PWSTST); 72 DUMP_PRM_MOD_REG(MPU_MOD, OMAP2_PM_PWSTST);
73 DUMP_PRM_MOD_REG(MPU_MOD, PM_WKDEP); 73 DUMP_PRM_MOD_REG(MPU_MOD, PM_WKDEP);
74#endif 74#endif
75#if 0 75#if 0
@@ -93,7 +93,7 @@ void omap2_pm_dump(int mode, int resume, unsigned int us)
93 DUMP_CM_MOD_REG(WKUP_MOD, CM_ICLKEN); 93 DUMP_CM_MOD_REG(WKUP_MOD, CM_ICLKEN);
94 DUMP_CM_MOD_REG(PLL_MOD, CM_CLKEN); 94 DUMP_CM_MOD_REG(PLL_MOD, CM_CLKEN);
95 DUMP_CM_MOD_REG(PLL_MOD, CM_AUTOIDLE); 95 DUMP_CM_MOD_REG(PLL_MOD, CM_AUTOIDLE);
96 DUMP_PRM_MOD_REG(CORE_MOD, PM_PWSTST); 96 DUMP_PRM_MOD_REG(CORE_MOD, OMAP2_PM_PWSTST);
97#endif 97#endif
98#if 0 98#if 0
99 /* DSP */ 99 /* DSP */
@@ -103,11 +103,11 @@ void omap2_pm_dump(int mode, int resume, unsigned int us)
103 DUMP_CM_MOD_REG(OMAP24XX_DSP_MOD, CM_IDLEST); 103 DUMP_CM_MOD_REG(OMAP24XX_DSP_MOD, CM_IDLEST);
104 DUMP_CM_MOD_REG(OMAP24XX_DSP_MOD, CM_AUTOIDLE); 104 DUMP_CM_MOD_REG(OMAP24XX_DSP_MOD, CM_AUTOIDLE);
105 DUMP_CM_MOD_REG(OMAP24XX_DSP_MOD, CM_CLKSEL); 105 DUMP_CM_MOD_REG(OMAP24XX_DSP_MOD, CM_CLKSEL);
106 DUMP_CM_MOD_REG(OMAP24XX_DSP_MOD, CM_CLKSTCTRL); 106 DUMP_CM_MOD_REG(OMAP24XX_DSP_MOD, OMAP2_CM_CLKSTCTRL);
107 DUMP_PRM_MOD_REG(OMAP24XX_DSP_MOD, RM_RSTCTRL); 107 DUMP_PRM_MOD_REG(OMAP24XX_DSP_MOD, OMAP2_RM_RSTCTRL);
108 DUMP_PRM_MOD_REG(OMAP24XX_DSP_MOD, RM_RSTST); 108 DUMP_PRM_MOD_REG(OMAP24XX_DSP_MOD, OMAP2_RM_RSTST);
109 DUMP_PRM_MOD_REG(OMAP24XX_DSP_MOD, PM_PWSTCTRL); 109 DUMP_PRM_MOD_REG(OMAP24XX_DSP_MOD, OMAP2_PM_PWSTCTRL);
110 DUMP_PRM_MOD_REG(OMAP24XX_DSP_MOD, PM_PWSTST); 110 DUMP_PRM_MOD_REG(OMAP24XX_DSP_MOD, OMAP2_PM_PWSTST);
111 } 111 }
112#endif 112#endif
113 } else { 113 } else {
@@ -577,7 +577,7 @@ static int __init pm_dbg_init(void)
577 (void) debugfs_create_file("time", S_IRUGO, 577 (void) debugfs_create_file("time", S_IRUGO,
578 d, (void *)DEBUG_FILE_TIMERS, &debug_fops); 578 d, (void *)DEBUG_FILE_TIMERS, &debug_fops);
579 579
580 pwrdm_for_each_nolock(pwrdms_setup, (void *)d); 580 pwrdm_for_each(pwrdms_setup, (void *)d);
581 581
582 pm_dbg_dir = debugfs_create_dir("registers", d); 582 pm_dbg_dir = debugfs_create_dir("registers", d);
583 if (IS_ERR(pm_dbg_dir)) 583 if (IS_ERR(pm_dbg_dir))
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c
index cba05b9f041f..374299ea7ade 100644
--- a/arch/arm/mach-omap2/pm24xx.c
+++ b/arch/arm/mach-omap2/pm24xx.c
@@ -57,11 +57,8 @@ static void (*omap2_sram_idle)(void);
57static void (*omap2_sram_suspend)(u32 dllctrl, void __iomem *sdrc_dlla_ctrl, 57static void (*omap2_sram_suspend)(u32 dllctrl, void __iomem *sdrc_dlla_ctrl,
58 void __iomem *sdrc_power); 58 void __iomem *sdrc_power);
59 59
60static struct powerdomain *mpu_pwrdm; 60static struct powerdomain *mpu_pwrdm, *core_pwrdm;
61static struct powerdomain *core_pwrdm; 61static struct clockdomain *dsp_clkdm, *mpu_clkdm, *wkup_clkdm, *gfx_clkdm;
62
63static struct clockdomain *dsp_clkdm;
64static struct clockdomain *gfx_clkdm;
65 62
66static struct clk *osc_ck, *emul_ck; 63static struct clk *osc_ck, *emul_ck;
67 64
@@ -219,11 +216,12 @@ static void omap2_enter_mpu_retention(void)
219 /* Try to enter MPU retention */ 216 /* Try to enter MPU retention */
220 prm_write_mod_reg((0x01 << OMAP_POWERSTATE_SHIFT) | 217 prm_write_mod_reg((0x01 << OMAP_POWERSTATE_SHIFT) |
221 OMAP_LOGICRETSTATE, 218 OMAP_LOGICRETSTATE,
222 MPU_MOD, PM_PWSTCTRL); 219 MPU_MOD, OMAP2_PM_PWSTCTRL);
223 } else { 220 } else {
224 /* Block MPU retention */ 221 /* Block MPU retention */
225 222
226 prm_write_mod_reg(OMAP_LOGICRETSTATE, MPU_MOD, PM_PWSTCTRL); 223 prm_write_mod_reg(OMAP_LOGICRETSTATE, MPU_MOD,
224 OMAP2_PM_PWSTCTRL);
227 only_idle = 1; 225 only_idle = 1;
228 } 226 }
229 227
@@ -333,9 +331,17 @@ static struct platform_suspend_ops omap_pm_ops = {
333 .valid = suspend_valid_only_mem, 331 .valid = suspend_valid_only_mem,
334}; 332};
335 333
336static int _pm_clkdm_enable_hwsup(struct clockdomain *clkdm, void *unused) 334/* XXX This function should be shareable between OMAP2xxx and OMAP3 */
335static int __init clkdms_setup(struct clockdomain *clkdm, void *unused)
337{ 336{
338 omap2_clkdm_allow_idle(clkdm); 337 clkdm_clear_all_wkdeps(clkdm);
338 clkdm_clear_all_sleepdeps(clkdm);
339
340 if (clkdm->flags & CLKDM_CAN_ENABLE_AUTO)
341 omap2_clkdm_allow_idle(clkdm);
342 else if (clkdm->flags & CLKDM_CAN_FORCE_SLEEP &&
343 atomic_read(&clkdm->usecount) == 0)
344 omap2_clkdm_sleep(clkdm);
339 return 0; 345 return 0;
340} 346}
341 347
@@ -348,14 +354,6 @@ static void __init prcm_setup_regs(void)
348 prm_write_mod_reg(OMAP24XX_AUTOIDLE, OCP_MOD, 354 prm_write_mod_reg(OMAP24XX_AUTOIDLE, OCP_MOD,
349 OMAP2_PRCM_SYSCONFIG_OFFSET); 355 OMAP2_PRCM_SYSCONFIG_OFFSET);
350 356
351 /* Set all domain wakeup dependencies */
352 prm_write_mod_reg(OMAP_EN_WKUP_MASK, MPU_MOD, PM_WKDEP);
353 prm_write_mod_reg(0, OMAP24XX_DSP_MOD, PM_WKDEP);
354 prm_write_mod_reg(0, GFX_MOD, PM_WKDEP);
355 prm_write_mod_reg(0, CORE_MOD, PM_WKDEP);
356 if (cpu_is_omap2430())
357 prm_write_mod_reg(0, OMAP2430_MDM_MOD, PM_WKDEP);
358
359 /* 357 /*
360 * Set CORE powerdomain memory banks to retain their contents 358 * Set CORE powerdomain memory banks to retain their contents
361 * during RETENTION 359 * during RETENTION
@@ -384,8 +382,12 @@ static void __init prcm_setup_regs(void)
384 pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_OFF); 382 pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_OFF);
385 omap2_clkdm_sleep(gfx_clkdm); 383 omap2_clkdm_sleep(gfx_clkdm);
386 384
387 /* Enable clockdomain hardware-supervised control for all clkdms */ 385 /*
388 clkdm_for_each(_pm_clkdm_enable_hwsup, NULL); 386 * Clear clockdomain wakeup dependencies and enable
387 * hardware-supervised idle for all clkdms
388 */
389 clkdm_for_each(clkdms_setup, NULL);
390 clkdm_add_wkdep(mpu_clkdm, wkup_clkdm);
389 391
390 /* Enable clock autoidle for all domains */ 392 /* Enable clock autoidle for all domains */
391 cm_write_mod_reg(OMAP24XX_AUTO_CAM | 393 cm_write_mod_reg(OMAP24XX_AUTO_CAM |
@@ -481,7 +483,7 @@ static int __init omap2_pm_init(void)
481 l = prm_read_mod_reg(OCP_MOD, OMAP2_PRCM_REVISION_OFFSET); 483 l = prm_read_mod_reg(OCP_MOD, OMAP2_PRCM_REVISION_OFFSET);
482 printk(KERN_INFO "PRCM revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f); 484 printk(KERN_INFO "PRCM revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f);
483 485
484 /* Look up important powerdomains, clockdomains */ 486 /* Look up important powerdomains */
485 487
486 mpu_pwrdm = pwrdm_lookup("mpu_pwrdm"); 488 mpu_pwrdm = pwrdm_lookup("mpu_pwrdm");
487 if (!mpu_pwrdm) 489 if (!mpu_pwrdm)
@@ -491,9 +493,19 @@ static int __init omap2_pm_init(void)
491 if (!core_pwrdm) 493 if (!core_pwrdm)
492 pr_err("PM: core_pwrdm not found\n"); 494 pr_err("PM: core_pwrdm not found\n");
493 495
496 /* Look up important clockdomains */
497
498 mpu_clkdm = clkdm_lookup("mpu_clkdm");
499 if (!mpu_clkdm)
500 pr_err("PM: mpu_clkdm not found\n");
501
502 wkup_clkdm = clkdm_lookup("wkup_clkdm");
503 if (!wkup_clkdm)
504 pr_err("PM: wkup_clkdm not found\n");
505
494 dsp_clkdm = clkdm_lookup("dsp_clkdm"); 506 dsp_clkdm = clkdm_lookup("dsp_clkdm");
495 if (!dsp_clkdm) 507 if (!dsp_clkdm)
496 pr_err("PM: mpu_clkdm not found\n"); 508 pr_err("PM: dsp_clkdm not found\n");
497 509
498 gfx_clkdm = clkdm_lookup("gfx_clkdm"); 510 gfx_clkdm = clkdm_lookup("gfx_clkdm");
499 if (!gfx_clkdm) 511 if (!gfx_clkdm)
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 910a7acf542d..5087b153b093 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -685,7 +685,7 @@ static void __init omap3_iva_idle(void)
685 prm_write_mod_reg(OMAP3430_RST1_IVA2 | 685 prm_write_mod_reg(OMAP3430_RST1_IVA2 |
686 OMAP3430_RST2_IVA2 | 686 OMAP3430_RST2_IVA2 |
687 OMAP3430_RST3_IVA2, 687 OMAP3430_RST3_IVA2,
688 OMAP3430_IVA2_MOD, RM_RSTCTRL); 688 OMAP3430_IVA2_MOD, OMAP2_RM_RSTCTRL);
689 689
690 /* Enable IVA2 clock */ 690 /* Enable IVA2 clock */
691 cm_write_mod_reg(OMAP3430_CM_FCLKEN_IVA2_EN_IVA2, 691 cm_write_mod_reg(OMAP3430_CM_FCLKEN_IVA2_EN_IVA2,
@@ -696,7 +696,7 @@ static void __init omap3_iva_idle(void)
696 OMAP343X_CONTROL_IVA2_BOOTMOD); 696 OMAP343X_CONTROL_IVA2_BOOTMOD);
697 697
698 /* Un-reset IVA2 */ 698 /* Un-reset IVA2 */
699 prm_write_mod_reg(0, OMAP3430_IVA2_MOD, RM_RSTCTRL); 699 prm_write_mod_reg(0, OMAP3430_IVA2_MOD, OMAP2_RM_RSTCTRL);
700 700
701 /* Disable IVA2 clock */ 701 /* Disable IVA2 clock */
702 cm_write_mod_reg(0, OMAP3430_IVA2_MOD, CM_FCLKEN); 702 cm_write_mod_reg(0, OMAP3430_IVA2_MOD, CM_FCLKEN);
@@ -705,7 +705,7 @@ static void __init omap3_iva_idle(void)
705 prm_write_mod_reg(OMAP3430_RST1_IVA2 | 705 prm_write_mod_reg(OMAP3430_RST1_IVA2 |
706 OMAP3430_RST2_IVA2 | 706 OMAP3430_RST2_IVA2 |
707 OMAP3430_RST3_IVA2, 707 OMAP3430_RST3_IVA2,
708 OMAP3430_IVA2_MOD, RM_RSTCTRL); 708 OMAP3430_IVA2_MOD, OMAP2_RM_RSTCTRL);
709} 709}
710 710
711static void __init omap3_d2d_idle(void) 711static void __init omap3_d2d_idle(void)
@@ -728,8 +728,8 @@ static void __init omap3_d2d_idle(void)
728 /* reset modem */ 728 /* reset modem */
729 prm_write_mod_reg(OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RSTPWRON | 729 prm_write_mod_reg(OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RSTPWRON |
730 OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RST, 730 OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RST,
731 CORE_MOD, RM_RSTCTRL); 731 CORE_MOD, OMAP2_RM_RSTCTRL);
732 prm_write_mod_reg(0, CORE_MOD, RM_RSTCTRL); 732 prm_write_mod_reg(0, CORE_MOD, OMAP2_RM_RSTCTRL);
733} 733}
734 734
735static void __init prcm_setup_regs(void) 735static void __init prcm_setup_regs(void)
@@ -916,13 +916,13 @@ static void __init prcm_setup_regs(void)
916 prm_write_mod_reg(0, OMAP3430_PER_MOD, OMAP3430_PM_IVAGRPSEL); 916 prm_write_mod_reg(0, OMAP3430_PER_MOD, OMAP3430_PM_IVAGRPSEL);
917 917
918 /* Clear any pending 'reset' flags */ 918 /* Clear any pending 'reset' flags */
919 prm_write_mod_reg(0xffffffff, MPU_MOD, RM_RSTST); 919 prm_write_mod_reg(0xffffffff, MPU_MOD, OMAP2_RM_RSTST);
920 prm_write_mod_reg(0xffffffff, CORE_MOD, RM_RSTST); 920 prm_write_mod_reg(0xffffffff, CORE_MOD, OMAP2_RM_RSTST);
921 prm_write_mod_reg(0xffffffff, OMAP3430_PER_MOD, RM_RSTST); 921 prm_write_mod_reg(0xffffffff, OMAP3430_PER_MOD, OMAP2_RM_RSTST);
922 prm_write_mod_reg(0xffffffff, OMAP3430_EMU_MOD, RM_RSTST); 922 prm_write_mod_reg(0xffffffff, OMAP3430_EMU_MOD, OMAP2_RM_RSTST);
923 prm_write_mod_reg(0xffffffff, OMAP3430_NEON_MOD, RM_RSTST); 923 prm_write_mod_reg(0xffffffff, OMAP3430_NEON_MOD, OMAP2_RM_RSTST);
924 prm_write_mod_reg(0xffffffff, OMAP3430_DSS_MOD, RM_RSTST); 924 prm_write_mod_reg(0xffffffff, OMAP3430_DSS_MOD, OMAP2_RM_RSTST);
925 prm_write_mod_reg(0xffffffff, OMAP3430ES2_USBHOST_MOD, RM_RSTST); 925 prm_write_mod_reg(0xffffffff, OMAP3430ES2_USBHOST_MOD, OMAP2_RM_RSTST);
926 926
927 /* Clear any pending PRCM interrupts */ 927 /* Clear any pending PRCM interrupts */
928 prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET); 928 prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET);
@@ -998,6 +998,9 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused)
998 */ 998 */
999static int __init clkdms_setup(struct clockdomain *clkdm, void *unused) 999static int __init clkdms_setup(struct clockdomain *clkdm, void *unused)
1000{ 1000{
1001 clkdm_clear_all_wkdeps(clkdm);
1002 clkdm_clear_all_sleepdeps(clkdm);
1003
1001 if (clkdm->flags & CLKDM_CAN_ENABLE_AUTO) 1004 if (clkdm->flags & CLKDM_CAN_ENABLE_AUTO)
1002 omap2_clkdm_allow_idle(clkdm); 1005 omap2_clkdm_allow_idle(clkdm);
1003 else if (clkdm->flags & CLKDM_CAN_FORCE_SLEEP && 1006 else if (clkdm->flags & CLKDM_CAN_FORCE_SLEEP &&
@@ -1018,6 +1021,7 @@ void omap_push_sram_idle(void)
1018static int __init omap3_pm_init(void) 1021static int __init omap3_pm_init(void)
1019{ 1022{
1020 struct power_state *pwrst, *tmp; 1023 struct power_state *pwrst, *tmp;
1024 struct clockdomain *neon_clkdm, *per_clkdm, *mpu_clkdm, *core_clkdm;
1021 int ret; 1025 int ret;
1022 1026
1023 if (!cpu_is_omap34xx()) 1027 if (!cpu_is_omap34xx())
@@ -1057,6 +1061,11 @@ static int __init omap3_pm_init(void)
1057 core_pwrdm = pwrdm_lookup("core_pwrdm"); 1061 core_pwrdm = pwrdm_lookup("core_pwrdm");
1058 cam_pwrdm = pwrdm_lookup("cam_pwrdm"); 1062 cam_pwrdm = pwrdm_lookup("cam_pwrdm");
1059 1063
1064 neon_clkdm = clkdm_lookup("neon_clkdm");
1065 mpu_clkdm = clkdm_lookup("mpu_clkdm");
1066 per_clkdm = clkdm_lookup("per_clkdm");
1067 core_clkdm = clkdm_lookup("core_clkdm");
1068
1060 omap_push_sram_idle(); 1069 omap_push_sram_idle();
1061#ifdef CONFIG_SUSPEND 1070#ifdef CONFIG_SUSPEND
1062 suspend_set_ops(&omap_pm_ops); 1071 suspend_set_ops(&omap_pm_ops);
@@ -1065,14 +1074,14 @@ static int __init omap3_pm_init(void)
1065 pm_idle = omap3_pm_idle; 1074 pm_idle = omap3_pm_idle;
1066 omap3_idle_init(); 1075 omap3_idle_init();
1067 1076
1068 pwrdm_add_wkdep(neon_pwrdm, mpu_pwrdm); 1077 clkdm_add_wkdep(neon_clkdm, mpu_clkdm);
1069 /* 1078 /*
1070 * REVISIT: This wkdep is only necessary when GPIO2-6 are enabled for 1079 * REVISIT: This wkdep is only necessary when GPIO2-6 are enabled for
1071 * IO-pad wakeup. Otherwise it will unnecessarily waste power 1080 * IO-pad wakeup. Otherwise it will unnecessarily waste power
1072 * waking up PER with every CORE wakeup - see 1081 * waking up PER with every CORE wakeup - see
1073 * http://marc.info/?l=linux-omap&m=121852150710062&w=2 1082 * http://marc.info/?l=linux-omap&m=121852150710062&w=2
1074 */ 1083 */
1075 pwrdm_add_wkdep(per_pwrdm, core_pwrdm); 1084 clkdm_add_wkdep(per_clkdm, core_clkdm);
1076 1085
1077 if (omap_type() != OMAP2_DEVICE_TYPE_GP) { 1086 if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
1078 omap3_secure_ram_storage = 1087 omap3_secure_ram_storage =
diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c
index 26b3f3ee82a3..dc03289d5dea 100644
--- a/arch/arm/mach-omap2/powerdomain.c
+++ b/arch/arm/mach-omap2/powerdomain.c
@@ -2,10 +2,12 @@
2 * OMAP powerdomain control 2 * OMAP powerdomain control
3 * 3 *
4 * Copyright (C) 2007-2008 Texas Instruments, Inc. 4 * Copyright (C) 2007-2008 Texas Instruments, Inc.
5 * Copyright (C) 2007-2008 Nokia Corporation 5 * Copyright (C) 2007-2009 Nokia Corporation
6 * 6 *
7 * Written by Paul Walmsley 7 * Written by Paul Walmsley
8 * 8 *
9 * Added OMAP4 specific support by Abhijit Pagare <abhijitpagare@ti.com>
10 *
9 * This program is free software; you can redistribute it and/or modify 11 * 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 12 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation. 13 * published by the Free Software Foundation.
@@ -26,12 +28,15 @@
26 28
27#include "cm.h" 29#include "cm.h"
28#include "cm-regbits-34xx.h" 30#include "cm-regbits-34xx.h"
31#include "cm-regbits-44xx.h"
29#include "prm.h" 32#include "prm.h"
30#include "prm-regbits-34xx.h" 33#include "prm-regbits-34xx.h"
34#include "prm-regbits-44xx.h"
31 35
32#include <plat/cpu.h> 36#include <plat/cpu.h>
33#include <plat/powerdomain.h> 37#include <plat/powerdomain.h>
34#include <plat/clockdomain.h> 38#include <plat/clockdomain.h>
39#include <plat/prcm.h>
35 40
36#include "pm.h" 41#include "pm.h"
37 42
@@ -40,28 +45,42 @@ enum {
40 PWRDM_STATE_PREV, 45 PWRDM_STATE_PREV,
41}; 46};
42 47
43/* pwrdm_list contains all registered struct powerdomains */ 48/* Variable holding value of the CPU dependent PWRSTCTRL Register Offset */
44static LIST_HEAD(pwrdm_list); 49static u16 pwrstctrl_reg_offs;
45 50
46/* 51/* Variable holding value of the CPU dependent PWRSTST Register Offset */
47 * pwrdm_rwlock protects pwrdm_list add and del ops - also reused to 52static u16 pwrstst_reg_offs;
48 * protect pwrdm_clkdms[] during clkdm add/del ops 53
54/* OMAP3 and OMAP4 specific register bit initialisations
55 * Notice that the names here are not according to each power
56 * domain but the bit mapping used applies to all of them
49 */ 57 */
50static DEFINE_RWLOCK(pwrdm_rwlock);
51 58
59/* OMAP3 and OMAP4 Memory Onstate Masks (common across all power domains) */
60#define OMAP_MEM0_ONSTATE_MASK OMAP3430_SHAREDL1CACHEFLATONSTATE_MASK
61#define OMAP_MEM1_ONSTATE_MASK OMAP3430_L1FLATMEMONSTATE_MASK
62#define OMAP_MEM2_ONSTATE_MASK OMAP3430_SHAREDL2CACHEFLATONSTATE_MASK
63#define OMAP_MEM3_ONSTATE_MASK OMAP3430_L2FLATMEMONSTATE_MASK
64#define OMAP_MEM4_ONSTATE_MASK OMAP4430_OCP_NRET_BANK_ONSTATE_MASK
52 65
53/* Private functions */ 66/* OMAP3 and OMAP4 Memory Retstate Masks (common across all power domains) */
67#define OMAP_MEM0_RETSTATE_MASK OMAP3430_SHAREDL1CACHEFLATRETSTATE
68#define OMAP_MEM1_RETSTATE_MASK OMAP3430_L1FLATMEMRETSTATE
69#define OMAP_MEM2_RETSTATE_MASK OMAP3430_SHAREDL2CACHEFLATRETSTATE
70#define OMAP_MEM3_RETSTATE_MASK OMAP3430_L2FLATMEMRETSTATE
71#define OMAP_MEM4_RETSTATE_MASK OMAP4430_OCP_NRET_BANK_RETSTATE_MASK
54 72
55static u32 prm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask) 73/* OMAP3 and OMAP4 Memory Status bits */
56{ 74#define OMAP_MEM0_STATEST_MASK OMAP3430_SHAREDL1CACHEFLATSTATEST_MASK
57 u32 v; 75#define OMAP_MEM1_STATEST_MASK OMAP3430_L1FLATMEMSTATEST_MASK
76#define OMAP_MEM2_STATEST_MASK OMAP3430_SHAREDL2CACHEFLATSTATEST_MASK
77#define OMAP_MEM3_STATEST_MASK OMAP3430_L2FLATMEMSTATEST_MASK
78#define OMAP_MEM4_STATEST_MASK OMAP4430_OCP_NRET_BANK_STATEST_MASK
58 79
59 v = prm_read_mod_reg(domain, idx); 80/* pwrdm_list contains all registered struct powerdomains */
60 v &= mask; 81static LIST_HEAD(pwrdm_list);
61 v >>= __ffs(mask);
62 82
63 return v; 83/* Private functions */
64}
65 84
66static struct powerdomain *_pwrdm_lookup(const char *name) 85static struct powerdomain *_pwrdm_lookup(const char *name)
67{ 86{
@@ -79,32 +98,40 @@ static struct powerdomain *_pwrdm_lookup(const char *name)
79 return pwrdm; 98 return pwrdm;
80} 99}
81 100
82/* _pwrdm_deps_lookup - look up the specified powerdomain in a pwrdm list */ 101/**
83static struct powerdomain *_pwrdm_deps_lookup(struct powerdomain *pwrdm, 102 * _pwrdm_register - register a powerdomain
84 struct pwrdm_dep *deps) 103 * @pwrdm: struct powerdomain * to register
104 *
105 * Adds a powerdomain to the internal powerdomain list. Returns
106 * -EINVAL if given a null pointer, -EEXIST if a powerdomain is
107 * already registered by the provided name, or 0 upon success.
108 */
109static int _pwrdm_register(struct powerdomain *pwrdm)
85{ 110{
86 struct pwrdm_dep *pd; 111 int i;
87 112
88 if (!pwrdm || !deps || !omap_chip_is(pwrdm->omap_chip)) 113 if (!pwrdm)
89 return ERR_PTR(-EINVAL); 114 return -EINVAL;
90 115
91 for (pd = deps; pd->pwrdm_name; pd++) { 116 if (!omap_chip_is(pwrdm->omap_chip))
117 return -EINVAL;
92 118
93 if (!omap_chip_is(pd->omap_chip)) 119 if (_pwrdm_lookup(pwrdm->name))
94 continue; 120 return -EEXIST;
95 121
96 if (!pd->pwrdm && pd->pwrdm_name) 122 list_add(&pwrdm->node, &pwrdm_list);
97 pd->pwrdm = pwrdm_lookup(pd->pwrdm_name);
98 123
99 if (pd->pwrdm == pwrdm) 124 /* Initialize the powerdomain's state counter */
100 break; 125 for (i = 0; i < PWRDM_MAX_PWRSTS; i++)
126 pwrdm->state_counter[i] = 0;
101 127
102 } 128 pwrdm_wait_transition(pwrdm);
129 pwrdm->state = pwrdm_read_pwrst(pwrdm);
130 pwrdm->state_counter[pwrdm->state] = 1;
103 131
104 if (!pd->pwrdm_name) 132 pr_debug("powerdomain: registered %s\n", pwrdm->name);
105 return ERR_PTR(-ENOENT);
106 133
107 return pd->pwrdm; 134 return 0;
108} 135}
109 136
110static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) 137static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag)
@@ -154,134 +181,71 @@ static int _pwrdm_post_transition_cb(struct powerdomain *pwrdm, void *unused)
154 return 0; 181 return 0;
155} 182}
156 183
157static __init void _pwrdm_setup(struct powerdomain *pwrdm)
158{
159 int i;
160
161 for (i = 0; i < PWRDM_MAX_PWRSTS; i++)
162 pwrdm->state_counter[i] = 0;
163
164 pwrdm_wait_transition(pwrdm);
165 pwrdm->state = pwrdm_read_pwrst(pwrdm);
166 pwrdm->state_counter[pwrdm->state] = 1;
167
168}
169
170/* Public functions */ 184/* Public functions */
171 185
172/** 186/**
173 * pwrdm_init - set up the powerdomain layer 187 * pwrdm_init - set up the powerdomain layer
188 * @pwrdm_list: array of struct powerdomain pointers to register
174 * 189 *
175 * Loop through the list of powerdomains, registering all that are 190 * Loop through the array of powerdomains @pwrdm_list, registering all
176 * available on the current CPU. If pwrdm_list is supplied and not 191 * that are available on the current CPU. If pwrdm_list is supplied
177 * null, all of the referenced powerdomains will be registered. No 192 * and not null, all of the referenced powerdomains will be
178 * return value. 193 * registered. No return value. XXX pwrdm_list is not really a
194 * "list"; it is an array. Rename appropriately.
179 */ 195 */
180void pwrdm_init(struct powerdomain **pwrdm_list) 196void pwrdm_init(struct powerdomain **pwrdm_list)
181{ 197{
182 struct powerdomain **p = NULL; 198 struct powerdomain **p = NULL;
183 199
184 if (pwrdm_list) { 200 if (cpu_is_omap24xx() | cpu_is_omap34xx()) {
185 for (p = pwrdm_list; *p; p++) { 201 pwrstctrl_reg_offs = OMAP2_PM_PWSTCTRL;
186 pwrdm_register(*p); 202 pwrstst_reg_offs = OMAP2_PM_PWSTST;
187 _pwrdm_setup(*p); 203 } else if (cpu_is_omap44xx()) {
188 } 204 pwrstctrl_reg_offs = OMAP4_PM_PWSTCTRL;
205 pwrstst_reg_offs = OMAP4_PM_PWSTST;
206 } else {
207 printk(KERN_ERR "Power Domain struct not supported for " \
208 "this CPU\n");
209 return;
189 } 210 }
190}
191 211
192/** 212 if (pwrdm_list) {
193 * pwrdm_register - register a powerdomain 213 for (p = pwrdm_list; *p; p++)
194 * @pwrdm: struct powerdomain * to register 214 _pwrdm_register(*p);
195 *
196 * Adds a powerdomain to the internal powerdomain list. Returns
197 * -EINVAL if given a null pointer, -EEXIST if a powerdomain is
198 * already registered by the provided name, or 0 upon success.
199 */
200int pwrdm_register(struct powerdomain *pwrdm)
201{
202 unsigned long flags;
203 int ret = -EINVAL;
204
205 if (!pwrdm)
206 return -EINVAL;
207
208 if (!omap_chip_is(pwrdm->omap_chip))
209 return -EINVAL;
210
211 write_lock_irqsave(&pwrdm_rwlock, flags);
212 if (_pwrdm_lookup(pwrdm->name)) {
213 ret = -EEXIST;
214 goto pr_unlock;
215 } 215 }
216
217 list_add(&pwrdm->node, &pwrdm_list);
218
219 pr_debug("powerdomain: registered %s\n", pwrdm->name);
220 ret = 0;
221
222pr_unlock:
223 write_unlock_irqrestore(&pwrdm_rwlock, flags);
224
225 return ret;
226}
227
228/**
229 * pwrdm_unregister - unregister a powerdomain
230 * @pwrdm: struct powerdomain * to unregister
231 *
232 * Removes a powerdomain from the internal powerdomain list. Returns
233 * -EINVAL if pwrdm argument is NULL.
234 */
235int pwrdm_unregister(struct powerdomain *pwrdm)
236{
237 unsigned long flags;
238
239 if (!pwrdm)
240 return -EINVAL;
241
242 write_lock_irqsave(&pwrdm_rwlock, flags);
243 list_del(&pwrdm->node);
244 write_unlock_irqrestore(&pwrdm_rwlock, flags);
245
246 pr_debug("powerdomain: unregistered %s\n", pwrdm->name);
247
248 return 0;
249} 216}
250 217
251/** 218/**
252 * pwrdm_lookup - look up a powerdomain by name, return a pointer 219 * pwrdm_lookup - look up a powerdomain by name, return a pointer
253 * @name: name of powerdomain 220 * @name: name of powerdomain
254 * 221 *
255 * Find a registered powerdomain by its name. Returns a pointer to the 222 * Find a registered powerdomain by its name @name. Returns a pointer
256 * struct powerdomain if found, or NULL otherwise. 223 * to the struct powerdomain if found, or NULL otherwise.
257 */ 224 */
258struct powerdomain *pwrdm_lookup(const char *name) 225struct powerdomain *pwrdm_lookup(const char *name)
259{ 226{
260 struct powerdomain *pwrdm; 227 struct powerdomain *pwrdm;
261 unsigned long flags;
262 228
263 if (!name) 229 if (!name)
264 return NULL; 230 return NULL;
265 231
266 read_lock_irqsave(&pwrdm_rwlock, flags);
267 pwrdm = _pwrdm_lookup(name); 232 pwrdm = _pwrdm_lookup(name);
268 read_unlock_irqrestore(&pwrdm_rwlock, flags);
269 233
270 return pwrdm; 234 return pwrdm;
271} 235}
272 236
273/** 237/**
274 * pwrdm_for_each_nolock - call function on each registered clockdomain 238 * pwrdm_for_each - call function on each registered clockdomain
275 * @fn: callback function * 239 * @fn: callback function *
276 * 240 *
277 * Call the supplied function for each registered powerdomain. The 241 * Call the supplied function @fn for each registered powerdomain.
278 * callback function can return anything but 0 to bail out early from 242 * The callback function @fn can return anything but 0 to bail out
279 * the iterator. Returns the last return value of the callback function, which 243 * early from the iterator. Returns the last return value of the
280 * should be 0 for success or anything else to indicate failure; or -EINVAL if 244 * callback function, which should be 0 for success or anything else
281 * the function pointer is null. 245 * to indicate failure; or -EINVAL if the function pointer is null.
282 */ 246 */
283int pwrdm_for_each_nolock(int (*fn)(struct powerdomain *pwrdm, void *user), 247int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm, void *user),
284 void *user) 248 void *user)
285{ 249{
286 struct powerdomain *temp_pwrdm; 250 struct powerdomain *temp_pwrdm;
287 int ret = 0; 251 int ret = 0;
@@ -299,40 +263,17 @@ int pwrdm_for_each_nolock(int (*fn)(struct powerdomain *pwrdm, void *user),
299} 263}
300 264
301/** 265/**
302 * pwrdm_for_each - call function on each registered clockdomain
303 * @fn: callback function *
304 *
305 * This function is the same as 'pwrdm_for_each_nolock()', but keeps the
306 * &pwrdm_rwlock locked for reading, so no powerdomain structure manipulation
307 * functions should be called from the callback, although hardware powerdomain
308 * control functions are fine.
309 */
310int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm, void *user),
311 void *user)
312{
313 unsigned long flags;
314 int ret;
315
316 read_lock_irqsave(&pwrdm_rwlock, flags);
317 ret = pwrdm_for_each_nolock(fn, user);
318 read_unlock_irqrestore(&pwrdm_rwlock, flags);
319
320 return ret;
321}
322
323/**
324 * pwrdm_add_clkdm - add a clockdomain to a powerdomain 266 * pwrdm_add_clkdm - add a clockdomain to a powerdomain
325 * @pwrdm: struct powerdomain * to add the clockdomain to 267 * @pwrdm: struct powerdomain * to add the clockdomain to
326 * @clkdm: struct clockdomain * to associate with a powerdomain 268 * @clkdm: struct clockdomain * to associate with a powerdomain
327 * 269 *
328 * Associate the clockdomain 'clkdm' with a powerdomain 'pwrdm'. This 270 * Associate the clockdomain @clkdm with a powerdomain @pwrdm. This
329 * enables the use of pwrdm_for_each_clkdm(). Returns -EINVAL if 271 * enables the use of pwrdm_for_each_clkdm(). Returns -EINVAL if
330 * presented with invalid pointers; -ENOMEM if memory could not be allocated; 272 * presented with invalid pointers; -ENOMEM if memory could not be allocated;
331 * or 0 upon success. 273 * or 0 upon success.
332 */ 274 */
333int pwrdm_add_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm) 275int pwrdm_add_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm)
334{ 276{
335 unsigned long flags;
336 int i; 277 int i;
337 int ret = -EINVAL; 278 int ret = -EINVAL;
338 279
@@ -342,8 +283,6 @@ int pwrdm_add_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm)
342 pr_debug("powerdomain: associating clockdomain %s with powerdomain " 283 pr_debug("powerdomain: associating clockdomain %s with powerdomain "
343 "%s\n", clkdm->name, pwrdm->name); 284 "%s\n", clkdm->name, pwrdm->name);
344 285
345 write_lock_irqsave(&pwrdm_rwlock, flags);
346
347 for (i = 0; i < PWRDM_MAX_CLKDMS; i++) { 286 for (i = 0; i < PWRDM_MAX_CLKDMS; i++) {
348 if (!pwrdm->pwrdm_clkdms[i]) 287 if (!pwrdm->pwrdm_clkdms[i])
349 break; 288 break;
@@ -368,8 +307,6 @@ int pwrdm_add_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm)
368 ret = 0; 307 ret = 0;
369 308
370pac_exit: 309pac_exit:
371 write_unlock_irqrestore(&pwrdm_rwlock, flags);
372
373 return ret; 310 return ret;
374} 311}
375 312
@@ -378,14 +315,13 @@ pac_exit:
378 * @pwrdm: struct powerdomain * to add the clockdomain to 315 * @pwrdm: struct powerdomain * to add the clockdomain to
379 * @clkdm: struct clockdomain * to associate with a powerdomain 316 * @clkdm: struct clockdomain * to associate with a powerdomain
380 * 317 *
381 * Dissociate the clockdomain 'clkdm' from the powerdomain 318 * Dissociate the clockdomain @clkdm from the powerdomain
382 * 'pwrdm'. Returns -EINVAL if presented with invalid pointers; 319 * @pwrdm. Returns -EINVAL if presented with invalid pointers; -ENOENT
383 * -ENOENT if the clkdm was not associated with the powerdomain, or 0 320 * if @clkdm was not associated with the powerdomain, or 0 upon
384 * upon success. 321 * success.
385 */ 322 */
386int pwrdm_del_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm) 323int pwrdm_del_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm)
387{ 324{
388 unsigned long flags;
389 int ret = -EINVAL; 325 int ret = -EINVAL;
390 int i; 326 int i;
391 327
@@ -395,8 +331,6 @@ int pwrdm_del_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm)
395 pr_debug("powerdomain: dissociating clockdomain %s from powerdomain " 331 pr_debug("powerdomain: dissociating clockdomain %s from powerdomain "
396 "%s\n", clkdm->name, pwrdm->name); 332 "%s\n", clkdm->name, pwrdm->name);
397 333
398 write_lock_irqsave(&pwrdm_rwlock, flags);
399
400 for (i = 0; i < PWRDM_MAX_CLKDMS; i++) 334 for (i = 0; i < PWRDM_MAX_CLKDMS; i++)
401 if (pwrdm->pwrdm_clkdms[i] == clkdm) 335 if (pwrdm->pwrdm_clkdms[i] == clkdm)
402 break; 336 break;
@@ -413,8 +347,6 @@ int pwrdm_del_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm)
413 ret = 0; 347 ret = 0;
414 348
415pdc_exit: 349pdc_exit:
416 write_unlock_irqrestore(&pwrdm_rwlock, flags);
417
418 return ret; 350 return ret;
419} 351}
420 352
@@ -423,259 +355,34 @@ pdc_exit:
423 * @pwrdm: struct powerdomain * to iterate over 355 * @pwrdm: struct powerdomain * to iterate over
424 * @fn: callback function * 356 * @fn: callback function *
425 * 357 *
426 * Call the supplied function for each clockdomain in the powerdomain 358 * Call the supplied function @fn for each clockdomain in the powerdomain
427 * 'pwrdm'. The callback function can return anything but 0 to bail 359 * @pwrdm. The callback function can return anything but 0 to bail
428 * out early from the iterator. The callback function is called with 360 * out early from the iterator. Returns -EINVAL if presented with
429 * the pwrdm_rwlock held for reading, so no powerdomain structure 361 * invalid pointers; or passes along the last return value of the
430 * manipulation functions should be called from the callback, although 362 * callback function, which should be 0 for success or anything else
431 * hardware powerdomain control functions are fine. Returns -EINVAL 363 * to indicate failure.
432 * if presented with invalid pointers; or passes along the last return
433 * value of the callback function, which should be 0 for success or
434 * anything else to indicate failure.
435 */ 364 */
436int pwrdm_for_each_clkdm(struct powerdomain *pwrdm, 365int pwrdm_for_each_clkdm(struct powerdomain *pwrdm,
437 int (*fn)(struct powerdomain *pwrdm, 366 int (*fn)(struct powerdomain *pwrdm,
438 struct clockdomain *clkdm)) 367 struct clockdomain *clkdm))
439{ 368{
440 unsigned long flags;
441 int ret = 0; 369 int ret = 0;
442 int i; 370 int i;
443 371
444 if (!fn) 372 if (!fn)
445 return -EINVAL; 373 return -EINVAL;
446 374
447 read_lock_irqsave(&pwrdm_rwlock, flags);
448
449 for (i = 0; i < PWRDM_MAX_CLKDMS && !ret; i++) 375 for (i = 0; i < PWRDM_MAX_CLKDMS && !ret; i++)
450 ret = (*fn)(pwrdm, pwrdm->pwrdm_clkdms[i]); 376 ret = (*fn)(pwrdm, pwrdm->pwrdm_clkdms[i]);
451 377
452 read_unlock_irqrestore(&pwrdm_rwlock, flags);
453
454 return ret; 378 return ret;
455} 379}
456 380
457
458/**
459 * pwrdm_add_wkdep - add a wakeup dependency from pwrdm2 to pwrdm1
460 * @pwrdm1: wake this struct powerdomain * up (dependent)
461 * @pwrdm2: when this struct powerdomain * wakes up (source)
462 *
463 * When the powerdomain represented by pwrdm2 wakes up (due to an
464 * interrupt), wake up pwrdm1. Implemented in hardware on the OMAP,
465 * this feature is designed to reduce wakeup latency of the dependent
466 * powerdomain. Returns -EINVAL if presented with invalid powerdomain
467 * pointers, -ENOENT if pwrdm2 cannot wake up pwrdm1 in hardware, or
468 * 0 upon success.
469 */
470int pwrdm_add_wkdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2)
471{
472 struct powerdomain *p;
473
474 if (!pwrdm1)
475 return -EINVAL;
476
477 p = _pwrdm_deps_lookup(pwrdm2, pwrdm1->wkdep_srcs);
478 if (IS_ERR(p)) {
479 pr_debug("powerdomain: hardware cannot set/clear wake up of "
480 "%s when %s wakes up\n", pwrdm1->name, pwrdm2->name);
481 return PTR_ERR(p);
482 }
483
484 pr_debug("powerdomain: hardware will wake up %s when %s wakes up\n",
485 pwrdm1->name, pwrdm2->name);
486
487 prm_set_mod_reg_bits((1 << pwrdm2->dep_bit),
488 pwrdm1->prcm_offs, PM_WKDEP);
489
490 return 0;
491}
492
493/**
494 * pwrdm_del_wkdep - remove a wakeup dependency from pwrdm2 to pwrdm1
495 * @pwrdm1: wake this struct powerdomain * up (dependent)
496 * @pwrdm2: when this struct powerdomain * wakes up (source)
497 *
498 * Remove a wakeup dependency that causes pwrdm1 to wake up when pwrdm2
499 * wakes up. Returns -EINVAL if presented with invalid powerdomain
500 * pointers, -ENOENT if pwrdm2 cannot wake up pwrdm1 in hardware, or
501 * 0 upon success.
502 */
503int pwrdm_del_wkdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2)
504{
505 struct powerdomain *p;
506
507 if (!pwrdm1)
508 return -EINVAL;
509
510 p = _pwrdm_deps_lookup(pwrdm2, pwrdm1->wkdep_srcs);
511 if (IS_ERR(p)) {
512 pr_debug("powerdomain: hardware cannot set/clear wake up of "
513 "%s when %s wakes up\n", pwrdm1->name, pwrdm2->name);
514 return PTR_ERR(p);
515 }
516
517 pr_debug("powerdomain: hardware will no longer wake up %s after %s "
518 "wakes up\n", pwrdm1->name, pwrdm2->name);
519
520 prm_clear_mod_reg_bits((1 << pwrdm2->dep_bit),
521 pwrdm1->prcm_offs, PM_WKDEP);
522
523 return 0;
524}
525
526/**
527 * pwrdm_read_wkdep - read wakeup dependency state from pwrdm2 to pwrdm1
528 * @pwrdm1: wake this struct powerdomain * up (dependent)
529 * @pwrdm2: when this struct powerdomain * wakes up (source)
530 *
531 * Return 1 if a hardware wakeup dependency exists wherein pwrdm1 will be
532 * awoken when pwrdm2 wakes up; 0 if dependency is not set; -EINVAL
533 * if either powerdomain pointer is invalid; or -ENOENT if the hardware
534 * is incapable.
535 *
536 * REVISIT: Currently this function only represents software-controllable
537 * wakeup dependencies. Wakeup dependencies fixed in hardware are not
538 * yet handled here.
539 */
540int pwrdm_read_wkdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2)
541{
542 struct powerdomain *p;
543
544 if (!pwrdm1)
545 return -EINVAL;
546
547 p = _pwrdm_deps_lookup(pwrdm2, pwrdm1->wkdep_srcs);
548 if (IS_ERR(p)) {
549 pr_debug("powerdomain: hardware cannot set/clear wake up of "
550 "%s when %s wakes up\n", pwrdm1->name, pwrdm2->name);
551 return PTR_ERR(p);
552 }
553
554 return prm_read_mod_bits_shift(pwrdm1->prcm_offs, PM_WKDEP,
555 (1 << pwrdm2->dep_bit));
556}
557
558/**
559 * pwrdm_add_sleepdep - add a sleep dependency from pwrdm2 to pwrdm1
560 * @pwrdm1: prevent this struct powerdomain * from sleeping (dependent)
561 * @pwrdm2: when this struct powerdomain * is active (source)
562 *
563 * Prevent pwrdm1 from automatically going inactive (and then to
564 * retention or off) if pwrdm2 is still active. Returns -EINVAL if
565 * presented with invalid powerdomain pointers or called on a machine
566 * that does not support software-configurable hardware sleep dependencies,
567 * -ENOENT if the specified dependency cannot be set in hardware, or
568 * 0 upon success.
569 */
570int pwrdm_add_sleepdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2)
571{
572 struct powerdomain *p;
573
574 if (!cpu_is_omap34xx())
575 return -EINVAL;
576
577 if (!pwrdm1)
578 return -EINVAL;
579
580 p = _pwrdm_deps_lookup(pwrdm2, pwrdm1->sleepdep_srcs);
581 if (IS_ERR(p)) {
582 pr_debug("powerdomain: hardware cannot set/clear sleep "
583 "dependency affecting %s from %s\n", pwrdm1->name,
584 pwrdm2->name);
585 return PTR_ERR(p);
586 }
587
588 pr_debug("powerdomain: will prevent %s from sleeping if %s is active\n",
589 pwrdm1->name, pwrdm2->name);
590
591 cm_set_mod_reg_bits((1 << pwrdm2->dep_bit),
592 pwrdm1->prcm_offs, OMAP3430_CM_SLEEPDEP);
593
594 return 0;
595}
596
597/**
598 * pwrdm_del_sleepdep - remove a sleep dependency from pwrdm2 to pwrdm1
599 * @pwrdm1: prevent this struct powerdomain * from sleeping (dependent)
600 * @pwrdm2: when this struct powerdomain * is active (source)
601 *
602 * Allow pwrdm1 to automatically go inactive (and then to retention or
603 * off), independent of the activity state of pwrdm2. Returns -EINVAL
604 * if presented with invalid powerdomain pointers or called on a machine
605 * that does not support software-configurable hardware sleep dependencies,
606 * -ENOENT if the specified dependency cannot be cleared in hardware, or
607 * 0 upon success.
608 */
609int pwrdm_del_sleepdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2)
610{
611 struct powerdomain *p;
612
613 if (!cpu_is_omap34xx())
614 return -EINVAL;
615
616 if (!pwrdm1)
617 return -EINVAL;
618
619 p = _pwrdm_deps_lookup(pwrdm2, pwrdm1->sleepdep_srcs);
620 if (IS_ERR(p)) {
621 pr_debug("powerdomain: hardware cannot set/clear sleep "
622 "dependency affecting %s from %s\n", pwrdm1->name,
623 pwrdm2->name);
624 return PTR_ERR(p);
625 }
626
627 pr_debug("powerdomain: will no longer prevent %s from sleeping if "
628 "%s is active\n", pwrdm1->name, pwrdm2->name);
629
630 cm_clear_mod_reg_bits((1 << pwrdm2->dep_bit),
631 pwrdm1->prcm_offs, OMAP3430_CM_SLEEPDEP);
632
633 return 0;
634}
635
636/**
637 * pwrdm_read_sleepdep - read sleep dependency state from pwrdm2 to pwrdm1
638 * @pwrdm1: prevent this struct powerdomain * from sleeping (dependent)
639 * @pwrdm2: when this struct powerdomain * is active (source)
640 *
641 * Return 1 if a hardware sleep dependency exists wherein pwrdm1 will
642 * not be allowed to automatically go inactive if pwrdm2 is active;
643 * 0 if pwrdm1's automatic power state inactivity transition is independent
644 * of pwrdm2's; -EINVAL if either powerdomain pointer is invalid or called
645 * on a machine that does not support software-configurable hardware sleep
646 * dependencies; or -ENOENT if the hardware is incapable.
647 *
648 * REVISIT: Currently this function only represents software-controllable
649 * sleep dependencies. Sleep dependencies fixed in hardware are not
650 * yet handled here.
651 */
652int pwrdm_read_sleepdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2)
653{
654 struct powerdomain *p;
655
656 if (!cpu_is_omap34xx())
657 return -EINVAL;
658
659 if (!pwrdm1)
660 return -EINVAL;
661
662 p = _pwrdm_deps_lookup(pwrdm2, pwrdm1->sleepdep_srcs);
663 if (IS_ERR(p)) {
664 pr_debug("powerdomain: hardware cannot set/clear sleep "
665 "dependency affecting %s from %s\n", pwrdm1->name,
666 pwrdm2->name);
667 return PTR_ERR(p);
668 }
669
670 return prm_read_mod_bits_shift(pwrdm1->prcm_offs, OMAP3430_CM_SLEEPDEP,
671 (1 << pwrdm2->dep_bit));
672}
673
674/** 381/**
675 * pwrdm_get_mem_bank_count - get number of memory banks in this powerdomain 382 * pwrdm_get_mem_bank_count - get number of memory banks in this powerdomain
676 * @pwrdm: struct powerdomain * 383 * @pwrdm: struct powerdomain *
677 * 384 *
678 * Return the number of controllable memory banks in powerdomain pwrdm, 385 * Return the number of controllable memory banks in powerdomain @pwrdm,
679 * starting with 1. Returns -EINVAL if the powerdomain pointer is null. 386 * starting with 1. Returns -EINVAL if the powerdomain pointer is null.
680 */ 387 */
681int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm) 388int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm)
@@ -691,7 +398,7 @@ int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm)
691 * @pwrdm: struct powerdomain * to set 398 * @pwrdm: struct powerdomain * to set
692 * @pwrst: one of the PWRDM_POWER_* macros 399 * @pwrst: one of the PWRDM_POWER_* macros
693 * 400 *
694 * Set the powerdomain pwrdm's next power state to pwrst. The powerdomain 401 * Set the powerdomain @pwrdm's next power state to @pwrst. The powerdomain
695 * may not enter this state immediately if the preconditions for this state 402 * may not enter this state immediately if the preconditions for this state
696 * have not been satisfied. Returns -EINVAL if the powerdomain pointer is 403 * have not been satisfied. Returns -EINVAL if the powerdomain pointer is
697 * null or if the power state is invalid for the powerdomin, or returns 0 404 * null or if the power state is invalid for the powerdomin, or returns 0
@@ -710,7 +417,7 @@ int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst)
710 417
711 prm_rmw_mod_reg_bits(OMAP_POWERSTATE_MASK, 418 prm_rmw_mod_reg_bits(OMAP_POWERSTATE_MASK,
712 (pwrst << OMAP_POWERSTATE_SHIFT), 419 (pwrst << OMAP_POWERSTATE_SHIFT),
713 pwrdm->prcm_offs, PM_PWSTCTRL); 420 pwrdm->prcm_offs, pwrstctrl_reg_offs);
714 421
715 return 0; 422 return 0;
716} 423}
@@ -719,7 +426,7 @@ int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst)
719 * pwrdm_read_next_pwrst - get next powerdomain power state 426 * pwrdm_read_next_pwrst - get next powerdomain power state
720 * @pwrdm: struct powerdomain * to get power state 427 * @pwrdm: struct powerdomain * to get power state
721 * 428 *
722 * Return the powerdomain pwrdm's next power state. Returns -EINVAL 429 * Return the powerdomain @pwrdm's next power state. Returns -EINVAL
723 * if the powerdomain pointer is null or returns the next power state 430 * if the powerdomain pointer is null or returns the next power state
724 * upon success. 431 * upon success.
725 */ 432 */
@@ -728,15 +435,15 @@ int pwrdm_read_next_pwrst(struct powerdomain *pwrdm)
728 if (!pwrdm) 435 if (!pwrdm)
729 return -EINVAL; 436 return -EINVAL;
730 437
731 return prm_read_mod_bits_shift(pwrdm->prcm_offs, PM_PWSTCTRL, 438 return prm_read_mod_bits_shift(pwrdm->prcm_offs,
732 OMAP_POWERSTATE_MASK); 439 pwrstctrl_reg_offs, OMAP_POWERSTATE_MASK);
733} 440}
734 441
735/** 442/**
736 * pwrdm_read_pwrst - get current powerdomain power state 443 * pwrdm_read_pwrst - get current powerdomain power state
737 * @pwrdm: struct powerdomain * to get power state 444 * @pwrdm: struct powerdomain * to get power state
738 * 445 *
739 * Return the powerdomain pwrdm's current power state. Returns -EINVAL 446 * Return the powerdomain @pwrdm's current power state. Returns -EINVAL
740 * if the powerdomain pointer is null or returns the current power state 447 * if the powerdomain pointer is null or returns the current power state
741 * upon success. 448 * upon success.
742 */ 449 */
@@ -745,15 +452,15 @@ int pwrdm_read_pwrst(struct powerdomain *pwrdm)
745 if (!pwrdm) 452 if (!pwrdm)
746 return -EINVAL; 453 return -EINVAL;
747 454
748 return prm_read_mod_bits_shift(pwrdm->prcm_offs, PM_PWSTST, 455 return prm_read_mod_bits_shift(pwrdm->prcm_offs,
749 OMAP_POWERSTATEST_MASK); 456 pwrstst_reg_offs, OMAP_POWERSTATEST_MASK);
750} 457}
751 458
752/** 459/**
753 * pwrdm_read_prev_pwrst - get previous powerdomain power state 460 * pwrdm_read_prev_pwrst - get previous powerdomain power state
754 * @pwrdm: struct powerdomain * to get previous power state 461 * @pwrdm: struct powerdomain * to get previous power state
755 * 462 *
756 * Return the powerdomain pwrdm's previous power state. Returns -EINVAL 463 * Return the powerdomain @pwrdm's previous power state. Returns -EINVAL
757 * if the powerdomain pointer is null or returns the previous power state 464 * if the powerdomain pointer is null or returns the previous power state
758 * upon success. 465 * upon success.
759 */ 466 */
@@ -771,11 +478,11 @@ int pwrdm_read_prev_pwrst(struct powerdomain *pwrdm)
771 * @pwrdm: struct powerdomain * to set 478 * @pwrdm: struct powerdomain * to set
772 * @pwrst: one of the PWRDM_POWER_* macros 479 * @pwrst: one of the PWRDM_POWER_* macros
773 * 480 *
774 * Set the next power state that the logic portion of the powerdomain 481 * Set the next power state @pwrst that the logic portion of the
775 * pwrdm will enter when the powerdomain enters retention. This will 482 * powerdomain @pwrdm will enter when the powerdomain enters retention.
776 * be either RETENTION or OFF, if supported. Returns -EINVAL if the 483 * This will be either RETENTION or OFF, if supported. Returns
777 * powerdomain pointer is null or the target power state is not not 484 * -EINVAL if the powerdomain pointer is null or the target power
778 * supported, or returns 0 upon success. 485 * state is not not supported, or returns 0 upon success.
779 */ 486 */
780int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst) 487int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst)
781{ 488{
@@ -796,7 +503,7 @@ int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst)
796 */ 503 */
797 prm_rmw_mod_reg_bits(OMAP3430_LOGICL1CACHERETSTATE, 504 prm_rmw_mod_reg_bits(OMAP3430_LOGICL1CACHERETSTATE,
798 (pwrst << __ffs(OMAP3430_LOGICL1CACHERETSTATE)), 505 (pwrst << __ffs(OMAP3430_LOGICL1CACHERETSTATE)),
799 pwrdm->prcm_offs, PM_PWSTCTRL); 506 pwrdm->prcm_offs, pwrstctrl_reg_offs);
800 507
801 return 0; 508 return 0;
802} 509}
@@ -807,13 +514,14 @@ int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst)
807 * @bank: memory bank number to set (0-3) 514 * @bank: memory bank number to set (0-3)
808 * @pwrst: one of the PWRDM_POWER_* macros 515 * @pwrst: one of the PWRDM_POWER_* macros
809 * 516 *
810 * Set the next power state that memory bank x of the powerdomain 517 * Set the next power state @pwrst that memory bank @bank of the
811 * pwrdm will enter when the powerdomain enters the ON state. Bank 518 * powerdomain @pwrdm will enter when the powerdomain enters the ON
812 * will be a number from 0 to 3, and represents different types of 519 * state. @bank will be a number from 0 to 3, and represents different
813 * memory, depending on the powerdomain. Returns -EINVAL if the 520 * types of memory, depending on the powerdomain. Returns -EINVAL if
814 * powerdomain pointer is null or the target power state is not not 521 * the powerdomain pointer is null or the target power state is not
815 * supported for this memory bank, -EEXIST if the target memory bank 522 * not supported for this memory bank, -EEXIST if the target memory
816 * does not exist or is not controllable, or returns 0 upon success. 523 * bank does not exist or is not controllable, or returns 0 upon
524 * success.
817 */ 525 */
818int pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, u8 pwrst) 526int pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, u8 pwrst)
819{ 527{
@@ -839,16 +547,19 @@ int pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, u8 pwrst)
839 */ 547 */
840 switch (bank) { 548 switch (bank) {
841 case 0: 549 case 0:
842 m = OMAP3430_SHAREDL1CACHEFLATONSTATE_MASK; 550 m = OMAP_MEM0_ONSTATE_MASK;
843 break; 551 break;
844 case 1: 552 case 1:
845 m = OMAP3430_L1FLATMEMONSTATE_MASK; 553 m = OMAP_MEM1_ONSTATE_MASK;
846 break; 554 break;
847 case 2: 555 case 2:
848 m = OMAP3430_SHAREDL2CACHEFLATONSTATE_MASK; 556 m = OMAP_MEM2_ONSTATE_MASK;
849 break; 557 break;
850 case 3: 558 case 3:
851 m = OMAP3430_L2FLATMEMONSTATE_MASK; 559 m = OMAP_MEM3_ONSTATE_MASK;
560 break;
561 case 4:
562 m = OMAP_MEM4_ONSTATE_MASK;
852 break; 563 break;
853 default: 564 default:
854 WARN_ON(1); /* should never happen */ 565 WARN_ON(1); /* should never happen */
@@ -856,7 +567,7 @@ int pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, u8 pwrst)
856 } 567 }
857 568
858 prm_rmw_mod_reg_bits(m, (pwrst << __ffs(m)), 569 prm_rmw_mod_reg_bits(m, (pwrst << __ffs(m)),
859 pwrdm->prcm_offs, PM_PWSTCTRL); 570 pwrdm->prcm_offs, pwrstctrl_reg_offs);
860 571
861 return 0; 572 return 0;
862} 573}
@@ -867,14 +578,15 @@ int pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, u8 pwrst)
867 * @bank: memory bank number to set (0-3) 578 * @bank: memory bank number to set (0-3)
868 * @pwrst: one of the PWRDM_POWER_* macros 579 * @pwrst: one of the PWRDM_POWER_* macros
869 * 580 *
870 * Set the next power state that memory bank x of the powerdomain 581 * Set the next power state @pwrst that memory bank @bank of the
871 * pwrdm will enter when the powerdomain enters the RETENTION state. 582 * powerdomain @pwrdm will enter when the powerdomain enters the
872 * Bank will be a number from 0 to 3, and represents different types 583 * RETENTION state. Bank will be a number from 0 to 3, and represents
873 * of memory, depending on the powerdomain. pwrst will be either 584 * different types of memory, depending on the powerdomain. @pwrst
874 * RETENTION or OFF, if supported. Returns -EINVAL if the powerdomain 585 * will be either RETENTION or OFF, if supported. Returns -EINVAL if
875 * pointer is null or the target power state is not not supported for 586 * the powerdomain pointer is null or the target power state is not
876 * this memory bank, -EEXIST if the target memory bank does not exist 587 * not supported for this memory bank, -EEXIST if the target memory
877 * or is not controllable, or returns 0 upon success. 588 * bank does not exist or is not controllable, or returns 0 upon
589 * success.
878 */ 590 */
879int pwrdm_set_mem_retst(struct powerdomain *pwrdm, u8 bank, u8 pwrst) 591int pwrdm_set_mem_retst(struct powerdomain *pwrdm, u8 bank, u8 pwrst)
880{ 592{
@@ -900,16 +612,19 @@ int pwrdm_set_mem_retst(struct powerdomain *pwrdm, u8 bank, u8 pwrst)
900 */ 612 */
901 switch (bank) { 613 switch (bank) {
902 case 0: 614 case 0:
903 m = OMAP3430_SHAREDL1CACHEFLATRETSTATE; 615 m = OMAP_MEM0_RETSTATE_MASK;
904 break; 616 break;
905 case 1: 617 case 1:
906 m = OMAP3430_L1FLATMEMRETSTATE; 618 m = OMAP_MEM1_RETSTATE_MASK;
907 break; 619 break;
908 case 2: 620 case 2:
909 m = OMAP3430_SHAREDL2CACHEFLATRETSTATE; 621 m = OMAP_MEM2_RETSTATE_MASK;
910 break; 622 break;
911 case 3: 623 case 3:
912 m = OMAP3430_L2FLATMEMRETSTATE; 624 m = OMAP_MEM3_RETSTATE_MASK;
625 break;
626 case 4:
627 m = OMAP_MEM4_RETSTATE_MASK;
913 break; 628 break;
914 default: 629 default:
915 WARN_ON(1); /* should never happen */ 630 WARN_ON(1); /* should never happen */
@@ -917,7 +632,7 @@ int pwrdm_set_mem_retst(struct powerdomain *pwrdm, u8 bank, u8 pwrst)
917 } 632 }
918 633
919 prm_rmw_mod_reg_bits(m, (pwrst << __ffs(m)), pwrdm->prcm_offs, 634 prm_rmw_mod_reg_bits(m, (pwrst << __ffs(m)), pwrdm->prcm_offs,
920 PM_PWSTCTRL); 635 pwrstctrl_reg_offs);
921 636
922 return 0; 637 return 0;
923} 638}
@@ -926,27 +641,27 @@ int pwrdm_set_mem_retst(struct powerdomain *pwrdm, u8 bank, u8 pwrst)
926 * pwrdm_read_logic_pwrst - get current powerdomain logic retention power state 641 * pwrdm_read_logic_pwrst - get current powerdomain logic retention power state
927 * @pwrdm: struct powerdomain * to get current logic retention power state 642 * @pwrdm: struct powerdomain * to get current logic retention power state
928 * 643 *
929 * Return the current power state that the logic portion of 644 * Return the power state that the logic portion of powerdomain @pwrdm
930 * powerdomain pwrdm will enter 645 * will enter when the powerdomain enters retention. Returns -EINVAL
931 * Returns -EINVAL if the powerdomain pointer is null or returns the 646 * if the powerdomain pointer is null or returns the logic retention
932 * current logic retention power state upon success. 647 * power state upon success.
933 */ 648 */
934int pwrdm_read_logic_pwrst(struct powerdomain *pwrdm) 649int pwrdm_read_logic_pwrst(struct powerdomain *pwrdm)
935{ 650{
936 if (!pwrdm) 651 if (!pwrdm)
937 return -EINVAL; 652 return -EINVAL;
938 653
939 return prm_read_mod_bits_shift(pwrdm->prcm_offs, PM_PWSTST, 654 return prm_read_mod_bits_shift(pwrdm->prcm_offs,
940 OMAP3430_LOGICSTATEST); 655 pwrstst_reg_offs, OMAP3430_LOGICSTATEST);
941} 656}
942 657
943/** 658/**
944 * pwrdm_read_prev_logic_pwrst - get previous powerdomain logic power state 659 * pwrdm_read_prev_logic_pwrst - get previous powerdomain logic power state
945 * @pwrdm: struct powerdomain * to get previous logic power state 660 * @pwrdm: struct powerdomain * to get previous logic power state
946 * 661 *
947 * Return the powerdomain pwrdm's logic power state. Returns -EINVAL 662 * Return the powerdomain @pwrdm's previous logic power state. Returns
948 * if the powerdomain pointer is null or returns the previous logic 663 * -EINVAL if the powerdomain pointer is null or returns the previous
949 * power state upon success. 664 * logic power state upon success.
950 */ 665 */
951int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm) 666int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm)
952{ 667{
@@ -968,8 +683,8 @@ int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm)
968 * @pwrdm: struct powerdomain * to get current memory bank power state 683 * @pwrdm: struct powerdomain * to get current memory bank power state
969 * @bank: memory bank number (0-3) 684 * @bank: memory bank number (0-3)
970 * 685 *
971 * Return the powerdomain pwrdm's current memory power state for bank 686 * Return the powerdomain @pwrdm's current memory power state for bank
972 * x. Returns -EINVAL if the powerdomain pointer is null, -EEXIST if 687 * @bank. Returns -EINVAL if the powerdomain pointer is null, -EEXIST if
973 * the target memory bank does not exist or is not controllable, or 688 * the target memory bank does not exist or is not controllable, or
974 * returns the current memory power state upon success. 689 * returns the current memory power state upon success.
975 */ 690 */
@@ -994,23 +709,27 @@ int pwrdm_read_mem_pwrst(struct powerdomain *pwrdm, u8 bank)
994 */ 709 */
995 switch (bank) { 710 switch (bank) {
996 case 0: 711 case 0:
997 m = OMAP3430_SHAREDL1CACHEFLATSTATEST_MASK; 712 m = OMAP_MEM0_STATEST_MASK;
998 break; 713 break;
999 case 1: 714 case 1:
1000 m = OMAP3430_L1FLATMEMSTATEST_MASK; 715 m = OMAP_MEM1_STATEST_MASK;
1001 break; 716 break;
1002 case 2: 717 case 2:
1003 m = OMAP3430_SHAREDL2CACHEFLATSTATEST_MASK; 718 m = OMAP_MEM2_STATEST_MASK;
1004 break; 719 break;
1005 case 3: 720 case 3:
1006 m = OMAP3430_L2FLATMEMSTATEST_MASK; 721 m = OMAP_MEM3_STATEST_MASK;
722 break;
723 case 4:
724 m = OMAP_MEM4_STATEST_MASK;
1007 break; 725 break;
1008 default: 726 default:
1009 WARN_ON(1); /* should never happen */ 727 WARN_ON(1); /* should never happen */
1010 return -EEXIST; 728 return -EEXIST;
1011 } 729 }
1012 730
1013 return prm_read_mod_bits_shift(pwrdm->prcm_offs, PM_PWSTST, m); 731 return prm_read_mod_bits_shift(pwrdm->prcm_offs,
732 pwrstst_reg_offs, m);
1014} 733}
1015 734
1016/** 735/**
@@ -1018,10 +737,11 @@ int pwrdm_read_mem_pwrst(struct powerdomain *pwrdm, u8 bank)
1018 * @pwrdm: struct powerdomain * to get previous memory bank power state 737 * @pwrdm: struct powerdomain * to get previous memory bank power state
1019 * @bank: memory bank number (0-3) 738 * @bank: memory bank number (0-3)
1020 * 739 *
1021 * Return the powerdomain pwrdm's previous memory power state for bank 740 * Return the powerdomain @pwrdm's previous memory power state for
1022 * x. Returns -EINVAL if the powerdomain pointer is null, -EEXIST if 741 * bank @bank. Returns -EINVAL if the powerdomain pointer is null,
1023 * the target memory bank does not exist or is not controllable, or 742 * -EEXIST if the target memory bank does not exist or is not
1024 * returns the previous memory power state upon success. 743 * controllable, or returns the previous memory power state upon
744 * success.
1025 */ 745 */
1026int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank) 746int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank)
1027{ 747{
@@ -1068,10 +788,10 @@ int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank)
1068 * pwrdm_clear_all_prev_pwrst - clear previous powerstate register for a pwrdm 788 * pwrdm_clear_all_prev_pwrst - clear previous powerstate register for a pwrdm
1069 * @pwrdm: struct powerdomain * to clear 789 * @pwrdm: struct powerdomain * to clear
1070 * 790 *
1071 * Clear the powerdomain's previous power state register. Clears the 791 * Clear the powerdomain's previous power state register @pwrdm.
1072 * entire register, including logic and memory bank previous power states. 792 * Clears the entire register, including logic and memory bank
1073 * Returns -EINVAL if the powerdomain pointer is null, or returns 0 upon 793 * previous power states. Returns -EINVAL if the powerdomain pointer
1074 * success. 794 * is null, or returns 0 upon success.
1075 */ 795 */
1076int pwrdm_clear_all_prev_pwrst(struct powerdomain *pwrdm) 796int pwrdm_clear_all_prev_pwrst(struct powerdomain *pwrdm)
1077{ 797{
@@ -1096,11 +816,11 @@ int pwrdm_clear_all_prev_pwrst(struct powerdomain *pwrdm)
1096 * @pwrdm: struct powerdomain * 816 * @pwrdm: struct powerdomain *
1097 * 817 *
1098 * Enable automatic context save-and-restore upon power state change 818 * Enable automatic context save-and-restore upon power state change
1099 * for some devices in a powerdomain. Warning: this only affects a 819 * for some devices in the powerdomain @pwrdm. Warning: this only
1100 * subset of devices in a powerdomain; check the TRM closely. Returns 820 * affects a subset of devices in a powerdomain; check the TRM
1101 * -EINVAL if the powerdomain pointer is null or if the powerdomain 821 * closely. Returns -EINVAL if the powerdomain pointer is null or if
1102 * does not support automatic save-and-restore, or returns 0 upon 822 * the powerdomain does not support automatic save-and-restore, or
1103 * success. 823 * returns 0 upon success.
1104 */ 824 */
1105int pwrdm_enable_hdwr_sar(struct powerdomain *pwrdm) 825int pwrdm_enable_hdwr_sar(struct powerdomain *pwrdm)
1106{ 826{
@@ -1114,7 +834,7 @@ int pwrdm_enable_hdwr_sar(struct powerdomain *pwrdm)
1114 pwrdm->name); 834 pwrdm->name);
1115 835
1116 prm_rmw_mod_reg_bits(0, 1 << OMAP3430ES2_SAVEANDRESTORE_SHIFT, 836 prm_rmw_mod_reg_bits(0, 1 << OMAP3430ES2_SAVEANDRESTORE_SHIFT,
1117 pwrdm->prcm_offs, PM_PWSTCTRL); 837 pwrdm->prcm_offs, pwrstctrl_reg_offs);
1118 838
1119 return 0; 839 return 0;
1120} 840}
@@ -1124,11 +844,11 @@ int pwrdm_enable_hdwr_sar(struct powerdomain *pwrdm)
1124 * @pwrdm: struct powerdomain * 844 * @pwrdm: struct powerdomain *
1125 * 845 *
1126 * Disable automatic context save-and-restore upon power state change 846 * Disable automatic context save-and-restore upon power state change
1127 * for some devices in a powerdomain. Warning: this only affects a 847 * for some devices in the powerdomain @pwrdm. Warning: this only
1128 * subset of devices in a powerdomain; check the TRM closely. Returns 848 * affects a subset of devices in a powerdomain; check the TRM
1129 * -EINVAL if the powerdomain pointer is null or if the powerdomain 849 * closely. Returns -EINVAL if the powerdomain pointer is null or if
1130 * does not support automatic save-and-restore, or returns 0 upon 850 * the powerdomain does not support automatic save-and-restore, or
1131 * success. 851 * returns 0 upon success.
1132 */ 852 */
1133int pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm) 853int pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm)
1134{ 854{
@@ -1142,7 +862,7 @@ int pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm)
1142 pwrdm->name); 862 pwrdm->name);
1143 863
1144 prm_rmw_mod_reg_bits(1 << OMAP3430ES2_SAVEANDRESTORE_SHIFT, 0, 864 prm_rmw_mod_reg_bits(1 << OMAP3430ES2_SAVEANDRESTORE_SHIFT, 0,
1145 pwrdm->prcm_offs, PM_PWSTCTRL); 865 pwrdm->prcm_offs, pwrstctrl_reg_offs);
1146 866
1147 return 0; 867 return 0;
1148} 868}
@@ -1151,7 +871,7 @@ int pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm)
1151 * pwrdm_has_hdwr_sar - test whether powerdomain supports hardware SAR 871 * pwrdm_has_hdwr_sar - test whether powerdomain supports hardware SAR
1152 * @pwrdm: struct powerdomain * 872 * @pwrdm: struct powerdomain *
1153 * 873 *
1154 * Returns 1 if powerdomain 'pwrdm' supports hardware save-and-restore 874 * Returns 1 if powerdomain @pwrdm supports hardware save-and-restore
1155 * for some devices, or 0 if it does not. 875 * for some devices, or 0 if it does not.
1156 */ 876 */
1157bool pwrdm_has_hdwr_sar(struct powerdomain *pwrdm) 877bool pwrdm_has_hdwr_sar(struct powerdomain *pwrdm)
@@ -1163,7 +883,7 @@ bool pwrdm_has_hdwr_sar(struct powerdomain *pwrdm)
1163 * pwrdm_wait_transition - wait for powerdomain power transition to finish 883 * pwrdm_wait_transition - wait for powerdomain power transition to finish
1164 * @pwrdm: struct powerdomain * to wait for 884 * @pwrdm: struct powerdomain * to wait for
1165 * 885 *
1166 * If the powerdomain pwrdm is in the process of a state transition, 886 * If the powerdomain @pwrdm is in the process of a state transition,
1167 * spin until it completes the power transition, or until an iteration 887 * spin until it completes the power transition, or until an iteration
1168 * bailout value is reached. Returns -EINVAL if the powerdomain 888 * bailout value is reached. Returns -EINVAL if the powerdomain
1169 * pointer is null, -EAGAIN if the bailout value was reached, or 889 * pointer is null, -EAGAIN if the bailout value was reached, or
@@ -1183,10 +903,10 @@ int pwrdm_wait_transition(struct powerdomain *pwrdm)
1183 */ 903 */
1184 904
1185 /* XXX Is this udelay() value meaningful? */ 905 /* XXX Is this udelay() value meaningful? */
1186 while ((prm_read_mod_reg(pwrdm->prcm_offs, PM_PWSTST) & 906 while ((prm_read_mod_reg(pwrdm->prcm_offs, pwrstst_reg_offs) &
1187 OMAP_INTRANSITION) && 907 OMAP_INTRANSITION) &&
1188 (c++ < PWRDM_TRANSITION_BAILOUT)) 908 (c++ < PWRDM_TRANSITION_BAILOUT))
1189 udelay(1); 909 udelay(1);
1190 910
1191 if (c > PWRDM_TRANSITION_BAILOUT) { 911 if (c > PWRDM_TRANSITION_BAILOUT) {
1192 printk(KERN_ERR "powerdomain: waited too long for " 912 printk(KERN_ERR "powerdomain: waited too long for "
@@ -1213,12 +933,6 @@ int pwrdm_clkdm_state_switch(struct clockdomain *clkdm)
1213 933
1214 return -EINVAL; 934 return -EINVAL;
1215} 935}
1216int pwrdm_clk_state_switch(struct clk *clk)
1217{
1218 if (clk != NULL && clk->clkdm != NULL)
1219 return pwrdm_clkdm_state_switch(clk->clkdm);
1220 return -EINVAL;
1221}
1222 936
1223int pwrdm_pre_transition(void) 937int pwrdm_pre_transition(void)
1224{ 938{
diff --git a/arch/arm/mach-omap2/powerdomains.h b/arch/arm/mach-omap2/powerdomains.h
index 057b2e3e2c35..105cbcaefd3b 100644
--- a/arch/arm/mach-omap2/powerdomains.h
+++ b/arch/arm/mach-omap2/powerdomains.h
@@ -1,8 +1,8 @@
1/* 1/*
2 * OMAP2/3 common powerdomain definitions 2 * OMAP2/3 common powerdomain definitions
3 * 3 *
4 * Copyright (C) 2007-8 Texas Instruments, Inc. 4 * Copyright (C) 2007-2008 Texas Instruments, Inc.
5 * Copyright (C) 2007-8 Nokia Corporation 5 * Copyright (C) 2007-2009 Nokia Corporation
6 * 6 *
7 * Written by Paul Walmsley 7 * Written by Paul Walmsley
8 * Debugging and integration fixes by Jouni Högander 8 * Debugging and integration fixes by Jouni Högander
@@ -12,26 +12,21 @@
12 * published by the Free Software Foundation. 12 * published by the Free Software Foundation.
13 */ 13 */
14 14
15/*
16 * To Do List
17 * -> Move the Sleep/Wakeup dependencies from Power Domain framework to
18 * Clock Domain Framework
19 */
20
15#ifndef ARCH_ARM_MACH_OMAP2_POWERDOMAINS 21#ifndef ARCH_ARM_MACH_OMAP2_POWERDOMAINS
16#define ARCH_ARM_MACH_OMAP2_POWERDOMAINS 22#define ARCH_ARM_MACH_OMAP2_POWERDOMAINS
17 23
18/* 24/*
19 * This file contains all of the powerdomains that have some element 25 * This file contains all of the powerdomains that have some element
20 * of software control for the OMAP24xx and OMAP34XX chips. 26 * of software control for the OMAP24xx and OMAP34xx chips.
21 *
22 * A few notes:
23 * 27 *
24 * This is not an exhaustive listing of powerdomains on the chips; only 28 * This is not an exhaustive listing of powerdomains on the chips; only
25 * powerdomains that can be controlled in software. 29 * powerdomains that can be controlled in software.
26 *
27 * A useful validation rule for struct powerdomain:
28 * Any powerdomain referenced by a wkdep_srcs or sleepdep_srcs array
29 * must have a dep_bit assigned. So wkdep_srcs/sleepdep_srcs are really
30 * just software-controllable dependencies. Non-software-controllable
31 * dependencies do exist, but they are not encoded below (yet).
32 *
33 * 24xx does not support programmable sleep dependencies (SLEEPDEP)
34 *
35 */ 30 */
36 31
37/* 32/*
@@ -41,26 +36,17 @@
41 * 36 *
42 * On the 2420, this is a 'C55 DSP called, simply, the DSP. Its 37 * On the 2420, this is a 'C55 DSP called, simply, the DSP. Its
43 * powerdomain is called the "DSP power domain." On the 2430, the 38 * powerdomain is called the "DSP power domain." On the 2430, the
44 * on-board DSP is a 'C64 DSP, now called the IVA2 or IVA2.1. Its 39 * on-board DSP is a 'C64 DSP, now called (along with its hardware
45 * powerdomain is still called the "DSP power domain." On the 3430, 40 * accelerators) the IVA2 or IVA2.1. Its powerdomain is still called
46 * the DSP is a 'C64 DSP like the 2430, also known as the IVA2; but 41 * the "DSP power domain." On the 3430, the DSP is a 'C64 DSP like the
47 * its powerdomain is now called the "IVA2 power domain." 42 * 2430, also known as the IVA2; but its powerdomain is now called the
43 * "IVA2 power domain."
48 * 44 *
49 * The 2420 also has something called the IVA, which is a separate ARM 45 * The 2420 also has something called the IVA, which is a separate ARM
50 * core, and has nothing to do with the DSP/IVA2. 46 * core, and has nothing to do with the DSP/IVA2.
51 * 47 *
52 * Ideally the DSP/IVA2 could just be the same powerdomain, but the PRCM 48 * Ideally the DSP/IVA2 could just be the same powerdomain, but the PRCM
53 * address offset is different between the C55 and C64 DSPs. 49 * address offset is different between the C55 and C64 DSPs.
54 *
55 * The overly-specific dep_bit names are due to a bit name collision
56 * with CM_FCLKEN_{DSP,IVA2}. The DSP/IVA2 PM_WKDEP and CM_SLEEPDEP shift
57 * value are the same for all powerdomains: 2
58 */
59
60/*
61 * XXX should dep_bit be a mask, so we can test to see if it is 0 as a
62 * sanity check?
63 * XXX encode hardware fixed wakeup dependencies -- esp. for 3430 CORE
64 */ 50 */
65 51
66#include <plat/powerdomain.h> 52#include <plat/powerdomain.h>
@@ -68,69 +54,23 @@
68#include "prcm-common.h" 54#include "prcm-common.h"
69#include "prm.h" 55#include "prm.h"
70#include "cm.h" 56#include "cm.h"
71
72/* OMAP2/3-common powerdomains and wakeup dependencies */
73
74/*
75 * 2420/2430 PM_WKDEP_GFX: CORE, MPU, WKUP
76 * 3430ES1 PM_WKDEP_GFX: adds IVA2, removes CORE
77 * 3430ES2 PM_WKDEP_SGX: adds IVA2, removes CORE
78 */
79static struct pwrdm_dep gfx_sgx_wkdeps[] = {
80 {
81 .pwrdm_name = "core_pwrdm",
82 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
83 },
84 {
85 .pwrdm_name = "iva2_pwrdm",
86 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
87 },
88 {
89 .pwrdm_name = "mpu_pwrdm",
90 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX |
91 CHIP_IS_OMAP3430)
92 },
93 {
94 .pwrdm_name = "wkup_pwrdm",
95 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX |
96 CHIP_IS_OMAP3430)
97 },
98 { NULL },
99};
100
101/*
102 * 3430: CM_SLEEPDEP_CAM: MPU
103 * 3430ES1: CM_SLEEPDEP_GFX: MPU
104 * 3430ES2: CM_SLEEPDEP_SGX: MPU
105 */
106static struct pwrdm_dep cam_gfx_sleepdeps[] = {
107 {
108 .pwrdm_name = "mpu_pwrdm",
109 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
110 },
111 { NULL },
112};
113
114
115#include "powerdomains24xx.h" 57#include "powerdomains24xx.h"
116#include "powerdomains34xx.h" 58#include "powerdomains34xx.h"
59#include "powerdomains44xx.h"
117 60
61/* OMAP2/3-common powerdomains */
118 62
119/* 63#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
120 * OMAP2/3 common powerdomains
121 */
122 64
123/* 65/*
124 * The GFX powerdomain is not present on 3430ES2, but currently we do not 66 * The GFX powerdomain is not present on 3430ES2, but currently we do not
125 * have a macro to filter it out at compile-time. 67 * have a macro to filter it out at compile-time.
126 */ 68 */
127static struct powerdomain gfx_pwrdm = { 69static struct powerdomain gfx_omap2_pwrdm = {
128 .name = "gfx_pwrdm", 70 .name = "gfx_pwrdm",
129 .prcm_offs = GFX_MOD, 71 .prcm_offs = GFX_MOD,
130 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | 72 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX |
131 CHIP_IS_OMAP3430ES1), 73 CHIP_IS_OMAP3430ES1),
132 .wkdep_srcs = gfx_sgx_wkdeps,
133 .sleepdep_srcs = cam_gfx_sleepdeps,
134 .pwrsts = PWRSTS_OFF_RET_ON, 74 .pwrsts = PWRSTS_OFF_RET_ON,
135 .pwrsts_logic_ret = PWRDM_POWER_RET, 75 .pwrsts_logic_ret = PWRDM_POWER_RET,
136 .banks = 1, 76 .banks = 1,
@@ -142,22 +82,24 @@ static struct powerdomain gfx_pwrdm = {
142 }, 82 },
143}; 83};
144 84
145static struct powerdomain wkup_pwrdm = { 85static struct powerdomain wkup_omap2_pwrdm = {
146 .name = "wkup_pwrdm", 86 .name = "wkup_pwrdm",
147 .prcm_offs = WKUP_MOD, 87 .prcm_offs = WKUP_MOD,
148 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430), 88 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
149 .dep_bit = OMAP_EN_WKUP_SHIFT,
150}; 89};
151 90
91#endif
152 92
153 93
154/* As powerdomains are added or removed above, this list must also be changed */ 94/* As powerdomains are added or removed above, this list must also be changed */
155static struct powerdomain *powerdomains_omap[] __initdata = { 95static struct powerdomain *powerdomains_omap[] __initdata = {
156 96
157 &gfx_pwrdm, 97#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
158 &wkup_pwrdm, 98 &wkup_omap2_pwrdm,
99 &gfx_omap2_pwrdm,
100#endif
159 101
160#ifdef CONFIG_ARCH_OMAP24XX 102#ifdef CONFIG_ARCH_OMAP2
161 &dsp_pwrdm, 103 &dsp_pwrdm,
162 &mpu_24xx_pwrdm, 104 &mpu_24xx_pwrdm,
163 &core_24xx_pwrdm, 105 &core_24xx_pwrdm,
@@ -167,12 +109,12 @@ static struct powerdomain *powerdomains_omap[] __initdata = {
167 &mdm_pwrdm, 109 &mdm_pwrdm,
168#endif 110#endif
169 111
170#ifdef CONFIG_ARCH_OMAP34XX 112#ifdef CONFIG_ARCH_OMAP3
171 &iva2_pwrdm, 113 &iva2_pwrdm,
172 &mpu_34xx_pwrdm, 114 &mpu_3xxx_pwrdm,
173 &neon_pwrdm, 115 &neon_pwrdm,
174 &core_34xx_pre_es3_1_pwrdm, 116 &core_3xxx_pre_es3_1_pwrdm,
175 &core_34xx_es3_1_pwrdm, 117 &core_3xxx_es3_1_pwrdm,
176 &cam_pwrdm, 118 &cam_pwrdm,
177 &dss_pwrdm, 119 &dss_pwrdm,
178 &per_pwrdm, 120 &per_pwrdm,
@@ -186,6 +128,24 @@ static struct powerdomain *powerdomains_omap[] __initdata = {
186 &dpll5_pwrdm, 128 &dpll5_pwrdm,
187#endif 129#endif
188 130
131#ifdef CONFIG_ARCH_OMAP4
132 &core_44xx_pwrdm,
133 &gfx_44xx_pwrdm,
134 &abe_44xx_pwrdm,
135 &dss_44xx_pwrdm,
136 &tesla_44xx_pwrdm,
137 &wkup_44xx_pwrdm,
138 &cpu0_44xx_pwrdm,
139 &cpu1_44xx_pwrdm,
140 &emu_44xx_pwrdm,
141 &mpu_44xx_pwrdm,
142 &ivahd_44xx_pwrdm,
143 &cam_44xx_pwrdm,
144 &l3init_44xx_pwrdm,
145 &l4per_44xx_pwrdm,
146 &always_on_core_44xx_pwrdm,
147 &cefuse_44xx_pwrdm,
148#endif
189 NULL 149 NULL
190}; 150};
191 151
diff --git a/arch/arm/mach-omap2/powerdomains24xx.h b/arch/arm/mach-omap2/powerdomains24xx.h
index bd249a495aa9..652a01b729e9 100644
--- a/arch/arm/mach-omap2/powerdomains24xx.h
+++ b/arch/arm/mach-omap2/powerdomains24xx.h
@@ -2,7 +2,7 @@
2 * OMAP24XX powerdomain definitions 2 * OMAP24XX powerdomain definitions
3 * 3 *
4 * Copyright (C) 2007-2008 Texas Instruments, Inc. 4 * Copyright (C) 2007-2008 Texas Instruments, Inc.
5 * Copyright (C) 2007-2008 Nokia Corporation 5 * Copyright (C) 2007-2009 Nokia Corporation
6 * 6 *
7 * Written by Paul Walmsley 7 * Written by Paul Walmsley
8 * Debugging and integration fixes by Jouni Högander 8 * Debugging and integration fixes by Jouni Högander
@@ -32,90 +32,12 @@
32 32
33#ifdef CONFIG_ARCH_OMAP24XX 33#ifdef CONFIG_ARCH_OMAP24XX
34 34
35
36/* Wakeup dependency source arrays */
37
38/*
39 * 2420/2430 PM_WKDEP_DSP: CORE, MPU, WKUP
40 * 2430 PM_WKDEP_MDM: same as above
41 */
42static struct pwrdm_dep dsp_mdm_24xx_wkdeps[] = {
43 {
44 .pwrdm_name = "core_pwrdm",
45 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
46 },
47 {
48 .pwrdm_name = "mpu_pwrdm",
49 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
50 },
51 {
52 .pwrdm_name = "wkup_pwrdm",
53 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
54 },
55 { NULL },
56};
57
58/*
59 * 2420 PM_WKDEP_MPU: CORE, DSP, WKUP
60 * 2430 adds MDM
61 */
62static struct pwrdm_dep mpu_24xx_wkdeps[] = {
63 {
64 .pwrdm_name = "core_pwrdm",
65 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
66 },
67 {
68 .pwrdm_name = "dsp_pwrdm",
69 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
70 },
71 {
72 .pwrdm_name = "wkup_pwrdm",
73 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
74 },
75 {
76 .pwrdm_name = "mdm_pwrdm",
77 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430)
78 },
79 { NULL },
80};
81
82/*
83 * 2420 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP
84 * 2430 adds MDM
85 */
86static struct pwrdm_dep core_24xx_wkdeps[] = {
87 {
88 .pwrdm_name = "dsp_pwrdm",
89 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
90 },
91 {
92 .pwrdm_name = "gfx_pwrdm",
93 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
94 },
95 {
96 .pwrdm_name = "mpu_pwrdm",
97 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
98 },
99 {
100 .pwrdm_name = "wkup_pwrdm",
101 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
102 },
103 {
104 .pwrdm_name = "mdm_pwrdm",
105 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430)
106 },
107 { NULL },
108};
109
110
111/* Powerdomains */ 35/* Powerdomains */
112 36
113static struct powerdomain dsp_pwrdm = { 37static struct powerdomain dsp_pwrdm = {
114 .name = "dsp_pwrdm", 38 .name = "dsp_pwrdm",
115 .prcm_offs = OMAP24XX_DSP_MOD, 39 .prcm_offs = OMAP24XX_DSP_MOD,
116 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 40 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX),
117 .dep_bit = OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT,
118 .wkdep_srcs = dsp_mdm_24xx_wkdeps,
119 .pwrsts = PWRSTS_OFF_RET_ON, 41 .pwrsts = PWRSTS_OFF_RET_ON,
120 .pwrsts_logic_ret = PWRDM_POWER_RET, 42 .pwrsts_logic_ret = PWRDM_POWER_RET,
121 .banks = 1, 43 .banks = 1,
@@ -131,8 +53,6 @@ static struct powerdomain mpu_24xx_pwrdm = {
131 .name = "mpu_pwrdm", 53 .name = "mpu_pwrdm",
132 .prcm_offs = MPU_MOD, 54 .prcm_offs = MPU_MOD,
133 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 55 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX),
134 .dep_bit = OMAP24XX_EN_MPU_SHIFT,
135 .wkdep_srcs = mpu_24xx_wkdeps,
136 .pwrsts = PWRSTS_OFF_RET_ON, 56 .pwrsts = PWRSTS_OFF_RET_ON,
137 .pwrsts_logic_ret = PWRSTS_OFF_RET, 57 .pwrsts_logic_ret = PWRSTS_OFF_RET,
138 .banks = 1, 58 .banks = 1,
@@ -148,9 +68,7 @@ static struct powerdomain core_24xx_pwrdm = {
148 .name = "core_pwrdm", 68 .name = "core_pwrdm",
149 .prcm_offs = CORE_MOD, 69 .prcm_offs = CORE_MOD,
150 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 70 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX),
151 .wkdep_srcs = core_24xx_wkdeps,
152 .pwrsts = PWRSTS_OFF_RET_ON, 71 .pwrsts = PWRSTS_OFF_RET_ON,
153 .dep_bit = OMAP24XX_EN_CORE_SHIFT,
154 .banks = 3, 72 .banks = 3,
155 .pwrsts_mem_ret = { 73 .pwrsts_mem_ret = {
156 [0] = PWRSTS_OFF_RET, /* MEM1RETSTATE */ 74 [0] = PWRSTS_OFF_RET, /* MEM1RETSTATE */
@@ -176,13 +94,10 @@ static struct powerdomain core_24xx_pwrdm = {
176 94
177/* XXX 2430 KILLDOMAINWKUP bit? No current users apparently */ 95/* XXX 2430 KILLDOMAINWKUP bit? No current users apparently */
178 96
179/* Another case of bit name collisions between several registers: EN_MDM */
180static struct powerdomain mdm_pwrdm = { 97static struct powerdomain mdm_pwrdm = {
181 .name = "mdm_pwrdm", 98 .name = "mdm_pwrdm",
182 .prcm_offs = OMAP2430_MDM_MOD, 99 .prcm_offs = OMAP2430_MDM_MOD,
183 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), 100 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
184 .dep_bit = OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT,
185 .wkdep_srcs = dsp_mdm_24xx_wkdeps,
186 .pwrsts = PWRSTS_OFF_RET_ON, 101 .pwrsts = PWRSTS_OFF_RET_ON,
187 .pwrsts_logic_ret = PWRDM_POWER_RET, 102 .pwrsts_logic_ret = PWRDM_POWER_RET,
188 .banks = 1, 103 .banks = 1,
diff --git a/arch/arm/mach-omap2/powerdomains34xx.h b/arch/arm/mach-omap2/powerdomains34xx.h
index 588f7e07d0ea..186c0132466b 100644
--- a/arch/arm/mach-omap2/powerdomains34xx.h
+++ b/arch/arm/mach-omap2/powerdomains34xx.h
@@ -1,8 +1,8 @@
1/* 1/*
2 * OMAP34XX powerdomain definitions 2 * OMAP3 powerdomain definitions
3 * 3 *
4 * Copyright (C) 2007-2008 Texas Instruments, Inc. 4 * Copyright (C) 2007-2008 Texas Instruments, Inc.
5 * Copyright (C) 2007-2008 Nokia Corporation 5 * Copyright (C) 2007-2010 Nokia Corporation
6 * 6 *
7 * Written by Paul Walmsley 7 * Written by Paul Walmsley
8 * Debugging and integration fixes by Jouni Högander 8 * Debugging and integration fixes by Jouni Högander
@@ -32,128 +32,7 @@
32 * 34XX-specific powerdomains, dependencies 32 * 34XX-specific powerdomains, dependencies
33 */ 33 */
34 34
35#ifdef CONFIG_ARCH_OMAP34XX 35#ifdef CONFIG_ARCH_OMAP3
36
37/*
38 * 3430: PM_WKDEP_{PER,USBHOST}: CORE, IVA2, MPU, WKUP
39 * (USBHOST is ES2 only)
40 */
41static struct pwrdm_dep per_usbhost_wkdeps[] = {
42 {
43 .pwrdm_name = "core_pwrdm",
44 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
45 },
46 {
47 .pwrdm_name = "iva2_pwrdm",
48 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
49 },
50 {
51 .pwrdm_name = "mpu_pwrdm",
52 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
53 },
54 {
55 .pwrdm_name = "wkup_pwrdm",
56 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
57 },
58 { NULL },
59};
60
61/*
62 * 3430 PM_WKDEP_MPU: CORE, IVA2, DSS, PER
63 */
64static struct pwrdm_dep mpu_34xx_wkdeps[] = {
65 {
66 .pwrdm_name = "core_pwrdm",
67 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
68 },
69 {
70 .pwrdm_name = "iva2_pwrdm",
71 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
72 },
73 {
74 .pwrdm_name = "dss_pwrdm",
75 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
76 },
77 {
78 .pwrdm_name = "per_pwrdm",
79 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
80 },
81 { NULL },
82};
83
84/*
85 * 3430 PM_WKDEP_IVA2: CORE, MPU, WKUP, DSS, PER
86 */
87static struct pwrdm_dep iva2_wkdeps[] = {
88 {
89 .pwrdm_name = "core_pwrdm",
90 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
91 },
92 {
93 .pwrdm_name = "mpu_pwrdm",
94 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
95 },
96 {
97 .pwrdm_name = "wkup_pwrdm",
98 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
99 },
100 {
101 .pwrdm_name = "dss_pwrdm",
102 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
103 },
104 {
105 .pwrdm_name = "per_pwrdm",
106 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
107 },
108 { NULL },
109};
110
111
112/* 3430 PM_WKDEP_{CAM,DSS}: IVA2, MPU, WKUP */
113static struct pwrdm_dep cam_dss_wkdeps[] = {
114 {
115 .pwrdm_name = "iva2_pwrdm",
116 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
117 },
118 {
119 .pwrdm_name = "mpu_pwrdm",
120 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
121 },
122 {
123 .pwrdm_name = "wkup_pwrdm",
124 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
125 },
126 { NULL },
127};
128
129/* 3430: PM_WKDEP_NEON: MPU */
130static struct pwrdm_dep neon_wkdeps[] = {
131 {
132 .pwrdm_name = "mpu_pwrdm",
133 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
134 },
135 { NULL },
136};
137
138
139/* Sleep dependency source arrays for 34xx-specific pwrdms - 34XX only */
140
141/*
142 * 3430: CM_SLEEPDEP_{DSS,PER}: MPU, IVA
143 * 3430ES2: CM_SLEEPDEP_USBHOST: MPU, IVA
144 */
145static struct pwrdm_dep dss_per_usbhost_sleepdeps[] = {
146 {
147 .pwrdm_name = "mpu_pwrdm",
148 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
149 },
150 {
151 .pwrdm_name = "iva2_pwrdm",
152 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
153 },
154 { NULL },
155};
156
157 36
158/* 37/*
159 * Powerdomains 38 * Powerdomains
@@ -163,8 +42,6 @@ static struct powerdomain iva2_pwrdm = {
163 .name = "iva2_pwrdm", 42 .name = "iva2_pwrdm",
164 .prcm_offs = OMAP3430_IVA2_MOD, 43 .prcm_offs = OMAP3430_IVA2_MOD,
165 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 44 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
166 .dep_bit = OMAP3430_PM_WKDEP_MPU_EN_IVA2_SHIFT,
167 .wkdep_srcs = iva2_wkdeps,
168 .pwrsts = PWRSTS_OFF_RET_ON, 45 .pwrsts = PWRSTS_OFF_RET_ON,
169 .pwrsts_logic_ret = PWRSTS_OFF_RET, 46 .pwrsts_logic_ret = PWRSTS_OFF_RET,
170 .banks = 4, 47 .banks = 4,
@@ -182,12 +59,10 @@ static struct powerdomain iva2_pwrdm = {
182 }, 59 },
183}; 60};
184 61
185static struct powerdomain mpu_34xx_pwrdm = { 62static struct powerdomain mpu_3xxx_pwrdm = {
186 .name = "mpu_pwrdm", 63 .name = "mpu_pwrdm",
187 .prcm_offs = MPU_MOD, 64 .prcm_offs = MPU_MOD,
188 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 65 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
189 .dep_bit = OMAP3430_EN_MPU_SHIFT,
190 .wkdep_srcs = mpu_34xx_wkdeps,
191 .pwrsts = PWRSTS_OFF_RET_ON, 66 .pwrsts = PWRSTS_OFF_RET_ON,
192 .pwrsts_logic_ret = PWRSTS_OFF_RET, 67 .pwrsts_logic_ret = PWRSTS_OFF_RET,
193 .flags = PWRDM_HAS_MPU_QUIRK, 68 .flags = PWRDM_HAS_MPU_QUIRK,
@@ -200,15 +75,13 @@ static struct powerdomain mpu_34xx_pwrdm = {
200 }, 75 },
201}; 76};
202 77
203/* No wkdeps or sleepdeps for 34xx core apparently */ 78static struct powerdomain core_3xxx_pre_es3_1_pwrdm = {
204static struct powerdomain core_34xx_pre_es3_1_pwrdm = {
205 .name = "core_pwrdm", 79 .name = "core_pwrdm",
206 .prcm_offs = CORE_MOD, 80 .prcm_offs = CORE_MOD,
207 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1 | 81 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1 |
208 CHIP_IS_OMAP3430ES2 | 82 CHIP_IS_OMAP3430ES2 |
209 CHIP_IS_OMAP3430ES3_0), 83 CHIP_IS_OMAP3430ES3_0),
210 .pwrsts = PWRSTS_OFF_RET_ON, 84 .pwrsts = PWRSTS_OFF_RET_ON,
211 .dep_bit = OMAP3430_EN_CORE_SHIFT,
212 .banks = 2, 85 .banks = 2,
213 .pwrsts_mem_ret = { 86 .pwrsts_mem_ret = {
214 [0] = PWRSTS_OFF_RET, /* MEM1RETSTATE */ 87 [0] = PWRSTS_OFF_RET, /* MEM1RETSTATE */
@@ -220,13 +93,11 @@ static struct powerdomain core_34xx_pre_es3_1_pwrdm = {
220 }, 93 },
221}; 94};
222 95
223/* No wkdeps or sleepdeps for 34xx core apparently */ 96static struct powerdomain core_3xxx_es3_1_pwrdm = {
224static struct powerdomain core_34xx_es3_1_pwrdm = {
225 .name = "core_pwrdm", 97 .name = "core_pwrdm",
226 .prcm_offs = CORE_MOD, 98 .prcm_offs = CORE_MOD,
227 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES3_1), 99 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES3_1),
228 .pwrsts = PWRSTS_OFF_RET_ON, 100 .pwrsts = PWRSTS_OFF_RET_ON,
229 .dep_bit = OMAP3430_EN_CORE_SHIFT,
230 .flags = PWRDM_HAS_HDWR_SAR, /* for USBTLL only */ 101 .flags = PWRDM_HAS_HDWR_SAR, /* for USBTLL only */
231 .banks = 2, 102 .banks = 2,
232 .pwrsts_mem_ret = { 103 .pwrsts_mem_ret = {
@@ -239,14 +110,10 @@ static struct powerdomain core_34xx_es3_1_pwrdm = {
239 }, 110 },
240}; 111};
241 112
242/* Another case of bit name collisions between several registers: EN_DSS */
243static struct powerdomain dss_pwrdm = { 113static struct powerdomain dss_pwrdm = {
244 .name = "dss_pwrdm", 114 .name = "dss_pwrdm",
245 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 115 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
246 .prcm_offs = OMAP3430_DSS_MOD, 116 .prcm_offs = OMAP3430_DSS_MOD,
247 .dep_bit = OMAP3430_PM_WKDEP_MPU_EN_DSS_SHIFT,
248 .wkdep_srcs = cam_dss_wkdeps,
249 .sleepdep_srcs = dss_per_usbhost_sleepdeps,
250 .pwrsts = PWRSTS_OFF_RET_ON, 117 .pwrsts = PWRSTS_OFF_RET_ON,
251 .pwrsts_logic_ret = PWRDM_POWER_RET, 118 .pwrsts_logic_ret = PWRDM_POWER_RET,
252 .banks = 1, 119 .banks = 1,
@@ -267,8 +134,6 @@ static struct powerdomain sgx_pwrdm = {
267 .name = "sgx_pwrdm", 134 .name = "sgx_pwrdm",
268 .prcm_offs = OMAP3430ES2_SGX_MOD, 135 .prcm_offs = OMAP3430ES2_SGX_MOD,
269 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2), 136 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
270 .wkdep_srcs = gfx_sgx_wkdeps,
271 .sleepdep_srcs = cam_gfx_sleepdeps,
272 /* XXX This is accurate for 3430 SGX, but what about GFX? */ 137 /* XXX This is accurate for 3430 SGX, but what about GFX? */
273 .pwrsts = PWRSTS_OFF_ON, 138 .pwrsts = PWRSTS_OFF_ON,
274 .pwrsts_logic_ret = PWRDM_POWER_RET, 139 .pwrsts_logic_ret = PWRDM_POWER_RET,
@@ -285,8 +150,6 @@ static struct powerdomain cam_pwrdm = {
285 .name = "cam_pwrdm", 150 .name = "cam_pwrdm",
286 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 151 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
287 .prcm_offs = OMAP3430_CAM_MOD, 152 .prcm_offs = OMAP3430_CAM_MOD,
288 .wkdep_srcs = cam_dss_wkdeps,
289 .sleepdep_srcs = cam_gfx_sleepdeps,
290 .pwrsts = PWRSTS_OFF_RET_ON, 153 .pwrsts = PWRSTS_OFF_RET_ON,
291 .pwrsts_logic_ret = PWRDM_POWER_RET, 154 .pwrsts_logic_ret = PWRDM_POWER_RET,
292 .banks = 1, 155 .banks = 1,
@@ -302,9 +165,6 @@ static struct powerdomain per_pwrdm = {
302 .name = "per_pwrdm", 165 .name = "per_pwrdm",
303 .prcm_offs = OMAP3430_PER_MOD, 166 .prcm_offs = OMAP3430_PER_MOD,
304 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 167 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
305 .dep_bit = OMAP3430_EN_PER_SHIFT,
306 .wkdep_srcs = per_usbhost_wkdeps,
307 .sleepdep_srcs = dss_per_usbhost_sleepdeps,
308 .pwrsts = PWRSTS_OFF_RET_ON, 168 .pwrsts = PWRSTS_OFF_RET_ON,
309 .pwrsts_logic_ret = PWRSTS_OFF_RET, 169 .pwrsts_logic_ret = PWRSTS_OFF_RET,
310 .banks = 1, 170 .banks = 1,
@@ -326,7 +186,6 @@ static struct powerdomain neon_pwrdm = {
326 .name = "neon_pwrdm", 186 .name = "neon_pwrdm",
327 .prcm_offs = OMAP3430_NEON_MOD, 187 .prcm_offs = OMAP3430_NEON_MOD,
328 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), 188 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
329 .wkdep_srcs = neon_wkdeps,
330 .pwrsts = PWRSTS_OFF_RET_ON, 189 .pwrsts = PWRSTS_OFF_RET_ON,
331 .pwrsts_logic_ret = PWRDM_POWER_RET, 190 .pwrsts_logic_ret = PWRDM_POWER_RET,
332}; 191};
@@ -335,8 +194,6 @@ static struct powerdomain usbhost_pwrdm = {
335 .name = "usbhost_pwrdm", 194 .name = "usbhost_pwrdm",
336 .prcm_offs = OMAP3430ES2_USBHOST_MOD, 195 .prcm_offs = OMAP3430ES2_USBHOST_MOD,
337 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2), 196 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
338 .wkdep_srcs = per_usbhost_wkdeps,
339 .sleepdep_srcs = dss_per_usbhost_sleepdeps,
340 .pwrsts = PWRSTS_OFF_RET_ON, 197 .pwrsts = PWRSTS_OFF_RET_ON,
341 .pwrsts_logic_ret = PWRDM_POWER_RET, 198 .pwrsts_logic_ret = PWRDM_POWER_RET,
342 /* 199 /*
@@ -386,7 +243,7 @@ static struct powerdomain dpll5_pwrdm = {
386}; 243};
387 244
388 245
389#endif /* CONFIG_ARCH_OMAP34XX */ 246#endif /* CONFIG_ARCH_OMAP3 */
390 247
391 248
392#endif 249#endif
diff --git a/arch/arm/mach-omap2/powerdomains44xx.h b/arch/arm/mach-omap2/powerdomains44xx.h
new file mode 100644
index 000000000000..c1015147d579
--- /dev/null
+++ b/arch/arm/mach-omap2/powerdomains44xx.h
@@ -0,0 +1,310 @@
1/*
2 * OMAP4 Power domains framework
3 *
4 * Copyright (C) 2009 Texas Instruments, Inc.
5 * Copyright (C) 2009 Nokia Corporation
6 *
7 * Abhijit Pagare (abhijitpagare@ti.com)
8 * Benoit Cousson (b-cousson@ti.com)
9 * Paul Walmsley
10 *
11 * This file is automatically generated from the OMAP hardware databases.
12 * We respectfully ask that any modifications to this file be coordinated
13 * with the public linux-omap@vger.kernel.org mailing list and the
14 * authors above to ensure that the autogeneration scripts are kept
15 * up-to-date with the file contents.
16 *
17 * This program is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License version 2 as
19 * published by the Free Software Foundation.
20 */
21
22#ifndef __ARCH_ARM_MACH_OMAP2_POWERDOMAINS44XX_H
23#define __ARCH_ARM_MACH_OMAP2_POWERDOMAINS44XX_H
24
25#include <plat/powerdomain.h>
26
27#include "prcm-common.h"
28#include "cm.h"
29#include "cm-regbits-44xx.h"
30#include "prm.h"
31#include "prm-regbits-44xx.h"
32
33#if defined(CONFIG_ARCH_OMAP4)
34
35/* core_44xx_pwrdm: CORE power domain */
36static struct powerdomain core_44xx_pwrdm = {
37 .name = "core_pwrdm",
38 .prcm_offs = OMAP4430_PRM_CORE_MOD,
39 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
40 .pwrsts = PWRSTS_RET_ON,
41 .pwrsts_logic_ret = PWRSTS_OFF_RET,
42 .banks = 5,
43 .pwrsts_mem_ret = {
44 [0] = PWRDM_POWER_OFF, /* core_nret_bank */
45 [1] = PWRSTS_OFF_RET, /* core_ocmram */
46 [2] = PWRDM_POWER_RET, /* core_other_bank */
47 [3] = PWRSTS_OFF_RET, /* ducati_l2ram */
48 [4] = PWRSTS_OFF_RET, /* ducati_unicache */
49 },
50 .pwrsts_mem_on = {
51 [0] = PWRDM_POWER_ON, /* core_nret_bank */
52 [1] = PWRSTS_OFF_RET, /* core_ocmram */
53 [2] = PWRDM_POWER_ON, /* core_other_bank */
54 [3] = PWRDM_POWER_ON, /* ducati_l2ram */
55 [4] = PWRDM_POWER_ON, /* ducati_unicache */
56 },
57};
58
59/* gfx_44xx_pwrdm: 3D accelerator power domain */
60static struct powerdomain gfx_44xx_pwrdm = {
61 .name = "gfx_pwrdm",
62 .prcm_offs = OMAP4430_PRM_GFX_MOD,
63 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
64 .pwrsts = PWRSTS_OFF_ON,
65 .banks = 1,
66 .pwrsts_mem_ret = {
67 [0] = PWRDM_POWER_OFF, /* gfx_mem */
68 },
69 .pwrsts_mem_on = {
70 [0] = PWRDM_POWER_ON, /* gfx_mem */
71 },
72};
73
74/* abe_44xx_pwrdm: Audio back end power domain */
75static struct powerdomain abe_44xx_pwrdm = {
76 .name = "abe_pwrdm",
77 .prcm_offs = OMAP4430_PRM_ABE_MOD,
78 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
79 .pwrsts = PWRSTS_OFF_RET_ON,
80 .pwrsts_logic_ret = PWRDM_POWER_OFF,
81 .banks = 2,
82 .pwrsts_mem_ret = {
83 [0] = PWRDM_POWER_RET, /* aessmem */
84 [1] = PWRDM_POWER_OFF, /* periphmem */
85 },
86 .pwrsts_mem_on = {
87 [0] = PWRDM_POWER_ON, /* aessmem */
88 [1] = PWRDM_POWER_ON, /* periphmem */
89 },
90};
91
92/* dss_44xx_pwrdm: Display subsystem power domain */
93static struct powerdomain dss_44xx_pwrdm = {
94 .name = "dss_pwrdm",
95 .prcm_offs = OMAP4430_PRM_DSS_MOD,
96 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
97 .pwrsts = PWRSTS_OFF_RET_ON,
98 .pwrsts_logic_ret = PWRSTS_OFF_RET,
99 .banks = 1,
100 .pwrsts_mem_ret = {
101 [0] = PWRDM_POWER_OFF, /* dss_mem */
102 },
103 .pwrsts_mem_on = {
104 [0] = PWRDM_POWER_ON, /* dss_mem */
105 },
106};
107
108/* tesla_44xx_pwrdm: Tesla processor power domain */
109static struct powerdomain tesla_44xx_pwrdm = {
110 .name = "tesla_pwrdm",
111 .prcm_offs = OMAP4430_PRM_TESLA_MOD,
112 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
113 .pwrsts = PWRSTS_OFF_RET_ON,
114 .pwrsts_logic_ret = PWRSTS_OFF_RET,
115 .banks = 3,
116 .pwrsts_mem_ret = {
117 [0] = PWRDM_POWER_RET, /* tesla_edma */
118 [1] = PWRSTS_OFF_RET, /* tesla_l1 */
119 [2] = PWRSTS_OFF_RET, /* tesla_l2 */
120 },
121 .pwrsts_mem_on = {
122 [0] = PWRDM_POWER_ON, /* tesla_edma */
123 [1] = PWRDM_POWER_ON, /* tesla_l1 */
124 [2] = PWRDM_POWER_ON, /* tesla_l2 */
125 },
126};
127
128/* wkup_44xx_pwrdm: Wake-up power domain */
129static struct powerdomain wkup_44xx_pwrdm = {
130 .name = "wkup_pwrdm",
131 .prcm_offs = OMAP4430_PRM_WKUP_MOD,
132 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
133 .pwrsts = PWRDM_POWER_ON,
134 .banks = 1,
135 .pwrsts_mem_ret = {
136 [0] = PWRDM_POWER_OFF, /* wkup_bank */
137 },
138 .pwrsts_mem_on = {
139 [0] = PWRDM_POWER_ON, /* wkup_bank */
140 },
141};
142
143/* cpu0_44xx_pwrdm: MPU0 processor and Neon coprocessor power domain */
144static struct powerdomain cpu0_44xx_pwrdm = {
145 .name = "cpu0_pwrdm",
146 .prcm_offs = OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD,
147 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
148 .pwrsts = PWRSTS_OFF_RET_ON,
149 .pwrsts_logic_ret = PWRSTS_OFF_RET,
150 .banks = 1,
151 .pwrsts_mem_ret = {
152 [0] = PWRSTS_OFF_RET, /* cpu0_l1 */
153 },
154 .pwrsts_mem_on = {
155 [0] = PWRDM_POWER_ON, /* cpu0_l1 */
156 },
157};
158
159/* cpu1_44xx_pwrdm: MPU1 processor and Neon coprocessor power domain */
160static struct powerdomain cpu1_44xx_pwrdm = {
161 .name = "cpu1_pwrdm",
162 .prcm_offs = OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD,
163 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
164 .pwrsts = PWRSTS_OFF_RET_ON,
165 .pwrsts_logic_ret = PWRSTS_OFF_RET,
166 .banks = 1,
167 .pwrsts_mem_ret = {
168 [0] = PWRSTS_OFF_RET, /* cpu1_l1 */
169 },
170 .pwrsts_mem_on = {
171 [0] = PWRDM_POWER_ON, /* cpu1_l1 */
172 },
173};
174
175/* emu_44xx_pwrdm: Emulation power domain */
176static struct powerdomain emu_44xx_pwrdm = {
177 .name = "emu_pwrdm",
178 .prcm_offs = OMAP4430_PRM_EMU_MOD,
179 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
180 .pwrsts = PWRSTS_OFF_ON,
181 .banks = 1,
182 .pwrsts_mem_ret = {
183 [0] = PWRDM_POWER_OFF, /* emu_bank */
184 },
185 .pwrsts_mem_on = {
186 [0] = PWRDM_POWER_ON, /* emu_bank */
187 },
188};
189
190/* mpu_44xx_pwrdm: Modena processor and the Neon coprocessor power domain */
191static struct powerdomain mpu_44xx_pwrdm = {
192 .name = "mpu_pwrdm",
193 .prcm_offs = OMAP4430_PRM_MPU_MOD,
194 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
195 .pwrsts = PWRSTS_OFF_RET_ON,
196 .pwrsts_logic_ret = PWRSTS_OFF_RET,
197 .banks = 3,
198 .pwrsts_mem_ret = {
199 [0] = PWRSTS_OFF_RET, /* mpu_l1 */
200 [1] = PWRSTS_OFF_RET, /* mpu_l2 */
201 [2] = PWRDM_POWER_RET, /* mpu_ram */
202 },
203 .pwrsts_mem_on = {
204 [0] = PWRDM_POWER_ON, /* mpu_l1 */
205 [1] = PWRDM_POWER_ON, /* mpu_l2 */
206 [2] = PWRDM_POWER_ON, /* mpu_ram */
207 },
208};
209
210/* ivahd_44xx_pwrdm: IVA-HD power domain */
211static struct powerdomain ivahd_44xx_pwrdm = {
212 .name = "ivahd_pwrdm",
213 .prcm_offs = OMAP4430_PRM_IVAHD_MOD,
214 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
215 .pwrsts = PWRSTS_OFF_RET_ON,
216 .pwrsts_logic_ret = PWRDM_POWER_OFF,
217 .banks = 4,
218 .pwrsts_mem_ret = {
219 [0] = PWRDM_POWER_OFF, /* hwa_mem */
220 [1] = PWRSTS_OFF_RET, /* sl2_mem */
221 [2] = PWRSTS_OFF_RET, /* tcm1_mem */
222 [3] = PWRSTS_OFF_RET, /* tcm2_mem */
223 },
224 .pwrsts_mem_on = {
225 [0] = PWRDM_POWER_ON, /* hwa_mem */
226 [1] = PWRDM_POWER_ON, /* sl2_mem */
227 [2] = PWRDM_POWER_ON, /* tcm1_mem */
228 [3] = PWRDM_POWER_ON, /* tcm2_mem */
229 },
230};
231
232/* cam_44xx_pwrdm: Camera subsystem power domain */
233static struct powerdomain cam_44xx_pwrdm = {
234 .name = "cam_pwrdm",
235 .prcm_offs = OMAP4430_PRM_CAM_MOD,
236 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
237 .pwrsts = PWRSTS_OFF_ON,
238 .banks = 1,
239 .pwrsts_mem_ret = {
240 [0] = PWRDM_POWER_OFF, /* cam_mem */
241 },
242 .pwrsts_mem_on = {
243 [0] = PWRDM_POWER_ON, /* cam_mem */
244 },
245};
246
247/* l3init_44xx_pwrdm: L3 initators pheripherals power domain */
248static struct powerdomain l3init_44xx_pwrdm = {
249 .name = "l3init_pwrdm",
250 .prcm_offs = OMAP4430_PRM_L3INIT_MOD,
251 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
252 .pwrsts = PWRSTS_OFF_RET_ON,
253 .pwrsts_logic_ret = PWRSTS_OFF_RET,
254 .banks = 1,
255 .pwrsts_mem_ret = {
256 [0] = PWRDM_POWER_OFF, /* l3init_bank1 */
257 },
258 .pwrsts_mem_on = {
259 [0] = PWRDM_POWER_ON, /* l3init_bank1 */
260 },
261};
262
263/* l4per_44xx_pwrdm: Target peripherals power domain */
264static struct powerdomain l4per_44xx_pwrdm = {
265 .name = "l4per_pwrdm",
266 .prcm_offs = OMAP4430_PRM_L4PER_MOD,
267 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
268 .pwrsts = PWRSTS_OFF_RET_ON,
269 .pwrsts_logic_ret = PWRSTS_OFF_RET,
270 .banks = 2,
271 .pwrsts_mem_ret = {
272 [0] = PWRDM_POWER_OFF, /* nonretained_bank */
273 [1] = PWRDM_POWER_RET, /* retained_bank */
274 },
275 .pwrsts_mem_on = {
276 [0] = PWRDM_POWER_ON, /* nonretained_bank */
277 [1] = PWRDM_POWER_ON, /* retained_bank */
278 },
279};
280
281/*
282 * always_on_core_44xx_pwrdm: Always ON logic that sits in VDD_CORE voltage
283 * domain
284 */
285static struct powerdomain always_on_core_44xx_pwrdm = {
286 .name = "always_on_core_pwrdm",
287 .prcm_offs = OMAP4430_PRM_ALWAYS_ON_MOD,
288 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
289 .pwrsts = PWRDM_POWER_ON,
290};
291
292/* cefuse_44xx_pwrdm: Customer efuse controller power domain */
293static struct powerdomain cefuse_44xx_pwrdm = {
294 .name = "cefuse_pwrdm",
295 .prcm_offs = OMAP4430_PRM_CEFUSE_MOD,
296 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
297 .pwrsts = PWRSTS_OFF_ON,
298};
299
300/*
301 * The following power domains are not under SW control
302 *
303 * always_on_iva
304 * always_on_mpu
305 * stdefuse
306 */
307
308#endif
309
310#endif
diff --git a/arch/arm/mach-omap2/prcm-common.h b/arch/arm/mach-omap2/prcm-common.h
index 61ac2a418bd0..90f603d434c6 100644
--- a/arch/arm/mach-omap2/prcm-common.h
+++ b/arch/arm/mach-omap2/prcm-common.h
@@ -119,6 +119,15 @@
119#define OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD 0x0400 119#define OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD 0x0400
120#define OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD 0x0800 120#define OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD 0x0800
121 121
122/* Base Addresses for the OMAP4 */
123
124#define OMAP4430_CM1_BASE 0x4a004000
125#define OMAP4430_CM2_BASE 0x4a008000
126#define OMAP4430_PRM_BASE 0x4a306000
127#define OMAP4430_SCRM_BASE 0x4a30a000
128#define OMAP4430_CHIRONSS_BASE 0x48243000
129
130
122/* 24XX register bits shared between CM & PRM registers */ 131/* 24XX register bits shared between CM & PRM registers */
123 132
124/* CM_FCLKEN1_CORE, CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */ 133/* CM_FCLKEN1_CORE, CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */
diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
index cf466ea1dffc..e8e121a41d6d 100644
--- a/arch/arm/mach-omap2/prcm.c
+++ b/arch/arm/mach-omap2/prcm.c
@@ -11,6 +11,7 @@
11 * Rajendra Nayak <rnayak@ti.com> 11 * Rajendra Nayak <rnayak@ti.com>
12 * 12 *
13 * Some pieces of code Copyright (C) 2005 Texas Instruments, Inc. 13 * Some pieces of code Copyright (C) 2005 Texas Instruments, Inc.
14 * Upgraded with OMAP4 support by Abhijit Pagare <abhijitpagare@ti.com>
14 * 15 *
15 * This program is free software; you can redistribute it and/or modify 16 * This program is free software; you can redistribute it and/or modify
16 * it under the terms of the GNU General Public License version 2 as 17 * it under the terms of the GNU General Public License version 2 as
@@ -28,6 +29,7 @@
28#include <plat/control.h> 29#include <plat/control.h>
29 30
30#include "clock.h" 31#include "clock.h"
32#include "clock2xxx.h"
31#include "cm.h" 33#include "cm.h"
32#include "prm.h" 34#include "prm.h"
33#include "prm-regbits-24xx.h" 35#include "prm-regbits-24xx.h"
@@ -121,7 +123,10 @@ struct omap3_prcm_regs prcm_context;
121u32 omap_prcm_get_reset_sources(void) 123u32 omap_prcm_get_reset_sources(void)
122{ 124{
123 /* XXX This presumably needs modification for 34XX */ 125 /* XXX This presumably needs modification for 34XX */
124 return prm_read_mod_reg(WKUP_MOD, RM_RSTST) & 0x7f; 126 if (cpu_is_omap24xx() | cpu_is_omap34xx())
127 return prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTST) & 0x7f;
128 if (cpu_is_omap44xx())
129 return prm_read_mod_reg(WKUP_MOD, OMAP4_RM_RSTST) & 0x7f;
125} 130}
126EXPORT_SYMBOL(omap_prcm_get_reset_sources); 131EXPORT_SYMBOL(omap_prcm_get_reset_sources);
127 132
@@ -129,11 +134,12 @@ EXPORT_SYMBOL(omap_prcm_get_reset_sources);
129void omap_prcm_arch_reset(char mode) 134void omap_prcm_arch_reset(char mode)
130{ 135{
131 s16 prcm_offs; 136 s16 prcm_offs;
132 omap2_clk_prepare_for_reboot();
133 137
134 if (cpu_is_omap24xx()) 138 if (cpu_is_omap24xx()) {
139 omap2xxx_clk_prepare_for_reboot();
140
135 prcm_offs = WKUP_MOD; 141 prcm_offs = WKUP_MOD;
136 else if (cpu_is_omap34xx()) { 142 } else if (cpu_is_omap34xx()) {
137 u32 l; 143 u32 l;
138 144
139 prcm_offs = OMAP3430_GR_MOD; 145 prcm_offs = OMAP3430_GR_MOD;
@@ -144,10 +150,17 @@ void omap_prcm_arch_reset(char mode)
144 * cf. OMAP34xx TRM, Initialization / Software Booting 150 * cf. OMAP34xx TRM, Initialization / Software Booting
145 * Configuration. */ 151 * Configuration. */
146 omap_writel(l, OMAP343X_SCRATCHPAD + 4); 152 omap_writel(l, OMAP343X_SCRATCHPAD + 4);
147 } else 153 } else if (cpu_is_omap44xx())
154 prcm_offs = OMAP4430_PRM_DEVICE_MOD;
155 else
148 WARN_ON(1); 156 WARN_ON(1);
149 157
150 prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs, RM_RSTCTRL); 158 if (cpu_is_omap24xx() | cpu_is_omap34xx())
159 prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs,
160 OMAP2_RM_RSTCTRL);
161 if (cpu_is_omap44xx())
162 prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs,
163 OMAP4_RM_RSTCTRL);
151} 164}
152 165
153static inline u32 __omap_prcm_read(void __iomem *base, s16 module, u16 reg) 166static inline u32 __omap_prcm_read(void __iomem *base, s16 module, u16 reg)
@@ -188,6 +201,18 @@ u32 prm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx)
188 return v; 201 return v;
189} 202}
190 203
204/* Read a PRM register, AND it, and shift the result down to bit 0 */
205u32 prm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask)
206{
207 u32 v;
208
209 v = prm_read_mod_reg(domain, idx);
210 v &= mask;
211 v >>= __ffs(mask);
212
213 return v;
214}
215
191/* Read a register in a CM module */ 216/* Read a register in a CM module */
192u32 cm_read_mod_reg(s16 module, u16 idx) 217u32 cm_read_mod_reg(s16 module, u16 idx)
193{ 218{
@@ -280,7 +305,7 @@ void omap3_prcm_save_context(void)
280 prcm_context.emu_cm_clksel = 305 prcm_context.emu_cm_clksel =
281 cm_read_mod_reg(OMAP3430_EMU_MOD, CM_CLKSEL1); 306 cm_read_mod_reg(OMAP3430_EMU_MOD, CM_CLKSEL1);
282 prcm_context.emu_cm_clkstctrl = 307 prcm_context.emu_cm_clkstctrl =
283 cm_read_mod_reg(OMAP3430_EMU_MOD, CM_CLKSTCTRL); 308 cm_read_mod_reg(OMAP3430_EMU_MOD, OMAP2_CM_CLKSTCTRL);
284 prcm_context.pll_cm_autoidle2 = 309 prcm_context.pll_cm_autoidle2 =
285 cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE2); 310 cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE2);
286 prcm_context.pll_cm_clksel4 = 311 prcm_context.pll_cm_clksel4 =
@@ -333,23 +358,25 @@ void omap3_prcm_save_context(void)
333 prcm_context.mpu_cm_autoidle2 = 358 prcm_context.mpu_cm_autoidle2 =
334 cm_read_mod_reg(MPU_MOD, CM_AUTOIDLE2); 359 cm_read_mod_reg(MPU_MOD, CM_AUTOIDLE2);
335 prcm_context.iva2_cm_clkstctrl = 360 prcm_context.iva2_cm_clkstctrl =
336 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_CLKSTCTRL); 361 cm_read_mod_reg(OMAP3430_IVA2_MOD, OMAP2_CM_CLKSTCTRL);
337 prcm_context.mpu_cm_clkstctrl = 362 prcm_context.mpu_cm_clkstctrl =
338 cm_read_mod_reg(MPU_MOD, CM_CLKSTCTRL); 363 cm_read_mod_reg(MPU_MOD, OMAP2_CM_CLKSTCTRL);
339 prcm_context.core_cm_clkstctrl = 364 prcm_context.core_cm_clkstctrl =
340 cm_read_mod_reg(CORE_MOD, CM_CLKSTCTRL); 365 cm_read_mod_reg(CORE_MOD, OMAP2_CM_CLKSTCTRL);
341 prcm_context.sgx_cm_clkstctrl = 366 prcm_context.sgx_cm_clkstctrl =
342 cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_CLKSTCTRL); 367 cm_read_mod_reg(OMAP3430ES2_SGX_MOD,
368 OMAP2_CM_CLKSTCTRL);
343 prcm_context.dss_cm_clkstctrl = 369 prcm_context.dss_cm_clkstctrl =
344 cm_read_mod_reg(OMAP3430_DSS_MOD, CM_CLKSTCTRL); 370 cm_read_mod_reg(OMAP3430_DSS_MOD, OMAP2_CM_CLKSTCTRL);
345 prcm_context.cam_cm_clkstctrl = 371 prcm_context.cam_cm_clkstctrl =
346 cm_read_mod_reg(OMAP3430_CAM_MOD, CM_CLKSTCTRL); 372 cm_read_mod_reg(OMAP3430_CAM_MOD, OMAP2_CM_CLKSTCTRL);
347 prcm_context.per_cm_clkstctrl = 373 prcm_context.per_cm_clkstctrl =
348 cm_read_mod_reg(OMAP3430_PER_MOD, CM_CLKSTCTRL); 374 cm_read_mod_reg(OMAP3430_PER_MOD, OMAP2_CM_CLKSTCTRL);
349 prcm_context.neon_cm_clkstctrl = 375 prcm_context.neon_cm_clkstctrl =
350 cm_read_mod_reg(OMAP3430_NEON_MOD, CM_CLKSTCTRL); 376 cm_read_mod_reg(OMAP3430_NEON_MOD, OMAP2_CM_CLKSTCTRL);
351 prcm_context.usbhost_cm_clkstctrl = 377 prcm_context.usbhost_cm_clkstctrl =
352 cm_read_mod_reg(OMAP3430ES2_USBHOST_MOD, CM_CLKSTCTRL); 378 cm_read_mod_reg(OMAP3430ES2_USBHOST_MOD,
379 OMAP2_CM_CLKSTCTRL);
353 prcm_context.core_cm_autoidle1 = 380 prcm_context.core_cm_autoidle1 =
354 cm_read_mod_reg(CORE_MOD, CM_AUTOIDLE1); 381 cm_read_mod_reg(CORE_MOD, CM_AUTOIDLE1);
355 prcm_context.core_cm_autoidle2 = 382 prcm_context.core_cm_autoidle2 =
@@ -432,7 +459,7 @@ void omap3_prcm_restore_context(void)
432 cm_write_mod_reg(prcm_context.emu_cm_clksel, OMAP3430_EMU_MOD, 459 cm_write_mod_reg(prcm_context.emu_cm_clksel, OMAP3430_EMU_MOD,
433 CM_CLKSEL1); 460 CM_CLKSEL1);
434 cm_write_mod_reg(prcm_context.emu_cm_clkstctrl, OMAP3430_EMU_MOD, 461 cm_write_mod_reg(prcm_context.emu_cm_clkstctrl, OMAP3430_EMU_MOD,
435 CM_CLKSTCTRL); 462 OMAP2_CM_CLKSTCTRL);
436 cm_write_mod_reg(prcm_context.pll_cm_autoidle2, PLL_MOD, 463 cm_write_mod_reg(prcm_context.pll_cm_autoidle2, PLL_MOD,
437 CM_AUTOIDLE2); 464 CM_AUTOIDLE2);
438 cm_write_mod_reg(prcm_context.pll_cm_clksel4, PLL_MOD, 465 cm_write_mod_reg(prcm_context.pll_cm_clksel4, PLL_MOD,
@@ -478,22 +505,23 @@ void omap3_prcm_restore_context(void)
478 CM_AUTOIDLE2); 505 CM_AUTOIDLE2);
479 cm_write_mod_reg(prcm_context.mpu_cm_autoidle2, MPU_MOD, CM_AUTOIDLE2); 506 cm_write_mod_reg(prcm_context.mpu_cm_autoidle2, MPU_MOD, CM_AUTOIDLE2);
480 cm_write_mod_reg(prcm_context.iva2_cm_clkstctrl, OMAP3430_IVA2_MOD, 507 cm_write_mod_reg(prcm_context.iva2_cm_clkstctrl, OMAP3430_IVA2_MOD,
481 CM_CLKSTCTRL); 508 OMAP2_CM_CLKSTCTRL);
482 cm_write_mod_reg(prcm_context.mpu_cm_clkstctrl, MPU_MOD, CM_CLKSTCTRL); 509 cm_write_mod_reg(prcm_context.mpu_cm_clkstctrl, MPU_MOD,
510 OMAP2_CM_CLKSTCTRL);
483 cm_write_mod_reg(prcm_context.core_cm_clkstctrl, CORE_MOD, 511 cm_write_mod_reg(prcm_context.core_cm_clkstctrl, CORE_MOD,
484 CM_CLKSTCTRL); 512 OMAP2_CM_CLKSTCTRL);
485 cm_write_mod_reg(prcm_context.sgx_cm_clkstctrl, OMAP3430ES2_SGX_MOD, 513 cm_write_mod_reg(prcm_context.sgx_cm_clkstctrl, OMAP3430ES2_SGX_MOD,
486 CM_CLKSTCTRL); 514 OMAP2_CM_CLKSTCTRL);
487 cm_write_mod_reg(prcm_context.dss_cm_clkstctrl, OMAP3430_DSS_MOD, 515 cm_write_mod_reg(prcm_context.dss_cm_clkstctrl, OMAP3430_DSS_MOD,
488 CM_CLKSTCTRL); 516 OMAP2_CM_CLKSTCTRL);
489 cm_write_mod_reg(prcm_context.cam_cm_clkstctrl, OMAP3430_CAM_MOD, 517 cm_write_mod_reg(prcm_context.cam_cm_clkstctrl, OMAP3430_CAM_MOD,
490 CM_CLKSTCTRL); 518 OMAP2_CM_CLKSTCTRL);
491 cm_write_mod_reg(prcm_context.per_cm_clkstctrl, OMAP3430_PER_MOD, 519 cm_write_mod_reg(prcm_context.per_cm_clkstctrl, OMAP3430_PER_MOD,
492 CM_CLKSTCTRL); 520 OMAP2_CM_CLKSTCTRL);
493 cm_write_mod_reg(prcm_context.neon_cm_clkstctrl, OMAP3430_NEON_MOD, 521 cm_write_mod_reg(prcm_context.neon_cm_clkstctrl, OMAP3430_NEON_MOD,
494 CM_CLKSTCTRL); 522 OMAP2_CM_CLKSTCTRL);
495 cm_write_mod_reg(prcm_context.usbhost_cm_clkstctrl, 523 cm_write_mod_reg(prcm_context.usbhost_cm_clkstctrl,
496 OMAP3430ES2_USBHOST_MOD, CM_CLKSTCTRL); 524 OMAP3430ES2_USBHOST_MOD, OMAP2_CM_CLKSTCTRL);
497 cm_write_mod_reg(prcm_context.core_cm_autoidle1, CORE_MOD, 525 cm_write_mod_reg(prcm_context.core_cm_autoidle1, CORE_MOD,
498 CM_AUTOIDLE1); 526 CM_AUTOIDLE1);
499 cm_write_mod_reg(prcm_context.core_cm_autoidle2, CORE_MOD, 527 cm_write_mod_reg(prcm_context.core_cm_autoidle2, CORE_MOD,
diff --git a/arch/arm/mach-omap2/prm-regbits-44xx.h b/arch/arm/mach-omap2/prm-regbits-44xx.h
index 301c810fb269..597be4a2b9ff 100644
--- a/arch/arm/mach-omap2/prm-regbits-44xx.h
+++ b/arch/arm/mach-omap2/prm-regbits-44xx.h
@@ -29,412 +29,412 @@
29 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP, 29 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP,
30 * PRM_LDO_SRAM_MPU_SETUP 30 * PRM_LDO_SRAM_MPU_SETUP
31 */ 31 */
32#define OMAP4430_ABBOFF_ACT_EXPORT_SHIFT (1 << 1) 32#define OMAP4430_ABBOFF_ACT_EXPORT_SHIFT 1
33#define OMAP4430_ABBOFF_ACT_EXPORT_MASK BITFIELD(1, 1) 33#define OMAP4430_ABBOFF_ACT_EXPORT_MASK BITFIELD(1, 1)
34 34
35/* 35/*
36 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP, 36 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP,
37 * PRM_LDO_SRAM_MPU_SETUP 37 * PRM_LDO_SRAM_MPU_SETUP
38 */ 38 */
39#define OMAP4430_ABBOFF_SLEEP_EXPORT_SHIFT (1 << 2) 39#define OMAP4430_ABBOFF_SLEEP_EXPORT_SHIFT 2
40#define OMAP4430_ABBOFF_SLEEP_EXPORT_MASK BITFIELD(2, 2) 40#define OMAP4430_ABBOFF_SLEEP_EXPORT_MASK BITFIELD(2, 2)
41 41
42/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 42/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
43#define OMAP4430_ABB_IVA_DONE_EN_SHIFT (1 << 31) 43#define OMAP4430_ABB_IVA_DONE_EN_SHIFT 31
44#define OMAP4430_ABB_IVA_DONE_EN_MASK BITFIELD(31, 31) 44#define OMAP4430_ABB_IVA_DONE_EN_MASK BITFIELD(31, 31)
45 45
46/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 46/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
47#define OMAP4430_ABB_IVA_DONE_ST_SHIFT (1 << 31) 47#define OMAP4430_ABB_IVA_DONE_ST_SHIFT 31
48#define OMAP4430_ABB_IVA_DONE_ST_MASK BITFIELD(31, 31) 48#define OMAP4430_ABB_IVA_DONE_ST_MASK BITFIELD(31, 31)
49 49
50/* Used by PRM_IRQENABLE_MPU_2 */ 50/* Used by PRM_IRQENABLE_MPU_2 */
51#define OMAP4430_ABB_MPU_DONE_EN_SHIFT (1 << 7) 51#define OMAP4430_ABB_MPU_DONE_EN_SHIFT 7
52#define OMAP4430_ABB_MPU_DONE_EN_MASK BITFIELD(7, 7) 52#define OMAP4430_ABB_MPU_DONE_EN_MASK BITFIELD(7, 7)
53 53
54/* Used by PRM_IRQSTATUS_MPU_2 */ 54/* Used by PRM_IRQSTATUS_MPU_2 */
55#define OMAP4430_ABB_MPU_DONE_ST_SHIFT (1 << 7) 55#define OMAP4430_ABB_MPU_DONE_ST_SHIFT 7
56#define OMAP4430_ABB_MPU_DONE_ST_MASK BITFIELD(7, 7) 56#define OMAP4430_ABB_MPU_DONE_ST_MASK BITFIELD(7, 7)
57 57
58/* Used by PRM_LDO_ABB_IVA_SETUP, PRM_LDO_ABB_MPU_SETUP */ 58/* Used by PRM_LDO_ABB_IVA_SETUP, PRM_LDO_ABB_MPU_SETUP */
59#define OMAP4430_ACTIVE_FBB_SEL_SHIFT (1 << 2) 59#define OMAP4430_ACTIVE_FBB_SEL_SHIFT 2
60#define OMAP4430_ACTIVE_FBB_SEL_MASK BITFIELD(2, 2) 60#define OMAP4430_ACTIVE_FBB_SEL_MASK BITFIELD(2, 2)
61 61
62/* Used by PRM_LDO_ABB_IVA_SETUP, PRM_LDO_ABB_MPU_SETUP */ 62/* Used by PRM_LDO_ABB_IVA_SETUP, PRM_LDO_ABB_MPU_SETUP */
63#define OMAP4430_ACTIVE_RBB_SEL_SHIFT (1 << 1) 63#define OMAP4430_ACTIVE_RBB_SEL_SHIFT 1
64#define OMAP4430_ACTIVE_RBB_SEL_MASK BITFIELD(1, 1) 64#define OMAP4430_ACTIVE_RBB_SEL_MASK BITFIELD(1, 1)
65 65
66/* Used by PM_ABE_PWRSTCTRL */ 66/* Used by PM_ABE_PWRSTCTRL */
67#define OMAP4430_AESSMEM_ONSTATE_SHIFT (1 << 16) 67#define OMAP4430_AESSMEM_ONSTATE_SHIFT 16
68#define OMAP4430_AESSMEM_ONSTATE_MASK BITFIELD(16, 17) 68#define OMAP4430_AESSMEM_ONSTATE_MASK BITFIELD(16, 17)
69 69
70/* Used by PM_ABE_PWRSTCTRL */ 70/* Used by PM_ABE_PWRSTCTRL */
71#define OMAP4430_AESSMEM_RETSTATE_SHIFT (1 << 8) 71#define OMAP4430_AESSMEM_RETSTATE_SHIFT 8
72#define OMAP4430_AESSMEM_RETSTATE_MASK BITFIELD(8, 8) 72#define OMAP4430_AESSMEM_RETSTATE_MASK BITFIELD(8, 8)
73 73
74/* Used by PM_ABE_PWRSTST */ 74/* Used by PM_ABE_PWRSTST */
75#define OMAP4430_AESSMEM_STATEST_SHIFT (1 << 4) 75#define OMAP4430_AESSMEM_STATEST_SHIFT 4
76#define OMAP4430_AESSMEM_STATEST_MASK BITFIELD(4, 5) 76#define OMAP4430_AESSMEM_STATEST_MASK BITFIELD(4, 5)
77 77
78/* 78/*
79 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP, 79 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP,
80 * PRM_LDO_SRAM_MPU_SETUP 80 * PRM_LDO_SRAM_MPU_SETUP
81 */ 81 */
82#define OMAP4430_AIPOFF_SHIFT (1 << 8) 82#define OMAP4430_AIPOFF_SHIFT 8
83#define OMAP4430_AIPOFF_MASK BITFIELD(8, 8) 83#define OMAP4430_AIPOFF_MASK BITFIELD(8, 8)
84 84
85/* Used by PRM_VOLTCTRL */ 85/* Used by PRM_VOLTCTRL */
86#define OMAP4430_AUTO_CTRL_VDD_CORE_L_SHIFT (1 << 0) 86#define OMAP4430_AUTO_CTRL_VDD_CORE_L_SHIFT 0
87#define OMAP4430_AUTO_CTRL_VDD_CORE_L_MASK BITFIELD(0, 1) 87#define OMAP4430_AUTO_CTRL_VDD_CORE_L_MASK BITFIELD(0, 1)
88 88
89/* Used by PRM_VOLTCTRL */ 89/* Used by PRM_VOLTCTRL */
90#define OMAP4430_AUTO_CTRL_VDD_IVA_L_SHIFT (1 << 4) 90#define OMAP4430_AUTO_CTRL_VDD_IVA_L_SHIFT 4
91#define OMAP4430_AUTO_CTRL_VDD_IVA_L_MASK BITFIELD(4, 5) 91#define OMAP4430_AUTO_CTRL_VDD_IVA_L_MASK BITFIELD(4, 5)
92 92
93/* Used by PRM_VOLTCTRL */ 93/* Used by PRM_VOLTCTRL */
94#define OMAP4430_AUTO_CTRL_VDD_MPU_L_SHIFT (1 << 2) 94#define OMAP4430_AUTO_CTRL_VDD_MPU_L_SHIFT 2
95#define OMAP4430_AUTO_CTRL_VDD_MPU_L_MASK BITFIELD(2, 3) 95#define OMAP4430_AUTO_CTRL_VDD_MPU_L_MASK BITFIELD(2, 3)
96 96
97/* Used by PM_CAM_PWRSTCTRL */ 97/* Used by PM_CAM_PWRSTCTRL */
98#define OMAP4430_CAM_MEM_ONSTATE_SHIFT (1 << 16) 98#define OMAP4430_CAM_MEM_ONSTATE_SHIFT 16
99#define OMAP4430_CAM_MEM_ONSTATE_MASK BITFIELD(16, 17) 99#define OMAP4430_CAM_MEM_ONSTATE_MASK BITFIELD(16, 17)
100 100
101/* Used by PM_CAM_PWRSTST */ 101/* Used by PM_CAM_PWRSTST */
102#define OMAP4430_CAM_MEM_STATEST_SHIFT (1 << 4) 102#define OMAP4430_CAM_MEM_STATEST_SHIFT 4
103#define OMAP4430_CAM_MEM_STATEST_MASK BITFIELD(4, 5) 103#define OMAP4430_CAM_MEM_STATEST_MASK BITFIELD(4, 5)
104 104
105/* Used by PRM_CLKREQCTRL */ 105/* Used by PRM_CLKREQCTRL */
106#define OMAP4430_CLKREQ_COND_SHIFT (1 << 0) 106#define OMAP4430_CLKREQ_COND_SHIFT 0
107#define OMAP4430_CLKREQ_COND_MASK BITFIELD(0, 2) 107#define OMAP4430_CLKREQ_COND_MASK BITFIELD(0, 2)
108 108
109/* Used by PRM_VC_VAL_SMPS_RA_CMD */ 109/* Used by PRM_VC_VAL_SMPS_RA_CMD */
110#define OMAP4430_CMDRA_VDD_CORE_L_SHIFT (1 << 0) 110#define OMAP4430_CMDRA_VDD_CORE_L_SHIFT 0
111#define OMAP4430_CMDRA_VDD_CORE_L_MASK BITFIELD(0, 7) 111#define OMAP4430_CMDRA_VDD_CORE_L_MASK BITFIELD(0, 7)
112 112
113/* Used by PRM_VC_VAL_SMPS_RA_CMD */ 113/* Used by PRM_VC_VAL_SMPS_RA_CMD */
114#define OMAP4430_CMDRA_VDD_IVA_L_SHIFT (1 << 8) 114#define OMAP4430_CMDRA_VDD_IVA_L_SHIFT 8
115#define OMAP4430_CMDRA_VDD_IVA_L_MASK BITFIELD(8, 15) 115#define OMAP4430_CMDRA_VDD_IVA_L_MASK BITFIELD(8, 15)
116 116
117/* Used by PRM_VC_VAL_SMPS_RA_CMD */ 117/* Used by PRM_VC_VAL_SMPS_RA_CMD */
118#define OMAP4430_CMDRA_VDD_MPU_L_SHIFT (1 << 16) 118#define OMAP4430_CMDRA_VDD_MPU_L_SHIFT 16
119#define OMAP4430_CMDRA_VDD_MPU_L_MASK BITFIELD(16, 23) 119#define OMAP4430_CMDRA_VDD_MPU_L_MASK BITFIELD(16, 23)
120 120
121/* Used by PRM_VC_CFG_CHANNEL */ 121/* Used by PRM_VC_CFG_CHANNEL */
122#define OMAP4430_CMD_VDD_CORE_L_SHIFT (1 << 4) 122#define OMAP4430_CMD_VDD_CORE_L_SHIFT 4
123#define OMAP4430_CMD_VDD_CORE_L_MASK BITFIELD(4, 4) 123#define OMAP4430_CMD_VDD_CORE_L_MASK BITFIELD(4, 4)
124 124
125/* Used by PRM_VC_CFG_CHANNEL */ 125/* Used by PRM_VC_CFG_CHANNEL */
126#define OMAP4430_CMD_VDD_IVA_L_SHIFT (1 << 12) 126#define OMAP4430_CMD_VDD_IVA_L_SHIFT 12
127#define OMAP4430_CMD_VDD_IVA_L_MASK BITFIELD(12, 12) 127#define OMAP4430_CMD_VDD_IVA_L_MASK BITFIELD(12, 12)
128 128
129/* Used by PRM_VC_CFG_CHANNEL */ 129/* Used by PRM_VC_CFG_CHANNEL */
130#define OMAP4430_CMD_VDD_MPU_L_SHIFT (1 << 17) 130#define OMAP4430_CMD_VDD_MPU_L_SHIFT 17
131#define OMAP4430_CMD_VDD_MPU_L_MASK BITFIELD(17, 17) 131#define OMAP4430_CMD_VDD_MPU_L_MASK BITFIELD(17, 17)
132 132
133/* Used by PM_CORE_PWRSTCTRL */ 133/* Used by PM_CORE_PWRSTCTRL */
134#define OMAP4430_CORE_OCMRAM_ONSTATE_SHIFT (1 << 18) 134#define OMAP4430_CORE_OCMRAM_ONSTATE_SHIFT 18
135#define OMAP4430_CORE_OCMRAM_ONSTATE_MASK BITFIELD(18, 19) 135#define OMAP4430_CORE_OCMRAM_ONSTATE_MASK BITFIELD(18, 19)
136 136
137/* Used by PM_CORE_PWRSTCTRL */ 137/* Used by PM_CORE_PWRSTCTRL */
138#define OMAP4430_CORE_OCMRAM_RETSTATE_SHIFT (1 << 9) 138#define OMAP4430_CORE_OCMRAM_RETSTATE_SHIFT 9
139#define OMAP4430_CORE_OCMRAM_RETSTATE_MASK BITFIELD(9, 9) 139#define OMAP4430_CORE_OCMRAM_RETSTATE_MASK BITFIELD(9, 9)
140 140
141/* Used by PM_CORE_PWRSTST */ 141/* Used by PM_CORE_PWRSTST */
142#define OMAP4430_CORE_OCMRAM_STATEST_SHIFT (1 << 6) 142#define OMAP4430_CORE_OCMRAM_STATEST_SHIFT 6
143#define OMAP4430_CORE_OCMRAM_STATEST_MASK BITFIELD(6, 7) 143#define OMAP4430_CORE_OCMRAM_STATEST_MASK BITFIELD(6, 7)
144 144
145/* Used by PM_CORE_PWRSTCTRL */ 145/* Used by PM_CORE_PWRSTCTRL */
146#define OMAP4430_CORE_OTHER_BANK_ONSTATE_SHIFT (1 << 16) 146#define OMAP4430_CORE_OTHER_BANK_ONSTATE_SHIFT 16
147#define OMAP4430_CORE_OTHER_BANK_ONSTATE_MASK BITFIELD(16, 17) 147#define OMAP4430_CORE_OTHER_BANK_ONSTATE_MASK BITFIELD(16, 17)
148 148
149/* Used by PM_CORE_PWRSTCTRL */ 149/* Used by PM_CORE_PWRSTCTRL */
150#define OMAP4430_CORE_OTHER_BANK_RETSTATE_SHIFT (1 << 8) 150#define OMAP4430_CORE_OTHER_BANK_RETSTATE_SHIFT 8
151#define OMAP4430_CORE_OTHER_BANK_RETSTATE_MASK BITFIELD(8, 8) 151#define OMAP4430_CORE_OTHER_BANK_RETSTATE_MASK BITFIELD(8, 8)
152 152
153/* Used by PM_CORE_PWRSTST */ 153/* Used by PM_CORE_PWRSTST */
154#define OMAP4430_CORE_OTHER_BANK_STATEST_SHIFT (1 << 4) 154#define OMAP4430_CORE_OTHER_BANK_STATEST_SHIFT 4
155#define OMAP4430_CORE_OTHER_BANK_STATEST_MASK BITFIELD(4, 5) 155#define OMAP4430_CORE_OTHER_BANK_STATEST_MASK BITFIELD(4, 5)
156 156
157/* Used by PRM_VC_VAL_BYPASS */ 157/* Used by PRM_VC_VAL_BYPASS */
158#define OMAP4430_DATA_SHIFT (1 << 16) 158#define OMAP4430_DATA_SHIFT 16
159#define OMAP4430_DATA_MASK BITFIELD(16, 23) 159#define OMAP4430_DATA_MASK BITFIELD(16, 23)
160 160
161/* Used by PRM_DEVICE_OFF_CTRL */ 161/* Used by PRM_DEVICE_OFF_CTRL */
162#define OMAP4430_DEVICE_OFF_ENABLE_SHIFT (1 << 0) 162#define OMAP4430_DEVICE_OFF_ENABLE_SHIFT 0
163#define OMAP4430_DEVICE_OFF_ENABLE_MASK BITFIELD(0, 0) 163#define OMAP4430_DEVICE_OFF_ENABLE_MASK BITFIELD(0, 0)
164 164
165/* Used by PRM_VC_CFG_I2C_MODE */ 165/* Used by PRM_VC_CFG_I2C_MODE */
166#define OMAP4430_DFILTEREN_SHIFT (1 << 6) 166#define OMAP4430_DFILTEREN_SHIFT 6
167#define OMAP4430_DFILTEREN_MASK BITFIELD(6, 6) 167#define OMAP4430_DFILTEREN_MASK BITFIELD(6, 6)
168 168
169/* Used by PRM_IRQENABLE_MPU, PRM_IRQENABLE_TESLA */ 169/* Used by PRM_IRQENABLE_MPU, PRM_IRQENABLE_TESLA */
170#define OMAP4430_DPLL_ABE_RECAL_EN_SHIFT (1 << 4) 170#define OMAP4430_DPLL_ABE_RECAL_EN_SHIFT 4
171#define OMAP4430_DPLL_ABE_RECAL_EN_MASK BITFIELD(4, 4) 171#define OMAP4430_DPLL_ABE_RECAL_EN_MASK BITFIELD(4, 4)
172 172
173/* Used by PRM_IRQSTATUS_MPU, PRM_IRQSTATUS_TESLA */ 173/* Used by PRM_IRQSTATUS_MPU, PRM_IRQSTATUS_TESLA */
174#define OMAP4430_DPLL_ABE_RECAL_ST_SHIFT (1 << 4) 174#define OMAP4430_DPLL_ABE_RECAL_ST_SHIFT 4
175#define OMAP4430_DPLL_ABE_RECAL_ST_MASK BITFIELD(4, 4) 175#define OMAP4430_DPLL_ABE_RECAL_ST_MASK BITFIELD(4, 4)
176 176
177/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 177/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
178#define OMAP4430_DPLL_CORE_RECAL_EN_SHIFT (1 << 0) 178#define OMAP4430_DPLL_CORE_RECAL_EN_SHIFT 0
179#define OMAP4430_DPLL_CORE_RECAL_EN_MASK BITFIELD(0, 0) 179#define OMAP4430_DPLL_CORE_RECAL_EN_MASK BITFIELD(0, 0)
180 180
181/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 181/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
182#define OMAP4430_DPLL_CORE_RECAL_ST_SHIFT (1 << 0) 182#define OMAP4430_DPLL_CORE_RECAL_ST_SHIFT 0
183#define OMAP4430_DPLL_CORE_RECAL_ST_MASK BITFIELD(0, 0) 183#define OMAP4430_DPLL_CORE_RECAL_ST_MASK BITFIELD(0, 0)
184 184
185/* Used by PRM_IRQENABLE_MPU */ 185/* Used by PRM_IRQENABLE_MPU */
186#define OMAP4430_DPLL_DDRPHY_RECAL_EN_SHIFT (1 << 6) 186#define OMAP4430_DPLL_DDRPHY_RECAL_EN_SHIFT 6
187#define OMAP4430_DPLL_DDRPHY_RECAL_EN_MASK BITFIELD(6, 6) 187#define OMAP4430_DPLL_DDRPHY_RECAL_EN_MASK BITFIELD(6, 6)
188 188
189/* Used by PRM_IRQSTATUS_MPU */ 189/* Used by PRM_IRQSTATUS_MPU */
190#define OMAP4430_DPLL_DDRPHY_RECAL_ST_SHIFT (1 << 6) 190#define OMAP4430_DPLL_DDRPHY_RECAL_ST_SHIFT 6
191#define OMAP4430_DPLL_DDRPHY_RECAL_ST_MASK BITFIELD(6, 6) 191#define OMAP4430_DPLL_DDRPHY_RECAL_ST_MASK BITFIELD(6, 6)
192 192
193/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU, PRM_IRQENABLE_TESLA */ 193/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU, PRM_IRQENABLE_TESLA */
194#define OMAP4430_DPLL_IVA_RECAL_EN_SHIFT (1 << 2) 194#define OMAP4430_DPLL_IVA_RECAL_EN_SHIFT 2
195#define OMAP4430_DPLL_IVA_RECAL_EN_MASK BITFIELD(2, 2) 195#define OMAP4430_DPLL_IVA_RECAL_EN_MASK BITFIELD(2, 2)
196 196
197/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU, PRM_IRQSTATUS_TESLA */ 197/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU, PRM_IRQSTATUS_TESLA */
198#define OMAP4430_DPLL_IVA_RECAL_ST_SHIFT (1 << 2) 198#define OMAP4430_DPLL_IVA_RECAL_ST_SHIFT 2
199#define OMAP4430_DPLL_IVA_RECAL_ST_MASK BITFIELD(2, 2) 199#define OMAP4430_DPLL_IVA_RECAL_ST_MASK BITFIELD(2, 2)
200 200
201/* Used by PRM_IRQENABLE_MPU */ 201/* Used by PRM_IRQENABLE_MPU */
202#define OMAP4430_DPLL_MPU_RECAL_EN_SHIFT (1 << 1) 202#define OMAP4430_DPLL_MPU_RECAL_EN_SHIFT 1
203#define OMAP4430_DPLL_MPU_RECAL_EN_MASK BITFIELD(1, 1) 203#define OMAP4430_DPLL_MPU_RECAL_EN_MASK BITFIELD(1, 1)
204 204
205/* Used by PRM_IRQSTATUS_MPU */ 205/* Used by PRM_IRQSTATUS_MPU */
206#define OMAP4430_DPLL_MPU_RECAL_ST_SHIFT (1 << 1) 206#define OMAP4430_DPLL_MPU_RECAL_ST_SHIFT 1
207#define OMAP4430_DPLL_MPU_RECAL_ST_MASK BITFIELD(1, 1) 207#define OMAP4430_DPLL_MPU_RECAL_ST_MASK BITFIELD(1, 1)
208 208
209/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 209/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
210#define OMAP4430_DPLL_PER_RECAL_EN_SHIFT (1 << 3) 210#define OMAP4430_DPLL_PER_RECAL_EN_SHIFT 3
211#define OMAP4430_DPLL_PER_RECAL_EN_MASK BITFIELD(3, 3) 211#define OMAP4430_DPLL_PER_RECAL_EN_MASK BITFIELD(3, 3)
212 212
213/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 213/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
214#define OMAP4430_DPLL_PER_RECAL_ST_SHIFT (1 << 3) 214#define OMAP4430_DPLL_PER_RECAL_ST_SHIFT 3
215#define OMAP4430_DPLL_PER_RECAL_ST_MASK BITFIELD(3, 3) 215#define OMAP4430_DPLL_PER_RECAL_ST_MASK BITFIELD(3, 3)
216 216
217/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 217/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
218#define OMAP4430_DPLL_UNIPRO_RECAL_EN_SHIFT (1 << 7) 218#define OMAP4430_DPLL_UNIPRO_RECAL_EN_SHIFT 7
219#define OMAP4430_DPLL_UNIPRO_RECAL_EN_MASK BITFIELD(7, 7) 219#define OMAP4430_DPLL_UNIPRO_RECAL_EN_MASK BITFIELD(7, 7)
220 220
221/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 221/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
222#define OMAP4430_DPLL_UNIPRO_RECAL_ST_SHIFT (1 << 7) 222#define OMAP4430_DPLL_UNIPRO_RECAL_ST_SHIFT 7
223#define OMAP4430_DPLL_UNIPRO_RECAL_ST_MASK BITFIELD(7, 7) 223#define OMAP4430_DPLL_UNIPRO_RECAL_ST_MASK BITFIELD(7, 7)
224 224
225/* Used by PRM_IRQENABLE_MPU */ 225/* Used by PRM_IRQENABLE_MPU */
226#define OMAP4430_DPLL_USB_RECAL_EN_SHIFT (1 << 5) 226#define OMAP4430_DPLL_USB_RECAL_EN_SHIFT 5
227#define OMAP4430_DPLL_USB_RECAL_EN_MASK BITFIELD(5, 5) 227#define OMAP4430_DPLL_USB_RECAL_EN_MASK BITFIELD(5, 5)
228 228
229/* Used by PRM_IRQSTATUS_MPU */ 229/* Used by PRM_IRQSTATUS_MPU */
230#define OMAP4430_DPLL_USB_RECAL_ST_SHIFT (1 << 5) 230#define OMAP4430_DPLL_USB_RECAL_ST_SHIFT 5
231#define OMAP4430_DPLL_USB_RECAL_ST_MASK BITFIELD(5, 5) 231#define OMAP4430_DPLL_USB_RECAL_ST_MASK BITFIELD(5, 5)
232 232
233/* Used by PM_DSS_PWRSTCTRL */ 233/* Used by PM_DSS_PWRSTCTRL */
234#define OMAP4430_DSS_MEM_ONSTATE_SHIFT (1 << 16) 234#define OMAP4430_DSS_MEM_ONSTATE_SHIFT 16
235#define OMAP4430_DSS_MEM_ONSTATE_MASK BITFIELD(16, 17) 235#define OMAP4430_DSS_MEM_ONSTATE_MASK BITFIELD(16, 17)
236 236
237/* Used by PM_DSS_PWRSTCTRL */ 237/* Used by PM_DSS_PWRSTCTRL */
238#define OMAP4430_DSS_MEM_RETSTATE_SHIFT (1 << 8) 238#define OMAP4430_DSS_MEM_RETSTATE_SHIFT 8
239#define OMAP4430_DSS_MEM_RETSTATE_MASK BITFIELD(8, 8) 239#define OMAP4430_DSS_MEM_RETSTATE_MASK BITFIELD(8, 8)
240 240
241/* Used by PM_DSS_PWRSTST */ 241/* Used by PM_DSS_PWRSTST */
242#define OMAP4430_DSS_MEM_STATEST_SHIFT (1 << 4) 242#define OMAP4430_DSS_MEM_STATEST_SHIFT 4
243#define OMAP4430_DSS_MEM_STATEST_MASK BITFIELD(4, 5) 243#define OMAP4430_DSS_MEM_STATEST_MASK BITFIELD(4, 5)
244 244
245/* Used by PM_CORE_PWRSTCTRL */ 245/* Used by PM_CORE_PWRSTCTRL */
246#define OMAP4430_DUCATI_L2RAM_ONSTATE_SHIFT (1 << 20) 246#define OMAP4430_DUCATI_L2RAM_ONSTATE_SHIFT 20
247#define OMAP4430_DUCATI_L2RAM_ONSTATE_MASK BITFIELD(20, 21) 247#define OMAP4430_DUCATI_L2RAM_ONSTATE_MASK BITFIELD(20, 21)
248 248
249/* Used by PM_CORE_PWRSTCTRL */ 249/* Used by PM_CORE_PWRSTCTRL */
250#define OMAP4430_DUCATI_L2RAM_RETSTATE_SHIFT (1 << 10) 250#define OMAP4430_DUCATI_L2RAM_RETSTATE_SHIFT 10
251#define OMAP4430_DUCATI_L2RAM_RETSTATE_MASK BITFIELD(10, 10) 251#define OMAP4430_DUCATI_L2RAM_RETSTATE_MASK BITFIELD(10, 10)
252 252
253/* Used by PM_CORE_PWRSTST */ 253/* Used by PM_CORE_PWRSTST */
254#define OMAP4430_DUCATI_L2RAM_STATEST_SHIFT (1 << 8) 254#define OMAP4430_DUCATI_L2RAM_STATEST_SHIFT 8
255#define OMAP4430_DUCATI_L2RAM_STATEST_MASK BITFIELD(8, 9) 255#define OMAP4430_DUCATI_L2RAM_STATEST_MASK BITFIELD(8, 9)
256 256
257/* Used by PM_CORE_PWRSTCTRL */ 257/* Used by PM_CORE_PWRSTCTRL */
258#define OMAP4430_DUCATI_UNICACHE_ONSTATE_SHIFT (1 << 22) 258#define OMAP4430_DUCATI_UNICACHE_ONSTATE_SHIFT 22
259#define OMAP4430_DUCATI_UNICACHE_ONSTATE_MASK BITFIELD(22, 23) 259#define OMAP4430_DUCATI_UNICACHE_ONSTATE_MASK BITFIELD(22, 23)
260 260
261/* Used by PM_CORE_PWRSTCTRL */ 261/* Used by PM_CORE_PWRSTCTRL */
262#define OMAP4430_DUCATI_UNICACHE_RETSTATE_SHIFT (1 << 11) 262#define OMAP4430_DUCATI_UNICACHE_RETSTATE_SHIFT 11
263#define OMAP4430_DUCATI_UNICACHE_RETSTATE_MASK BITFIELD(11, 11) 263#define OMAP4430_DUCATI_UNICACHE_RETSTATE_MASK BITFIELD(11, 11)
264 264
265/* Used by PM_CORE_PWRSTST */ 265/* Used by PM_CORE_PWRSTST */
266#define OMAP4430_DUCATI_UNICACHE_STATEST_SHIFT (1 << 10) 266#define OMAP4430_DUCATI_UNICACHE_STATEST_SHIFT 10
267#define OMAP4430_DUCATI_UNICACHE_STATEST_MASK BITFIELD(10, 11) 267#define OMAP4430_DUCATI_UNICACHE_STATEST_MASK BITFIELD(10, 11)
268 268
269/* Used by RM_MPU_RSTST */ 269/* Used by RM_MPU_RSTST */
270#define OMAP4430_EMULATION_RST_SHIFT (1 << 0) 270#define OMAP4430_EMULATION_RST_SHIFT 0
271#define OMAP4430_EMULATION_RST_MASK BITFIELD(0, 0) 271#define OMAP4430_EMULATION_RST_MASK BITFIELD(0, 0)
272 272
273/* Used by RM_DUCATI_RSTST */ 273/* Used by RM_DUCATI_RSTST */
274#define OMAP4430_EMULATION_RST1ST_SHIFT (1 << 3) 274#define OMAP4430_EMULATION_RST1ST_SHIFT 3
275#define OMAP4430_EMULATION_RST1ST_MASK BITFIELD(3, 3) 275#define OMAP4430_EMULATION_RST1ST_MASK BITFIELD(3, 3)
276 276
277/* Used by RM_DUCATI_RSTST */ 277/* Used by RM_DUCATI_RSTST */
278#define OMAP4430_EMULATION_RST2ST_SHIFT (1 << 4) 278#define OMAP4430_EMULATION_RST2ST_SHIFT 4
279#define OMAP4430_EMULATION_RST2ST_MASK BITFIELD(4, 4) 279#define OMAP4430_EMULATION_RST2ST_MASK BITFIELD(4, 4)
280 280
281/* Used by RM_IVAHD_RSTST */ 281/* Used by RM_IVAHD_RSTST */
282#define OMAP4430_EMULATION_SEQ1_RST1ST_SHIFT (1 << 3) 282#define OMAP4430_EMULATION_SEQ1_RST1ST_SHIFT 3
283#define OMAP4430_EMULATION_SEQ1_RST1ST_MASK BITFIELD(3, 3) 283#define OMAP4430_EMULATION_SEQ1_RST1ST_MASK BITFIELD(3, 3)
284 284
285/* Used by RM_IVAHD_RSTST */ 285/* Used by RM_IVAHD_RSTST */
286#define OMAP4430_EMULATION_SEQ2_RST2ST_SHIFT (1 << 4) 286#define OMAP4430_EMULATION_SEQ2_RST2ST_SHIFT 4
287#define OMAP4430_EMULATION_SEQ2_RST2ST_MASK BITFIELD(4, 4) 287#define OMAP4430_EMULATION_SEQ2_RST2ST_MASK BITFIELD(4, 4)
288 288
289/* Used by PM_EMU_PWRSTCTRL */ 289/* Used by PM_EMU_PWRSTCTRL */
290#define OMAP4430_EMU_BANK_ONSTATE_SHIFT (1 << 16) 290#define OMAP4430_EMU_BANK_ONSTATE_SHIFT 16
291#define OMAP4430_EMU_BANK_ONSTATE_MASK BITFIELD(16, 17) 291#define OMAP4430_EMU_BANK_ONSTATE_MASK BITFIELD(16, 17)
292 292
293/* Used by PM_EMU_PWRSTST */ 293/* Used by PM_EMU_PWRSTST */
294#define OMAP4430_EMU_BANK_STATEST_SHIFT (1 << 4) 294#define OMAP4430_EMU_BANK_STATEST_SHIFT 4
295#define OMAP4430_EMU_BANK_STATEST_MASK BITFIELD(4, 5) 295#define OMAP4430_EMU_BANK_STATEST_MASK BITFIELD(4, 5)
296 296
297/* 297/*
298 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP, 298 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP,
299 * PRM_LDO_SRAM_MPU_SETUP, PRM_SRAM_WKUP_SETUP 299 * PRM_LDO_SRAM_MPU_SETUP, PRM_SRAM_WKUP_SETUP
300 */ 300 */
301#define OMAP4430_ENABLE_RTA_EXPORT_SHIFT (1 << 0) 301#define OMAP4430_ENABLE_RTA_EXPORT_SHIFT 0
302#define OMAP4430_ENABLE_RTA_EXPORT_MASK BITFIELD(0, 0) 302#define OMAP4430_ENABLE_RTA_EXPORT_MASK BITFIELD(0, 0)
303 303
304/* 304/*
305 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP, 305 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP,
306 * PRM_LDO_SRAM_MPU_SETUP 306 * PRM_LDO_SRAM_MPU_SETUP
307 */ 307 */
308#define OMAP4430_ENFUNC1_SHIFT (1 << 3) 308#define OMAP4430_ENFUNC1_SHIFT 3
309#define OMAP4430_ENFUNC1_MASK BITFIELD(3, 3) 309#define OMAP4430_ENFUNC1_MASK BITFIELD(3, 3)
310 310
311/* 311/*
312 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP, 312 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP,
313 * PRM_LDO_SRAM_MPU_SETUP 313 * PRM_LDO_SRAM_MPU_SETUP
314 */ 314 */
315#define OMAP4430_ENFUNC3_SHIFT (1 << 5) 315#define OMAP4430_ENFUNC3_SHIFT 5
316#define OMAP4430_ENFUNC3_MASK BITFIELD(5, 5) 316#define OMAP4430_ENFUNC3_MASK BITFIELD(5, 5)
317 317
318/* 318/*
319 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP, 319 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP,
320 * PRM_LDO_SRAM_MPU_SETUP 320 * PRM_LDO_SRAM_MPU_SETUP
321 */ 321 */
322#define OMAP4430_ENFUNC4_SHIFT (1 << 6) 322#define OMAP4430_ENFUNC4_SHIFT 6
323#define OMAP4430_ENFUNC4_MASK BITFIELD(6, 6) 323#define OMAP4430_ENFUNC4_MASK BITFIELD(6, 6)
324 324
325/* 325/*
326 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP, 326 * Used by PRM_LDO_SRAM_CORE_SETUP, PRM_LDO_SRAM_IVA_SETUP,
327 * PRM_LDO_SRAM_MPU_SETUP 327 * PRM_LDO_SRAM_MPU_SETUP
328 */ 328 */
329#define OMAP4430_ENFUNC5_SHIFT (1 << 7) 329#define OMAP4430_ENFUNC5_SHIFT 7
330#define OMAP4430_ENFUNC5_MASK BITFIELD(7, 7) 330#define OMAP4430_ENFUNC5_MASK BITFIELD(7, 7)
331 331
332/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */ 332/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */
333#define OMAP4430_ERRORGAIN_SHIFT (1 << 16) 333#define OMAP4430_ERRORGAIN_SHIFT 16
334#define OMAP4430_ERRORGAIN_MASK BITFIELD(16, 23) 334#define OMAP4430_ERRORGAIN_MASK BITFIELD(16, 23)
335 335
336/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */ 336/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */
337#define OMAP4430_ERROROFFSET_SHIFT (1 << 24) 337#define OMAP4430_ERROROFFSET_SHIFT 24
338#define OMAP4430_ERROROFFSET_MASK BITFIELD(24, 31) 338#define OMAP4430_ERROROFFSET_MASK BITFIELD(24, 31)
339 339
340/* Used by PRM_RSTST */ 340/* Used by PRM_RSTST */
341#define OMAP4430_EXTERNAL_WARM_RST_SHIFT (1 << 5) 341#define OMAP4430_EXTERNAL_WARM_RST_SHIFT 5
342#define OMAP4430_EXTERNAL_WARM_RST_MASK BITFIELD(5, 5) 342#define OMAP4430_EXTERNAL_WARM_RST_MASK BITFIELD(5, 5)
343 343
344/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */ 344/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */
345#define OMAP4430_FORCEUPDATE_SHIFT (1 << 1) 345#define OMAP4430_FORCEUPDATE_SHIFT 1
346#define OMAP4430_FORCEUPDATE_MASK BITFIELD(1, 1) 346#define OMAP4430_FORCEUPDATE_MASK BITFIELD(1, 1)
347 347
348/* Used by PRM_VP_CORE_VOLTAGE, PRM_VP_IVA_VOLTAGE, PRM_VP_MPU_VOLTAGE */ 348/* Used by PRM_VP_CORE_VOLTAGE, PRM_VP_IVA_VOLTAGE, PRM_VP_MPU_VOLTAGE */
349#define OMAP4430_FORCEUPDATEWAIT_SHIFT (1 << 8) 349#define OMAP4430_FORCEUPDATEWAIT_SHIFT 8
350#define OMAP4430_FORCEUPDATEWAIT_MASK BITFIELD(8, 31) 350#define OMAP4430_FORCEUPDATEWAIT_MASK BITFIELD(8, 31)
351 351
352/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_TESLA */ 352/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_TESLA */
353#define OMAP4430_FORCEWKUP_EN_SHIFT (1 << 10) 353#define OMAP4430_FORCEWKUP_EN_SHIFT 10
354#define OMAP4430_FORCEWKUP_EN_MASK BITFIELD(10, 10) 354#define OMAP4430_FORCEWKUP_EN_MASK BITFIELD(10, 10)
355 355
356/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_TESLA */ 356/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_TESLA */
357#define OMAP4430_FORCEWKUP_ST_SHIFT (1 << 10) 357#define OMAP4430_FORCEWKUP_ST_SHIFT 10
358#define OMAP4430_FORCEWKUP_ST_MASK BITFIELD(10, 10) 358#define OMAP4430_FORCEWKUP_ST_MASK BITFIELD(10, 10)
359 359
360/* Used by PM_GFX_PWRSTCTRL */ 360/* Used by PM_GFX_PWRSTCTRL */
361#define OMAP4430_GFX_MEM_ONSTATE_SHIFT (1 << 16) 361#define OMAP4430_GFX_MEM_ONSTATE_SHIFT 16
362#define OMAP4430_GFX_MEM_ONSTATE_MASK BITFIELD(16, 17) 362#define OMAP4430_GFX_MEM_ONSTATE_MASK BITFIELD(16, 17)
363 363
364/* Used by PM_GFX_PWRSTST */ 364/* Used by PM_GFX_PWRSTST */
365#define OMAP4430_GFX_MEM_STATEST_SHIFT (1 << 4) 365#define OMAP4430_GFX_MEM_STATEST_SHIFT 4
366#define OMAP4430_GFX_MEM_STATEST_MASK BITFIELD(4, 5) 366#define OMAP4430_GFX_MEM_STATEST_MASK BITFIELD(4, 5)
367 367
368/* Used by PRM_RSTST */ 368/* Used by PRM_RSTST */
369#define OMAP4430_GLOBAL_COLD_RST_SHIFT (1 << 0) 369#define OMAP4430_GLOBAL_COLD_RST_SHIFT 0
370#define OMAP4430_GLOBAL_COLD_RST_MASK BITFIELD(0, 0) 370#define OMAP4430_GLOBAL_COLD_RST_MASK BITFIELD(0, 0)
371 371
372/* Used by PRM_RSTST */ 372/* Used by PRM_RSTST */
373#define OMAP4430_GLOBAL_WARM_SW_RST_SHIFT (1 << 1) 373#define OMAP4430_GLOBAL_WARM_SW_RST_SHIFT 1
374#define OMAP4430_GLOBAL_WARM_SW_RST_MASK BITFIELD(1, 1) 374#define OMAP4430_GLOBAL_WARM_SW_RST_MASK BITFIELD(1, 1)
375 375
376/* Used by PRM_IO_PMCTRL */ 376/* Used by PRM_IO_PMCTRL */
377#define OMAP4430_GLOBAL_WUEN_SHIFT (1 << 16) 377#define OMAP4430_GLOBAL_WUEN_SHIFT 16
378#define OMAP4430_GLOBAL_WUEN_MASK BITFIELD(16, 16) 378#define OMAP4430_GLOBAL_WUEN_MASK BITFIELD(16, 16)
379 379
380/* Used by PRM_VC_CFG_I2C_MODE */ 380/* Used by PRM_VC_CFG_I2C_MODE */
381#define OMAP4430_HSMCODE_SHIFT (1 << 0) 381#define OMAP4430_HSMCODE_SHIFT 0
382#define OMAP4430_HSMCODE_MASK BITFIELD(0, 2) 382#define OMAP4430_HSMCODE_MASK BITFIELD(0, 2)
383 383
384/* Used by PRM_VC_CFG_I2C_MODE */ 384/* Used by PRM_VC_CFG_I2C_MODE */
385#define OMAP4430_HSMODEEN_SHIFT (1 << 3) 385#define OMAP4430_HSMODEEN_SHIFT 3
386#define OMAP4430_HSMODEEN_MASK BITFIELD(3, 3) 386#define OMAP4430_HSMODEEN_MASK BITFIELD(3, 3)
387 387
388/* Used by PRM_VC_CFG_I2C_CLK */ 388/* Used by PRM_VC_CFG_I2C_CLK */
389#define OMAP4430_HSSCLH_SHIFT (1 << 16) 389#define OMAP4430_HSSCLH_SHIFT 16
390#define OMAP4430_HSSCLH_MASK BITFIELD(16, 23) 390#define OMAP4430_HSSCLH_MASK BITFIELD(16, 23)
391 391
392/* Used by PRM_VC_CFG_I2C_CLK */ 392/* Used by PRM_VC_CFG_I2C_CLK */
393#define OMAP4430_HSSCLL_SHIFT (1 << 24) 393#define OMAP4430_HSSCLL_SHIFT 24
394#define OMAP4430_HSSCLL_MASK BITFIELD(24, 31) 394#define OMAP4430_HSSCLL_MASK BITFIELD(24, 31)
395 395
396/* Used by PM_IVAHD_PWRSTCTRL */ 396/* Used by PM_IVAHD_PWRSTCTRL */
397#define OMAP4430_HWA_MEM_ONSTATE_SHIFT (1 << 16) 397#define OMAP4430_HWA_MEM_ONSTATE_SHIFT 16
398#define OMAP4430_HWA_MEM_ONSTATE_MASK BITFIELD(16, 17) 398#define OMAP4430_HWA_MEM_ONSTATE_MASK BITFIELD(16, 17)
399 399
400/* Used by PM_IVAHD_PWRSTCTRL */ 400/* Used by PM_IVAHD_PWRSTCTRL */
401#define OMAP4430_HWA_MEM_RETSTATE_SHIFT (1 << 8) 401#define OMAP4430_HWA_MEM_RETSTATE_SHIFT 8
402#define OMAP4430_HWA_MEM_RETSTATE_MASK BITFIELD(8, 8) 402#define OMAP4430_HWA_MEM_RETSTATE_MASK BITFIELD(8, 8)
403 403
404/* Used by PM_IVAHD_PWRSTST */ 404/* Used by PM_IVAHD_PWRSTST */
405#define OMAP4430_HWA_MEM_STATEST_SHIFT (1 << 4) 405#define OMAP4430_HWA_MEM_STATEST_SHIFT 4
406#define OMAP4430_HWA_MEM_STATEST_MASK BITFIELD(4, 5) 406#define OMAP4430_HWA_MEM_STATEST_MASK BITFIELD(4, 5)
407 407
408/* Used by RM_MPU_RSTST */ 408/* Used by RM_MPU_RSTST */
409#define OMAP4430_ICECRUSHER_MPU_RST_SHIFT (1 << 1) 409#define OMAP4430_ICECRUSHER_MPU_RST_SHIFT 1
410#define OMAP4430_ICECRUSHER_MPU_RST_MASK BITFIELD(1, 1) 410#define OMAP4430_ICECRUSHER_MPU_RST_MASK BITFIELD(1, 1)
411 411
412/* Used by RM_DUCATI_RSTST */ 412/* Used by RM_DUCATI_RSTST */
413#define OMAP4430_ICECRUSHER_RST1ST_SHIFT (1 << 5) 413#define OMAP4430_ICECRUSHER_RST1ST_SHIFT 5
414#define OMAP4430_ICECRUSHER_RST1ST_MASK BITFIELD(5, 5) 414#define OMAP4430_ICECRUSHER_RST1ST_MASK BITFIELD(5, 5)
415 415
416/* Used by RM_DUCATI_RSTST */ 416/* Used by RM_DUCATI_RSTST */
417#define OMAP4430_ICECRUSHER_RST2ST_SHIFT (1 << 6) 417#define OMAP4430_ICECRUSHER_RST2ST_SHIFT 6
418#define OMAP4430_ICECRUSHER_RST2ST_MASK BITFIELD(6, 6) 418#define OMAP4430_ICECRUSHER_RST2ST_MASK BITFIELD(6, 6)
419 419
420/* Used by RM_IVAHD_RSTST */ 420/* Used by RM_IVAHD_RSTST */
421#define OMAP4430_ICECRUSHER_SEQ1_RST1ST_SHIFT (1 << 5) 421#define OMAP4430_ICECRUSHER_SEQ1_RST1ST_SHIFT 5
422#define OMAP4430_ICECRUSHER_SEQ1_RST1ST_MASK BITFIELD(5, 5) 422#define OMAP4430_ICECRUSHER_SEQ1_RST1ST_MASK BITFIELD(5, 5)
423 423
424/* Used by RM_IVAHD_RSTST */ 424/* Used by RM_IVAHD_RSTST */
425#define OMAP4430_ICECRUSHER_SEQ2_RST2ST_SHIFT (1 << 6) 425#define OMAP4430_ICECRUSHER_SEQ2_RST2ST_SHIFT 6
426#define OMAP4430_ICECRUSHER_SEQ2_RST2ST_MASK BITFIELD(6, 6) 426#define OMAP4430_ICECRUSHER_SEQ2_RST2ST_MASK BITFIELD(6, 6)
427 427
428/* Used by PRM_RSTST */ 428/* Used by PRM_RSTST */
429#define OMAP4430_ICEPICK_RST_SHIFT (1 << 9) 429#define OMAP4430_ICEPICK_RST_SHIFT 9
430#define OMAP4430_ICEPICK_RST_MASK BITFIELD(9, 9) 430#define OMAP4430_ICEPICK_RST_MASK BITFIELD(9, 9)
431 431
432/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */ 432/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */
433#define OMAP4430_INITVDD_SHIFT (1 << 2) 433#define OMAP4430_INITVDD_SHIFT 2
434#define OMAP4430_INITVDD_MASK BITFIELD(2, 2) 434#define OMAP4430_INITVDD_MASK BITFIELD(2, 2)
435 435
436/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */ 436/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */
437#define OMAP4430_INITVOLTAGE_SHIFT (1 << 8) 437#define OMAP4430_INITVOLTAGE_SHIFT 8
438#define OMAP4430_INITVOLTAGE_MASK BITFIELD(8, 15) 438#define OMAP4430_INITVOLTAGE_MASK BITFIELD(8, 15)
439 439
440/* 440/*
@@ -442,47 +442,47 @@
442 * PM_ABE_PWRSTST, PM_GFX_PWRSTST, PM_MPU_PWRSTST, PM_CEFUSE_PWRSTST, 442 * PM_ABE_PWRSTST, PM_GFX_PWRSTST, PM_MPU_PWRSTST, PM_CEFUSE_PWRSTST,
443 * PM_DSS_PWRSTST, PM_L4PER_PWRSTST, PM_TESLA_PWRSTST, PM_IVAHD_PWRSTST 443 * PM_DSS_PWRSTST, PM_L4PER_PWRSTST, PM_TESLA_PWRSTST, PM_IVAHD_PWRSTST
444 */ 444 */
445#define OMAP4430_INTRANSITION_SHIFT (1 << 20) 445#define OMAP4430_INTRANSITION_SHIFT 20
446#define OMAP4430_INTRANSITION_MASK BITFIELD(20, 20) 446#define OMAP4430_INTRANSITION_MASK BITFIELD(20, 20)
447 447
448/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 448/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
449#define OMAP4430_IO_EN_SHIFT (1 << 9) 449#define OMAP4430_IO_EN_SHIFT 9
450#define OMAP4430_IO_EN_MASK BITFIELD(9, 9) 450#define OMAP4430_IO_EN_MASK BITFIELD(9, 9)
451 451
452/* Used by PRM_IO_PMCTRL */ 452/* Used by PRM_IO_PMCTRL */
453#define OMAP4430_IO_ON_STATUS_SHIFT (1 << 5) 453#define OMAP4430_IO_ON_STATUS_SHIFT 5
454#define OMAP4430_IO_ON_STATUS_MASK BITFIELD(5, 5) 454#define OMAP4430_IO_ON_STATUS_MASK BITFIELD(5, 5)
455 455
456/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 456/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
457#define OMAP4430_IO_ST_SHIFT (1 << 9) 457#define OMAP4430_IO_ST_SHIFT 9
458#define OMAP4430_IO_ST_MASK BITFIELD(9, 9) 458#define OMAP4430_IO_ST_MASK BITFIELD(9, 9)
459 459
460/* Used by PRM_IO_PMCTRL */ 460/* Used by PRM_IO_PMCTRL */
461#define OMAP4430_ISOCLK_OVERRIDE_SHIFT (1 << 0) 461#define OMAP4430_ISOCLK_OVERRIDE_SHIFT 0
462#define OMAP4430_ISOCLK_OVERRIDE_MASK BITFIELD(0, 0) 462#define OMAP4430_ISOCLK_OVERRIDE_MASK BITFIELD(0, 0)
463 463
464/* Used by PRM_IO_PMCTRL */ 464/* Used by PRM_IO_PMCTRL */
465#define OMAP4430_ISOCLK_STATUS_SHIFT (1 << 1) 465#define OMAP4430_ISOCLK_STATUS_SHIFT 1
466#define OMAP4430_ISOCLK_STATUS_MASK BITFIELD(1, 1) 466#define OMAP4430_ISOCLK_STATUS_MASK BITFIELD(1, 1)
467 467
468/* Used by PRM_IO_PMCTRL */ 468/* Used by PRM_IO_PMCTRL */
469#define OMAP4430_ISOOVR_EXTEND_SHIFT (1 << 4) 469#define OMAP4430_ISOOVR_EXTEND_SHIFT 4
470#define OMAP4430_ISOOVR_EXTEND_MASK BITFIELD(4, 4) 470#define OMAP4430_ISOOVR_EXTEND_MASK BITFIELD(4, 4)
471 471
472/* Used by PRM_IO_COUNT */ 472/* Used by PRM_IO_COUNT */
473#define OMAP4430_ISO_2_ON_TIME_SHIFT (1 << 0) 473#define OMAP4430_ISO_2_ON_TIME_SHIFT 0
474#define OMAP4430_ISO_2_ON_TIME_MASK BITFIELD(0, 7) 474#define OMAP4430_ISO_2_ON_TIME_MASK BITFIELD(0, 7)
475 475
476/* Used by PM_L3INIT_PWRSTCTRL */ 476/* Used by PM_L3INIT_PWRSTCTRL */
477#define OMAP4430_L3INIT_BANK1_ONSTATE_SHIFT (1 << 16) 477#define OMAP4430_L3INIT_BANK1_ONSTATE_SHIFT 16
478#define OMAP4430_L3INIT_BANK1_ONSTATE_MASK BITFIELD(16, 17) 478#define OMAP4430_L3INIT_BANK1_ONSTATE_MASK BITFIELD(16, 17)
479 479
480/* Used by PM_L3INIT_PWRSTCTRL */ 480/* Used by PM_L3INIT_PWRSTCTRL */
481#define OMAP4430_L3INIT_BANK1_RETSTATE_SHIFT (1 << 8) 481#define OMAP4430_L3INIT_BANK1_RETSTATE_SHIFT 8
482#define OMAP4430_L3INIT_BANK1_RETSTATE_MASK BITFIELD(8, 8) 482#define OMAP4430_L3INIT_BANK1_RETSTATE_MASK BITFIELD(8, 8)
483 483
484/* Used by PM_L3INIT_PWRSTST */ 484/* Used by PM_L3INIT_PWRSTST */
485#define OMAP4430_L3INIT_BANK1_STATEST_SHIFT (1 << 4) 485#define OMAP4430_L3INIT_BANK1_STATEST_SHIFT 4
486#define OMAP4430_L3INIT_BANK1_STATEST_MASK BITFIELD(4, 5) 486#define OMAP4430_L3INIT_BANK1_STATEST_MASK BITFIELD(4, 5)
487 487
488/* 488/*
@@ -490,7 +490,7 @@
490 * PM_MPU_PWRSTCTRL, PM_DSS_PWRSTCTRL, PM_L4PER_PWRSTCTRL, PM_TESLA_PWRSTCTRL, 490 * PM_MPU_PWRSTCTRL, PM_DSS_PWRSTCTRL, PM_L4PER_PWRSTCTRL, PM_TESLA_PWRSTCTRL,
491 * PM_IVAHD_PWRSTCTRL 491 * PM_IVAHD_PWRSTCTRL
492 */ 492 */
493#define OMAP4430_LOGICRETSTATE_SHIFT (1 << 2) 493#define OMAP4430_LOGICRETSTATE_SHIFT 2
494#define OMAP4430_LOGICRETSTATE_MASK BITFIELD(2, 2) 494#define OMAP4430_LOGICRETSTATE_MASK BITFIELD(2, 2)
495 495
496/* 496/*
@@ -498,7 +498,7 @@
498 * PM_ABE_PWRSTST, PM_GFX_PWRSTST, PM_MPU_PWRSTST, PM_CEFUSE_PWRSTST, 498 * PM_ABE_PWRSTST, PM_GFX_PWRSTST, PM_MPU_PWRSTST, PM_CEFUSE_PWRSTST,
499 * PM_DSS_PWRSTST, PM_L4PER_PWRSTST, PM_TESLA_PWRSTST, PM_IVAHD_PWRSTST 499 * PM_DSS_PWRSTST, PM_L4PER_PWRSTST, PM_TESLA_PWRSTST, PM_IVAHD_PWRSTST
500 */ 500 */
501#define OMAP4430_LOGICSTATEST_SHIFT (1 << 2) 501#define OMAP4430_LOGICSTATEST_SHIFT 2
502#define OMAP4430_LOGICSTATEST_MASK BITFIELD(2, 2) 502#define OMAP4430_LOGICSTATEST_MASK BITFIELD(2, 2)
503 503
504/* 504/*
@@ -537,7 +537,7 @@
537 * RM_L4PER_SLIMBUS2_CONTEXT, RM_L4SEC_PKAEIP29_CONTEXT, 537 * RM_L4PER_SLIMBUS2_CONTEXT, RM_L4SEC_PKAEIP29_CONTEXT,
538 * RM_TESLA_TESLA_CONTEXT, RM_IVAHD_IVAHD_CONTEXT, RM_IVAHD_SL2_CONTEXT 538 * RM_TESLA_TESLA_CONTEXT, RM_IVAHD_IVAHD_CONTEXT, RM_IVAHD_SL2_CONTEXT
539 */ 539 */
540#define OMAP4430_LOSTCONTEXT_DFF_SHIFT (1 << 0) 540#define OMAP4430_LOSTCONTEXT_DFF_SHIFT 0
541#define OMAP4430_LOSTCONTEXT_DFF_MASK BITFIELD(0, 0) 541#define OMAP4430_LOSTCONTEXT_DFF_MASK BITFIELD(0, 0)
542 542
543/* 543/*
@@ -558,58 +558,58 @@
558 * RM_L4SEC_AES2_CONTEXT, RM_L4SEC_CRYPTODMA_CONTEXT, RM_L4SEC_DES3DES_CONTEXT, 558 * RM_L4SEC_AES2_CONTEXT, RM_L4SEC_CRYPTODMA_CONTEXT, RM_L4SEC_DES3DES_CONTEXT,
559 * RM_L4SEC_RNG_CONTEXT, RM_L4SEC_SHA2MD51_CONTEXT, RM_TESLA_TESLA_CONTEXT 559 * RM_L4SEC_RNG_CONTEXT, RM_L4SEC_SHA2MD51_CONTEXT, RM_TESLA_TESLA_CONTEXT
560 */ 560 */
561#define OMAP4430_LOSTCONTEXT_RFF_SHIFT (1 << 1) 561#define OMAP4430_LOSTCONTEXT_RFF_SHIFT 1
562#define OMAP4430_LOSTCONTEXT_RFF_MASK BITFIELD(1, 1) 562#define OMAP4430_LOSTCONTEXT_RFF_MASK BITFIELD(1, 1)
563 563
564/* Used by RM_ABE_AESS_CONTEXT */ 564/* Used by RM_ABE_AESS_CONTEXT */
565#define OMAP4430_LOSTMEM_AESSMEM_SHIFT (1 << 8) 565#define OMAP4430_LOSTMEM_AESSMEM_SHIFT 8
566#define OMAP4430_LOSTMEM_AESSMEM_MASK BITFIELD(8, 8) 566#define OMAP4430_LOSTMEM_AESSMEM_MASK BITFIELD(8, 8)
567 567
568/* Used by RM_CAM_FDIF_CONTEXT, RM_CAM_ISS_CONTEXT */ 568/* Used by RM_CAM_FDIF_CONTEXT, RM_CAM_ISS_CONTEXT */
569#define OMAP4430_LOSTMEM_CAM_MEM_SHIFT (1 << 8) 569#define OMAP4430_LOSTMEM_CAM_MEM_SHIFT 8
570#define OMAP4430_LOSTMEM_CAM_MEM_MASK BITFIELD(8, 8) 570#define OMAP4430_LOSTMEM_CAM_MEM_MASK BITFIELD(8, 8)
571 571
572/* Used by RM_L3INSTR_OCP_WP1_CONTEXT */ 572/* Used by RM_L3INSTR_OCP_WP1_CONTEXT */
573#define OMAP4430_LOSTMEM_CORE_NRET_BANK_SHIFT (1 << 8) 573#define OMAP4430_LOSTMEM_CORE_NRET_BANK_SHIFT 8
574#define OMAP4430_LOSTMEM_CORE_NRET_BANK_MASK BITFIELD(8, 8) 574#define OMAP4430_LOSTMEM_CORE_NRET_BANK_MASK BITFIELD(8, 8)
575 575
576/* Renamed from LOSTMEM_CORE_NRET_BANK Used by RM_MEMIF_DMM_CONTEXT */ 576/* Renamed from LOSTMEM_CORE_NRET_BANK Used by RM_MEMIF_DMM_CONTEXT */
577#define OMAP4430_LOSTMEM_CORE_NRET_BANK_9_9_SHIFT (1 << 9) 577#define OMAP4430_LOSTMEM_CORE_NRET_BANK_9_9_SHIFT 9
578#define OMAP4430_LOSTMEM_CORE_NRET_BANK_9_9_MASK BITFIELD(9, 9) 578#define OMAP4430_LOSTMEM_CORE_NRET_BANK_9_9_MASK BITFIELD(9, 9)
579 579
580/* Used by RM_L3_2_OCMC_RAM_CONTEXT */ 580/* Used by RM_L3_2_OCMC_RAM_CONTEXT */
581#define OMAP4430_LOSTMEM_CORE_OCMRAM_SHIFT (1 << 8) 581#define OMAP4430_LOSTMEM_CORE_OCMRAM_SHIFT 8
582#define OMAP4430_LOSTMEM_CORE_OCMRAM_MASK BITFIELD(8, 8) 582#define OMAP4430_LOSTMEM_CORE_OCMRAM_MASK BITFIELD(8, 8)
583 583
584/* 584/*
585 * Used by RM_D2D_MODEM_ICR_CONTEXT, RM_MEMIF_DMM_CONTEXT, 585 * Used by RM_D2D_MODEM_ICR_CONTEXT, RM_MEMIF_DMM_CONTEXT,
586 * RM_SDMA_SDMA_CONTEXT 586 * RM_SDMA_SDMA_CONTEXT
587 */ 587 */
588#define OMAP4430_LOSTMEM_CORE_OTHER_BANK_SHIFT (1 << 8) 588#define OMAP4430_LOSTMEM_CORE_OTHER_BANK_SHIFT 8
589#define OMAP4430_LOSTMEM_CORE_OTHER_BANK_MASK BITFIELD(8, 8) 589#define OMAP4430_LOSTMEM_CORE_OTHER_BANK_MASK BITFIELD(8, 8)
590 590
591/* Used by RM_DSS_DEISS_CONTEXT, RM_DSS_DSS_CONTEXT */ 591/* Used by RM_DSS_DEISS_CONTEXT, RM_DSS_DSS_CONTEXT */
592#define OMAP4430_LOSTMEM_DSS_MEM_SHIFT (1 << 8) 592#define OMAP4430_LOSTMEM_DSS_MEM_SHIFT 8
593#define OMAP4430_LOSTMEM_DSS_MEM_MASK BITFIELD(8, 8) 593#define OMAP4430_LOSTMEM_DSS_MEM_MASK BITFIELD(8, 8)
594 594
595/* Used by RM_DUCATI_DUCATI_CONTEXT */ 595/* Used by RM_DUCATI_DUCATI_CONTEXT */
596#define OMAP4430_LOSTMEM_DUCATI_L2RAM_SHIFT (1 << 9) 596#define OMAP4430_LOSTMEM_DUCATI_L2RAM_SHIFT 9
597#define OMAP4430_LOSTMEM_DUCATI_L2RAM_MASK BITFIELD(9, 9) 597#define OMAP4430_LOSTMEM_DUCATI_L2RAM_MASK BITFIELD(9, 9)
598 598
599/* Used by RM_DUCATI_DUCATI_CONTEXT */ 599/* Used by RM_DUCATI_DUCATI_CONTEXT */
600#define OMAP4430_LOSTMEM_DUCATI_UNICACHE_SHIFT (1 << 8) 600#define OMAP4430_LOSTMEM_DUCATI_UNICACHE_SHIFT 8
601#define OMAP4430_LOSTMEM_DUCATI_UNICACHE_MASK BITFIELD(8, 8) 601#define OMAP4430_LOSTMEM_DUCATI_UNICACHE_MASK BITFIELD(8, 8)
602 602
603/* Used by RM_EMU_DEBUGSS_CONTEXT */ 603/* Used by RM_EMU_DEBUGSS_CONTEXT */
604#define OMAP4430_LOSTMEM_EMU_BANK_SHIFT (1 << 8) 604#define OMAP4430_LOSTMEM_EMU_BANK_SHIFT 8
605#define OMAP4430_LOSTMEM_EMU_BANK_MASK BITFIELD(8, 8) 605#define OMAP4430_LOSTMEM_EMU_BANK_MASK BITFIELD(8, 8)
606 606
607/* Used by RM_GFX_GFX_CONTEXT */ 607/* Used by RM_GFX_GFX_CONTEXT */
608#define OMAP4430_LOSTMEM_GFX_MEM_SHIFT (1 << 8) 608#define OMAP4430_LOSTMEM_GFX_MEM_SHIFT 8
609#define OMAP4430_LOSTMEM_GFX_MEM_MASK BITFIELD(8, 8) 609#define OMAP4430_LOSTMEM_GFX_MEM_MASK BITFIELD(8, 8)
610 610
611/* Used by RM_IVAHD_IVAHD_CONTEXT */ 611/* Used by RM_IVAHD_IVAHD_CONTEXT */
612#define OMAP4430_LOSTMEM_HWA_MEM_SHIFT (1 << 10) 612#define OMAP4430_LOSTMEM_HWA_MEM_SHIFT 10
613#define OMAP4430_LOSTMEM_HWA_MEM_MASK BITFIELD(10, 10) 613#define OMAP4430_LOSTMEM_HWA_MEM_MASK BITFIELD(10, 10)
614 614
615/* 615/*
@@ -619,19 +619,19 @@
619 * RM_L3INIT_TPPSS_CONTEXT, RM_L3INIT_UNIPRO1_CONTEXT, 619 * RM_L3INIT_TPPSS_CONTEXT, RM_L3INIT_UNIPRO1_CONTEXT,
620 * RM_L3INIT_USB_OTG_CONTEXT, RM_L3INIT_XHPI_CONTEXT 620 * RM_L3INIT_USB_OTG_CONTEXT, RM_L3INIT_XHPI_CONTEXT
621 */ 621 */
622#define OMAP4430_LOSTMEM_L3INIT_BANK1_SHIFT (1 << 8) 622#define OMAP4430_LOSTMEM_L3INIT_BANK1_SHIFT 8
623#define OMAP4430_LOSTMEM_L3INIT_BANK1_MASK BITFIELD(8, 8) 623#define OMAP4430_LOSTMEM_L3INIT_BANK1_MASK BITFIELD(8, 8)
624 624
625/* Used by RM_MPU_MPU_CONTEXT */ 625/* Used by RM_MPU_MPU_CONTEXT */
626#define OMAP4430_LOSTMEM_MPU_L1_SHIFT (1 << 8) 626#define OMAP4430_LOSTMEM_MPU_L1_SHIFT 8
627#define OMAP4430_LOSTMEM_MPU_L1_MASK BITFIELD(8, 8) 627#define OMAP4430_LOSTMEM_MPU_L1_MASK BITFIELD(8, 8)
628 628
629/* Used by RM_MPU_MPU_CONTEXT */ 629/* Used by RM_MPU_MPU_CONTEXT */
630#define OMAP4430_LOSTMEM_MPU_L2_SHIFT (1 << 9) 630#define OMAP4430_LOSTMEM_MPU_L2_SHIFT 9
631#define OMAP4430_LOSTMEM_MPU_L2_MASK BITFIELD(9, 9) 631#define OMAP4430_LOSTMEM_MPU_L2_MASK BITFIELD(9, 9)
632 632
633/* Used by RM_MPU_MPU_CONTEXT */ 633/* Used by RM_MPU_MPU_CONTEXT */
634#define OMAP4430_LOSTMEM_MPU_RAM_SHIFT (1 << 10) 634#define OMAP4430_LOSTMEM_MPU_RAM_SHIFT 10
635#define OMAP4430_LOSTMEM_MPU_RAM_MASK BITFIELD(10, 10) 635#define OMAP4430_LOSTMEM_MPU_RAM_MASK BITFIELD(10, 10)
636 636
637/* 637/*
@@ -639,14 +639,14 @@
639 * RM_L4PER_MCBSP4_CONTEXT, RM_L4PER_MMCSD3_CONTEXT, RM_L4PER_MMCSD4_CONTEXT, 639 * RM_L4PER_MCBSP4_CONTEXT, RM_L4PER_MMCSD3_CONTEXT, RM_L4PER_MMCSD4_CONTEXT,
640 * RM_L4PER_MMCSD5_CONTEXT, RM_L4PER_SLIMBUS2_CONTEXT, RM_L4SEC_PKAEIP29_CONTEXT 640 * RM_L4PER_MMCSD5_CONTEXT, RM_L4PER_SLIMBUS2_CONTEXT, RM_L4SEC_PKAEIP29_CONTEXT
641 */ 641 */
642#define OMAP4430_LOSTMEM_NONRETAINED_BANK_SHIFT (1 << 8) 642#define OMAP4430_LOSTMEM_NONRETAINED_BANK_SHIFT 8
643#define OMAP4430_LOSTMEM_NONRETAINED_BANK_MASK BITFIELD(8, 8) 643#define OMAP4430_LOSTMEM_NONRETAINED_BANK_MASK BITFIELD(8, 8)
644 644
645/* 645/*
646 * Used by RM_ABE_DMIC_CONTEXT, RM_ABE_MCBSP1_CONTEXT, RM_ABE_MCBSP2_CONTEXT, 646 * Used by RM_ABE_DMIC_CONTEXT, RM_ABE_MCBSP1_CONTEXT, RM_ABE_MCBSP2_CONTEXT,
647 * RM_ABE_MCBSP3_CONTEXT, RM_ABE_PDM_CONTEXT, RM_ABE_SLIMBUS_CONTEXT 647 * RM_ABE_MCBSP3_CONTEXT, RM_ABE_PDM_CONTEXT, RM_ABE_SLIMBUS_CONTEXT
648 */ 648 */
649#define OMAP4430_LOSTMEM_PERIHPMEM_SHIFT (1 << 8) 649#define OMAP4430_LOSTMEM_PERIHPMEM_SHIFT 8
650#define OMAP4430_LOSTMEM_PERIHPMEM_MASK BITFIELD(8, 8) 650#define OMAP4430_LOSTMEM_PERIHPMEM_MASK BITFIELD(8, 8)
651 651
652/* 652/*
@@ -654,35 +654,35 @@
654 * RM_L4PER_UART2_CONTEXT, RM_L4PER_UART3_CONTEXT, RM_L4PER_UART4_CONTEXT, 654 * RM_L4PER_UART2_CONTEXT, RM_L4PER_UART3_CONTEXT, RM_L4PER_UART4_CONTEXT,
655 * RM_L4SEC_CRYPTODMA_CONTEXT 655 * RM_L4SEC_CRYPTODMA_CONTEXT
656 */ 656 */
657#define OMAP4430_LOSTMEM_RETAINED_BANK_SHIFT (1 << 8) 657#define OMAP4430_LOSTMEM_RETAINED_BANK_SHIFT 8
658#define OMAP4430_LOSTMEM_RETAINED_BANK_MASK BITFIELD(8, 8) 658#define OMAP4430_LOSTMEM_RETAINED_BANK_MASK BITFIELD(8, 8)
659 659
660/* Used by RM_IVAHD_SL2_CONTEXT */ 660/* Used by RM_IVAHD_SL2_CONTEXT */
661#define OMAP4430_LOSTMEM_SL2_MEM_SHIFT (1 << 8) 661#define OMAP4430_LOSTMEM_SL2_MEM_SHIFT 8
662#define OMAP4430_LOSTMEM_SL2_MEM_MASK BITFIELD(8, 8) 662#define OMAP4430_LOSTMEM_SL2_MEM_MASK BITFIELD(8, 8)
663 663
664/* Used by RM_IVAHD_IVAHD_CONTEXT */ 664/* Used by RM_IVAHD_IVAHD_CONTEXT */
665#define OMAP4430_LOSTMEM_TCM1_MEM_SHIFT (1 << 8) 665#define OMAP4430_LOSTMEM_TCM1_MEM_SHIFT 8
666#define OMAP4430_LOSTMEM_TCM1_MEM_MASK BITFIELD(8, 8) 666#define OMAP4430_LOSTMEM_TCM1_MEM_MASK BITFIELD(8, 8)
667 667
668/* Used by RM_IVAHD_IVAHD_CONTEXT */ 668/* Used by RM_IVAHD_IVAHD_CONTEXT */
669#define OMAP4430_LOSTMEM_TCM2_MEM_SHIFT (1 << 9) 669#define OMAP4430_LOSTMEM_TCM2_MEM_SHIFT 9
670#define OMAP4430_LOSTMEM_TCM2_MEM_MASK BITFIELD(9, 9) 670#define OMAP4430_LOSTMEM_TCM2_MEM_MASK BITFIELD(9, 9)
671 671
672/* Used by RM_TESLA_TESLA_CONTEXT */ 672/* Used by RM_TESLA_TESLA_CONTEXT */
673#define OMAP4430_LOSTMEM_TESLA_EDMA_SHIFT (1 << 10) 673#define OMAP4430_LOSTMEM_TESLA_EDMA_SHIFT 10
674#define OMAP4430_LOSTMEM_TESLA_EDMA_MASK BITFIELD(10, 10) 674#define OMAP4430_LOSTMEM_TESLA_EDMA_MASK BITFIELD(10, 10)
675 675
676/* Used by RM_TESLA_TESLA_CONTEXT */ 676/* Used by RM_TESLA_TESLA_CONTEXT */
677#define OMAP4430_LOSTMEM_TESLA_L1_SHIFT (1 << 8) 677#define OMAP4430_LOSTMEM_TESLA_L1_SHIFT 8
678#define OMAP4430_LOSTMEM_TESLA_L1_MASK BITFIELD(8, 8) 678#define OMAP4430_LOSTMEM_TESLA_L1_MASK BITFIELD(8, 8)
679 679
680/* Used by RM_TESLA_TESLA_CONTEXT */ 680/* Used by RM_TESLA_TESLA_CONTEXT */
681#define OMAP4430_LOSTMEM_TESLA_L2_SHIFT (1 << 9) 681#define OMAP4430_LOSTMEM_TESLA_L2_SHIFT 9
682#define OMAP4430_LOSTMEM_TESLA_L2_MASK BITFIELD(9, 9) 682#define OMAP4430_LOSTMEM_TESLA_L2_MASK BITFIELD(9, 9)
683 683
684/* Used by RM_WKUP_SARRAM_CONTEXT */ 684/* Used by RM_WKUP_SARRAM_CONTEXT */
685#define OMAP4430_LOSTMEM_WKUP_BANK_SHIFT (1 << 8) 685#define OMAP4430_LOSTMEM_WKUP_BANK_SHIFT 8
686#define OMAP4430_LOSTMEM_WKUP_BANK_MASK BITFIELD(8, 8) 686#define OMAP4430_LOSTMEM_WKUP_BANK_MASK BITFIELD(8, 8)
687 687
688/* 688/*
@@ -690,164 +690,164 @@
690 * PM_ABE_PWRSTCTRL, PM_GFX_PWRSTCTRL, PM_MPU_PWRSTCTRL, PM_CEFUSE_PWRSTCTRL, 690 * PM_ABE_PWRSTCTRL, PM_GFX_PWRSTCTRL, PM_MPU_PWRSTCTRL, PM_CEFUSE_PWRSTCTRL,
691 * PM_DSS_PWRSTCTRL, PM_L4PER_PWRSTCTRL, PM_TESLA_PWRSTCTRL, PM_IVAHD_PWRSTCTRL 691 * PM_DSS_PWRSTCTRL, PM_L4PER_PWRSTCTRL, PM_TESLA_PWRSTCTRL, PM_IVAHD_PWRSTCTRL
692 */ 692 */
693#define OMAP4430_LOWPOWERSTATECHANGE_SHIFT (1 << 4) 693#define OMAP4430_LOWPOWERSTATECHANGE_SHIFT 4
694#define OMAP4430_LOWPOWERSTATECHANGE_MASK BITFIELD(4, 4) 694#define OMAP4430_LOWPOWERSTATECHANGE_MASK BITFIELD(4, 4)
695 695
696/* Used by PM_CORE_PWRSTCTRL */ 696/* Used by PM_CORE_PWRSTCTRL */
697#define OMAP4430_MEMORYCHANGE_SHIFT (1 << 3) 697#define OMAP4430_MEMORYCHANGE_SHIFT 3
698#define OMAP4430_MEMORYCHANGE_MASK BITFIELD(3, 3) 698#define OMAP4430_MEMORYCHANGE_MASK BITFIELD(3, 3)
699 699
700/* Used by PRM_MODEM_IF_CTRL */ 700/* Used by PRM_MODEM_IF_CTRL */
701#define OMAP4430_MODEM_READY_SHIFT (1 << 1) 701#define OMAP4430_MODEM_READY_SHIFT 1
702#define OMAP4430_MODEM_READY_MASK BITFIELD(1, 1) 702#define OMAP4430_MODEM_READY_MASK BITFIELD(1, 1)
703 703
704/* Used by PRM_MODEM_IF_CTRL */ 704/* Used by PRM_MODEM_IF_CTRL */
705#define OMAP4430_MODEM_SHUTDOWN_IRQ_SHIFT (1 << 9) 705#define OMAP4430_MODEM_SHUTDOWN_IRQ_SHIFT 9
706#define OMAP4430_MODEM_SHUTDOWN_IRQ_MASK BITFIELD(9, 9) 706#define OMAP4430_MODEM_SHUTDOWN_IRQ_MASK BITFIELD(9, 9)
707 707
708/* Used by PRM_MODEM_IF_CTRL */ 708/* Used by PRM_MODEM_IF_CTRL */
709#define OMAP4430_MODEM_SLEEP_ST_SHIFT (1 << 16) 709#define OMAP4430_MODEM_SLEEP_ST_SHIFT 16
710#define OMAP4430_MODEM_SLEEP_ST_MASK BITFIELD(16, 16) 710#define OMAP4430_MODEM_SLEEP_ST_MASK BITFIELD(16, 16)
711 711
712/* Used by PRM_MODEM_IF_CTRL */ 712/* Used by PRM_MODEM_IF_CTRL */
713#define OMAP4430_MODEM_WAKE_IRQ_SHIFT (1 << 8) 713#define OMAP4430_MODEM_WAKE_IRQ_SHIFT 8
714#define OMAP4430_MODEM_WAKE_IRQ_MASK BITFIELD(8, 8) 714#define OMAP4430_MODEM_WAKE_IRQ_MASK BITFIELD(8, 8)
715 715
716/* Used by PM_MPU_PWRSTCTRL */ 716/* Used by PM_MPU_PWRSTCTRL */
717#define OMAP4430_MPU_L1_ONSTATE_SHIFT (1 << 16) 717#define OMAP4430_MPU_L1_ONSTATE_SHIFT 16
718#define OMAP4430_MPU_L1_ONSTATE_MASK BITFIELD(16, 17) 718#define OMAP4430_MPU_L1_ONSTATE_MASK BITFIELD(16, 17)
719 719
720/* Used by PM_MPU_PWRSTCTRL */ 720/* Used by PM_MPU_PWRSTCTRL */
721#define OMAP4430_MPU_L1_RETSTATE_SHIFT (1 << 8) 721#define OMAP4430_MPU_L1_RETSTATE_SHIFT 8
722#define OMAP4430_MPU_L1_RETSTATE_MASK BITFIELD(8, 8) 722#define OMAP4430_MPU_L1_RETSTATE_MASK BITFIELD(8, 8)
723 723
724/* Used by PM_MPU_PWRSTST */ 724/* Used by PM_MPU_PWRSTST */
725#define OMAP4430_MPU_L1_STATEST_SHIFT (1 << 4) 725#define OMAP4430_MPU_L1_STATEST_SHIFT 4
726#define OMAP4430_MPU_L1_STATEST_MASK BITFIELD(4, 5) 726#define OMAP4430_MPU_L1_STATEST_MASK BITFIELD(4, 5)
727 727
728/* Used by PM_MPU_PWRSTCTRL */ 728/* Used by PM_MPU_PWRSTCTRL */
729#define OMAP4430_MPU_L2_ONSTATE_SHIFT (1 << 18) 729#define OMAP4430_MPU_L2_ONSTATE_SHIFT 18
730#define OMAP4430_MPU_L2_ONSTATE_MASK BITFIELD(18, 19) 730#define OMAP4430_MPU_L2_ONSTATE_MASK BITFIELD(18, 19)
731 731
732/* Used by PM_MPU_PWRSTCTRL */ 732/* Used by PM_MPU_PWRSTCTRL */
733#define OMAP4430_MPU_L2_RETSTATE_SHIFT (1 << 9) 733#define OMAP4430_MPU_L2_RETSTATE_SHIFT 9
734#define OMAP4430_MPU_L2_RETSTATE_MASK BITFIELD(9, 9) 734#define OMAP4430_MPU_L2_RETSTATE_MASK BITFIELD(9, 9)
735 735
736/* Used by PM_MPU_PWRSTST */ 736/* Used by PM_MPU_PWRSTST */
737#define OMAP4430_MPU_L2_STATEST_SHIFT (1 << 6) 737#define OMAP4430_MPU_L2_STATEST_SHIFT 6
738#define OMAP4430_MPU_L2_STATEST_MASK BITFIELD(6, 7) 738#define OMAP4430_MPU_L2_STATEST_MASK BITFIELD(6, 7)
739 739
740/* Used by PM_MPU_PWRSTCTRL */ 740/* Used by PM_MPU_PWRSTCTRL */
741#define OMAP4430_MPU_RAM_ONSTATE_SHIFT (1 << 20) 741#define OMAP4430_MPU_RAM_ONSTATE_SHIFT 20
742#define OMAP4430_MPU_RAM_ONSTATE_MASK BITFIELD(20, 21) 742#define OMAP4430_MPU_RAM_ONSTATE_MASK BITFIELD(20, 21)
743 743
744/* Used by PM_MPU_PWRSTCTRL */ 744/* Used by PM_MPU_PWRSTCTRL */
745#define OMAP4430_MPU_RAM_RETSTATE_SHIFT (1 << 10) 745#define OMAP4430_MPU_RAM_RETSTATE_SHIFT 10
746#define OMAP4430_MPU_RAM_RETSTATE_MASK BITFIELD(10, 10) 746#define OMAP4430_MPU_RAM_RETSTATE_MASK BITFIELD(10, 10)
747 747
748/* Used by PM_MPU_PWRSTST */ 748/* Used by PM_MPU_PWRSTST */
749#define OMAP4430_MPU_RAM_STATEST_SHIFT (1 << 8) 749#define OMAP4430_MPU_RAM_STATEST_SHIFT 8
750#define OMAP4430_MPU_RAM_STATEST_MASK BITFIELD(8, 9) 750#define OMAP4430_MPU_RAM_STATEST_MASK BITFIELD(8, 9)
751 751
752/* Used by PRM_RSTST */ 752/* Used by PRM_RSTST */
753#define OMAP4430_MPU_SECURITY_VIOL_RST_SHIFT (1 << 2) 753#define OMAP4430_MPU_SECURITY_VIOL_RST_SHIFT 2
754#define OMAP4430_MPU_SECURITY_VIOL_RST_MASK BITFIELD(2, 2) 754#define OMAP4430_MPU_SECURITY_VIOL_RST_MASK BITFIELD(2, 2)
755 755
756/* Used by PRM_RSTST */ 756/* Used by PRM_RSTST */
757#define OMAP4430_MPU_WDT_RST_SHIFT (1 << 3) 757#define OMAP4430_MPU_WDT_RST_SHIFT 3
758#define OMAP4430_MPU_WDT_RST_MASK BITFIELD(3, 3) 758#define OMAP4430_MPU_WDT_RST_MASK BITFIELD(3, 3)
759 759
760/* Used by PM_L4PER_PWRSTCTRL */ 760/* Used by PM_L4PER_PWRSTCTRL */
761#define OMAP4430_NONRETAINED_BANK_ONSTATE_SHIFT (1 << 18) 761#define OMAP4430_NONRETAINED_BANK_ONSTATE_SHIFT 18
762#define OMAP4430_NONRETAINED_BANK_ONSTATE_MASK BITFIELD(18, 19) 762#define OMAP4430_NONRETAINED_BANK_ONSTATE_MASK BITFIELD(18, 19)
763 763
764/* Used by PM_L4PER_PWRSTCTRL */ 764/* Used by PM_L4PER_PWRSTCTRL */
765#define OMAP4430_NONRETAINED_BANK_RETSTATE_SHIFT (1 << 9) 765#define OMAP4430_NONRETAINED_BANK_RETSTATE_SHIFT 9
766#define OMAP4430_NONRETAINED_BANK_RETSTATE_MASK BITFIELD(9, 9) 766#define OMAP4430_NONRETAINED_BANK_RETSTATE_MASK BITFIELD(9, 9)
767 767
768/* Used by PM_L4PER_PWRSTST */ 768/* Used by PM_L4PER_PWRSTST */
769#define OMAP4430_NONRETAINED_BANK_STATEST_SHIFT (1 << 6) 769#define OMAP4430_NONRETAINED_BANK_STATEST_SHIFT 6
770#define OMAP4430_NONRETAINED_BANK_STATEST_MASK BITFIELD(6, 7) 770#define OMAP4430_NONRETAINED_BANK_STATEST_MASK BITFIELD(6, 7)
771 771
772/* Used by PM_CORE_PWRSTCTRL */ 772/* Used by PM_CORE_PWRSTCTRL */
773#define OMAP4430_OCP_NRET_BANK_ONSTATE_SHIFT (1 << 24) 773#define OMAP4430_OCP_NRET_BANK_ONSTATE_SHIFT 24
774#define OMAP4430_OCP_NRET_BANK_ONSTATE_MASK BITFIELD(24, 25) 774#define OMAP4430_OCP_NRET_BANK_ONSTATE_MASK BITFIELD(24, 25)
775 775
776/* Used by PM_CORE_PWRSTCTRL */ 776/* Used by PM_CORE_PWRSTCTRL */
777#define OMAP4430_OCP_NRET_BANK_RETSTATE_SHIFT (1 << 12) 777#define OMAP4430_OCP_NRET_BANK_RETSTATE_SHIFT 12
778#define OMAP4430_OCP_NRET_BANK_RETSTATE_MASK BITFIELD(12, 12) 778#define OMAP4430_OCP_NRET_BANK_RETSTATE_MASK BITFIELD(12, 12)
779 779
780/* Used by PM_CORE_PWRSTST */ 780/* Used by PM_CORE_PWRSTST */
781#define OMAP4430_OCP_NRET_BANK_STATEST_SHIFT (1 << 12) 781#define OMAP4430_OCP_NRET_BANK_STATEST_SHIFT 12
782#define OMAP4430_OCP_NRET_BANK_STATEST_MASK BITFIELD(12, 13) 782#define OMAP4430_OCP_NRET_BANK_STATEST_MASK BITFIELD(12, 13)
783 783
784/* 784/*
785 * Used by PRM_VC_VAL_CMD_VDD_CORE_L, PRM_VC_VAL_CMD_VDD_IVA_L, 785 * Used by PRM_VC_VAL_CMD_VDD_CORE_L, PRM_VC_VAL_CMD_VDD_IVA_L,
786 * PRM_VC_VAL_CMD_VDD_MPU_L 786 * PRM_VC_VAL_CMD_VDD_MPU_L
787 */ 787 */
788#define OMAP4430_OFF_SHIFT (1 << 0) 788#define OMAP4430_OFF_SHIFT 0
789#define OMAP4430_OFF_MASK BITFIELD(0, 7) 789#define OMAP4430_OFF_MASK BITFIELD(0, 7)
790 790
791/* Used by PRM_LDO_BANDGAP_CTRL */ 791/* Used by PRM_LDO_BANDGAP_CTRL */
792#define OMAP4430_OFF_ENABLE_SHIFT (1 << 0) 792#define OMAP4430_OFF_ENABLE_SHIFT 0
793#define OMAP4430_OFF_ENABLE_MASK BITFIELD(0, 0) 793#define OMAP4430_OFF_ENABLE_MASK BITFIELD(0, 0)
794 794
795/* 795/*
796 * Used by PRM_VC_VAL_CMD_VDD_CORE_L, PRM_VC_VAL_CMD_VDD_IVA_L, 796 * Used by PRM_VC_VAL_CMD_VDD_CORE_L, PRM_VC_VAL_CMD_VDD_IVA_L,
797 * PRM_VC_VAL_CMD_VDD_MPU_L 797 * PRM_VC_VAL_CMD_VDD_MPU_L
798 */ 798 */
799#define OMAP4430_ON_SHIFT (1 << 24) 799#define OMAP4430_ON_SHIFT 24
800#define OMAP4430_ON_MASK BITFIELD(24, 31) 800#define OMAP4430_ON_MASK BITFIELD(24, 31)
801 801
802/* 802/*
803 * Used by PRM_VC_VAL_CMD_VDD_CORE_L, PRM_VC_VAL_CMD_VDD_IVA_L, 803 * Used by PRM_VC_VAL_CMD_VDD_CORE_L, PRM_VC_VAL_CMD_VDD_IVA_L,
804 * PRM_VC_VAL_CMD_VDD_MPU_L 804 * PRM_VC_VAL_CMD_VDD_MPU_L
805 */ 805 */
806#define OMAP4430_ONLP_SHIFT (1 << 16) 806#define OMAP4430_ONLP_SHIFT 16
807#define OMAP4430_ONLP_MASK BITFIELD(16, 23) 807#define OMAP4430_ONLP_MASK BITFIELD(16, 23)
808 808
809/* Used by PRM_LDO_ABB_IVA_CTRL, PRM_LDO_ABB_MPU_CTRL */ 809/* Used by PRM_LDO_ABB_IVA_CTRL, PRM_LDO_ABB_MPU_CTRL */
810#define OMAP4430_OPP_CHANGE_SHIFT (1 << 2) 810#define OMAP4430_OPP_CHANGE_SHIFT 2
811#define OMAP4430_OPP_CHANGE_MASK BITFIELD(2, 2) 811#define OMAP4430_OPP_CHANGE_MASK BITFIELD(2, 2)
812 812
813/* Used by PRM_LDO_ABB_IVA_CTRL, PRM_LDO_ABB_MPU_CTRL */ 813/* Used by PRM_LDO_ABB_IVA_CTRL, PRM_LDO_ABB_MPU_CTRL */
814#define OMAP4430_OPP_SEL_SHIFT (1 << 0) 814#define OMAP4430_OPP_SEL_SHIFT 0
815#define OMAP4430_OPP_SEL_MASK BITFIELD(0, 1) 815#define OMAP4430_OPP_SEL_MASK BITFIELD(0, 1)
816 816
817/* Used by PRM_SRAM_COUNT */ 817/* Used by PRM_SRAM_COUNT */
818#define OMAP4430_PCHARGECNT_VALUE_SHIFT (1 << 0) 818#define OMAP4430_PCHARGECNT_VALUE_SHIFT 0
819#define OMAP4430_PCHARGECNT_VALUE_MASK BITFIELD(0, 5) 819#define OMAP4430_PCHARGECNT_VALUE_MASK BITFIELD(0, 5)
820 820
821/* Used by PRM_PSCON_COUNT */ 821/* Used by PRM_PSCON_COUNT */
822#define OMAP4430_PCHARGE_TIME_SHIFT (1 << 0) 822#define OMAP4430_PCHARGE_TIME_SHIFT 0
823#define OMAP4430_PCHARGE_TIME_MASK BITFIELD(0, 7) 823#define OMAP4430_PCHARGE_TIME_MASK BITFIELD(0, 7)
824 824
825/* Used by PM_ABE_PWRSTCTRL */ 825/* Used by PM_ABE_PWRSTCTRL */
826#define OMAP4430_PERIPHMEM_ONSTATE_SHIFT (1 << 20) 826#define OMAP4430_PERIPHMEM_ONSTATE_SHIFT 20
827#define OMAP4430_PERIPHMEM_ONSTATE_MASK BITFIELD(20, 21) 827#define OMAP4430_PERIPHMEM_ONSTATE_MASK BITFIELD(20, 21)
828 828
829/* Used by PM_ABE_PWRSTCTRL */ 829/* Used by PM_ABE_PWRSTCTRL */
830#define OMAP4430_PERIPHMEM_RETSTATE_SHIFT (1 << 10) 830#define OMAP4430_PERIPHMEM_RETSTATE_SHIFT 10
831#define OMAP4430_PERIPHMEM_RETSTATE_MASK BITFIELD(10, 10) 831#define OMAP4430_PERIPHMEM_RETSTATE_MASK BITFIELD(10, 10)
832 832
833/* Used by PM_ABE_PWRSTST */ 833/* Used by PM_ABE_PWRSTST */
834#define OMAP4430_PERIPHMEM_STATEST_SHIFT (1 << 8) 834#define OMAP4430_PERIPHMEM_STATEST_SHIFT 8
835#define OMAP4430_PERIPHMEM_STATEST_MASK BITFIELD(8, 9) 835#define OMAP4430_PERIPHMEM_STATEST_MASK BITFIELD(8, 9)
836 836
837/* Used by PRM_PHASE1_CNDP */ 837/* Used by PRM_PHASE1_CNDP */
838#define OMAP4430_PHASE1_CNDP_SHIFT (1 << 0) 838#define OMAP4430_PHASE1_CNDP_SHIFT 0
839#define OMAP4430_PHASE1_CNDP_MASK BITFIELD(0, 31) 839#define OMAP4430_PHASE1_CNDP_MASK BITFIELD(0, 31)
840 840
841/* Used by PRM_PHASE2A_CNDP */ 841/* Used by PRM_PHASE2A_CNDP */
842#define OMAP4430_PHASE2A_CNDP_SHIFT (1 << 0) 842#define OMAP4430_PHASE2A_CNDP_SHIFT 0
843#define OMAP4430_PHASE2A_CNDP_MASK BITFIELD(0, 31) 843#define OMAP4430_PHASE2A_CNDP_MASK BITFIELD(0, 31)
844 844
845/* Used by PRM_PHASE2B_CNDP */ 845/* Used by PRM_PHASE2B_CNDP */
846#define OMAP4430_PHASE2B_CNDP_SHIFT (1 << 0) 846#define OMAP4430_PHASE2B_CNDP_SHIFT 0
847#define OMAP4430_PHASE2B_CNDP_MASK BITFIELD(0, 31) 847#define OMAP4430_PHASE2B_CNDP_MASK BITFIELD(0, 31)
848 848
849/* Used by PRM_PSCON_COUNT */ 849/* Used by PRM_PSCON_COUNT */
850#define OMAP4430_PONOUT_2_PGOODIN_TIME_SHIFT (1 << 8) 850#define OMAP4430_PONOUT_2_PGOODIN_TIME_SHIFT 8
851#define OMAP4430_PONOUT_2_PGOODIN_TIME_MASK BITFIELD(8, 15) 851#define OMAP4430_PONOUT_2_PGOODIN_TIME_MASK BITFIELD(8, 15)
852 852
853/* 853/*
@@ -856,7 +856,7 @@
856 * PM_CEFUSE_PWRSTCTRL, PM_DSS_PWRSTCTRL, PM_L4PER_PWRSTCTRL, 856 * PM_CEFUSE_PWRSTCTRL, PM_DSS_PWRSTCTRL, PM_L4PER_PWRSTCTRL,
857 * PM_TESLA_PWRSTCTRL, PM_IVAHD_PWRSTCTRL 857 * PM_TESLA_PWRSTCTRL, PM_IVAHD_PWRSTCTRL
858 */ 858 */
859#define OMAP4430_POWERSTATE_SHIFT (1 << 0) 859#define OMAP4430_POWERSTATE_SHIFT 0
860#define OMAP4430_POWERSTATE_MASK BITFIELD(0, 1) 860#define OMAP4430_POWERSTATE_MASK BITFIELD(0, 1)
861 861
862/* 862/*
@@ -864,35 +864,35 @@
864 * PM_ABE_PWRSTST, PM_GFX_PWRSTST, PM_MPU_PWRSTST, PM_CEFUSE_PWRSTST, 864 * PM_ABE_PWRSTST, PM_GFX_PWRSTST, PM_MPU_PWRSTST, PM_CEFUSE_PWRSTST,
865 * PM_DSS_PWRSTST, PM_L4PER_PWRSTST, PM_TESLA_PWRSTST, PM_IVAHD_PWRSTST 865 * PM_DSS_PWRSTST, PM_L4PER_PWRSTST, PM_TESLA_PWRSTST, PM_IVAHD_PWRSTST
866 */ 866 */
867#define OMAP4430_POWERSTATEST_SHIFT (1 << 0) 867#define OMAP4430_POWERSTATEST_SHIFT 0
868#define OMAP4430_POWERSTATEST_MASK BITFIELD(0, 1) 868#define OMAP4430_POWERSTATEST_MASK BITFIELD(0, 1)
869 869
870/* Used by PRM_PWRREQCTRL */ 870/* Used by PRM_PWRREQCTRL */
871#define OMAP4430_PWRREQ_COND_SHIFT (1 << 0) 871#define OMAP4430_PWRREQ_COND_SHIFT 0
872#define OMAP4430_PWRREQ_COND_MASK BITFIELD(0, 1) 872#define OMAP4430_PWRREQ_COND_MASK BITFIELD(0, 1)
873 873
874/* Used by PRM_VC_CFG_CHANNEL */ 874/* Used by PRM_VC_CFG_CHANNEL */
875#define OMAP4430_RACEN_VDD_CORE_L_SHIFT (1 << 3) 875#define OMAP4430_RACEN_VDD_CORE_L_SHIFT 3
876#define OMAP4430_RACEN_VDD_CORE_L_MASK BITFIELD(3, 3) 876#define OMAP4430_RACEN_VDD_CORE_L_MASK BITFIELD(3, 3)
877 877
878/* Used by PRM_VC_CFG_CHANNEL */ 878/* Used by PRM_VC_CFG_CHANNEL */
879#define OMAP4430_RACEN_VDD_IVA_L_SHIFT (1 << 11) 879#define OMAP4430_RACEN_VDD_IVA_L_SHIFT 11
880#define OMAP4430_RACEN_VDD_IVA_L_MASK BITFIELD(11, 11) 880#define OMAP4430_RACEN_VDD_IVA_L_MASK BITFIELD(11, 11)
881 881
882/* Used by PRM_VC_CFG_CHANNEL */ 882/* Used by PRM_VC_CFG_CHANNEL */
883#define OMAP4430_RACEN_VDD_MPU_L_SHIFT (1 << 20) 883#define OMAP4430_RACEN_VDD_MPU_L_SHIFT 20
884#define OMAP4430_RACEN_VDD_MPU_L_MASK BITFIELD(20, 20) 884#define OMAP4430_RACEN_VDD_MPU_L_MASK BITFIELD(20, 20)
885 885
886/* Used by PRM_VC_CFG_CHANNEL */ 886/* Used by PRM_VC_CFG_CHANNEL */
887#define OMAP4430_RAC_VDD_CORE_L_SHIFT (1 << 2) 887#define OMAP4430_RAC_VDD_CORE_L_SHIFT 2
888#define OMAP4430_RAC_VDD_CORE_L_MASK BITFIELD(2, 2) 888#define OMAP4430_RAC_VDD_CORE_L_MASK BITFIELD(2, 2)
889 889
890/* Used by PRM_VC_CFG_CHANNEL */ 890/* Used by PRM_VC_CFG_CHANNEL */
891#define OMAP4430_RAC_VDD_IVA_L_SHIFT (1 << 10) 891#define OMAP4430_RAC_VDD_IVA_L_SHIFT 10
892#define OMAP4430_RAC_VDD_IVA_L_MASK BITFIELD(10, 10) 892#define OMAP4430_RAC_VDD_IVA_L_MASK BITFIELD(10, 10)
893 893
894/* Used by PRM_VC_CFG_CHANNEL */ 894/* Used by PRM_VC_CFG_CHANNEL */
895#define OMAP4430_RAC_VDD_MPU_L_SHIFT (1 << 19) 895#define OMAP4430_RAC_VDD_MPU_L_SHIFT 19
896#define OMAP4430_RAC_VDD_MPU_L_MASK BITFIELD(19, 19) 896#define OMAP4430_RAC_VDD_MPU_L_MASK BITFIELD(19, 19)
897 897
898/* 898/*
@@ -900,7 +900,7 @@
900 * PRM_VOLTSETUP_IVA_OFF, PRM_VOLTSETUP_IVA_RET_SLEEP, PRM_VOLTSETUP_MPU_OFF, 900 * PRM_VOLTSETUP_IVA_OFF, PRM_VOLTSETUP_IVA_RET_SLEEP, PRM_VOLTSETUP_MPU_OFF,
901 * PRM_VOLTSETUP_MPU_RET_SLEEP 901 * PRM_VOLTSETUP_MPU_RET_SLEEP
902 */ 902 */
903#define OMAP4430_RAMP_DOWN_COUNT_SHIFT (1 << 16) 903#define OMAP4430_RAMP_DOWN_COUNT_SHIFT 16
904#define OMAP4430_RAMP_DOWN_COUNT_MASK BITFIELD(16, 21) 904#define OMAP4430_RAMP_DOWN_COUNT_MASK BITFIELD(16, 21)
905 905
906/* 906/*
@@ -908,7 +908,7 @@
908 * PRM_VOLTSETUP_IVA_OFF, PRM_VOLTSETUP_IVA_RET_SLEEP, PRM_VOLTSETUP_MPU_OFF, 908 * PRM_VOLTSETUP_IVA_OFF, PRM_VOLTSETUP_IVA_RET_SLEEP, PRM_VOLTSETUP_MPU_OFF,
909 * PRM_VOLTSETUP_MPU_RET_SLEEP 909 * PRM_VOLTSETUP_MPU_RET_SLEEP
910 */ 910 */
911#define OMAP4430_RAMP_DOWN_PRESCAL_SHIFT (1 << 24) 911#define OMAP4430_RAMP_DOWN_PRESCAL_SHIFT 24
912#define OMAP4430_RAMP_DOWN_PRESCAL_MASK BITFIELD(24, 25) 912#define OMAP4430_RAMP_DOWN_PRESCAL_MASK BITFIELD(24, 25)
913 913
914/* 914/*
@@ -916,7 +916,7 @@
916 * PRM_VOLTSETUP_IVA_OFF, PRM_VOLTSETUP_IVA_RET_SLEEP, PRM_VOLTSETUP_MPU_OFF, 916 * PRM_VOLTSETUP_IVA_OFF, PRM_VOLTSETUP_IVA_RET_SLEEP, PRM_VOLTSETUP_MPU_OFF,
917 * PRM_VOLTSETUP_MPU_RET_SLEEP 917 * PRM_VOLTSETUP_MPU_RET_SLEEP
918 */ 918 */
919#define OMAP4430_RAMP_UP_COUNT_SHIFT (1 << 0) 919#define OMAP4430_RAMP_UP_COUNT_SHIFT 0
920#define OMAP4430_RAMP_UP_COUNT_MASK BITFIELD(0, 5) 920#define OMAP4430_RAMP_UP_COUNT_MASK BITFIELD(0, 5)
921 921
922/* 922/*
@@ -924,1282 +924,1282 @@
924 * PRM_VOLTSETUP_IVA_OFF, PRM_VOLTSETUP_IVA_RET_SLEEP, PRM_VOLTSETUP_MPU_OFF, 924 * PRM_VOLTSETUP_IVA_OFF, PRM_VOLTSETUP_IVA_RET_SLEEP, PRM_VOLTSETUP_MPU_OFF,
925 * PRM_VOLTSETUP_MPU_RET_SLEEP 925 * PRM_VOLTSETUP_MPU_RET_SLEEP
926 */ 926 */
927#define OMAP4430_RAMP_UP_PRESCAL_SHIFT (1 << 8) 927#define OMAP4430_RAMP_UP_PRESCAL_SHIFT 8
928#define OMAP4430_RAMP_UP_PRESCAL_MASK BITFIELD(8, 9) 928#define OMAP4430_RAMP_UP_PRESCAL_MASK BITFIELD(8, 9)
929 929
930/* Used by PRM_VC_CFG_CHANNEL */ 930/* Used by PRM_VC_CFG_CHANNEL */
931#define OMAP4430_RAV_VDD_CORE_L_SHIFT (1 << 1) 931#define OMAP4430_RAV_VDD_CORE_L_SHIFT 1
932#define OMAP4430_RAV_VDD_CORE_L_MASK BITFIELD(1, 1) 932#define OMAP4430_RAV_VDD_CORE_L_MASK BITFIELD(1, 1)
933 933
934/* Used by PRM_VC_CFG_CHANNEL */ 934/* Used by PRM_VC_CFG_CHANNEL */
935#define OMAP4430_RAV_VDD_IVA_L_SHIFT (1 << 9) 935#define OMAP4430_RAV_VDD_IVA_L_SHIFT 9
936#define OMAP4430_RAV_VDD_IVA_L_MASK BITFIELD(9, 9) 936#define OMAP4430_RAV_VDD_IVA_L_MASK BITFIELD(9, 9)
937 937
938/* Used by PRM_VC_CFG_CHANNEL */ 938/* Used by PRM_VC_CFG_CHANNEL */
939#define OMAP4430_RAV_VDD_MPU_L_SHIFT (1 << 18) 939#define OMAP4430_RAV_VDD_MPU_L_SHIFT 18
940#define OMAP4430_RAV_VDD_MPU_L_MASK BITFIELD(18, 18) 940#define OMAP4430_RAV_VDD_MPU_L_MASK BITFIELD(18, 18)
941 941
942/* Used by PRM_VC_VAL_BYPASS */ 942/* Used by PRM_VC_VAL_BYPASS */
943#define OMAP4430_REGADDR_SHIFT (1 << 8) 943#define OMAP4430_REGADDR_SHIFT 8
944#define OMAP4430_REGADDR_MASK BITFIELD(8, 15) 944#define OMAP4430_REGADDR_MASK BITFIELD(8, 15)
945 945
946/* 946/*
947 * Used by PRM_VC_VAL_CMD_VDD_CORE_L, PRM_VC_VAL_CMD_VDD_IVA_L, 947 * Used by PRM_VC_VAL_CMD_VDD_CORE_L, PRM_VC_VAL_CMD_VDD_IVA_L,
948 * PRM_VC_VAL_CMD_VDD_MPU_L 948 * PRM_VC_VAL_CMD_VDD_MPU_L
949 */ 949 */
950#define OMAP4430_RET_SHIFT (1 << 8) 950#define OMAP4430_RET_SHIFT 8
951#define OMAP4430_RET_MASK BITFIELD(8, 15) 951#define OMAP4430_RET_MASK BITFIELD(8, 15)
952 952
953/* Used by PM_L4PER_PWRSTCTRL */ 953/* Used by PM_L4PER_PWRSTCTRL */
954#define OMAP4430_RETAINED_BANK_ONSTATE_SHIFT (1 << 16) 954#define OMAP4430_RETAINED_BANK_ONSTATE_SHIFT 16
955#define OMAP4430_RETAINED_BANK_ONSTATE_MASK BITFIELD(16, 17) 955#define OMAP4430_RETAINED_BANK_ONSTATE_MASK BITFIELD(16, 17)
956 956
957/* Used by PM_L4PER_PWRSTCTRL */ 957/* Used by PM_L4PER_PWRSTCTRL */
958#define OMAP4430_RETAINED_BANK_RETSTATE_SHIFT (1 << 8) 958#define OMAP4430_RETAINED_BANK_RETSTATE_SHIFT 8
959#define OMAP4430_RETAINED_BANK_RETSTATE_MASK BITFIELD(8, 8) 959#define OMAP4430_RETAINED_BANK_RETSTATE_MASK BITFIELD(8, 8)
960 960
961/* Used by PM_L4PER_PWRSTST */ 961/* Used by PM_L4PER_PWRSTST */
962#define OMAP4430_RETAINED_BANK_STATEST_SHIFT (1 << 4) 962#define OMAP4430_RETAINED_BANK_STATEST_SHIFT 4
963#define OMAP4430_RETAINED_BANK_STATEST_MASK BITFIELD(4, 5) 963#define OMAP4430_RETAINED_BANK_STATEST_MASK BITFIELD(4, 5)
964 964
965/* 965/*
966 * Used by PRM_LDO_SRAM_CORE_CTRL, PRM_LDO_SRAM_IVA_CTRL, 966 * Used by PRM_LDO_SRAM_CORE_CTRL, PRM_LDO_SRAM_IVA_CTRL,
967 * PRM_LDO_SRAM_MPU_CTRL 967 * PRM_LDO_SRAM_MPU_CTRL
968 */ 968 */
969#define OMAP4430_RETMODE_ENABLE_SHIFT (1 << 0) 969#define OMAP4430_RETMODE_ENABLE_SHIFT 0
970#define OMAP4430_RETMODE_ENABLE_MASK BITFIELD(0, 0) 970#define OMAP4430_RETMODE_ENABLE_MASK BITFIELD(0, 0)
971 971
972/* Used by REVISION_PRM */ 972/* Used by REVISION_PRM */
973#define OMAP4430_REV_SHIFT (1 << 0) 973#define OMAP4430_REV_SHIFT 0
974#define OMAP4430_REV_MASK BITFIELD(0, 7) 974#define OMAP4430_REV_MASK BITFIELD(0, 7)
975 975
976/* Used by RM_DUCATI_RSTCTRL, RM_TESLA_RSTCTRL, RM_IVAHD_RSTCTRL */ 976/* Used by RM_DUCATI_RSTCTRL, RM_TESLA_RSTCTRL, RM_IVAHD_RSTCTRL */
977#define OMAP4430_RST1_SHIFT (1 << 0) 977#define OMAP4430_RST1_SHIFT 0
978#define OMAP4430_RST1_MASK BITFIELD(0, 0) 978#define OMAP4430_RST1_MASK BITFIELD(0, 0)
979 979
980/* Used by RM_DUCATI_RSTST, RM_TESLA_RSTST, RM_IVAHD_RSTST */ 980/* Used by RM_DUCATI_RSTST, RM_TESLA_RSTST, RM_IVAHD_RSTST */
981#define OMAP4430_RST1ST_SHIFT (1 << 0) 981#define OMAP4430_RST1ST_SHIFT 0
982#define OMAP4430_RST1ST_MASK BITFIELD(0, 0) 982#define OMAP4430_RST1ST_MASK BITFIELD(0, 0)
983 983
984/* Used by RM_DUCATI_RSTCTRL, RM_TESLA_RSTCTRL, RM_IVAHD_RSTCTRL */ 984/* Used by RM_DUCATI_RSTCTRL, RM_TESLA_RSTCTRL, RM_IVAHD_RSTCTRL */
985#define OMAP4430_RST2_SHIFT (1 << 1) 985#define OMAP4430_RST2_SHIFT 1
986#define OMAP4430_RST2_MASK BITFIELD(1, 1) 986#define OMAP4430_RST2_MASK BITFIELD(1, 1)
987 987
988/* Used by RM_DUCATI_RSTST, RM_TESLA_RSTST, RM_IVAHD_RSTST */ 988/* Used by RM_DUCATI_RSTST, RM_TESLA_RSTST, RM_IVAHD_RSTST */
989#define OMAP4430_RST2ST_SHIFT (1 << 1) 989#define OMAP4430_RST2ST_SHIFT 1
990#define OMAP4430_RST2ST_MASK BITFIELD(1, 1) 990#define OMAP4430_RST2ST_MASK BITFIELD(1, 1)
991 991
992/* Used by RM_DUCATI_RSTCTRL, RM_IVAHD_RSTCTRL */ 992/* Used by RM_DUCATI_RSTCTRL, RM_IVAHD_RSTCTRL */
993#define OMAP4430_RST3_SHIFT (1 << 2) 993#define OMAP4430_RST3_SHIFT 2
994#define OMAP4430_RST3_MASK BITFIELD(2, 2) 994#define OMAP4430_RST3_MASK BITFIELD(2, 2)
995 995
996/* Used by RM_DUCATI_RSTST, RM_IVAHD_RSTST */ 996/* Used by RM_DUCATI_RSTST, RM_IVAHD_RSTST */
997#define OMAP4430_RST3ST_SHIFT (1 << 2) 997#define OMAP4430_RST3ST_SHIFT 2
998#define OMAP4430_RST3ST_MASK BITFIELD(2, 2) 998#define OMAP4430_RST3ST_MASK BITFIELD(2, 2)
999 999
1000/* Used by PRM_RSTTIME */ 1000/* Used by PRM_RSTTIME */
1001#define OMAP4430_RSTTIME1_SHIFT (1 << 0) 1001#define OMAP4430_RSTTIME1_SHIFT 0
1002#define OMAP4430_RSTTIME1_MASK BITFIELD(0, 9) 1002#define OMAP4430_RSTTIME1_MASK BITFIELD(0, 9)
1003 1003
1004/* Used by PRM_RSTTIME */ 1004/* Used by PRM_RSTTIME */
1005#define OMAP4430_RSTTIME2_SHIFT (1 << 10) 1005#define OMAP4430_RSTTIME2_SHIFT 10
1006#define OMAP4430_RSTTIME2_MASK BITFIELD(10, 14) 1006#define OMAP4430_RSTTIME2_MASK BITFIELD(10, 14)
1007 1007
1008/* Used by PRM_RSTCTRL */ 1008/* Used by PRM_RSTCTRL */
1009#define OMAP4430_RST_GLOBAL_COLD_SW_SHIFT (1 << 1) 1009#define OMAP4430_RST_GLOBAL_COLD_SW_SHIFT 1
1010#define OMAP4430_RST_GLOBAL_COLD_SW_MASK BITFIELD(1, 1) 1010#define OMAP4430_RST_GLOBAL_COLD_SW_MASK BITFIELD(1, 1)
1011 1011
1012/* Used by PRM_RSTCTRL */ 1012/* Used by PRM_RSTCTRL */
1013#define OMAP4430_RST_GLOBAL_WARM_SW_SHIFT (1 << 0) 1013#define OMAP4430_RST_GLOBAL_WARM_SW_SHIFT 0
1014#define OMAP4430_RST_GLOBAL_WARM_SW_MASK BITFIELD(0, 0) 1014#define OMAP4430_RST_GLOBAL_WARM_SW_MASK BITFIELD(0, 0)
1015 1015
1016/* Used by PRM_VC_CFG_CHANNEL */ 1016/* Used by PRM_VC_CFG_CHANNEL */
1017#define OMAP4430_SA_VDD_CORE_L_SHIFT (1 << 0) 1017#define OMAP4430_SA_VDD_CORE_L_SHIFT 0
1018#define OMAP4430_SA_VDD_CORE_L_MASK BITFIELD(0, 0) 1018#define OMAP4430_SA_VDD_CORE_L_MASK BITFIELD(0, 0)
1019 1019
1020/* Renamed from SA_VDD_CORE_L Used by PRM_VC_SMPS_SA */ 1020/* Renamed from SA_VDD_CORE_L Used by PRM_VC_SMPS_SA */
1021#define OMAP4430_SA_VDD_CORE_L_0_6_SHIFT (1 << 0) 1021#define OMAP4430_SA_VDD_CORE_L_0_6_SHIFT 0
1022#define OMAP4430_SA_VDD_CORE_L_0_6_MASK BITFIELD(0, 6) 1022#define OMAP4430_SA_VDD_CORE_L_0_6_MASK BITFIELD(0, 6)
1023 1023
1024/* Used by PRM_VC_CFG_CHANNEL */ 1024/* Used by PRM_VC_CFG_CHANNEL */
1025#define OMAP4430_SA_VDD_IVA_L_SHIFT (1 << 8) 1025#define OMAP4430_SA_VDD_IVA_L_SHIFT 8
1026#define OMAP4430_SA_VDD_IVA_L_MASK BITFIELD(8, 8) 1026#define OMAP4430_SA_VDD_IVA_L_MASK BITFIELD(8, 8)
1027 1027
1028/* Renamed from SA_VDD_IVA_L Used by PRM_VC_SMPS_SA */ 1028/* Renamed from SA_VDD_IVA_L Used by PRM_VC_SMPS_SA */
1029#define OMAP4430_SA_VDD_IVA_L_PRM_VC_SMPS_SA_SHIFT (1 << 8) 1029#define OMAP4430_SA_VDD_IVA_L_PRM_VC_SMPS_SA_SHIFT 8
1030#define OMAP4430_SA_VDD_IVA_L_PRM_VC_SMPS_SA_MASK BITFIELD(8, 14) 1030#define OMAP4430_SA_VDD_IVA_L_PRM_VC_SMPS_SA_MASK BITFIELD(8, 14)
1031 1031
1032/* Used by PRM_VC_CFG_CHANNEL */ 1032/* Used by PRM_VC_CFG_CHANNEL */
1033#define OMAP4430_SA_VDD_MPU_L_SHIFT (1 << 16) 1033#define OMAP4430_SA_VDD_MPU_L_SHIFT 16
1034#define OMAP4430_SA_VDD_MPU_L_MASK BITFIELD(16, 16) 1034#define OMAP4430_SA_VDD_MPU_L_MASK BITFIELD(16, 16)
1035 1035
1036/* Renamed from SA_VDD_MPU_L Used by PRM_VC_SMPS_SA */ 1036/* Renamed from SA_VDD_MPU_L Used by PRM_VC_SMPS_SA */
1037#define OMAP4430_SA_VDD_MPU_L_PRM_VC_SMPS_SA_SHIFT (1 << 16) 1037#define OMAP4430_SA_VDD_MPU_L_PRM_VC_SMPS_SA_SHIFT 16
1038#define OMAP4430_SA_VDD_MPU_L_PRM_VC_SMPS_SA_MASK BITFIELD(16, 22) 1038#define OMAP4430_SA_VDD_MPU_L_PRM_VC_SMPS_SA_MASK BITFIELD(16, 22)
1039 1039
1040/* Used by PRM_VC_CFG_I2C_CLK */ 1040/* Used by PRM_VC_CFG_I2C_CLK */
1041#define OMAP4430_SCLH_SHIFT (1 << 0) 1041#define OMAP4430_SCLH_SHIFT 0
1042#define OMAP4430_SCLH_MASK BITFIELD(0, 7) 1042#define OMAP4430_SCLH_MASK BITFIELD(0, 7)
1043 1043
1044/* Used by PRM_VC_CFG_I2C_CLK */ 1044/* Used by PRM_VC_CFG_I2C_CLK */
1045#define OMAP4430_SCLL_SHIFT (1 << 8) 1045#define OMAP4430_SCLL_SHIFT 8
1046#define OMAP4430_SCLL_MASK BITFIELD(8, 15) 1046#define OMAP4430_SCLL_MASK BITFIELD(8, 15)
1047 1047
1048/* Used by PRM_RSTST */ 1048/* Used by PRM_RSTST */
1049#define OMAP4430_SECURE_WDT_RST_SHIFT (1 << 4) 1049#define OMAP4430_SECURE_WDT_RST_SHIFT 4
1050#define OMAP4430_SECURE_WDT_RST_MASK BITFIELD(4, 4) 1050#define OMAP4430_SECURE_WDT_RST_MASK BITFIELD(4, 4)
1051 1051
1052/* Used by PM_IVAHD_PWRSTCTRL */ 1052/* Used by PM_IVAHD_PWRSTCTRL */
1053#define OMAP4430_SL2_MEM_ONSTATE_SHIFT (1 << 18) 1053#define OMAP4430_SL2_MEM_ONSTATE_SHIFT 18
1054#define OMAP4430_SL2_MEM_ONSTATE_MASK BITFIELD(18, 19) 1054#define OMAP4430_SL2_MEM_ONSTATE_MASK BITFIELD(18, 19)
1055 1055
1056/* Used by PM_IVAHD_PWRSTCTRL */ 1056/* Used by PM_IVAHD_PWRSTCTRL */
1057#define OMAP4430_SL2_MEM_RETSTATE_SHIFT (1 << 9) 1057#define OMAP4430_SL2_MEM_RETSTATE_SHIFT 9
1058#define OMAP4430_SL2_MEM_RETSTATE_MASK BITFIELD(9, 9) 1058#define OMAP4430_SL2_MEM_RETSTATE_MASK BITFIELD(9, 9)
1059 1059
1060/* Used by PM_IVAHD_PWRSTST */ 1060/* Used by PM_IVAHD_PWRSTST */
1061#define OMAP4430_SL2_MEM_STATEST_SHIFT (1 << 6) 1061#define OMAP4430_SL2_MEM_STATEST_SHIFT 6
1062#define OMAP4430_SL2_MEM_STATEST_MASK BITFIELD(6, 7) 1062#define OMAP4430_SL2_MEM_STATEST_MASK BITFIELD(6, 7)
1063 1063
1064/* Used by PRM_VC_VAL_BYPASS */ 1064/* Used by PRM_VC_VAL_BYPASS */
1065#define OMAP4430_SLAVEADDR_SHIFT (1 << 0) 1065#define OMAP4430_SLAVEADDR_SHIFT 0
1066#define OMAP4430_SLAVEADDR_MASK BITFIELD(0, 6) 1066#define OMAP4430_SLAVEADDR_MASK BITFIELD(0, 6)
1067 1067
1068/* Used by PRM_LDO_ABB_IVA_SETUP, PRM_LDO_ABB_MPU_SETUP */ 1068/* Used by PRM_LDO_ABB_IVA_SETUP, PRM_LDO_ABB_MPU_SETUP */
1069#define OMAP4430_SLEEP_RBB_SEL_SHIFT (1 << 3) 1069#define OMAP4430_SLEEP_RBB_SEL_SHIFT 3
1070#define OMAP4430_SLEEP_RBB_SEL_MASK BITFIELD(3, 3) 1070#define OMAP4430_SLEEP_RBB_SEL_MASK BITFIELD(3, 3)
1071 1071
1072/* Used by PRM_SRAM_COUNT */ 1072/* Used by PRM_SRAM_COUNT */
1073#define OMAP4430_SLPCNT_VALUE_SHIFT (1 << 16) 1073#define OMAP4430_SLPCNT_VALUE_SHIFT 16
1074#define OMAP4430_SLPCNT_VALUE_MASK BITFIELD(16, 23) 1074#define OMAP4430_SLPCNT_VALUE_MASK BITFIELD(16, 23)
1075 1075
1076/* Used by PRM_VP_CORE_VSTEPMAX, PRM_VP_IVA_VSTEPMAX, PRM_VP_MPU_VSTEPMAX */ 1076/* Used by PRM_VP_CORE_VSTEPMAX, PRM_VP_IVA_VSTEPMAX, PRM_VP_MPU_VSTEPMAX */
1077#define OMAP4430_SMPSWAITTIMEMAX_SHIFT (1 << 8) 1077#define OMAP4430_SMPSWAITTIMEMAX_SHIFT 8
1078#define OMAP4430_SMPSWAITTIMEMAX_MASK BITFIELD(8, 23) 1078#define OMAP4430_SMPSWAITTIMEMAX_MASK BITFIELD(8, 23)
1079 1079
1080/* Used by PRM_VP_CORE_VSTEPMIN, PRM_VP_IVA_VSTEPMIN, PRM_VP_MPU_VSTEPMIN */ 1080/* Used by PRM_VP_CORE_VSTEPMIN, PRM_VP_IVA_VSTEPMIN, PRM_VP_MPU_VSTEPMIN */
1081#define OMAP4430_SMPSWAITTIMEMIN_SHIFT (1 << 8) 1081#define OMAP4430_SMPSWAITTIMEMIN_SHIFT 8
1082#define OMAP4430_SMPSWAITTIMEMIN_MASK BITFIELD(8, 23) 1082#define OMAP4430_SMPSWAITTIMEMIN_MASK BITFIELD(8, 23)
1083 1083
1084/* Used by PRM_LDO_ABB_IVA_SETUP, PRM_LDO_ABB_MPU_SETUP */ 1084/* Used by PRM_LDO_ABB_IVA_SETUP, PRM_LDO_ABB_MPU_SETUP */
1085#define OMAP4430_SR2EN_SHIFT (1 << 0) 1085#define OMAP4430_SR2EN_SHIFT 0
1086#define OMAP4430_SR2EN_MASK BITFIELD(0, 0) 1086#define OMAP4430_SR2EN_MASK BITFIELD(0, 0)
1087 1087
1088/* Used by PRM_LDO_ABB_IVA_CTRL, PRM_LDO_ABB_MPU_CTRL */ 1088/* Used by PRM_LDO_ABB_IVA_CTRL, PRM_LDO_ABB_MPU_CTRL */
1089#define OMAP4430_SR2_IN_TRANSITION_SHIFT (1 << 6) 1089#define OMAP4430_SR2_IN_TRANSITION_SHIFT 6
1090#define OMAP4430_SR2_IN_TRANSITION_MASK BITFIELD(6, 6) 1090#define OMAP4430_SR2_IN_TRANSITION_MASK BITFIELD(6, 6)
1091 1091
1092/* Used by PRM_LDO_ABB_IVA_CTRL, PRM_LDO_ABB_MPU_CTRL */ 1092/* Used by PRM_LDO_ABB_IVA_CTRL, PRM_LDO_ABB_MPU_CTRL */
1093#define OMAP4430_SR2_STATUS_SHIFT (1 << 3) 1093#define OMAP4430_SR2_STATUS_SHIFT 3
1094#define OMAP4430_SR2_STATUS_MASK BITFIELD(3, 4) 1094#define OMAP4430_SR2_STATUS_MASK BITFIELD(3, 4)
1095 1095
1096/* Used by PRM_LDO_ABB_IVA_SETUP, PRM_LDO_ABB_MPU_SETUP */ 1096/* Used by PRM_LDO_ABB_IVA_SETUP, PRM_LDO_ABB_MPU_SETUP */
1097#define OMAP4430_SR2_WTCNT_VALUE_SHIFT (1 << 8) 1097#define OMAP4430_SR2_WTCNT_VALUE_SHIFT 8
1098#define OMAP4430_SR2_WTCNT_VALUE_MASK BITFIELD(8, 15) 1098#define OMAP4430_SR2_WTCNT_VALUE_MASK BITFIELD(8, 15)
1099 1099
1100/* 1100/*
1101 * Used by PRM_LDO_SRAM_CORE_CTRL, PRM_LDO_SRAM_IVA_CTRL, 1101 * Used by PRM_LDO_SRAM_CORE_CTRL, PRM_LDO_SRAM_IVA_CTRL,
1102 * PRM_LDO_SRAM_MPU_CTRL 1102 * PRM_LDO_SRAM_MPU_CTRL
1103 */ 1103 */
1104#define OMAP4430_SRAMLDO_STATUS_SHIFT (1 << 8) 1104#define OMAP4430_SRAMLDO_STATUS_SHIFT 8
1105#define OMAP4430_SRAMLDO_STATUS_MASK BITFIELD(8, 8) 1105#define OMAP4430_SRAMLDO_STATUS_MASK BITFIELD(8, 8)
1106 1106
1107/* 1107/*
1108 * Used by PRM_LDO_SRAM_CORE_CTRL, PRM_LDO_SRAM_IVA_CTRL, 1108 * Used by PRM_LDO_SRAM_CORE_CTRL, PRM_LDO_SRAM_IVA_CTRL,
1109 * PRM_LDO_SRAM_MPU_CTRL 1109 * PRM_LDO_SRAM_MPU_CTRL
1110 */ 1110 */
1111#define OMAP4430_SRAM_IN_TRANSITION_SHIFT (1 << 9) 1111#define OMAP4430_SRAM_IN_TRANSITION_SHIFT 9
1112#define OMAP4430_SRAM_IN_TRANSITION_MASK BITFIELD(9, 9) 1112#define OMAP4430_SRAM_IN_TRANSITION_MASK BITFIELD(9, 9)
1113 1113
1114/* Used by PRM_VC_CFG_I2C_MODE */ 1114/* Used by PRM_VC_CFG_I2C_MODE */
1115#define OMAP4430_SRMODEEN_SHIFT (1 << 4) 1115#define OMAP4430_SRMODEEN_SHIFT 4
1116#define OMAP4430_SRMODEEN_MASK BITFIELD(4, 4) 1116#define OMAP4430_SRMODEEN_MASK BITFIELD(4, 4)
1117 1117
1118/* Used by PRM_VOLTSETUP_WARMRESET */ 1118/* Used by PRM_VOLTSETUP_WARMRESET */
1119#define OMAP4430_STABLE_COUNT_SHIFT (1 << 0) 1119#define OMAP4430_STABLE_COUNT_SHIFT 0
1120#define OMAP4430_STABLE_COUNT_MASK BITFIELD(0, 5) 1120#define OMAP4430_STABLE_COUNT_MASK BITFIELD(0, 5)
1121 1121
1122/* Used by PRM_VOLTSETUP_WARMRESET */ 1122/* Used by PRM_VOLTSETUP_WARMRESET */
1123#define OMAP4430_STABLE_PRESCAL_SHIFT (1 << 8) 1123#define OMAP4430_STABLE_PRESCAL_SHIFT 8
1124#define OMAP4430_STABLE_PRESCAL_MASK BITFIELD(8, 9) 1124#define OMAP4430_STABLE_PRESCAL_MASK BITFIELD(8, 9)
1125 1125
1126/* Used by PM_IVAHD_PWRSTCTRL */ 1126/* Used by PM_IVAHD_PWRSTCTRL */
1127#define OMAP4430_TCM1_MEM_ONSTATE_SHIFT (1 << 20) 1127#define OMAP4430_TCM1_MEM_ONSTATE_SHIFT 20
1128#define OMAP4430_TCM1_MEM_ONSTATE_MASK BITFIELD(20, 21) 1128#define OMAP4430_TCM1_MEM_ONSTATE_MASK BITFIELD(20, 21)
1129 1129
1130/* Used by PM_IVAHD_PWRSTCTRL */ 1130/* Used by PM_IVAHD_PWRSTCTRL */
1131#define OMAP4430_TCM1_MEM_RETSTATE_SHIFT (1 << 10) 1131#define OMAP4430_TCM1_MEM_RETSTATE_SHIFT 10
1132#define OMAP4430_TCM1_MEM_RETSTATE_MASK BITFIELD(10, 10) 1132#define OMAP4430_TCM1_MEM_RETSTATE_MASK BITFIELD(10, 10)
1133 1133
1134/* Used by PM_IVAHD_PWRSTST */ 1134/* Used by PM_IVAHD_PWRSTST */
1135#define OMAP4430_TCM1_MEM_STATEST_SHIFT (1 << 8) 1135#define OMAP4430_TCM1_MEM_STATEST_SHIFT 8
1136#define OMAP4430_TCM1_MEM_STATEST_MASK BITFIELD(8, 9) 1136#define OMAP4430_TCM1_MEM_STATEST_MASK BITFIELD(8, 9)
1137 1137
1138/* Used by PM_IVAHD_PWRSTCTRL */ 1138/* Used by PM_IVAHD_PWRSTCTRL */
1139#define OMAP4430_TCM2_MEM_ONSTATE_SHIFT (1 << 22) 1139#define OMAP4430_TCM2_MEM_ONSTATE_SHIFT 22
1140#define OMAP4430_TCM2_MEM_ONSTATE_MASK BITFIELD(22, 23) 1140#define OMAP4430_TCM2_MEM_ONSTATE_MASK BITFIELD(22, 23)
1141 1141
1142/* Used by PM_IVAHD_PWRSTCTRL */ 1142/* Used by PM_IVAHD_PWRSTCTRL */
1143#define OMAP4430_TCM2_MEM_RETSTATE_SHIFT (1 << 11) 1143#define OMAP4430_TCM2_MEM_RETSTATE_SHIFT 11
1144#define OMAP4430_TCM2_MEM_RETSTATE_MASK BITFIELD(11, 11) 1144#define OMAP4430_TCM2_MEM_RETSTATE_MASK BITFIELD(11, 11)
1145 1145
1146/* Used by PM_IVAHD_PWRSTST */ 1146/* Used by PM_IVAHD_PWRSTST */
1147#define OMAP4430_TCM2_MEM_STATEST_SHIFT (1 << 10) 1147#define OMAP4430_TCM2_MEM_STATEST_SHIFT 10
1148#define OMAP4430_TCM2_MEM_STATEST_MASK BITFIELD(10, 11) 1148#define OMAP4430_TCM2_MEM_STATEST_MASK BITFIELD(10, 11)
1149 1149
1150/* Used by RM_TESLA_RSTST */ 1150/* Used by RM_TESLA_RSTST */
1151#define OMAP4430_TESLASS_EMU_RSTST_SHIFT (1 << 2) 1151#define OMAP4430_TESLASS_EMU_RSTST_SHIFT 2
1152#define OMAP4430_TESLASS_EMU_RSTST_MASK BITFIELD(2, 2) 1152#define OMAP4430_TESLASS_EMU_RSTST_MASK BITFIELD(2, 2)
1153 1153
1154/* Used by RM_TESLA_RSTST */ 1154/* Used by RM_TESLA_RSTST */
1155#define OMAP4430_TESLA_DSP_EMU_REQ_RSTST_SHIFT (1 << 3) 1155#define OMAP4430_TESLA_DSP_EMU_REQ_RSTST_SHIFT 3
1156#define OMAP4430_TESLA_DSP_EMU_REQ_RSTST_MASK BITFIELD(3, 3) 1156#define OMAP4430_TESLA_DSP_EMU_REQ_RSTST_MASK BITFIELD(3, 3)
1157 1157
1158/* Used by PM_TESLA_PWRSTCTRL */ 1158/* Used by PM_TESLA_PWRSTCTRL */
1159#define OMAP4430_TESLA_EDMA_ONSTATE_SHIFT (1 << 20) 1159#define OMAP4430_TESLA_EDMA_ONSTATE_SHIFT 20
1160#define OMAP4430_TESLA_EDMA_ONSTATE_MASK BITFIELD(20, 21) 1160#define OMAP4430_TESLA_EDMA_ONSTATE_MASK BITFIELD(20, 21)
1161 1161
1162/* Used by PM_TESLA_PWRSTCTRL */ 1162/* Used by PM_TESLA_PWRSTCTRL */
1163#define OMAP4430_TESLA_EDMA_RETSTATE_SHIFT (1 << 10) 1163#define OMAP4430_TESLA_EDMA_RETSTATE_SHIFT 10
1164#define OMAP4430_TESLA_EDMA_RETSTATE_MASK BITFIELD(10, 10) 1164#define OMAP4430_TESLA_EDMA_RETSTATE_MASK BITFIELD(10, 10)
1165 1165
1166/* Used by PM_TESLA_PWRSTST */ 1166/* Used by PM_TESLA_PWRSTST */
1167#define OMAP4430_TESLA_EDMA_STATEST_SHIFT (1 << 8) 1167#define OMAP4430_TESLA_EDMA_STATEST_SHIFT 8
1168#define OMAP4430_TESLA_EDMA_STATEST_MASK BITFIELD(8, 9) 1168#define OMAP4430_TESLA_EDMA_STATEST_MASK BITFIELD(8, 9)
1169 1169
1170/* Used by PM_TESLA_PWRSTCTRL */ 1170/* Used by PM_TESLA_PWRSTCTRL */
1171#define OMAP4430_TESLA_L1_ONSTATE_SHIFT (1 << 16) 1171#define OMAP4430_TESLA_L1_ONSTATE_SHIFT 16
1172#define OMAP4430_TESLA_L1_ONSTATE_MASK BITFIELD(16, 17) 1172#define OMAP4430_TESLA_L1_ONSTATE_MASK BITFIELD(16, 17)
1173 1173
1174/* Used by PM_TESLA_PWRSTCTRL */ 1174/* Used by PM_TESLA_PWRSTCTRL */
1175#define OMAP4430_TESLA_L1_RETSTATE_SHIFT (1 << 8) 1175#define OMAP4430_TESLA_L1_RETSTATE_SHIFT 8
1176#define OMAP4430_TESLA_L1_RETSTATE_MASK BITFIELD(8, 8) 1176#define OMAP4430_TESLA_L1_RETSTATE_MASK BITFIELD(8, 8)
1177 1177
1178/* Used by PM_TESLA_PWRSTST */ 1178/* Used by PM_TESLA_PWRSTST */
1179#define OMAP4430_TESLA_L1_STATEST_SHIFT (1 << 4) 1179#define OMAP4430_TESLA_L1_STATEST_SHIFT 4
1180#define OMAP4430_TESLA_L1_STATEST_MASK BITFIELD(4, 5) 1180#define OMAP4430_TESLA_L1_STATEST_MASK BITFIELD(4, 5)
1181 1181
1182/* Used by PM_TESLA_PWRSTCTRL */ 1182/* Used by PM_TESLA_PWRSTCTRL */
1183#define OMAP4430_TESLA_L2_ONSTATE_SHIFT (1 << 18) 1183#define OMAP4430_TESLA_L2_ONSTATE_SHIFT 18
1184#define OMAP4430_TESLA_L2_ONSTATE_MASK BITFIELD(18, 19) 1184#define OMAP4430_TESLA_L2_ONSTATE_MASK BITFIELD(18, 19)
1185 1185
1186/* Used by PM_TESLA_PWRSTCTRL */ 1186/* Used by PM_TESLA_PWRSTCTRL */
1187#define OMAP4430_TESLA_L2_RETSTATE_SHIFT (1 << 9) 1187#define OMAP4430_TESLA_L2_RETSTATE_SHIFT 9
1188#define OMAP4430_TESLA_L2_RETSTATE_MASK BITFIELD(9, 9) 1188#define OMAP4430_TESLA_L2_RETSTATE_MASK BITFIELD(9, 9)
1189 1189
1190/* Used by PM_TESLA_PWRSTST */ 1190/* Used by PM_TESLA_PWRSTST */
1191#define OMAP4430_TESLA_L2_STATEST_SHIFT (1 << 6) 1191#define OMAP4430_TESLA_L2_STATEST_SHIFT 6
1192#define OMAP4430_TESLA_L2_STATEST_MASK BITFIELD(6, 7) 1192#define OMAP4430_TESLA_L2_STATEST_MASK BITFIELD(6, 7)
1193 1193
1194/* Used by PRM_VP_CORE_VLIMITTO, PRM_VP_IVA_VLIMITTO, PRM_VP_MPU_VLIMITTO */ 1194/* Used by PRM_VP_CORE_VLIMITTO, PRM_VP_IVA_VLIMITTO, PRM_VP_MPU_VLIMITTO */
1195#define OMAP4430_TIMEOUT_SHIFT (1 << 0) 1195#define OMAP4430_TIMEOUT_SHIFT 0
1196#define OMAP4430_TIMEOUT_MASK BITFIELD(0, 15) 1196#define OMAP4430_TIMEOUT_MASK BITFIELD(0, 15)
1197 1197
1198/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */ 1198/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */
1199#define OMAP4430_TIMEOUTEN_SHIFT (1 << 3) 1199#define OMAP4430_TIMEOUTEN_SHIFT 3
1200#define OMAP4430_TIMEOUTEN_MASK BITFIELD(3, 3) 1200#define OMAP4430_TIMEOUTEN_MASK BITFIELD(3, 3)
1201 1201
1202/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1202/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1203#define OMAP4430_TRANSITION_EN_SHIFT (1 << 8) 1203#define OMAP4430_TRANSITION_EN_SHIFT 8
1204#define OMAP4430_TRANSITION_EN_MASK BITFIELD(8, 8) 1204#define OMAP4430_TRANSITION_EN_MASK BITFIELD(8, 8)
1205 1205
1206/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1206/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1207#define OMAP4430_TRANSITION_ST_SHIFT (1 << 8) 1207#define OMAP4430_TRANSITION_ST_SHIFT 8
1208#define OMAP4430_TRANSITION_ST_MASK BITFIELD(8, 8) 1208#define OMAP4430_TRANSITION_ST_MASK BITFIELD(8, 8)
1209 1209
1210/* Used by PRM_VC_VAL_BYPASS */ 1210/* Used by PRM_VC_VAL_BYPASS */
1211#define OMAP4430_VALID_SHIFT (1 << 24) 1211#define OMAP4430_VALID_SHIFT 24
1212#define OMAP4430_VALID_MASK BITFIELD(24, 24) 1212#define OMAP4430_VALID_MASK BITFIELD(24, 24)
1213 1213
1214/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1214/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1215#define OMAP4430_VC_BYPASSACK_EN_SHIFT (1 << 14) 1215#define OMAP4430_VC_BYPASSACK_EN_SHIFT 14
1216#define OMAP4430_VC_BYPASSACK_EN_MASK BITFIELD(14, 14) 1216#define OMAP4430_VC_BYPASSACK_EN_MASK BITFIELD(14, 14)
1217 1217
1218/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1218/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1219#define OMAP4430_VC_BYPASSACK_ST_SHIFT (1 << 14) 1219#define OMAP4430_VC_BYPASSACK_ST_SHIFT 14
1220#define OMAP4430_VC_BYPASSACK_ST_MASK BITFIELD(14, 14) 1220#define OMAP4430_VC_BYPASSACK_ST_MASK BITFIELD(14, 14)
1221 1221
1222/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1222/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1223#define OMAP4430_VC_IVA_VPACK_EN_SHIFT (1 << 30) 1223#define OMAP4430_VC_IVA_VPACK_EN_SHIFT 30
1224#define OMAP4430_VC_IVA_VPACK_EN_MASK BITFIELD(30, 30) 1224#define OMAP4430_VC_IVA_VPACK_EN_MASK BITFIELD(30, 30)
1225 1225
1226/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1226/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1227#define OMAP4430_VC_IVA_VPACK_ST_SHIFT (1 << 30) 1227#define OMAP4430_VC_IVA_VPACK_ST_SHIFT 30
1228#define OMAP4430_VC_IVA_VPACK_ST_MASK BITFIELD(30, 30) 1228#define OMAP4430_VC_IVA_VPACK_ST_MASK BITFIELD(30, 30)
1229 1229
1230/* Used by PRM_IRQENABLE_MPU_2 */ 1230/* Used by PRM_IRQENABLE_MPU_2 */
1231#define OMAP4430_VC_MPU_VPACK_EN_SHIFT (1 << 6) 1231#define OMAP4430_VC_MPU_VPACK_EN_SHIFT 6
1232#define OMAP4430_VC_MPU_VPACK_EN_MASK BITFIELD(6, 6) 1232#define OMAP4430_VC_MPU_VPACK_EN_MASK BITFIELD(6, 6)
1233 1233
1234/* Used by PRM_IRQSTATUS_MPU_2 */ 1234/* Used by PRM_IRQSTATUS_MPU_2 */
1235#define OMAP4430_VC_MPU_VPACK_ST_SHIFT (1 << 6) 1235#define OMAP4430_VC_MPU_VPACK_ST_SHIFT 6
1236#define OMAP4430_VC_MPU_VPACK_ST_MASK BITFIELD(6, 6) 1236#define OMAP4430_VC_MPU_VPACK_ST_MASK BITFIELD(6, 6)
1237 1237
1238/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1238/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1239#define OMAP4430_VC_RAERR_EN_SHIFT (1 << 12) 1239#define OMAP4430_VC_RAERR_EN_SHIFT 12
1240#define OMAP4430_VC_RAERR_EN_MASK BITFIELD(12, 12) 1240#define OMAP4430_VC_RAERR_EN_MASK BITFIELD(12, 12)
1241 1241
1242/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1242/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1243#define OMAP4430_VC_RAERR_ST_SHIFT (1 << 12) 1243#define OMAP4430_VC_RAERR_ST_SHIFT 12
1244#define OMAP4430_VC_RAERR_ST_MASK BITFIELD(12, 12) 1244#define OMAP4430_VC_RAERR_ST_MASK BITFIELD(12, 12)
1245 1245
1246/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1246/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1247#define OMAP4430_VC_SAERR_EN_SHIFT (1 << 11) 1247#define OMAP4430_VC_SAERR_EN_SHIFT 11
1248#define OMAP4430_VC_SAERR_EN_MASK BITFIELD(11, 11) 1248#define OMAP4430_VC_SAERR_EN_MASK BITFIELD(11, 11)
1249 1249
1250/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1250/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1251#define OMAP4430_VC_SAERR_ST_SHIFT (1 << 11) 1251#define OMAP4430_VC_SAERR_ST_SHIFT 11
1252#define OMAP4430_VC_SAERR_ST_MASK BITFIELD(11, 11) 1252#define OMAP4430_VC_SAERR_ST_MASK BITFIELD(11, 11)
1253 1253
1254/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1254/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1255#define OMAP4430_VC_TOERR_EN_SHIFT (1 << 13) 1255#define OMAP4430_VC_TOERR_EN_SHIFT 13
1256#define OMAP4430_VC_TOERR_EN_MASK BITFIELD(13, 13) 1256#define OMAP4430_VC_TOERR_EN_MASK BITFIELD(13, 13)
1257 1257
1258/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1258/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1259#define OMAP4430_VC_TOERR_ST_SHIFT (1 << 13) 1259#define OMAP4430_VC_TOERR_ST_SHIFT 13
1260#define OMAP4430_VC_TOERR_ST_MASK BITFIELD(13, 13) 1260#define OMAP4430_VC_TOERR_ST_MASK BITFIELD(13, 13)
1261 1261
1262/* Used by PRM_VP_CORE_VLIMITTO, PRM_VP_IVA_VLIMITTO, PRM_VP_MPU_VLIMITTO */ 1262/* Used by PRM_VP_CORE_VLIMITTO, PRM_VP_IVA_VLIMITTO, PRM_VP_MPU_VLIMITTO */
1263#define OMAP4430_VDDMAX_SHIFT (1 << 24) 1263#define OMAP4430_VDDMAX_SHIFT 24
1264#define OMAP4430_VDDMAX_MASK BITFIELD(24, 31) 1264#define OMAP4430_VDDMAX_MASK BITFIELD(24, 31)
1265 1265
1266/* Used by PRM_VP_CORE_VLIMITTO, PRM_VP_IVA_VLIMITTO, PRM_VP_MPU_VLIMITTO */ 1266/* Used by PRM_VP_CORE_VLIMITTO, PRM_VP_IVA_VLIMITTO, PRM_VP_MPU_VLIMITTO */
1267#define OMAP4430_VDDMIN_SHIFT (1 << 16) 1267#define OMAP4430_VDDMIN_SHIFT 16
1268#define OMAP4430_VDDMIN_MASK BITFIELD(16, 23) 1268#define OMAP4430_VDDMIN_MASK BITFIELD(16, 23)
1269 1269
1270/* Used by PRM_VOLTCTRL */ 1270/* Used by PRM_VOLTCTRL */
1271#define OMAP4430_VDD_CORE_I2C_DISABLE_SHIFT (1 << 12) 1271#define OMAP4430_VDD_CORE_I2C_DISABLE_SHIFT 12
1272#define OMAP4430_VDD_CORE_I2C_DISABLE_MASK BITFIELD(12, 12) 1272#define OMAP4430_VDD_CORE_I2C_DISABLE_MASK BITFIELD(12, 12)
1273 1273
1274/* Used by PRM_RSTST */ 1274/* Used by PRM_RSTST */
1275#define OMAP4430_VDD_CORE_VOLT_MGR_RST_SHIFT (1 << 8) 1275#define OMAP4430_VDD_CORE_VOLT_MGR_RST_SHIFT 8
1276#define OMAP4430_VDD_CORE_VOLT_MGR_RST_MASK BITFIELD(8, 8) 1276#define OMAP4430_VDD_CORE_VOLT_MGR_RST_MASK BITFIELD(8, 8)
1277 1277
1278/* Used by PRM_VOLTCTRL */ 1278/* Used by PRM_VOLTCTRL */
1279#define OMAP4430_VDD_IVA_I2C_DISABLE_SHIFT (1 << 14) 1279#define OMAP4430_VDD_IVA_I2C_DISABLE_SHIFT 14
1280#define OMAP4430_VDD_IVA_I2C_DISABLE_MASK BITFIELD(14, 14) 1280#define OMAP4430_VDD_IVA_I2C_DISABLE_MASK BITFIELD(14, 14)
1281 1281
1282/* Used by PRM_VOLTCTRL */ 1282/* Used by PRM_VOLTCTRL */
1283#define OMAP4430_VDD_IVA_PRESENCE_SHIFT (1 << 9) 1283#define OMAP4430_VDD_IVA_PRESENCE_SHIFT 9
1284#define OMAP4430_VDD_IVA_PRESENCE_MASK BITFIELD(9, 9) 1284#define OMAP4430_VDD_IVA_PRESENCE_MASK BITFIELD(9, 9)
1285 1285
1286/* Used by PRM_RSTST */ 1286/* Used by PRM_RSTST */
1287#define OMAP4430_VDD_IVA_VOLT_MGR_RST_SHIFT (1 << 7) 1287#define OMAP4430_VDD_IVA_VOLT_MGR_RST_SHIFT 7
1288#define OMAP4430_VDD_IVA_VOLT_MGR_RST_MASK BITFIELD(7, 7) 1288#define OMAP4430_VDD_IVA_VOLT_MGR_RST_MASK BITFIELD(7, 7)
1289 1289
1290/* Used by PRM_VOLTCTRL */ 1290/* Used by PRM_VOLTCTRL */
1291#define OMAP4430_VDD_MPU_I2C_DISABLE_SHIFT (1 << 13) 1291#define OMAP4430_VDD_MPU_I2C_DISABLE_SHIFT 13
1292#define OMAP4430_VDD_MPU_I2C_DISABLE_MASK BITFIELD(13, 13) 1292#define OMAP4430_VDD_MPU_I2C_DISABLE_MASK BITFIELD(13, 13)
1293 1293
1294/* Used by PRM_VOLTCTRL */ 1294/* Used by PRM_VOLTCTRL */
1295#define OMAP4430_VDD_MPU_PRESENCE_SHIFT (1 << 8) 1295#define OMAP4430_VDD_MPU_PRESENCE_SHIFT 8
1296#define OMAP4430_VDD_MPU_PRESENCE_MASK BITFIELD(8, 8) 1296#define OMAP4430_VDD_MPU_PRESENCE_MASK BITFIELD(8, 8)
1297 1297
1298/* Used by PRM_RSTST */ 1298/* Used by PRM_RSTST */
1299#define OMAP4430_VDD_MPU_VOLT_MGR_RST_SHIFT (1 << 6) 1299#define OMAP4430_VDD_MPU_VOLT_MGR_RST_SHIFT 6
1300#define OMAP4430_VDD_MPU_VOLT_MGR_RST_MASK BITFIELD(6, 6) 1300#define OMAP4430_VDD_MPU_VOLT_MGR_RST_MASK BITFIELD(6, 6)
1301 1301
1302/* Used by PRM_VC_VAL_SMPS_RA_VOL */ 1302/* Used by PRM_VC_VAL_SMPS_RA_VOL */
1303#define OMAP4430_VOLRA_VDD_CORE_L_SHIFT (1 << 0) 1303#define OMAP4430_VOLRA_VDD_CORE_L_SHIFT 0
1304#define OMAP4430_VOLRA_VDD_CORE_L_MASK BITFIELD(0, 7) 1304#define OMAP4430_VOLRA_VDD_CORE_L_MASK BITFIELD(0, 7)
1305 1305
1306/* Used by PRM_VC_VAL_SMPS_RA_VOL */ 1306/* Used by PRM_VC_VAL_SMPS_RA_VOL */
1307#define OMAP4430_VOLRA_VDD_IVA_L_SHIFT (1 << 8) 1307#define OMAP4430_VOLRA_VDD_IVA_L_SHIFT 8
1308#define OMAP4430_VOLRA_VDD_IVA_L_MASK BITFIELD(8, 15) 1308#define OMAP4430_VOLRA_VDD_IVA_L_MASK BITFIELD(8, 15)
1309 1309
1310/* Used by PRM_VC_VAL_SMPS_RA_VOL */ 1310/* Used by PRM_VC_VAL_SMPS_RA_VOL */
1311#define OMAP4430_VOLRA_VDD_MPU_L_SHIFT (1 << 16) 1311#define OMAP4430_VOLRA_VDD_MPU_L_SHIFT 16
1312#define OMAP4430_VOLRA_VDD_MPU_L_MASK BITFIELD(16, 23) 1312#define OMAP4430_VOLRA_VDD_MPU_L_MASK BITFIELD(16, 23)
1313 1313
1314/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */ 1314/* Used by PRM_VP_CORE_CONFIG, PRM_VP_IVA_CONFIG, PRM_VP_MPU_CONFIG */
1315#define OMAP4430_VPENABLE_SHIFT (1 << 0) 1315#define OMAP4430_VPENABLE_SHIFT 0
1316#define OMAP4430_VPENABLE_MASK BITFIELD(0, 0) 1316#define OMAP4430_VPENABLE_MASK BITFIELD(0, 0)
1317 1317
1318/* Used by PRM_VP_CORE_STATUS, PRM_VP_IVA_STATUS, PRM_VP_MPU_STATUS */ 1318/* Used by PRM_VP_CORE_STATUS, PRM_VP_IVA_STATUS, PRM_VP_MPU_STATUS */
1319#define OMAP4430_VPINIDLE_SHIFT (1 << 0) 1319#define OMAP4430_VPINIDLE_SHIFT 0
1320#define OMAP4430_VPINIDLE_MASK BITFIELD(0, 0) 1320#define OMAP4430_VPINIDLE_MASK BITFIELD(0, 0)
1321 1321
1322/* Used by PRM_VP_CORE_VOLTAGE, PRM_VP_IVA_VOLTAGE, PRM_VP_MPU_VOLTAGE */ 1322/* Used by PRM_VP_CORE_VOLTAGE, PRM_VP_IVA_VOLTAGE, PRM_VP_MPU_VOLTAGE */
1323#define OMAP4430_VPVOLTAGE_SHIFT (1 << 0) 1323#define OMAP4430_VPVOLTAGE_SHIFT 0
1324#define OMAP4430_VPVOLTAGE_MASK BITFIELD(0, 7) 1324#define OMAP4430_VPVOLTAGE_MASK BITFIELD(0, 7)
1325 1325
1326/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1326/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1327#define OMAP4430_VP_CORE_EQVALUE_EN_SHIFT (1 << 20) 1327#define OMAP4430_VP_CORE_EQVALUE_EN_SHIFT 20
1328#define OMAP4430_VP_CORE_EQVALUE_EN_MASK BITFIELD(20, 20) 1328#define OMAP4430_VP_CORE_EQVALUE_EN_MASK BITFIELD(20, 20)
1329 1329
1330/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1330/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1331#define OMAP4430_VP_CORE_EQVALUE_ST_SHIFT (1 << 20) 1331#define OMAP4430_VP_CORE_EQVALUE_ST_SHIFT 20
1332#define OMAP4430_VP_CORE_EQVALUE_ST_MASK BITFIELD(20, 20) 1332#define OMAP4430_VP_CORE_EQVALUE_ST_MASK BITFIELD(20, 20)
1333 1333
1334/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1334/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1335#define OMAP4430_VP_CORE_MAXVDD_EN_SHIFT (1 << 18) 1335#define OMAP4430_VP_CORE_MAXVDD_EN_SHIFT 18
1336#define OMAP4430_VP_CORE_MAXVDD_EN_MASK BITFIELD(18, 18) 1336#define OMAP4430_VP_CORE_MAXVDD_EN_MASK BITFIELD(18, 18)
1337 1337
1338/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1338/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1339#define OMAP4430_VP_CORE_MAXVDD_ST_SHIFT (1 << 18) 1339#define OMAP4430_VP_CORE_MAXVDD_ST_SHIFT 18
1340#define OMAP4430_VP_CORE_MAXVDD_ST_MASK BITFIELD(18, 18) 1340#define OMAP4430_VP_CORE_MAXVDD_ST_MASK BITFIELD(18, 18)
1341 1341
1342/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1342/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1343#define OMAP4430_VP_CORE_MINVDD_EN_SHIFT (1 << 17) 1343#define OMAP4430_VP_CORE_MINVDD_EN_SHIFT 17
1344#define OMAP4430_VP_CORE_MINVDD_EN_MASK BITFIELD(17, 17) 1344#define OMAP4430_VP_CORE_MINVDD_EN_MASK BITFIELD(17, 17)
1345 1345
1346/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1346/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1347#define OMAP4430_VP_CORE_MINVDD_ST_SHIFT (1 << 17) 1347#define OMAP4430_VP_CORE_MINVDD_ST_SHIFT 17
1348#define OMAP4430_VP_CORE_MINVDD_ST_MASK BITFIELD(17, 17) 1348#define OMAP4430_VP_CORE_MINVDD_ST_MASK BITFIELD(17, 17)
1349 1349
1350/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1350/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1351#define OMAP4430_VP_CORE_NOSMPSACK_EN_SHIFT (1 << 19) 1351#define OMAP4430_VP_CORE_NOSMPSACK_EN_SHIFT 19
1352#define OMAP4430_VP_CORE_NOSMPSACK_EN_MASK BITFIELD(19, 19) 1352#define OMAP4430_VP_CORE_NOSMPSACK_EN_MASK BITFIELD(19, 19)
1353 1353
1354/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1354/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1355#define OMAP4430_VP_CORE_NOSMPSACK_ST_SHIFT (1 << 19) 1355#define OMAP4430_VP_CORE_NOSMPSACK_ST_SHIFT 19
1356#define OMAP4430_VP_CORE_NOSMPSACK_ST_MASK BITFIELD(19, 19) 1356#define OMAP4430_VP_CORE_NOSMPSACK_ST_MASK BITFIELD(19, 19)
1357 1357
1358/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1358/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1359#define OMAP4430_VP_CORE_OPPCHANGEDONE_EN_SHIFT (1 << 16) 1359#define OMAP4430_VP_CORE_OPPCHANGEDONE_EN_SHIFT 16
1360#define OMAP4430_VP_CORE_OPPCHANGEDONE_EN_MASK BITFIELD(16, 16) 1360#define OMAP4430_VP_CORE_OPPCHANGEDONE_EN_MASK BITFIELD(16, 16)
1361 1361
1362/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1362/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1363#define OMAP4430_VP_CORE_OPPCHANGEDONE_ST_SHIFT (1 << 16) 1363#define OMAP4430_VP_CORE_OPPCHANGEDONE_ST_SHIFT 16
1364#define OMAP4430_VP_CORE_OPPCHANGEDONE_ST_MASK BITFIELD(16, 16) 1364#define OMAP4430_VP_CORE_OPPCHANGEDONE_ST_MASK BITFIELD(16, 16)
1365 1365
1366/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1366/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1367#define OMAP4430_VP_CORE_TRANXDONE_EN_SHIFT (1 << 21) 1367#define OMAP4430_VP_CORE_TRANXDONE_EN_SHIFT 21
1368#define OMAP4430_VP_CORE_TRANXDONE_EN_MASK BITFIELD(21, 21) 1368#define OMAP4430_VP_CORE_TRANXDONE_EN_MASK BITFIELD(21, 21)
1369 1369
1370/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1370/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1371#define OMAP4430_VP_CORE_TRANXDONE_ST_SHIFT (1 << 21) 1371#define OMAP4430_VP_CORE_TRANXDONE_ST_SHIFT 21
1372#define OMAP4430_VP_CORE_TRANXDONE_ST_MASK BITFIELD(21, 21) 1372#define OMAP4430_VP_CORE_TRANXDONE_ST_MASK BITFIELD(21, 21)
1373 1373
1374/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1374/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1375#define OMAP4430_VP_IVA_EQVALUE_EN_SHIFT (1 << 28) 1375#define OMAP4430_VP_IVA_EQVALUE_EN_SHIFT 28
1376#define OMAP4430_VP_IVA_EQVALUE_EN_MASK BITFIELD(28, 28) 1376#define OMAP4430_VP_IVA_EQVALUE_EN_MASK BITFIELD(28, 28)
1377 1377
1378/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1378/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1379#define OMAP4430_VP_IVA_EQVALUE_ST_SHIFT (1 << 28) 1379#define OMAP4430_VP_IVA_EQVALUE_ST_SHIFT 28
1380#define OMAP4430_VP_IVA_EQVALUE_ST_MASK BITFIELD(28, 28) 1380#define OMAP4430_VP_IVA_EQVALUE_ST_MASK BITFIELD(28, 28)
1381 1381
1382/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1382/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1383#define OMAP4430_VP_IVA_MAXVDD_EN_SHIFT (1 << 26) 1383#define OMAP4430_VP_IVA_MAXVDD_EN_SHIFT 26
1384#define OMAP4430_VP_IVA_MAXVDD_EN_MASK BITFIELD(26, 26) 1384#define OMAP4430_VP_IVA_MAXVDD_EN_MASK BITFIELD(26, 26)
1385 1385
1386/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1386/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1387#define OMAP4430_VP_IVA_MAXVDD_ST_SHIFT (1 << 26) 1387#define OMAP4430_VP_IVA_MAXVDD_ST_SHIFT 26
1388#define OMAP4430_VP_IVA_MAXVDD_ST_MASK BITFIELD(26, 26) 1388#define OMAP4430_VP_IVA_MAXVDD_ST_MASK BITFIELD(26, 26)
1389 1389
1390/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1390/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1391#define OMAP4430_VP_IVA_MINVDD_EN_SHIFT (1 << 25) 1391#define OMAP4430_VP_IVA_MINVDD_EN_SHIFT 25
1392#define OMAP4430_VP_IVA_MINVDD_EN_MASK BITFIELD(25, 25) 1392#define OMAP4430_VP_IVA_MINVDD_EN_MASK BITFIELD(25, 25)
1393 1393
1394/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1394/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1395#define OMAP4430_VP_IVA_MINVDD_ST_SHIFT (1 << 25) 1395#define OMAP4430_VP_IVA_MINVDD_ST_SHIFT 25
1396#define OMAP4430_VP_IVA_MINVDD_ST_MASK BITFIELD(25, 25) 1396#define OMAP4430_VP_IVA_MINVDD_ST_MASK BITFIELD(25, 25)
1397 1397
1398/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1398/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1399#define OMAP4430_VP_IVA_NOSMPSACK_EN_SHIFT (1 << 27) 1399#define OMAP4430_VP_IVA_NOSMPSACK_EN_SHIFT 27
1400#define OMAP4430_VP_IVA_NOSMPSACK_EN_MASK BITFIELD(27, 27) 1400#define OMAP4430_VP_IVA_NOSMPSACK_EN_MASK BITFIELD(27, 27)
1401 1401
1402/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1402/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1403#define OMAP4430_VP_IVA_NOSMPSACK_ST_SHIFT (1 << 27) 1403#define OMAP4430_VP_IVA_NOSMPSACK_ST_SHIFT 27
1404#define OMAP4430_VP_IVA_NOSMPSACK_ST_MASK BITFIELD(27, 27) 1404#define OMAP4430_VP_IVA_NOSMPSACK_ST_MASK BITFIELD(27, 27)
1405 1405
1406/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1406/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1407#define OMAP4430_VP_IVA_OPPCHANGEDONE_EN_SHIFT (1 << 24) 1407#define OMAP4430_VP_IVA_OPPCHANGEDONE_EN_SHIFT 24
1408#define OMAP4430_VP_IVA_OPPCHANGEDONE_EN_MASK BITFIELD(24, 24) 1408#define OMAP4430_VP_IVA_OPPCHANGEDONE_EN_MASK BITFIELD(24, 24)
1409 1409
1410/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1410/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1411#define OMAP4430_VP_IVA_OPPCHANGEDONE_ST_SHIFT (1 << 24) 1411#define OMAP4430_VP_IVA_OPPCHANGEDONE_ST_SHIFT 24
1412#define OMAP4430_VP_IVA_OPPCHANGEDONE_ST_MASK BITFIELD(24, 24) 1412#define OMAP4430_VP_IVA_OPPCHANGEDONE_ST_MASK BITFIELD(24, 24)
1413 1413
1414/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */ 1414/* Used by PRM_IRQENABLE_DUCATI, PRM_IRQENABLE_MPU */
1415#define OMAP4430_VP_IVA_TRANXDONE_EN_SHIFT (1 << 29) 1415#define OMAP4430_VP_IVA_TRANXDONE_EN_SHIFT 29
1416#define OMAP4430_VP_IVA_TRANXDONE_EN_MASK BITFIELD(29, 29) 1416#define OMAP4430_VP_IVA_TRANXDONE_EN_MASK BITFIELD(29, 29)
1417 1417
1418/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */ 1418/* Used by PRM_IRQSTATUS_DUCATI, PRM_IRQSTATUS_MPU */
1419#define OMAP4430_VP_IVA_TRANXDONE_ST_SHIFT (1 << 29) 1419#define OMAP4430_VP_IVA_TRANXDONE_ST_SHIFT 29
1420#define OMAP4430_VP_IVA_TRANXDONE_ST_MASK BITFIELD(29, 29) 1420#define OMAP4430_VP_IVA_TRANXDONE_ST_MASK BITFIELD(29, 29)
1421 1421
1422/* Used by PRM_IRQENABLE_MPU_2 */ 1422/* Used by PRM_IRQENABLE_MPU_2 */
1423#define OMAP4430_VP_MPU_EQVALUE_EN_SHIFT (1 << 4) 1423#define OMAP4430_VP_MPU_EQVALUE_EN_SHIFT 4
1424#define OMAP4430_VP_MPU_EQVALUE_EN_MASK BITFIELD(4, 4) 1424#define OMAP4430_VP_MPU_EQVALUE_EN_MASK BITFIELD(4, 4)
1425 1425
1426/* Used by PRM_IRQSTATUS_MPU_2 */ 1426/* Used by PRM_IRQSTATUS_MPU_2 */
1427#define OMAP4430_VP_MPU_EQVALUE_ST_SHIFT (1 << 4) 1427#define OMAP4430_VP_MPU_EQVALUE_ST_SHIFT 4
1428#define OMAP4430_VP_MPU_EQVALUE_ST_MASK BITFIELD(4, 4) 1428#define OMAP4430_VP_MPU_EQVALUE_ST_MASK BITFIELD(4, 4)
1429 1429
1430/* Used by PRM_IRQENABLE_MPU_2 */ 1430/* Used by PRM_IRQENABLE_MPU_2 */
1431#define OMAP4430_VP_MPU_MAXVDD_EN_SHIFT (1 << 2) 1431#define OMAP4430_VP_MPU_MAXVDD_EN_SHIFT 2
1432#define OMAP4430_VP_MPU_MAXVDD_EN_MASK BITFIELD(2, 2) 1432#define OMAP4430_VP_MPU_MAXVDD_EN_MASK BITFIELD(2, 2)
1433 1433
1434/* Used by PRM_IRQSTATUS_MPU_2 */ 1434/* Used by PRM_IRQSTATUS_MPU_2 */
1435#define OMAP4430_VP_MPU_MAXVDD_ST_SHIFT (1 << 2) 1435#define OMAP4430_VP_MPU_MAXVDD_ST_SHIFT 2
1436#define OMAP4430_VP_MPU_MAXVDD_ST_MASK BITFIELD(2, 2) 1436#define OMAP4430_VP_MPU_MAXVDD_ST_MASK BITFIELD(2, 2)
1437 1437
1438/* Used by PRM_IRQENABLE_MPU_2 */ 1438/* Used by PRM_IRQENABLE_MPU_2 */
1439#define OMAP4430_VP_MPU_MINVDD_EN_SHIFT (1 << 1) 1439#define OMAP4430_VP_MPU_MINVDD_EN_SHIFT 1
1440#define OMAP4430_VP_MPU_MINVDD_EN_MASK BITFIELD(1, 1) 1440#define OMAP4430_VP_MPU_MINVDD_EN_MASK BITFIELD(1, 1)
1441 1441
1442/* Used by PRM_IRQSTATUS_MPU_2 */ 1442/* Used by PRM_IRQSTATUS_MPU_2 */
1443#define OMAP4430_VP_MPU_MINVDD_ST_SHIFT (1 << 1) 1443#define OMAP4430_VP_MPU_MINVDD_ST_SHIFT 1
1444#define OMAP4430_VP_MPU_MINVDD_ST_MASK BITFIELD(1, 1) 1444#define OMAP4430_VP_MPU_MINVDD_ST_MASK BITFIELD(1, 1)
1445 1445
1446/* Used by PRM_IRQENABLE_MPU_2 */ 1446/* Used by PRM_IRQENABLE_MPU_2 */
1447#define OMAP4430_VP_MPU_NOSMPSACK_EN_SHIFT (1 << 3) 1447#define OMAP4430_VP_MPU_NOSMPSACK_EN_SHIFT 3
1448#define OMAP4430_VP_MPU_NOSMPSACK_EN_MASK BITFIELD(3, 3) 1448#define OMAP4430_VP_MPU_NOSMPSACK_EN_MASK BITFIELD(3, 3)
1449 1449
1450/* Used by PRM_IRQSTATUS_MPU_2 */ 1450/* Used by PRM_IRQSTATUS_MPU_2 */
1451#define OMAP4430_VP_MPU_NOSMPSACK_ST_SHIFT (1 << 3) 1451#define OMAP4430_VP_MPU_NOSMPSACK_ST_SHIFT 3
1452#define OMAP4430_VP_MPU_NOSMPSACK_ST_MASK BITFIELD(3, 3) 1452#define OMAP4430_VP_MPU_NOSMPSACK_ST_MASK BITFIELD(3, 3)
1453 1453
1454/* Used by PRM_IRQENABLE_MPU_2 */ 1454/* Used by PRM_IRQENABLE_MPU_2 */
1455#define OMAP4430_VP_MPU_OPPCHANGEDONE_EN_SHIFT (1 << 0) 1455#define OMAP4430_VP_MPU_OPPCHANGEDONE_EN_SHIFT 0
1456#define OMAP4430_VP_MPU_OPPCHANGEDONE_EN_MASK BITFIELD(0, 0) 1456#define OMAP4430_VP_MPU_OPPCHANGEDONE_EN_MASK BITFIELD(0, 0)
1457 1457
1458/* Used by PRM_IRQSTATUS_MPU_2 */ 1458/* Used by PRM_IRQSTATUS_MPU_2 */
1459#define OMAP4430_VP_MPU_OPPCHANGEDONE_ST_SHIFT (1 << 0) 1459#define OMAP4430_VP_MPU_OPPCHANGEDONE_ST_SHIFT 0
1460#define OMAP4430_VP_MPU_OPPCHANGEDONE_ST_MASK BITFIELD(0, 0) 1460#define OMAP4430_VP_MPU_OPPCHANGEDONE_ST_MASK BITFIELD(0, 0)
1461 1461
1462/* Used by PRM_IRQENABLE_MPU_2 */ 1462/* Used by PRM_IRQENABLE_MPU_2 */
1463#define OMAP4430_VP_MPU_TRANXDONE_EN_SHIFT (1 << 5) 1463#define OMAP4430_VP_MPU_TRANXDONE_EN_SHIFT 5
1464#define OMAP4430_VP_MPU_TRANXDONE_EN_MASK BITFIELD(5, 5) 1464#define OMAP4430_VP_MPU_TRANXDONE_EN_MASK BITFIELD(5, 5)
1465 1465
1466/* Used by PRM_IRQSTATUS_MPU_2 */ 1466/* Used by PRM_IRQSTATUS_MPU_2 */
1467#define OMAP4430_VP_MPU_TRANXDONE_ST_SHIFT (1 << 5) 1467#define OMAP4430_VP_MPU_TRANXDONE_ST_SHIFT 5
1468#define OMAP4430_VP_MPU_TRANXDONE_ST_MASK BITFIELD(5, 5) 1468#define OMAP4430_VP_MPU_TRANXDONE_ST_MASK BITFIELD(5, 5)
1469 1469
1470/* Used by PRM_SRAM_COUNT */ 1470/* Used by PRM_SRAM_COUNT */
1471#define OMAP4430_VSETUPCNT_VALUE_SHIFT (1 << 8) 1471#define OMAP4430_VSETUPCNT_VALUE_SHIFT 8
1472#define OMAP4430_VSETUPCNT_VALUE_MASK BITFIELD(8, 15) 1472#define OMAP4430_VSETUPCNT_VALUE_MASK BITFIELD(8, 15)
1473 1473
1474/* Used by PRM_VP_CORE_VSTEPMAX, PRM_VP_IVA_VSTEPMAX, PRM_VP_MPU_VSTEPMAX */ 1474/* Used by PRM_VP_CORE_VSTEPMAX, PRM_VP_IVA_VSTEPMAX, PRM_VP_MPU_VSTEPMAX */
1475#define OMAP4430_VSTEPMAX_SHIFT (1 << 0) 1475#define OMAP4430_VSTEPMAX_SHIFT 0
1476#define OMAP4430_VSTEPMAX_MASK BITFIELD(0, 7) 1476#define OMAP4430_VSTEPMAX_MASK BITFIELD(0, 7)
1477 1477
1478/* Used by PRM_VP_CORE_VSTEPMIN, PRM_VP_IVA_VSTEPMIN, PRM_VP_MPU_VSTEPMIN */ 1478/* Used by PRM_VP_CORE_VSTEPMIN, PRM_VP_IVA_VSTEPMIN, PRM_VP_MPU_VSTEPMIN */
1479#define OMAP4430_VSTEPMIN_SHIFT (1 << 0) 1479#define OMAP4430_VSTEPMIN_SHIFT 0
1480#define OMAP4430_VSTEPMIN_MASK BITFIELD(0, 7) 1480#define OMAP4430_VSTEPMIN_MASK BITFIELD(0, 7)
1481 1481
1482/* Used by PRM_MODEM_IF_CTRL */ 1482/* Used by PRM_MODEM_IF_CTRL */
1483#define OMAP4430_WAKE_MODEM_SHIFT (1 << 0) 1483#define OMAP4430_WAKE_MODEM_SHIFT 0
1484#define OMAP4430_WAKE_MODEM_MASK BITFIELD(0, 0) 1484#define OMAP4430_WAKE_MODEM_MASK BITFIELD(0, 0)
1485 1485
1486/* Used by PM_DSS_DSS_WKDEP */ 1486/* Used by PM_DSS_DSS_WKDEP */
1487#define OMAP4430_WKUPDEP_DISPC_DUCATI_SHIFT (1 << 1) 1487#define OMAP4430_WKUPDEP_DISPC_DUCATI_SHIFT 1
1488#define OMAP4430_WKUPDEP_DISPC_DUCATI_MASK BITFIELD(1, 1) 1488#define OMAP4430_WKUPDEP_DISPC_DUCATI_MASK BITFIELD(1, 1)
1489 1489
1490/* Used by PM_DSS_DSS_WKDEP */ 1490/* Used by PM_DSS_DSS_WKDEP */
1491#define OMAP4430_WKUPDEP_DISPC_MPU_SHIFT (1 << 0) 1491#define OMAP4430_WKUPDEP_DISPC_MPU_SHIFT 0
1492#define OMAP4430_WKUPDEP_DISPC_MPU_MASK BITFIELD(0, 0) 1492#define OMAP4430_WKUPDEP_DISPC_MPU_MASK BITFIELD(0, 0)
1493 1493
1494/* Used by PM_DSS_DSS_WKDEP */ 1494/* Used by PM_DSS_DSS_WKDEP */
1495#define OMAP4430_WKUPDEP_DISPC_SDMA_SHIFT (1 << 3) 1495#define OMAP4430_WKUPDEP_DISPC_SDMA_SHIFT 3
1496#define OMAP4430_WKUPDEP_DISPC_SDMA_MASK BITFIELD(3, 3) 1496#define OMAP4430_WKUPDEP_DISPC_SDMA_MASK BITFIELD(3, 3)
1497 1497
1498/* Used by PM_DSS_DSS_WKDEP */ 1498/* Used by PM_DSS_DSS_WKDEP */
1499#define OMAP4430_WKUPDEP_DISPC_TESLA_SHIFT (1 << 2) 1499#define OMAP4430_WKUPDEP_DISPC_TESLA_SHIFT 2
1500#define OMAP4430_WKUPDEP_DISPC_TESLA_MASK BITFIELD(2, 2) 1500#define OMAP4430_WKUPDEP_DISPC_TESLA_MASK BITFIELD(2, 2)
1501 1501
1502/* Used by PM_ABE_DMIC_WKDEP */ 1502/* Used by PM_ABE_DMIC_WKDEP */
1503#define OMAP4430_WKUPDEP_DMIC_DMA_SDMA_SHIFT (1 << 7) 1503#define OMAP4430_WKUPDEP_DMIC_DMA_SDMA_SHIFT 7
1504#define OMAP4430_WKUPDEP_DMIC_DMA_SDMA_MASK BITFIELD(7, 7) 1504#define OMAP4430_WKUPDEP_DMIC_DMA_SDMA_MASK BITFIELD(7, 7)
1505 1505
1506/* Used by PM_ABE_DMIC_WKDEP */ 1506/* Used by PM_ABE_DMIC_WKDEP */
1507#define OMAP4430_WKUPDEP_DMIC_DMA_TESLA_SHIFT (1 << 6) 1507#define OMAP4430_WKUPDEP_DMIC_DMA_TESLA_SHIFT 6
1508#define OMAP4430_WKUPDEP_DMIC_DMA_TESLA_MASK BITFIELD(6, 6) 1508#define OMAP4430_WKUPDEP_DMIC_DMA_TESLA_MASK BITFIELD(6, 6)
1509 1509
1510/* Used by PM_ABE_DMIC_WKDEP */ 1510/* Used by PM_ABE_DMIC_WKDEP */
1511#define OMAP4430_WKUPDEP_DMIC_IRQ_MPU_SHIFT (1 << 0) 1511#define OMAP4430_WKUPDEP_DMIC_IRQ_MPU_SHIFT 0
1512#define OMAP4430_WKUPDEP_DMIC_IRQ_MPU_MASK BITFIELD(0, 0) 1512#define OMAP4430_WKUPDEP_DMIC_IRQ_MPU_MASK BITFIELD(0, 0)
1513 1513
1514/* Used by PM_ABE_DMIC_WKDEP */ 1514/* Used by PM_ABE_DMIC_WKDEP */
1515#define OMAP4430_WKUPDEP_DMIC_IRQ_TESLA_SHIFT (1 << 2) 1515#define OMAP4430_WKUPDEP_DMIC_IRQ_TESLA_SHIFT 2
1516#define OMAP4430_WKUPDEP_DMIC_IRQ_TESLA_MASK BITFIELD(2, 2) 1516#define OMAP4430_WKUPDEP_DMIC_IRQ_TESLA_MASK BITFIELD(2, 2)
1517 1517
1518/* Used by PM_L4PER_DMTIMER10_WKDEP */ 1518/* Used by PM_L4PER_DMTIMER10_WKDEP */
1519#define OMAP4430_WKUPDEP_DMTIMER10_MPU_SHIFT (1 << 0) 1519#define OMAP4430_WKUPDEP_DMTIMER10_MPU_SHIFT 0
1520#define OMAP4430_WKUPDEP_DMTIMER10_MPU_MASK BITFIELD(0, 0) 1520#define OMAP4430_WKUPDEP_DMTIMER10_MPU_MASK BITFIELD(0, 0)
1521 1521
1522/* Used by PM_L4PER_DMTIMER11_WKDEP */ 1522/* Used by PM_L4PER_DMTIMER11_WKDEP */
1523#define OMAP4430_WKUPDEP_DMTIMER11_DUCATI_SHIFT (1 << 1) 1523#define OMAP4430_WKUPDEP_DMTIMER11_DUCATI_SHIFT 1
1524#define OMAP4430_WKUPDEP_DMTIMER11_DUCATI_MASK BITFIELD(1, 1) 1524#define OMAP4430_WKUPDEP_DMTIMER11_DUCATI_MASK BITFIELD(1, 1)
1525 1525
1526/* Used by PM_L4PER_DMTIMER11_WKDEP */ 1526/* Used by PM_L4PER_DMTIMER11_WKDEP */
1527#define OMAP4430_WKUPDEP_DMTIMER11_MPU_SHIFT (1 << 0) 1527#define OMAP4430_WKUPDEP_DMTIMER11_MPU_SHIFT 0
1528#define OMAP4430_WKUPDEP_DMTIMER11_MPU_MASK BITFIELD(0, 0) 1528#define OMAP4430_WKUPDEP_DMTIMER11_MPU_MASK BITFIELD(0, 0)
1529 1529
1530/* Used by PM_L4PER_DMTIMER2_WKDEP */ 1530/* Used by PM_L4PER_DMTIMER2_WKDEP */
1531#define OMAP4430_WKUPDEP_DMTIMER2_MPU_SHIFT (1 << 0) 1531#define OMAP4430_WKUPDEP_DMTIMER2_MPU_SHIFT 0
1532#define OMAP4430_WKUPDEP_DMTIMER2_MPU_MASK BITFIELD(0, 0) 1532#define OMAP4430_WKUPDEP_DMTIMER2_MPU_MASK BITFIELD(0, 0)
1533 1533
1534/* Used by PM_L4PER_DMTIMER3_WKDEP */ 1534/* Used by PM_L4PER_DMTIMER3_WKDEP */
1535#define OMAP4430_WKUPDEP_DMTIMER3_DUCATI_SHIFT (1 << 1) 1535#define OMAP4430_WKUPDEP_DMTIMER3_DUCATI_SHIFT 1
1536#define OMAP4430_WKUPDEP_DMTIMER3_DUCATI_MASK BITFIELD(1, 1) 1536#define OMAP4430_WKUPDEP_DMTIMER3_DUCATI_MASK BITFIELD(1, 1)
1537 1537
1538/* Used by PM_L4PER_DMTIMER3_WKDEP */ 1538/* Used by PM_L4PER_DMTIMER3_WKDEP */
1539#define OMAP4430_WKUPDEP_DMTIMER3_MPU_SHIFT (1 << 0) 1539#define OMAP4430_WKUPDEP_DMTIMER3_MPU_SHIFT 0
1540#define OMAP4430_WKUPDEP_DMTIMER3_MPU_MASK BITFIELD(0, 0) 1540#define OMAP4430_WKUPDEP_DMTIMER3_MPU_MASK BITFIELD(0, 0)
1541 1541
1542/* Used by PM_L4PER_DMTIMER4_WKDEP */ 1542/* Used by PM_L4PER_DMTIMER4_WKDEP */
1543#define OMAP4430_WKUPDEP_DMTIMER4_DUCATI_SHIFT (1 << 1) 1543#define OMAP4430_WKUPDEP_DMTIMER4_DUCATI_SHIFT 1
1544#define OMAP4430_WKUPDEP_DMTIMER4_DUCATI_MASK BITFIELD(1, 1) 1544#define OMAP4430_WKUPDEP_DMTIMER4_DUCATI_MASK BITFIELD(1, 1)
1545 1545
1546/* Used by PM_L4PER_DMTIMER4_WKDEP */ 1546/* Used by PM_L4PER_DMTIMER4_WKDEP */
1547#define OMAP4430_WKUPDEP_DMTIMER4_MPU_SHIFT (1 << 0) 1547#define OMAP4430_WKUPDEP_DMTIMER4_MPU_SHIFT 0
1548#define OMAP4430_WKUPDEP_DMTIMER4_MPU_MASK BITFIELD(0, 0) 1548#define OMAP4430_WKUPDEP_DMTIMER4_MPU_MASK BITFIELD(0, 0)
1549 1549
1550/* Used by PM_L4PER_DMTIMER9_WKDEP */ 1550/* Used by PM_L4PER_DMTIMER9_WKDEP */
1551#define OMAP4430_WKUPDEP_DMTIMER9_DUCATI_SHIFT (1 << 1) 1551#define OMAP4430_WKUPDEP_DMTIMER9_DUCATI_SHIFT 1
1552#define OMAP4430_WKUPDEP_DMTIMER9_DUCATI_MASK BITFIELD(1, 1) 1552#define OMAP4430_WKUPDEP_DMTIMER9_DUCATI_MASK BITFIELD(1, 1)
1553 1553
1554/* Used by PM_L4PER_DMTIMER9_WKDEP */ 1554/* Used by PM_L4PER_DMTIMER9_WKDEP */
1555#define OMAP4430_WKUPDEP_DMTIMER9_MPU_SHIFT (1 << 0) 1555#define OMAP4430_WKUPDEP_DMTIMER9_MPU_SHIFT 0
1556#define OMAP4430_WKUPDEP_DMTIMER9_MPU_MASK BITFIELD(0, 0) 1556#define OMAP4430_WKUPDEP_DMTIMER9_MPU_MASK BITFIELD(0, 0)
1557 1557
1558/* Used by PM_DSS_DSS_WKDEP */ 1558/* Used by PM_DSS_DSS_WKDEP */
1559#define OMAP4430_WKUPDEP_DSI1_DUCATI_SHIFT (1 << 5) 1559#define OMAP4430_WKUPDEP_DSI1_DUCATI_SHIFT 5
1560#define OMAP4430_WKUPDEP_DSI1_DUCATI_MASK BITFIELD(5, 5) 1560#define OMAP4430_WKUPDEP_DSI1_DUCATI_MASK BITFIELD(5, 5)
1561 1561
1562/* Used by PM_DSS_DSS_WKDEP */ 1562/* Used by PM_DSS_DSS_WKDEP */
1563#define OMAP4430_WKUPDEP_DSI1_MPU_SHIFT (1 << 4) 1563#define OMAP4430_WKUPDEP_DSI1_MPU_SHIFT 4
1564#define OMAP4430_WKUPDEP_DSI1_MPU_MASK BITFIELD(4, 4) 1564#define OMAP4430_WKUPDEP_DSI1_MPU_MASK BITFIELD(4, 4)
1565 1565
1566/* Used by PM_DSS_DSS_WKDEP */ 1566/* Used by PM_DSS_DSS_WKDEP */
1567#define OMAP4430_WKUPDEP_DSI1_SDMA_SHIFT (1 << 7) 1567#define OMAP4430_WKUPDEP_DSI1_SDMA_SHIFT 7
1568#define OMAP4430_WKUPDEP_DSI1_SDMA_MASK BITFIELD(7, 7) 1568#define OMAP4430_WKUPDEP_DSI1_SDMA_MASK BITFIELD(7, 7)
1569 1569
1570/* Used by PM_DSS_DSS_WKDEP */ 1570/* Used by PM_DSS_DSS_WKDEP */
1571#define OMAP4430_WKUPDEP_DSI1_TESLA_SHIFT (1 << 6) 1571#define OMAP4430_WKUPDEP_DSI1_TESLA_SHIFT 6
1572#define OMAP4430_WKUPDEP_DSI1_TESLA_MASK BITFIELD(6, 6) 1572#define OMAP4430_WKUPDEP_DSI1_TESLA_MASK BITFIELD(6, 6)
1573 1573
1574/* Used by PM_DSS_DSS_WKDEP */ 1574/* Used by PM_DSS_DSS_WKDEP */
1575#define OMAP4430_WKUPDEP_DSI2_DUCATI_SHIFT (1 << 9) 1575#define OMAP4430_WKUPDEP_DSI2_DUCATI_SHIFT 9
1576#define OMAP4430_WKUPDEP_DSI2_DUCATI_MASK BITFIELD(9, 9) 1576#define OMAP4430_WKUPDEP_DSI2_DUCATI_MASK BITFIELD(9, 9)
1577 1577
1578/* Used by PM_DSS_DSS_WKDEP */ 1578/* Used by PM_DSS_DSS_WKDEP */
1579#define OMAP4430_WKUPDEP_DSI2_MPU_SHIFT (1 << 8) 1579#define OMAP4430_WKUPDEP_DSI2_MPU_SHIFT 8
1580#define OMAP4430_WKUPDEP_DSI2_MPU_MASK BITFIELD(8, 8) 1580#define OMAP4430_WKUPDEP_DSI2_MPU_MASK BITFIELD(8, 8)
1581 1581
1582/* Used by PM_DSS_DSS_WKDEP */ 1582/* Used by PM_DSS_DSS_WKDEP */
1583#define OMAP4430_WKUPDEP_DSI2_SDMA_SHIFT (1 << 11) 1583#define OMAP4430_WKUPDEP_DSI2_SDMA_SHIFT 11
1584#define OMAP4430_WKUPDEP_DSI2_SDMA_MASK BITFIELD(11, 11) 1584#define OMAP4430_WKUPDEP_DSI2_SDMA_MASK BITFIELD(11, 11)
1585 1585
1586/* Used by PM_DSS_DSS_WKDEP */ 1586/* Used by PM_DSS_DSS_WKDEP */
1587#define OMAP4430_WKUPDEP_DSI2_TESLA_SHIFT (1 << 10) 1587#define OMAP4430_WKUPDEP_DSI2_TESLA_SHIFT 10
1588#define OMAP4430_WKUPDEP_DSI2_TESLA_MASK BITFIELD(10, 10) 1588#define OMAP4430_WKUPDEP_DSI2_TESLA_MASK BITFIELD(10, 10)
1589 1589
1590/* Used by PM_WKUP_GPIO1_WKDEP */ 1590/* Used by PM_WKUP_GPIO1_WKDEP */
1591#define OMAP4430_WKUPDEP_GPIO1_IRQ1_DUCATI_SHIFT (1 << 1) 1591#define OMAP4430_WKUPDEP_GPIO1_IRQ1_DUCATI_SHIFT 1
1592#define OMAP4430_WKUPDEP_GPIO1_IRQ1_DUCATI_MASK BITFIELD(1, 1) 1592#define OMAP4430_WKUPDEP_GPIO1_IRQ1_DUCATI_MASK BITFIELD(1, 1)
1593 1593
1594/* Used by PM_WKUP_GPIO1_WKDEP */ 1594/* Used by PM_WKUP_GPIO1_WKDEP */
1595#define OMAP4430_WKUPDEP_GPIO1_IRQ1_MPU_SHIFT (1 << 0) 1595#define OMAP4430_WKUPDEP_GPIO1_IRQ1_MPU_SHIFT 0
1596#define OMAP4430_WKUPDEP_GPIO1_IRQ1_MPU_MASK BITFIELD(0, 0) 1596#define OMAP4430_WKUPDEP_GPIO1_IRQ1_MPU_MASK BITFIELD(0, 0)
1597 1597
1598/* Used by PM_WKUP_GPIO1_WKDEP */ 1598/* Used by PM_WKUP_GPIO1_WKDEP */
1599#define OMAP4430_WKUPDEP_GPIO1_IRQ2_TESLA_SHIFT (1 << 6) 1599#define OMAP4430_WKUPDEP_GPIO1_IRQ2_TESLA_SHIFT 6
1600#define OMAP4430_WKUPDEP_GPIO1_IRQ2_TESLA_MASK BITFIELD(6, 6) 1600#define OMAP4430_WKUPDEP_GPIO1_IRQ2_TESLA_MASK BITFIELD(6, 6)
1601 1601
1602/* Used by PM_L4PER_GPIO2_WKDEP */ 1602/* Used by PM_L4PER_GPIO2_WKDEP */
1603#define OMAP4430_WKUPDEP_GPIO2_IRQ1_DUCATI_SHIFT (1 << 1) 1603#define OMAP4430_WKUPDEP_GPIO2_IRQ1_DUCATI_SHIFT 1
1604#define OMAP4430_WKUPDEP_GPIO2_IRQ1_DUCATI_MASK BITFIELD(1, 1) 1604#define OMAP4430_WKUPDEP_GPIO2_IRQ1_DUCATI_MASK BITFIELD(1, 1)
1605 1605
1606/* Used by PM_L4PER_GPIO2_WKDEP */ 1606/* Used by PM_L4PER_GPIO2_WKDEP */
1607#define OMAP4430_WKUPDEP_GPIO2_IRQ1_MPU_SHIFT (1 << 0) 1607#define OMAP4430_WKUPDEP_GPIO2_IRQ1_MPU_SHIFT 0
1608#define OMAP4430_WKUPDEP_GPIO2_IRQ1_MPU_MASK BITFIELD(0, 0) 1608#define OMAP4430_WKUPDEP_GPIO2_IRQ1_MPU_MASK BITFIELD(0, 0)
1609 1609
1610/* Used by PM_L4PER_GPIO2_WKDEP */ 1610/* Used by PM_L4PER_GPIO2_WKDEP */
1611#define OMAP4430_WKUPDEP_GPIO2_IRQ2_TESLA_SHIFT (1 << 6) 1611#define OMAP4430_WKUPDEP_GPIO2_IRQ2_TESLA_SHIFT 6
1612#define OMAP4430_WKUPDEP_GPIO2_IRQ2_TESLA_MASK BITFIELD(6, 6) 1612#define OMAP4430_WKUPDEP_GPIO2_IRQ2_TESLA_MASK BITFIELD(6, 6)
1613 1613
1614/* Used by PM_L4PER_GPIO3_WKDEP */ 1614/* Used by PM_L4PER_GPIO3_WKDEP */
1615#define OMAP4430_WKUPDEP_GPIO3_IRQ1_MPU_SHIFT (1 << 0) 1615#define OMAP4430_WKUPDEP_GPIO3_IRQ1_MPU_SHIFT 0
1616#define OMAP4430_WKUPDEP_GPIO3_IRQ1_MPU_MASK BITFIELD(0, 0) 1616#define OMAP4430_WKUPDEP_GPIO3_IRQ1_MPU_MASK BITFIELD(0, 0)
1617 1617
1618/* Used by PM_L4PER_GPIO3_WKDEP */ 1618/* Used by PM_L4PER_GPIO3_WKDEP */
1619#define OMAP4430_WKUPDEP_GPIO3_IRQ2_TESLA_SHIFT (1 << 6) 1619#define OMAP4430_WKUPDEP_GPIO3_IRQ2_TESLA_SHIFT 6
1620#define OMAP4430_WKUPDEP_GPIO3_IRQ2_TESLA_MASK BITFIELD(6, 6) 1620#define OMAP4430_WKUPDEP_GPIO3_IRQ2_TESLA_MASK BITFIELD(6, 6)
1621 1621
1622/* Used by PM_L4PER_GPIO4_WKDEP */ 1622/* Used by PM_L4PER_GPIO4_WKDEP */
1623#define OMAP4430_WKUPDEP_GPIO4_IRQ1_MPU_SHIFT (1 << 0) 1623#define OMAP4430_WKUPDEP_GPIO4_IRQ1_MPU_SHIFT 0
1624#define OMAP4430_WKUPDEP_GPIO4_IRQ1_MPU_MASK BITFIELD(0, 0) 1624#define OMAP4430_WKUPDEP_GPIO4_IRQ1_MPU_MASK BITFIELD(0, 0)
1625 1625
1626/* Used by PM_L4PER_GPIO4_WKDEP */ 1626/* Used by PM_L4PER_GPIO4_WKDEP */
1627#define OMAP4430_WKUPDEP_GPIO4_IRQ2_TESLA_SHIFT (1 << 6) 1627#define OMAP4430_WKUPDEP_GPIO4_IRQ2_TESLA_SHIFT 6
1628#define OMAP4430_WKUPDEP_GPIO4_IRQ2_TESLA_MASK BITFIELD(6, 6) 1628#define OMAP4430_WKUPDEP_GPIO4_IRQ2_TESLA_MASK BITFIELD(6, 6)
1629 1629
1630/* Used by PM_L4PER_GPIO5_WKDEP */ 1630/* Used by PM_L4PER_GPIO5_WKDEP */
1631#define OMAP4430_WKUPDEP_GPIO5_IRQ1_MPU_SHIFT (1 << 0) 1631#define OMAP4430_WKUPDEP_GPIO5_IRQ1_MPU_SHIFT 0
1632#define OMAP4430_WKUPDEP_GPIO5_IRQ1_MPU_MASK BITFIELD(0, 0) 1632#define OMAP4430_WKUPDEP_GPIO5_IRQ1_MPU_MASK BITFIELD(0, 0)
1633 1633
1634/* Used by PM_L4PER_GPIO5_WKDEP */ 1634/* Used by PM_L4PER_GPIO5_WKDEP */
1635#define OMAP4430_WKUPDEP_GPIO5_IRQ2_TESLA_SHIFT (1 << 6) 1635#define OMAP4430_WKUPDEP_GPIO5_IRQ2_TESLA_SHIFT 6
1636#define OMAP4430_WKUPDEP_GPIO5_IRQ2_TESLA_MASK BITFIELD(6, 6) 1636#define OMAP4430_WKUPDEP_GPIO5_IRQ2_TESLA_MASK BITFIELD(6, 6)
1637 1637
1638/* Used by PM_L4PER_GPIO6_WKDEP */ 1638/* Used by PM_L4PER_GPIO6_WKDEP */
1639#define OMAP4430_WKUPDEP_GPIO6_IRQ1_MPU_SHIFT (1 << 0) 1639#define OMAP4430_WKUPDEP_GPIO6_IRQ1_MPU_SHIFT 0
1640#define OMAP4430_WKUPDEP_GPIO6_IRQ1_MPU_MASK BITFIELD(0, 0) 1640#define OMAP4430_WKUPDEP_GPIO6_IRQ1_MPU_MASK BITFIELD(0, 0)
1641 1641
1642/* Used by PM_L4PER_GPIO6_WKDEP */ 1642/* Used by PM_L4PER_GPIO6_WKDEP */
1643#define OMAP4430_WKUPDEP_GPIO6_IRQ2_TESLA_SHIFT (1 << 6) 1643#define OMAP4430_WKUPDEP_GPIO6_IRQ2_TESLA_SHIFT 6
1644#define OMAP4430_WKUPDEP_GPIO6_IRQ2_TESLA_MASK BITFIELD(6, 6) 1644#define OMAP4430_WKUPDEP_GPIO6_IRQ2_TESLA_MASK BITFIELD(6, 6)
1645 1645
1646/* Used by PM_DSS_DSS_WKDEP */ 1646/* Used by PM_DSS_DSS_WKDEP */
1647#define OMAP4430_WKUPDEP_HDMIDMA_SDMA_SHIFT (1 << 19) 1647#define OMAP4430_WKUPDEP_HDMIDMA_SDMA_SHIFT 19
1648#define OMAP4430_WKUPDEP_HDMIDMA_SDMA_MASK BITFIELD(19, 19) 1648#define OMAP4430_WKUPDEP_HDMIDMA_SDMA_MASK BITFIELD(19, 19)
1649 1649
1650/* Used by PM_DSS_DSS_WKDEP */ 1650/* Used by PM_DSS_DSS_WKDEP */
1651#define OMAP4430_WKUPDEP_HDMIIRQ_DUCATI_SHIFT (1 << 13) 1651#define OMAP4430_WKUPDEP_HDMIIRQ_DUCATI_SHIFT 13
1652#define OMAP4430_WKUPDEP_HDMIIRQ_DUCATI_MASK BITFIELD(13, 13) 1652#define OMAP4430_WKUPDEP_HDMIIRQ_DUCATI_MASK BITFIELD(13, 13)
1653 1653
1654/* Used by PM_DSS_DSS_WKDEP */ 1654/* Used by PM_DSS_DSS_WKDEP */
1655#define OMAP4430_WKUPDEP_HDMIIRQ_MPU_SHIFT (1 << 12) 1655#define OMAP4430_WKUPDEP_HDMIIRQ_MPU_SHIFT 12
1656#define OMAP4430_WKUPDEP_HDMIIRQ_MPU_MASK BITFIELD(12, 12) 1656#define OMAP4430_WKUPDEP_HDMIIRQ_MPU_MASK BITFIELD(12, 12)
1657 1657
1658/* Used by PM_DSS_DSS_WKDEP */ 1658/* Used by PM_DSS_DSS_WKDEP */
1659#define OMAP4430_WKUPDEP_HDMIIRQ_TESLA_SHIFT (1 << 14) 1659#define OMAP4430_WKUPDEP_HDMIIRQ_TESLA_SHIFT 14
1660#define OMAP4430_WKUPDEP_HDMIIRQ_TESLA_MASK BITFIELD(14, 14) 1660#define OMAP4430_WKUPDEP_HDMIIRQ_TESLA_MASK BITFIELD(14, 14)
1661 1661
1662/* Used by PM_L4PER_HECC1_WKDEP */ 1662/* Used by PM_L4PER_HECC1_WKDEP */
1663#define OMAP4430_WKUPDEP_HECC1_MPU_SHIFT (1 << 0) 1663#define OMAP4430_WKUPDEP_HECC1_MPU_SHIFT 0
1664#define OMAP4430_WKUPDEP_HECC1_MPU_MASK BITFIELD(0, 0) 1664#define OMAP4430_WKUPDEP_HECC1_MPU_MASK BITFIELD(0, 0)
1665 1665
1666/* Used by PM_L4PER_HECC2_WKDEP */ 1666/* Used by PM_L4PER_HECC2_WKDEP */
1667#define OMAP4430_WKUPDEP_HECC2_MPU_SHIFT (1 << 0) 1667#define OMAP4430_WKUPDEP_HECC2_MPU_SHIFT 0
1668#define OMAP4430_WKUPDEP_HECC2_MPU_MASK BITFIELD(0, 0) 1668#define OMAP4430_WKUPDEP_HECC2_MPU_MASK BITFIELD(0, 0)
1669 1669
1670/* Used by PM_L3INIT_HSI_WKDEP */ 1670/* Used by PM_L3INIT_HSI_WKDEP */
1671#define OMAP4430_WKUPDEP_HSI_DSP_TESLA_SHIFT (1 << 6) 1671#define OMAP4430_WKUPDEP_HSI_DSP_TESLA_SHIFT 6
1672#define OMAP4430_WKUPDEP_HSI_DSP_TESLA_MASK BITFIELD(6, 6) 1672#define OMAP4430_WKUPDEP_HSI_DSP_TESLA_MASK BITFIELD(6, 6)
1673 1673
1674/* Used by PM_L3INIT_HSI_WKDEP */ 1674/* Used by PM_L3INIT_HSI_WKDEP */
1675#define OMAP4430_WKUPDEP_HSI_MCU_DUCATI_SHIFT (1 << 1) 1675#define OMAP4430_WKUPDEP_HSI_MCU_DUCATI_SHIFT 1
1676#define OMAP4430_WKUPDEP_HSI_MCU_DUCATI_MASK BITFIELD(1, 1) 1676#define OMAP4430_WKUPDEP_HSI_MCU_DUCATI_MASK BITFIELD(1, 1)
1677 1677
1678/* Used by PM_L3INIT_HSI_WKDEP */ 1678/* Used by PM_L3INIT_HSI_WKDEP */
1679#define OMAP4430_WKUPDEP_HSI_MCU_MPU_SHIFT (1 << 0) 1679#define OMAP4430_WKUPDEP_HSI_MCU_MPU_SHIFT 0
1680#define OMAP4430_WKUPDEP_HSI_MCU_MPU_MASK BITFIELD(0, 0) 1680#define OMAP4430_WKUPDEP_HSI_MCU_MPU_MASK BITFIELD(0, 0)
1681 1681
1682/* Used by PM_L4PER_I2C1_WKDEP */ 1682/* Used by PM_L4PER_I2C1_WKDEP */
1683#define OMAP4430_WKUPDEP_I2C1_DMA_SDMA_SHIFT (1 << 7) 1683#define OMAP4430_WKUPDEP_I2C1_DMA_SDMA_SHIFT 7
1684#define OMAP4430_WKUPDEP_I2C1_DMA_SDMA_MASK BITFIELD(7, 7) 1684#define OMAP4430_WKUPDEP_I2C1_DMA_SDMA_MASK BITFIELD(7, 7)
1685 1685
1686/* Used by PM_L4PER_I2C1_WKDEP */ 1686/* Used by PM_L4PER_I2C1_WKDEP */
1687#define OMAP4430_WKUPDEP_I2C1_IRQ_DUCATI_SHIFT (1 << 1) 1687#define OMAP4430_WKUPDEP_I2C1_IRQ_DUCATI_SHIFT 1
1688#define OMAP4430_WKUPDEP_I2C1_IRQ_DUCATI_MASK BITFIELD(1, 1) 1688#define OMAP4430_WKUPDEP_I2C1_IRQ_DUCATI_MASK BITFIELD(1, 1)
1689 1689
1690/* Used by PM_L4PER_I2C1_WKDEP */ 1690/* Used by PM_L4PER_I2C1_WKDEP */
1691#define OMAP4430_WKUPDEP_I2C1_IRQ_MPU_SHIFT (1 << 0) 1691#define OMAP4430_WKUPDEP_I2C1_IRQ_MPU_SHIFT 0
1692#define OMAP4430_WKUPDEP_I2C1_IRQ_MPU_MASK BITFIELD(0, 0) 1692#define OMAP4430_WKUPDEP_I2C1_IRQ_MPU_MASK BITFIELD(0, 0)
1693 1693
1694/* Used by PM_L4PER_I2C2_WKDEP */ 1694/* Used by PM_L4PER_I2C2_WKDEP */
1695#define OMAP4430_WKUPDEP_I2C2_DMA_SDMA_SHIFT (1 << 7) 1695#define OMAP4430_WKUPDEP_I2C2_DMA_SDMA_SHIFT 7
1696#define OMAP4430_WKUPDEP_I2C2_DMA_SDMA_MASK BITFIELD(7, 7) 1696#define OMAP4430_WKUPDEP_I2C2_DMA_SDMA_MASK BITFIELD(7, 7)
1697 1697
1698/* Used by PM_L4PER_I2C2_WKDEP */ 1698/* Used by PM_L4PER_I2C2_WKDEP */
1699#define OMAP4430_WKUPDEP_I2C2_IRQ_DUCATI_SHIFT (1 << 1) 1699#define OMAP4430_WKUPDEP_I2C2_IRQ_DUCATI_SHIFT 1
1700#define OMAP4430_WKUPDEP_I2C2_IRQ_DUCATI_MASK BITFIELD(1, 1) 1700#define OMAP4430_WKUPDEP_I2C2_IRQ_DUCATI_MASK BITFIELD(1, 1)
1701 1701
1702/* Used by PM_L4PER_I2C2_WKDEP */ 1702/* Used by PM_L4PER_I2C2_WKDEP */
1703#define OMAP4430_WKUPDEP_I2C2_IRQ_MPU_SHIFT (1 << 0) 1703#define OMAP4430_WKUPDEP_I2C2_IRQ_MPU_SHIFT 0
1704#define OMAP4430_WKUPDEP_I2C2_IRQ_MPU_MASK BITFIELD(0, 0) 1704#define OMAP4430_WKUPDEP_I2C2_IRQ_MPU_MASK BITFIELD(0, 0)
1705 1705
1706/* Used by PM_L4PER_I2C3_WKDEP */ 1706/* Used by PM_L4PER_I2C3_WKDEP */
1707#define OMAP4430_WKUPDEP_I2C3_DMA_SDMA_SHIFT (1 << 7) 1707#define OMAP4430_WKUPDEP_I2C3_DMA_SDMA_SHIFT 7
1708#define OMAP4430_WKUPDEP_I2C3_DMA_SDMA_MASK BITFIELD(7, 7) 1708#define OMAP4430_WKUPDEP_I2C3_DMA_SDMA_MASK BITFIELD(7, 7)
1709 1709
1710/* Used by PM_L4PER_I2C3_WKDEP */ 1710/* Used by PM_L4PER_I2C3_WKDEP */
1711#define OMAP4430_WKUPDEP_I2C3_IRQ_DUCATI_SHIFT (1 << 1) 1711#define OMAP4430_WKUPDEP_I2C3_IRQ_DUCATI_SHIFT 1
1712#define OMAP4430_WKUPDEP_I2C3_IRQ_DUCATI_MASK BITFIELD(1, 1) 1712#define OMAP4430_WKUPDEP_I2C3_IRQ_DUCATI_MASK BITFIELD(1, 1)
1713 1713
1714/* Used by PM_L4PER_I2C3_WKDEP */ 1714/* Used by PM_L4PER_I2C3_WKDEP */
1715#define OMAP4430_WKUPDEP_I2C3_IRQ_MPU_SHIFT (1 << 0) 1715#define OMAP4430_WKUPDEP_I2C3_IRQ_MPU_SHIFT 0
1716#define OMAP4430_WKUPDEP_I2C3_IRQ_MPU_MASK BITFIELD(0, 0) 1716#define OMAP4430_WKUPDEP_I2C3_IRQ_MPU_MASK BITFIELD(0, 0)
1717 1717
1718/* Used by PM_L4PER_I2C4_WKDEP */ 1718/* Used by PM_L4PER_I2C4_WKDEP */
1719#define OMAP4430_WKUPDEP_I2C4_DMA_SDMA_SHIFT (1 << 7) 1719#define OMAP4430_WKUPDEP_I2C4_DMA_SDMA_SHIFT 7
1720#define OMAP4430_WKUPDEP_I2C4_DMA_SDMA_MASK BITFIELD(7, 7) 1720#define OMAP4430_WKUPDEP_I2C4_DMA_SDMA_MASK BITFIELD(7, 7)
1721 1721
1722/* Used by PM_L4PER_I2C4_WKDEP */ 1722/* Used by PM_L4PER_I2C4_WKDEP */
1723#define OMAP4430_WKUPDEP_I2C4_IRQ_DUCATI_SHIFT (1 << 1) 1723#define OMAP4430_WKUPDEP_I2C4_IRQ_DUCATI_SHIFT 1
1724#define OMAP4430_WKUPDEP_I2C4_IRQ_DUCATI_MASK BITFIELD(1, 1) 1724#define OMAP4430_WKUPDEP_I2C4_IRQ_DUCATI_MASK BITFIELD(1, 1)
1725 1725
1726/* Used by PM_L4PER_I2C4_WKDEP */ 1726/* Used by PM_L4PER_I2C4_WKDEP */
1727#define OMAP4430_WKUPDEP_I2C4_IRQ_MPU_SHIFT (1 << 0) 1727#define OMAP4430_WKUPDEP_I2C4_IRQ_MPU_SHIFT 0
1728#define OMAP4430_WKUPDEP_I2C4_IRQ_MPU_MASK BITFIELD(0, 0) 1728#define OMAP4430_WKUPDEP_I2C4_IRQ_MPU_MASK BITFIELD(0, 0)
1729 1729
1730/* Used by PM_L4PER_I2C5_WKDEP */ 1730/* Used by PM_L4PER_I2C5_WKDEP */
1731#define OMAP4430_WKUPDEP_I2C5_DMA_SDMA_SHIFT (1 << 7) 1731#define OMAP4430_WKUPDEP_I2C5_DMA_SDMA_SHIFT 7
1732#define OMAP4430_WKUPDEP_I2C5_DMA_SDMA_MASK BITFIELD(7, 7) 1732#define OMAP4430_WKUPDEP_I2C5_DMA_SDMA_MASK BITFIELD(7, 7)
1733 1733
1734/* Used by PM_L4PER_I2C5_WKDEP */ 1734/* Used by PM_L4PER_I2C5_WKDEP */
1735#define OMAP4430_WKUPDEP_I2C5_IRQ_MPU_SHIFT (1 << 0) 1735#define OMAP4430_WKUPDEP_I2C5_IRQ_MPU_SHIFT 0
1736#define OMAP4430_WKUPDEP_I2C5_IRQ_MPU_MASK BITFIELD(0, 0) 1736#define OMAP4430_WKUPDEP_I2C5_IRQ_MPU_MASK BITFIELD(0, 0)
1737 1737
1738/* Used by PM_WKUP_KEYBOARD_WKDEP */ 1738/* Used by PM_WKUP_KEYBOARD_WKDEP */
1739#define OMAP4430_WKUPDEP_KEYBOARD_MPU_SHIFT (1 << 0) 1739#define OMAP4430_WKUPDEP_KEYBOARD_MPU_SHIFT 0
1740#define OMAP4430_WKUPDEP_KEYBOARD_MPU_MASK BITFIELD(0, 0) 1740#define OMAP4430_WKUPDEP_KEYBOARD_MPU_MASK BITFIELD(0, 0)
1741 1741
1742/* Used by PM_ABE_MCASP_WKDEP */ 1742/* Used by PM_ABE_MCASP_WKDEP */
1743#define OMAP4430_WKUPDEP_MCASP1_DMA_SDMA_SHIFT (1 << 7) 1743#define OMAP4430_WKUPDEP_MCASP1_DMA_SDMA_SHIFT 7
1744#define OMAP4430_WKUPDEP_MCASP1_DMA_SDMA_MASK BITFIELD(7, 7) 1744#define OMAP4430_WKUPDEP_MCASP1_DMA_SDMA_MASK BITFIELD(7, 7)
1745 1745
1746/* Used by PM_ABE_MCASP_WKDEP */ 1746/* Used by PM_ABE_MCASP_WKDEP */
1747#define OMAP4430_WKUPDEP_MCASP1_DMA_TESLA_SHIFT (1 << 6) 1747#define OMAP4430_WKUPDEP_MCASP1_DMA_TESLA_SHIFT 6
1748#define OMAP4430_WKUPDEP_MCASP1_DMA_TESLA_MASK BITFIELD(6, 6) 1748#define OMAP4430_WKUPDEP_MCASP1_DMA_TESLA_MASK BITFIELD(6, 6)
1749 1749
1750/* Used by PM_ABE_MCASP_WKDEP */ 1750/* Used by PM_ABE_MCASP_WKDEP */
1751#define OMAP4430_WKUPDEP_MCASP1_IRQ_MPU_SHIFT (1 << 0) 1751#define OMAP4430_WKUPDEP_MCASP1_IRQ_MPU_SHIFT 0
1752#define OMAP4430_WKUPDEP_MCASP1_IRQ_MPU_MASK BITFIELD(0, 0) 1752#define OMAP4430_WKUPDEP_MCASP1_IRQ_MPU_MASK BITFIELD(0, 0)
1753 1753
1754/* Used by PM_ABE_MCASP_WKDEP */ 1754/* Used by PM_ABE_MCASP_WKDEP */
1755#define OMAP4430_WKUPDEP_MCASP1_IRQ_TESLA_SHIFT (1 << 2) 1755#define OMAP4430_WKUPDEP_MCASP1_IRQ_TESLA_SHIFT 2
1756#define OMAP4430_WKUPDEP_MCASP1_IRQ_TESLA_MASK BITFIELD(2, 2) 1756#define OMAP4430_WKUPDEP_MCASP1_IRQ_TESLA_MASK BITFIELD(2, 2)
1757 1757
1758/* Used by PM_L4PER_MCASP2_WKDEP */ 1758/* Used by PM_L4PER_MCASP2_WKDEP */
1759#define OMAP4430_WKUPDEP_MCASP2_DMA_SDMA_SHIFT (1 << 7) 1759#define OMAP4430_WKUPDEP_MCASP2_DMA_SDMA_SHIFT 7
1760#define OMAP4430_WKUPDEP_MCASP2_DMA_SDMA_MASK BITFIELD(7, 7) 1760#define OMAP4430_WKUPDEP_MCASP2_DMA_SDMA_MASK BITFIELD(7, 7)
1761 1761
1762/* Used by PM_L4PER_MCASP2_WKDEP */ 1762/* Used by PM_L4PER_MCASP2_WKDEP */
1763#define OMAP4430_WKUPDEP_MCASP2_DMA_TESLA_SHIFT (1 << 6) 1763#define OMAP4430_WKUPDEP_MCASP2_DMA_TESLA_SHIFT 6
1764#define OMAP4430_WKUPDEP_MCASP2_DMA_TESLA_MASK BITFIELD(6, 6) 1764#define OMAP4430_WKUPDEP_MCASP2_DMA_TESLA_MASK BITFIELD(6, 6)
1765 1765
1766/* Used by PM_L4PER_MCASP2_WKDEP */ 1766/* Used by PM_L4PER_MCASP2_WKDEP */
1767#define OMAP4430_WKUPDEP_MCASP2_IRQ_MPU_SHIFT (1 << 0) 1767#define OMAP4430_WKUPDEP_MCASP2_IRQ_MPU_SHIFT 0
1768#define OMAP4430_WKUPDEP_MCASP2_IRQ_MPU_MASK BITFIELD(0, 0) 1768#define OMAP4430_WKUPDEP_MCASP2_IRQ_MPU_MASK BITFIELD(0, 0)
1769 1769
1770/* Used by PM_L4PER_MCASP2_WKDEP */ 1770/* Used by PM_L4PER_MCASP2_WKDEP */
1771#define OMAP4430_WKUPDEP_MCASP2_IRQ_TESLA_SHIFT (1 << 2) 1771#define OMAP4430_WKUPDEP_MCASP2_IRQ_TESLA_SHIFT 2
1772#define OMAP4430_WKUPDEP_MCASP2_IRQ_TESLA_MASK BITFIELD(2, 2) 1772#define OMAP4430_WKUPDEP_MCASP2_IRQ_TESLA_MASK BITFIELD(2, 2)
1773 1773
1774/* Used by PM_L4PER_MCASP3_WKDEP */ 1774/* Used by PM_L4PER_MCASP3_WKDEP */
1775#define OMAP4430_WKUPDEP_MCASP3_DMA_SDMA_SHIFT (1 << 7) 1775#define OMAP4430_WKUPDEP_MCASP3_DMA_SDMA_SHIFT 7
1776#define OMAP4430_WKUPDEP_MCASP3_DMA_SDMA_MASK BITFIELD(7, 7) 1776#define OMAP4430_WKUPDEP_MCASP3_DMA_SDMA_MASK BITFIELD(7, 7)
1777 1777
1778/* Used by PM_L4PER_MCASP3_WKDEP */ 1778/* Used by PM_L4PER_MCASP3_WKDEP */
1779#define OMAP4430_WKUPDEP_MCASP3_DMA_TESLA_SHIFT (1 << 6) 1779#define OMAP4430_WKUPDEP_MCASP3_DMA_TESLA_SHIFT 6
1780#define OMAP4430_WKUPDEP_MCASP3_DMA_TESLA_MASK BITFIELD(6, 6) 1780#define OMAP4430_WKUPDEP_MCASP3_DMA_TESLA_MASK BITFIELD(6, 6)
1781 1781
1782/* Used by PM_L4PER_MCASP3_WKDEP */ 1782/* Used by PM_L4PER_MCASP3_WKDEP */
1783#define OMAP4430_WKUPDEP_MCASP3_IRQ_MPU_SHIFT (1 << 0) 1783#define OMAP4430_WKUPDEP_MCASP3_IRQ_MPU_SHIFT 0
1784#define OMAP4430_WKUPDEP_MCASP3_IRQ_MPU_MASK BITFIELD(0, 0) 1784#define OMAP4430_WKUPDEP_MCASP3_IRQ_MPU_MASK BITFIELD(0, 0)
1785 1785
1786/* Used by PM_L4PER_MCASP3_WKDEP */ 1786/* Used by PM_L4PER_MCASP3_WKDEP */
1787#define OMAP4430_WKUPDEP_MCASP3_IRQ_TESLA_SHIFT (1 << 2) 1787#define OMAP4430_WKUPDEP_MCASP3_IRQ_TESLA_SHIFT 2
1788#define OMAP4430_WKUPDEP_MCASP3_IRQ_TESLA_MASK BITFIELD(2, 2) 1788#define OMAP4430_WKUPDEP_MCASP3_IRQ_TESLA_MASK BITFIELD(2, 2)
1789 1789
1790/* Used by PM_ABE_MCBSP1_WKDEP */ 1790/* Used by PM_ABE_MCBSP1_WKDEP */
1791#define OMAP4430_WKUPDEP_MCBSP1_MPU_SHIFT (1 << 0) 1791#define OMAP4430_WKUPDEP_MCBSP1_MPU_SHIFT 0
1792#define OMAP4430_WKUPDEP_MCBSP1_MPU_MASK BITFIELD(0, 0) 1792#define OMAP4430_WKUPDEP_MCBSP1_MPU_MASK BITFIELD(0, 0)
1793 1793
1794/* Used by PM_ABE_MCBSP1_WKDEP */ 1794/* Used by PM_ABE_MCBSP1_WKDEP */
1795#define OMAP4430_WKUPDEP_MCBSP1_SDMA_SHIFT (1 << 3) 1795#define OMAP4430_WKUPDEP_MCBSP1_SDMA_SHIFT 3
1796#define OMAP4430_WKUPDEP_MCBSP1_SDMA_MASK BITFIELD(3, 3) 1796#define OMAP4430_WKUPDEP_MCBSP1_SDMA_MASK BITFIELD(3, 3)
1797 1797
1798/* Used by PM_ABE_MCBSP1_WKDEP */ 1798/* Used by PM_ABE_MCBSP1_WKDEP */
1799#define OMAP4430_WKUPDEP_MCBSP1_TESLA_SHIFT (1 << 2) 1799#define OMAP4430_WKUPDEP_MCBSP1_TESLA_SHIFT 2
1800#define OMAP4430_WKUPDEP_MCBSP1_TESLA_MASK BITFIELD(2, 2) 1800#define OMAP4430_WKUPDEP_MCBSP1_TESLA_MASK BITFIELD(2, 2)
1801 1801
1802/* Used by PM_ABE_MCBSP2_WKDEP */ 1802/* Used by PM_ABE_MCBSP2_WKDEP */
1803#define OMAP4430_WKUPDEP_MCBSP2_MPU_SHIFT (1 << 0) 1803#define OMAP4430_WKUPDEP_MCBSP2_MPU_SHIFT 0
1804#define OMAP4430_WKUPDEP_MCBSP2_MPU_MASK BITFIELD(0, 0) 1804#define OMAP4430_WKUPDEP_MCBSP2_MPU_MASK BITFIELD(0, 0)
1805 1805
1806/* Used by PM_ABE_MCBSP2_WKDEP */ 1806/* Used by PM_ABE_MCBSP2_WKDEP */
1807#define OMAP4430_WKUPDEP_MCBSP2_SDMA_SHIFT (1 << 3) 1807#define OMAP4430_WKUPDEP_MCBSP2_SDMA_SHIFT 3
1808#define OMAP4430_WKUPDEP_MCBSP2_SDMA_MASK BITFIELD(3, 3) 1808#define OMAP4430_WKUPDEP_MCBSP2_SDMA_MASK BITFIELD(3, 3)
1809 1809
1810/* Used by PM_ABE_MCBSP2_WKDEP */ 1810/* Used by PM_ABE_MCBSP2_WKDEP */
1811#define OMAP4430_WKUPDEP_MCBSP2_TESLA_SHIFT (1 << 2) 1811#define OMAP4430_WKUPDEP_MCBSP2_TESLA_SHIFT 2
1812#define OMAP4430_WKUPDEP_MCBSP2_TESLA_MASK BITFIELD(2, 2) 1812#define OMAP4430_WKUPDEP_MCBSP2_TESLA_MASK BITFIELD(2, 2)
1813 1813
1814/* Used by PM_ABE_MCBSP3_WKDEP */ 1814/* Used by PM_ABE_MCBSP3_WKDEP */
1815#define OMAP4430_WKUPDEP_MCBSP3_MPU_SHIFT (1 << 0) 1815#define OMAP4430_WKUPDEP_MCBSP3_MPU_SHIFT 0
1816#define OMAP4430_WKUPDEP_MCBSP3_MPU_MASK BITFIELD(0, 0) 1816#define OMAP4430_WKUPDEP_MCBSP3_MPU_MASK BITFIELD(0, 0)
1817 1817
1818/* Used by PM_ABE_MCBSP3_WKDEP */ 1818/* Used by PM_ABE_MCBSP3_WKDEP */
1819#define OMAP4430_WKUPDEP_MCBSP3_SDMA_SHIFT (1 << 3) 1819#define OMAP4430_WKUPDEP_MCBSP3_SDMA_SHIFT 3
1820#define OMAP4430_WKUPDEP_MCBSP3_SDMA_MASK BITFIELD(3, 3) 1820#define OMAP4430_WKUPDEP_MCBSP3_SDMA_MASK BITFIELD(3, 3)
1821 1821
1822/* Used by PM_ABE_MCBSP3_WKDEP */ 1822/* Used by PM_ABE_MCBSP3_WKDEP */
1823#define OMAP4430_WKUPDEP_MCBSP3_TESLA_SHIFT (1 << 2) 1823#define OMAP4430_WKUPDEP_MCBSP3_TESLA_SHIFT 2
1824#define OMAP4430_WKUPDEP_MCBSP3_TESLA_MASK BITFIELD(2, 2) 1824#define OMAP4430_WKUPDEP_MCBSP3_TESLA_MASK BITFIELD(2, 2)
1825 1825
1826/* Used by PM_L4PER_MCBSP4_WKDEP */ 1826/* Used by PM_L4PER_MCBSP4_WKDEP */
1827#define OMAP4430_WKUPDEP_MCBSP4_MPU_SHIFT (1 << 0) 1827#define OMAP4430_WKUPDEP_MCBSP4_MPU_SHIFT 0
1828#define OMAP4430_WKUPDEP_MCBSP4_MPU_MASK BITFIELD(0, 0) 1828#define OMAP4430_WKUPDEP_MCBSP4_MPU_MASK BITFIELD(0, 0)
1829 1829
1830/* Used by PM_L4PER_MCBSP4_WKDEP */ 1830/* Used by PM_L4PER_MCBSP4_WKDEP */
1831#define OMAP4430_WKUPDEP_MCBSP4_SDMA_SHIFT (1 << 3) 1831#define OMAP4430_WKUPDEP_MCBSP4_SDMA_SHIFT 3
1832#define OMAP4430_WKUPDEP_MCBSP4_SDMA_MASK BITFIELD(3, 3) 1832#define OMAP4430_WKUPDEP_MCBSP4_SDMA_MASK BITFIELD(3, 3)
1833 1833
1834/* Used by PM_L4PER_MCBSP4_WKDEP */ 1834/* Used by PM_L4PER_MCBSP4_WKDEP */
1835#define OMAP4430_WKUPDEP_MCBSP4_TESLA_SHIFT (1 << 2) 1835#define OMAP4430_WKUPDEP_MCBSP4_TESLA_SHIFT 2
1836#define OMAP4430_WKUPDEP_MCBSP4_TESLA_MASK BITFIELD(2, 2) 1836#define OMAP4430_WKUPDEP_MCBSP4_TESLA_MASK BITFIELD(2, 2)
1837 1837
1838/* Used by PM_L4PER_MCSPI1_WKDEP */ 1838/* Used by PM_L4PER_MCSPI1_WKDEP */
1839#define OMAP4430_WKUPDEP_MCSPI1_DUCATI_SHIFT (1 << 1) 1839#define OMAP4430_WKUPDEP_MCSPI1_DUCATI_SHIFT 1
1840#define OMAP4430_WKUPDEP_MCSPI1_DUCATI_MASK BITFIELD(1, 1) 1840#define OMAP4430_WKUPDEP_MCSPI1_DUCATI_MASK BITFIELD(1, 1)
1841 1841
1842/* Used by PM_L4PER_MCSPI1_WKDEP */ 1842/* Used by PM_L4PER_MCSPI1_WKDEP */
1843#define OMAP4430_WKUPDEP_MCSPI1_MPU_SHIFT (1 << 0) 1843#define OMAP4430_WKUPDEP_MCSPI1_MPU_SHIFT 0
1844#define OMAP4430_WKUPDEP_MCSPI1_MPU_MASK BITFIELD(0, 0) 1844#define OMAP4430_WKUPDEP_MCSPI1_MPU_MASK BITFIELD(0, 0)
1845 1845
1846/* Used by PM_L4PER_MCSPI1_WKDEP */ 1846/* Used by PM_L4PER_MCSPI1_WKDEP */
1847#define OMAP4430_WKUPDEP_MCSPI1_SDMA_SHIFT (1 << 3) 1847#define OMAP4430_WKUPDEP_MCSPI1_SDMA_SHIFT 3
1848#define OMAP4430_WKUPDEP_MCSPI1_SDMA_MASK BITFIELD(3, 3) 1848#define OMAP4430_WKUPDEP_MCSPI1_SDMA_MASK BITFIELD(3, 3)
1849 1849
1850/* Used by PM_L4PER_MCSPI1_WKDEP */ 1850/* Used by PM_L4PER_MCSPI1_WKDEP */
1851#define OMAP4430_WKUPDEP_MCSPI1_TESLA_SHIFT (1 << 2) 1851#define OMAP4430_WKUPDEP_MCSPI1_TESLA_SHIFT 2
1852#define OMAP4430_WKUPDEP_MCSPI1_TESLA_MASK BITFIELD(2, 2) 1852#define OMAP4430_WKUPDEP_MCSPI1_TESLA_MASK BITFIELD(2, 2)
1853 1853
1854/* Used by PM_L4PER_MCSPI2_WKDEP */ 1854/* Used by PM_L4PER_MCSPI2_WKDEP */
1855#define OMAP4430_WKUPDEP_MCSPI2_DUCATI_SHIFT (1 << 1) 1855#define OMAP4430_WKUPDEP_MCSPI2_DUCATI_SHIFT 1
1856#define OMAP4430_WKUPDEP_MCSPI2_DUCATI_MASK BITFIELD(1, 1) 1856#define OMAP4430_WKUPDEP_MCSPI2_DUCATI_MASK BITFIELD(1, 1)
1857 1857
1858/* Used by PM_L4PER_MCSPI2_WKDEP */ 1858/* Used by PM_L4PER_MCSPI2_WKDEP */
1859#define OMAP4430_WKUPDEP_MCSPI2_MPU_SHIFT (1 << 0) 1859#define OMAP4430_WKUPDEP_MCSPI2_MPU_SHIFT 0
1860#define OMAP4430_WKUPDEP_MCSPI2_MPU_MASK BITFIELD(0, 0) 1860#define OMAP4430_WKUPDEP_MCSPI2_MPU_MASK BITFIELD(0, 0)
1861 1861
1862/* Used by PM_L4PER_MCSPI2_WKDEP */ 1862/* Used by PM_L4PER_MCSPI2_WKDEP */
1863#define OMAP4430_WKUPDEP_MCSPI2_SDMA_SHIFT (1 << 3) 1863#define OMAP4430_WKUPDEP_MCSPI2_SDMA_SHIFT 3
1864#define OMAP4430_WKUPDEP_MCSPI2_SDMA_MASK BITFIELD(3, 3) 1864#define OMAP4430_WKUPDEP_MCSPI2_SDMA_MASK BITFIELD(3, 3)
1865 1865
1866/* Used by PM_L4PER_MCSPI3_WKDEP */ 1866/* Used by PM_L4PER_MCSPI3_WKDEP */
1867#define OMAP4430_WKUPDEP_MCSPI3_MPU_SHIFT (1 << 0) 1867#define OMAP4430_WKUPDEP_MCSPI3_MPU_SHIFT 0
1868#define OMAP4430_WKUPDEP_MCSPI3_MPU_MASK BITFIELD(0, 0) 1868#define OMAP4430_WKUPDEP_MCSPI3_MPU_MASK BITFIELD(0, 0)
1869 1869
1870/* Used by PM_L4PER_MCSPI3_WKDEP */ 1870/* Used by PM_L4PER_MCSPI3_WKDEP */
1871#define OMAP4430_WKUPDEP_MCSPI3_SDMA_SHIFT (1 << 3) 1871#define OMAP4430_WKUPDEP_MCSPI3_SDMA_SHIFT 3
1872#define OMAP4430_WKUPDEP_MCSPI3_SDMA_MASK BITFIELD(3, 3) 1872#define OMAP4430_WKUPDEP_MCSPI3_SDMA_MASK BITFIELD(3, 3)
1873 1873
1874/* Used by PM_L4PER_MCSPI4_WKDEP */ 1874/* Used by PM_L4PER_MCSPI4_WKDEP */
1875#define OMAP4430_WKUPDEP_MCSPI4_MPU_SHIFT (1 << 0) 1875#define OMAP4430_WKUPDEP_MCSPI4_MPU_SHIFT 0
1876#define OMAP4430_WKUPDEP_MCSPI4_MPU_MASK BITFIELD(0, 0) 1876#define OMAP4430_WKUPDEP_MCSPI4_MPU_MASK BITFIELD(0, 0)
1877 1877
1878/* Used by PM_L4PER_MCSPI4_WKDEP */ 1878/* Used by PM_L4PER_MCSPI4_WKDEP */
1879#define OMAP4430_WKUPDEP_MCSPI4_SDMA_SHIFT (1 << 3) 1879#define OMAP4430_WKUPDEP_MCSPI4_SDMA_SHIFT 3
1880#define OMAP4430_WKUPDEP_MCSPI4_SDMA_MASK BITFIELD(3, 3) 1880#define OMAP4430_WKUPDEP_MCSPI4_SDMA_MASK BITFIELD(3, 3)
1881 1881
1882/* Used by PM_L3INIT_MMC1_WKDEP */ 1882/* Used by PM_L3INIT_MMC1_WKDEP */
1883#define OMAP4430_WKUPDEP_MMC1_DUCATI_SHIFT (1 << 1) 1883#define OMAP4430_WKUPDEP_MMC1_DUCATI_SHIFT 1
1884#define OMAP4430_WKUPDEP_MMC1_DUCATI_MASK BITFIELD(1, 1) 1884#define OMAP4430_WKUPDEP_MMC1_DUCATI_MASK BITFIELD(1, 1)
1885 1885
1886/* Used by PM_L3INIT_MMC1_WKDEP */ 1886/* Used by PM_L3INIT_MMC1_WKDEP */
1887#define OMAP4430_WKUPDEP_MMC1_MPU_SHIFT (1 << 0) 1887#define OMAP4430_WKUPDEP_MMC1_MPU_SHIFT 0
1888#define OMAP4430_WKUPDEP_MMC1_MPU_MASK BITFIELD(0, 0) 1888#define OMAP4430_WKUPDEP_MMC1_MPU_MASK BITFIELD(0, 0)
1889 1889
1890/* Used by PM_L3INIT_MMC1_WKDEP */ 1890/* Used by PM_L3INIT_MMC1_WKDEP */
1891#define OMAP4430_WKUPDEP_MMC1_SDMA_SHIFT (1 << 3) 1891#define OMAP4430_WKUPDEP_MMC1_SDMA_SHIFT 3
1892#define OMAP4430_WKUPDEP_MMC1_SDMA_MASK BITFIELD(3, 3) 1892#define OMAP4430_WKUPDEP_MMC1_SDMA_MASK BITFIELD(3, 3)
1893 1893
1894/* Used by PM_L3INIT_MMC1_WKDEP */ 1894/* Used by PM_L3INIT_MMC1_WKDEP */
1895#define OMAP4430_WKUPDEP_MMC1_TESLA_SHIFT (1 << 2) 1895#define OMAP4430_WKUPDEP_MMC1_TESLA_SHIFT 2
1896#define OMAP4430_WKUPDEP_MMC1_TESLA_MASK BITFIELD(2, 2) 1896#define OMAP4430_WKUPDEP_MMC1_TESLA_MASK BITFIELD(2, 2)
1897 1897
1898/* Used by PM_L3INIT_MMC2_WKDEP */ 1898/* Used by PM_L3INIT_MMC2_WKDEP */
1899#define OMAP4430_WKUPDEP_MMC2_DUCATI_SHIFT (1 << 1) 1899#define OMAP4430_WKUPDEP_MMC2_DUCATI_SHIFT 1
1900#define OMAP4430_WKUPDEP_MMC2_DUCATI_MASK BITFIELD(1, 1) 1900#define OMAP4430_WKUPDEP_MMC2_DUCATI_MASK BITFIELD(1, 1)
1901 1901
1902/* Used by PM_L3INIT_MMC2_WKDEP */ 1902/* Used by PM_L3INIT_MMC2_WKDEP */
1903#define OMAP4430_WKUPDEP_MMC2_MPU_SHIFT (1 << 0) 1903#define OMAP4430_WKUPDEP_MMC2_MPU_SHIFT 0
1904#define OMAP4430_WKUPDEP_MMC2_MPU_MASK BITFIELD(0, 0) 1904#define OMAP4430_WKUPDEP_MMC2_MPU_MASK BITFIELD(0, 0)
1905 1905
1906/* Used by PM_L3INIT_MMC2_WKDEP */ 1906/* Used by PM_L3INIT_MMC2_WKDEP */
1907#define OMAP4430_WKUPDEP_MMC2_SDMA_SHIFT (1 << 3) 1907#define OMAP4430_WKUPDEP_MMC2_SDMA_SHIFT 3
1908#define OMAP4430_WKUPDEP_MMC2_SDMA_MASK BITFIELD(3, 3) 1908#define OMAP4430_WKUPDEP_MMC2_SDMA_MASK BITFIELD(3, 3)
1909 1909
1910/* Used by PM_L3INIT_MMC2_WKDEP */ 1910/* Used by PM_L3INIT_MMC2_WKDEP */
1911#define OMAP4430_WKUPDEP_MMC2_TESLA_SHIFT (1 << 2) 1911#define OMAP4430_WKUPDEP_MMC2_TESLA_SHIFT 2
1912#define OMAP4430_WKUPDEP_MMC2_TESLA_MASK BITFIELD(2, 2) 1912#define OMAP4430_WKUPDEP_MMC2_TESLA_MASK BITFIELD(2, 2)
1913 1913
1914/* Used by PM_L3INIT_MMC6_WKDEP */ 1914/* Used by PM_L3INIT_MMC6_WKDEP */
1915#define OMAP4430_WKUPDEP_MMC6_DUCATI_SHIFT (1 << 1) 1915#define OMAP4430_WKUPDEP_MMC6_DUCATI_SHIFT 1
1916#define OMAP4430_WKUPDEP_MMC6_DUCATI_MASK BITFIELD(1, 1) 1916#define OMAP4430_WKUPDEP_MMC6_DUCATI_MASK BITFIELD(1, 1)
1917 1917
1918/* Used by PM_L3INIT_MMC6_WKDEP */ 1918/* Used by PM_L3INIT_MMC6_WKDEP */
1919#define OMAP4430_WKUPDEP_MMC6_MPU_SHIFT (1 << 0) 1919#define OMAP4430_WKUPDEP_MMC6_MPU_SHIFT 0
1920#define OMAP4430_WKUPDEP_MMC6_MPU_MASK BITFIELD(0, 0) 1920#define OMAP4430_WKUPDEP_MMC6_MPU_MASK BITFIELD(0, 0)
1921 1921
1922/* Used by PM_L3INIT_MMC6_WKDEP */ 1922/* Used by PM_L3INIT_MMC6_WKDEP */
1923#define OMAP4430_WKUPDEP_MMC6_TESLA_SHIFT (1 << 2) 1923#define OMAP4430_WKUPDEP_MMC6_TESLA_SHIFT 2
1924#define OMAP4430_WKUPDEP_MMC6_TESLA_MASK BITFIELD(2, 2) 1924#define OMAP4430_WKUPDEP_MMC6_TESLA_MASK BITFIELD(2, 2)
1925 1925
1926/* Used by PM_L4PER_MMCSD3_WKDEP */ 1926/* Used by PM_L4PER_MMCSD3_WKDEP */
1927#define OMAP4430_WKUPDEP_MMCSD3_DUCATI_SHIFT (1 << 1) 1927#define OMAP4430_WKUPDEP_MMCSD3_DUCATI_SHIFT 1
1928#define OMAP4430_WKUPDEP_MMCSD3_DUCATI_MASK BITFIELD(1, 1) 1928#define OMAP4430_WKUPDEP_MMCSD3_DUCATI_MASK BITFIELD(1, 1)
1929 1929
1930/* Used by PM_L4PER_MMCSD3_WKDEP */ 1930/* Used by PM_L4PER_MMCSD3_WKDEP */
1931#define OMAP4430_WKUPDEP_MMCSD3_MPU_SHIFT (1 << 0) 1931#define OMAP4430_WKUPDEP_MMCSD3_MPU_SHIFT 0
1932#define OMAP4430_WKUPDEP_MMCSD3_MPU_MASK BITFIELD(0, 0) 1932#define OMAP4430_WKUPDEP_MMCSD3_MPU_MASK BITFIELD(0, 0)
1933 1933
1934/* Used by PM_L4PER_MMCSD3_WKDEP */ 1934/* Used by PM_L4PER_MMCSD3_WKDEP */
1935#define OMAP4430_WKUPDEP_MMCSD3_SDMA_SHIFT (1 << 3) 1935#define OMAP4430_WKUPDEP_MMCSD3_SDMA_SHIFT 3
1936#define OMAP4430_WKUPDEP_MMCSD3_SDMA_MASK BITFIELD(3, 3) 1936#define OMAP4430_WKUPDEP_MMCSD3_SDMA_MASK BITFIELD(3, 3)
1937 1937
1938/* Used by PM_L4PER_MMCSD4_WKDEP */ 1938/* Used by PM_L4PER_MMCSD4_WKDEP */
1939#define OMAP4430_WKUPDEP_MMCSD4_DUCATI_SHIFT (1 << 1) 1939#define OMAP4430_WKUPDEP_MMCSD4_DUCATI_SHIFT 1
1940#define OMAP4430_WKUPDEP_MMCSD4_DUCATI_MASK BITFIELD(1, 1) 1940#define OMAP4430_WKUPDEP_MMCSD4_DUCATI_MASK BITFIELD(1, 1)
1941 1941
1942/* Used by PM_L4PER_MMCSD4_WKDEP */ 1942/* Used by PM_L4PER_MMCSD4_WKDEP */
1943#define OMAP4430_WKUPDEP_MMCSD4_MPU_SHIFT (1 << 0) 1943#define OMAP4430_WKUPDEP_MMCSD4_MPU_SHIFT 0
1944#define OMAP4430_WKUPDEP_MMCSD4_MPU_MASK BITFIELD(0, 0) 1944#define OMAP4430_WKUPDEP_MMCSD4_MPU_MASK BITFIELD(0, 0)
1945 1945
1946/* Used by PM_L4PER_MMCSD4_WKDEP */ 1946/* Used by PM_L4PER_MMCSD4_WKDEP */
1947#define OMAP4430_WKUPDEP_MMCSD4_SDMA_SHIFT (1 << 3) 1947#define OMAP4430_WKUPDEP_MMCSD4_SDMA_SHIFT 3
1948#define OMAP4430_WKUPDEP_MMCSD4_SDMA_MASK BITFIELD(3, 3) 1948#define OMAP4430_WKUPDEP_MMCSD4_SDMA_MASK BITFIELD(3, 3)
1949 1949
1950/* Used by PM_L4PER_MMCSD5_WKDEP */ 1950/* Used by PM_L4PER_MMCSD5_WKDEP */
1951#define OMAP4430_WKUPDEP_MMCSD5_DUCATI_SHIFT (1 << 1) 1951#define OMAP4430_WKUPDEP_MMCSD5_DUCATI_SHIFT 1
1952#define OMAP4430_WKUPDEP_MMCSD5_DUCATI_MASK BITFIELD(1, 1) 1952#define OMAP4430_WKUPDEP_MMCSD5_DUCATI_MASK BITFIELD(1, 1)
1953 1953
1954/* Used by PM_L4PER_MMCSD5_WKDEP */ 1954/* Used by PM_L4PER_MMCSD5_WKDEP */
1955#define OMAP4430_WKUPDEP_MMCSD5_MPU_SHIFT (1 << 0) 1955#define OMAP4430_WKUPDEP_MMCSD5_MPU_SHIFT 0
1956#define OMAP4430_WKUPDEP_MMCSD5_MPU_MASK BITFIELD(0, 0) 1956#define OMAP4430_WKUPDEP_MMCSD5_MPU_MASK BITFIELD(0, 0)
1957 1957
1958/* Used by PM_L4PER_MMCSD5_WKDEP */ 1958/* Used by PM_L4PER_MMCSD5_WKDEP */
1959#define OMAP4430_WKUPDEP_MMCSD5_SDMA_SHIFT (1 << 3) 1959#define OMAP4430_WKUPDEP_MMCSD5_SDMA_SHIFT 3
1960#define OMAP4430_WKUPDEP_MMCSD5_SDMA_MASK BITFIELD(3, 3) 1960#define OMAP4430_WKUPDEP_MMCSD5_SDMA_MASK BITFIELD(3, 3)
1961 1961
1962/* Used by PM_L3INIT_PCIESS_WKDEP */ 1962/* Used by PM_L3INIT_PCIESS_WKDEP */
1963#define OMAP4430_WKUPDEP_PCIESS_MPU_SHIFT (1 << 0) 1963#define OMAP4430_WKUPDEP_PCIESS_MPU_SHIFT 0
1964#define OMAP4430_WKUPDEP_PCIESS_MPU_MASK BITFIELD(0, 0) 1964#define OMAP4430_WKUPDEP_PCIESS_MPU_MASK BITFIELD(0, 0)
1965 1965
1966/* Used by PM_L3INIT_PCIESS_WKDEP */ 1966/* Used by PM_L3INIT_PCIESS_WKDEP */
1967#define OMAP4430_WKUPDEP_PCIESS_TESLA_SHIFT (1 << 2) 1967#define OMAP4430_WKUPDEP_PCIESS_TESLA_SHIFT 2
1968#define OMAP4430_WKUPDEP_PCIESS_TESLA_MASK BITFIELD(2, 2) 1968#define OMAP4430_WKUPDEP_PCIESS_TESLA_MASK BITFIELD(2, 2)
1969 1969
1970/* Used by PM_ABE_PDM_WKDEP */ 1970/* Used by PM_ABE_PDM_WKDEP */
1971#define OMAP4430_WKUPDEP_PDM_DMA_SDMA_SHIFT (1 << 7) 1971#define OMAP4430_WKUPDEP_PDM_DMA_SDMA_SHIFT 7
1972#define OMAP4430_WKUPDEP_PDM_DMA_SDMA_MASK BITFIELD(7, 7) 1972#define OMAP4430_WKUPDEP_PDM_DMA_SDMA_MASK BITFIELD(7, 7)
1973 1973
1974/* Used by PM_ABE_PDM_WKDEP */ 1974/* Used by PM_ABE_PDM_WKDEP */
1975#define OMAP4430_WKUPDEP_PDM_DMA_TESLA_SHIFT (1 << 6) 1975#define OMAP4430_WKUPDEP_PDM_DMA_TESLA_SHIFT 6
1976#define OMAP4430_WKUPDEP_PDM_DMA_TESLA_MASK BITFIELD(6, 6) 1976#define OMAP4430_WKUPDEP_PDM_DMA_TESLA_MASK BITFIELD(6, 6)
1977 1977
1978/* Used by PM_ABE_PDM_WKDEP */ 1978/* Used by PM_ABE_PDM_WKDEP */
1979#define OMAP4430_WKUPDEP_PDM_IRQ_MPU_SHIFT (1 << 0) 1979#define OMAP4430_WKUPDEP_PDM_IRQ_MPU_SHIFT 0
1980#define OMAP4430_WKUPDEP_PDM_IRQ_MPU_MASK BITFIELD(0, 0) 1980#define OMAP4430_WKUPDEP_PDM_IRQ_MPU_MASK BITFIELD(0, 0)
1981 1981
1982/* Used by PM_ABE_PDM_WKDEP */ 1982/* Used by PM_ABE_PDM_WKDEP */
1983#define OMAP4430_WKUPDEP_PDM_IRQ_TESLA_SHIFT (1 << 2) 1983#define OMAP4430_WKUPDEP_PDM_IRQ_TESLA_SHIFT 2
1984#define OMAP4430_WKUPDEP_PDM_IRQ_TESLA_MASK BITFIELD(2, 2) 1984#define OMAP4430_WKUPDEP_PDM_IRQ_TESLA_MASK BITFIELD(2, 2)
1985 1985
1986/* Used by PM_WKUP_RTC_WKDEP */ 1986/* Used by PM_WKUP_RTC_WKDEP */
1987#define OMAP4430_WKUPDEP_RTC_MPU_SHIFT (1 << 0) 1987#define OMAP4430_WKUPDEP_RTC_MPU_SHIFT 0
1988#define OMAP4430_WKUPDEP_RTC_MPU_MASK BITFIELD(0, 0) 1988#define OMAP4430_WKUPDEP_RTC_MPU_MASK BITFIELD(0, 0)
1989 1989
1990/* Used by PM_L3INIT_SATA_WKDEP */ 1990/* Used by PM_L3INIT_SATA_WKDEP */
1991#define OMAP4430_WKUPDEP_SATA_MPU_SHIFT (1 << 0) 1991#define OMAP4430_WKUPDEP_SATA_MPU_SHIFT 0
1992#define OMAP4430_WKUPDEP_SATA_MPU_MASK BITFIELD(0, 0) 1992#define OMAP4430_WKUPDEP_SATA_MPU_MASK BITFIELD(0, 0)
1993 1993
1994/* Used by PM_L3INIT_SATA_WKDEP */ 1994/* Used by PM_L3INIT_SATA_WKDEP */
1995#define OMAP4430_WKUPDEP_SATA_TESLA_SHIFT (1 << 2) 1995#define OMAP4430_WKUPDEP_SATA_TESLA_SHIFT 2
1996#define OMAP4430_WKUPDEP_SATA_TESLA_MASK BITFIELD(2, 2) 1996#define OMAP4430_WKUPDEP_SATA_TESLA_MASK BITFIELD(2, 2)
1997 1997
1998/* Used by PM_ABE_SLIMBUS_WKDEP */ 1998/* Used by PM_ABE_SLIMBUS_WKDEP */
1999#define OMAP4430_WKUPDEP_SLIMBUS1_DMA_SDMA_SHIFT (1 << 7) 1999#define OMAP4430_WKUPDEP_SLIMBUS1_DMA_SDMA_SHIFT 7
2000#define OMAP4430_WKUPDEP_SLIMBUS1_DMA_SDMA_MASK BITFIELD(7, 7) 2000#define OMAP4430_WKUPDEP_SLIMBUS1_DMA_SDMA_MASK BITFIELD(7, 7)
2001 2001
2002/* Used by PM_ABE_SLIMBUS_WKDEP */ 2002/* Used by PM_ABE_SLIMBUS_WKDEP */
2003#define OMAP4430_WKUPDEP_SLIMBUS1_DMA_TESLA_SHIFT (1 << 6) 2003#define OMAP4430_WKUPDEP_SLIMBUS1_DMA_TESLA_SHIFT 6
2004#define OMAP4430_WKUPDEP_SLIMBUS1_DMA_TESLA_MASK BITFIELD(6, 6) 2004#define OMAP4430_WKUPDEP_SLIMBUS1_DMA_TESLA_MASK BITFIELD(6, 6)
2005 2005
2006/* Used by PM_ABE_SLIMBUS_WKDEP */ 2006/* Used by PM_ABE_SLIMBUS_WKDEP */
2007#define OMAP4430_WKUPDEP_SLIMBUS1_IRQ_MPU_SHIFT (1 << 0) 2007#define OMAP4430_WKUPDEP_SLIMBUS1_IRQ_MPU_SHIFT 0
2008#define OMAP4430_WKUPDEP_SLIMBUS1_IRQ_MPU_MASK BITFIELD(0, 0) 2008#define OMAP4430_WKUPDEP_SLIMBUS1_IRQ_MPU_MASK BITFIELD(0, 0)
2009 2009
2010/* Used by PM_ABE_SLIMBUS_WKDEP */ 2010/* Used by PM_ABE_SLIMBUS_WKDEP */
2011#define OMAP4430_WKUPDEP_SLIMBUS1_IRQ_TESLA_SHIFT (1 << 2) 2011#define OMAP4430_WKUPDEP_SLIMBUS1_IRQ_TESLA_SHIFT 2
2012#define OMAP4430_WKUPDEP_SLIMBUS1_IRQ_TESLA_MASK BITFIELD(2, 2) 2012#define OMAP4430_WKUPDEP_SLIMBUS1_IRQ_TESLA_MASK BITFIELD(2, 2)
2013 2013
2014/* Used by PM_L4PER_SLIMBUS2_WKDEP */ 2014/* Used by PM_L4PER_SLIMBUS2_WKDEP */
2015#define OMAP4430_WKUPDEP_SLIMBUS2_DMA_SDMA_SHIFT (1 << 7) 2015#define OMAP4430_WKUPDEP_SLIMBUS2_DMA_SDMA_SHIFT 7
2016#define OMAP4430_WKUPDEP_SLIMBUS2_DMA_SDMA_MASK BITFIELD(7, 7) 2016#define OMAP4430_WKUPDEP_SLIMBUS2_DMA_SDMA_MASK BITFIELD(7, 7)
2017 2017
2018/* Used by PM_L4PER_SLIMBUS2_WKDEP */ 2018/* Used by PM_L4PER_SLIMBUS2_WKDEP */
2019#define OMAP4430_WKUPDEP_SLIMBUS2_DMA_TESLA_SHIFT (1 << 6) 2019#define OMAP4430_WKUPDEP_SLIMBUS2_DMA_TESLA_SHIFT 6
2020#define OMAP4430_WKUPDEP_SLIMBUS2_DMA_TESLA_MASK BITFIELD(6, 6) 2020#define OMAP4430_WKUPDEP_SLIMBUS2_DMA_TESLA_MASK BITFIELD(6, 6)
2021 2021
2022/* Used by PM_L4PER_SLIMBUS2_WKDEP */ 2022/* Used by PM_L4PER_SLIMBUS2_WKDEP */
2023#define OMAP4430_WKUPDEP_SLIMBUS2_IRQ_MPU_SHIFT (1 << 0) 2023#define OMAP4430_WKUPDEP_SLIMBUS2_IRQ_MPU_SHIFT 0
2024#define OMAP4430_WKUPDEP_SLIMBUS2_IRQ_MPU_MASK BITFIELD(0, 0) 2024#define OMAP4430_WKUPDEP_SLIMBUS2_IRQ_MPU_MASK BITFIELD(0, 0)
2025 2025
2026/* Used by PM_L4PER_SLIMBUS2_WKDEP */ 2026/* Used by PM_L4PER_SLIMBUS2_WKDEP */
2027#define OMAP4430_WKUPDEP_SLIMBUS2_IRQ_TESLA_SHIFT (1 << 2) 2027#define OMAP4430_WKUPDEP_SLIMBUS2_IRQ_TESLA_SHIFT 2
2028#define OMAP4430_WKUPDEP_SLIMBUS2_IRQ_TESLA_MASK BITFIELD(2, 2) 2028#define OMAP4430_WKUPDEP_SLIMBUS2_IRQ_TESLA_MASK BITFIELD(2, 2)
2029 2029
2030/* Used by PM_ALWON_SR_CORE_WKDEP */ 2030/* Used by PM_ALWON_SR_CORE_WKDEP */
2031#define OMAP4430_WKUPDEP_SR_CORE_DUCATI_SHIFT (1 << 1) 2031#define OMAP4430_WKUPDEP_SR_CORE_DUCATI_SHIFT 1
2032#define OMAP4430_WKUPDEP_SR_CORE_DUCATI_MASK BITFIELD(1, 1) 2032#define OMAP4430_WKUPDEP_SR_CORE_DUCATI_MASK BITFIELD(1, 1)
2033 2033
2034/* Used by PM_ALWON_SR_CORE_WKDEP */ 2034/* Used by PM_ALWON_SR_CORE_WKDEP */
2035#define OMAP4430_WKUPDEP_SR_CORE_MPU_SHIFT (1 << 0) 2035#define OMAP4430_WKUPDEP_SR_CORE_MPU_SHIFT 0
2036#define OMAP4430_WKUPDEP_SR_CORE_MPU_MASK BITFIELD(0, 0) 2036#define OMAP4430_WKUPDEP_SR_CORE_MPU_MASK BITFIELD(0, 0)
2037 2037
2038/* Used by PM_ALWON_SR_IVA_WKDEP */ 2038/* Used by PM_ALWON_SR_IVA_WKDEP */
2039#define OMAP4430_WKUPDEP_SR_IVA_DUCATI_SHIFT (1 << 1) 2039#define OMAP4430_WKUPDEP_SR_IVA_DUCATI_SHIFT 1
2040#define OMAP4430_WKUPDEP_SR_IVA_DUCATI_MASK BITFIELD(1, 1) 2040#define OMAP4430_WKUPDEP_SR_IVA_DUCATI_MASK BITFIELD(1, 1)
2041 2041
2042/* Used by PM_ALWON_SR_IVA_WKDEP */ 2042/* Used by PM_ALWON_SR_IVA_WKDEP */
2043#define OMAP4430_WKUPDEP_SR_IVA_MPU_SHIFT (1 << 0) 2043#define OMAP4430_WKUPDEP_SR_IVA_MPU_SHIFT 0
2044#define OMAP4430_WKUPDEP_SR_IVA_MPU_MASK BITFIELD(0, 0) 2044#define OMAP4430_WKUPDEP_SR_IVA_MPU_MASK BITFIELD(0, 0)
2045 2045
2046/* Used by PM_ALWON_SR_MPU_WKDEP */ 2046/* Used by PM_ALWON_SR_MPU_WKDEP */
2047#define OMAP4430_WKUPDEP_SR_MPU_MPU_SHIFT (1 << 0) 2047#define OMAP4430_WKUPDEP_SR_MPU_MPU_SHIFT 0
2048#define OMAP4430_WKUPDEP_SR_MPU_MPU_MASK BITFIELD(0, 0) 2048#define OMAP4430_WKUPDEP_SR_MPU_MPU_MASK BITFIELD(0, 0)
2049 2049
2050/* Used by PM_WKUP_TIMER12_WKDEP */ 2050/* Used by PM_WKUP_TIMER12_WKDEP */
2051#define OMAP4430_WKUPDEP_TIMER12_MPU_SHIFT (1 << 0) 2051#define OMAP4430_WKUPDEP_TIMER12_MPU_SHIFT 0
2052#define OMAP4430_WKUPDEP_TIMER12_MPU_MASK BITFIELD(0, 0) 2052#define OMAP4430_WKUPDEP_TIMER12_MPU_MASK BITFIELD(0, 0)
2053 2053
2054/* Used by PM_WKUP_TIMER1_WKDEP */ 2054/* Used by PM_WKUP_TIMER1_WKDEP */
2055#define OMAP4430_WKUPDEP_TIMER1_MPU_SHIFT (1 << 0) 2055#define OMAP4430_WKUPDEP_TIMER1_MPU_SHIFT 0
2056#define OMAP4430_WKUPDEP_TIMER1_MPU_MASK BITFIELD(0, 0) 2056#define OMAP4430_WKUPDEP_TIMER1_MPU_MASK BITFIELD(0, 0)
2057 2057
2058/* Used by PM_ABE_TIMER5_WKDEP */ 2058/* Used by PM_ABE_TIMER5_WKDEP */
2059#define OMAP4430_WKUPDEP_TIMER5_MPU_SHIFT (1 << 0) 2059#define OMAP4430_WKUPDEP_TIMER5_MPU_SHIFT 0
2060#define OMAP4430_WKUPDEP_TIMER5_MPU_MASK BITFIELD(0, 0) 2060#define OMAP4430_WKUPDEP_TIMER5_MPU_MASK BITFIELD(0, 0)
2061 2061
2062/* Used by PM_ABE_TIMER5_WKDEP */ 2062/* Used by PM_ABE_TIMER5_WKDEP */
2063#define OMAP4430_WKUPDEP_TIMER5_TESLA_SHIFT (1 << 2) 2063#define OMAP4430_WKUPDEP_TIMER5_TESLA_SHIFT 2
2064#define OMAP4430_WKUPDEP_TIMER5_TESLA_MASK BITFIELD(2, 2) 2064#define OMAP4430_WKUPDEP_TIMER5_TESLA_MASK BITFIELD(2, 2)
2065 2065
2066/* Used by PM_ABE_TIMER6_WKDEP */ 2066/* Used by PM_ABE_TIMER6_WKDEP */
2067#define OMAP4430_WKUPDEP_TIMER6_MPU_SHIFT (1 << 0) 2067#define OMAP4430_WKUPDEP_TIMER6_MPU_SHIFT 0
2068#define OMAP4430_WKUPDEP_TIMER6_MPU_MASK BITFIELD(0, 0) 2068#define OMAP4430_WKUPDEP_TIMER6_MPU_MASK BITFIELD(0, 0)
2069 2069
2070/* Used by PM_ABE_TIMER6_WKDEP */ 2070/* Used by PM_ABE_TIMER6_WKDEP */
2071#define OMAP4430_WKUPDEP_TIMER6_TESLA_SHIFT (1 << 2) 2071#define OMAP4430_WKUPDEP_TIMER6_TESLA_SHIFT 2
2072#define OMAP4430_WKUPDEP_TIMER6_TESLA_MASK BITFIELD(2, 2) 2072#define OMAP4430_WKUPDEP_TIMER6_TESLA_MASK BITFIELD(2, 2)
2073 2073
2074/* Used by PM_ABE_TIMER7_WKDEP */ 2074/* Used by PM_ABE_TIMER7_WKDEP */
2075#define OMAP4430_WKUPDEP_TIMER7_MPU_SHIFT (1 << 0) 2075#define OMAP4430_WKUPDEP_TIMER7_MPU_SHIFT 0
2076#define OMAP4430_WKUPDEP_TIMER7_MPU_MASK BITFIELD(0, 0) 2076#define OMAP4430_WKUPDEP_TIMER7_MPU_MASK BITFIELD(0, 0)
2077 2077
2078/* Used by PM_ABE_TIMER7_WKDEP */ 2078/* Used by PM_ABE_TIMER7_WKDEP */
2079#define OMAP4430_WKUPDEP_TIMER7_TESLA_SHIFT (1 << 2) 2079#define OMAP4430_WKUPDEP_TIMER7_TESLA_SHIFT 2
2080#define OMAP4430_WKUPDEP_TIMER7_TESLA_MASK BITFIELD(2, 2) 2080#define OMAP4430_WKUPDEP_TIMER7_TESLA_MASK BITFIELD(2, 2)
2081 2081
2082/* Used by PM_ABE_TIMER8_WKDEP */ 2082/* Used by PM_ABE_TIMER8_WKDEP */
2083#define OMAP4430_WKUPDEP_TIMER8_MPU_SHIFT (1 << 0) 2083#define OMAP4430_WKUPDEP_TIMER8_MPU_SHIFT 0
2084#define OMAP4430_WKUPDEP_TIMER8_MPU_MASK BITFIELD(0, 0) 2084#define OMAP4430_WKUPDEP_TIMER8_MPU_MASK BITFIELD(0, 0)
2085 2085
2086/* Used by PM_ABE_TIMER8_WKDEP */ 2086/* Used by PM_ABE_TIMER8_WKDEP */
2087#define OMAP4430_WKUPDEP_TIMER8_TESLA_SHIFT (1 << 2) 2087#define OMAP4430_WKUPDEP_TIMER8_TESLA_SHIFT 2
2088#define OMAP4430_WKUPDEP_TIMER8_TESLA_MASK BITFIELD(2, 2) 2088#define OMAP4430_WKUPDEP_TIMER8_TESLA_MASK BITFIELD(2, 2)
2089 2089
2090/* Used by PM_L4PER_UART1_WKDEP */ 2090/* Used by PM_L4PER_UART1_WKDEP */
2091#define OMAP4430_WKUPDEP_UART1_MPU_SHIFT (1 << 0) 2091#define OMAP4430_WKUPDEP_UART1_MPU_SHIFT 0
2092#define OMAP4430_WKUPDEP_UART1_MPU_MASK BITFIELD(0, 0) 2092#define OMAP4430_WKUPDEP_UART1_MPU_MASK BITFIELD(0, 0)
2093 2093
2094/* Used by PM_L4PER_UART1_WKDEP */ 2094/* Used by PM_L4PER_UART1_WKDEP */
2095#define OMAP4430_WKUPDEP_UART1_SDMA_SHIFT (1 << 3) 2095#define OMAP4430_WKUPDEP_UART1_SDMA_SHIFT 3
2096#define OMAP4430_WKUPDEP_UART1_SDMA_MASK BITFIELD(3, 3) 2096#define OMAP4430_WKUPDEP_UART1_SDMA_MASK BITFIELD(3, 3)
2097 2097
2098/* Used by PM_L4PER_UART2_WKDEP */ 2098/* Used by PM_L4PER_UART2_WKDEP */
2099#define OMAP4430_WKUPDEP_UART2_MPU_SHIFT (1 << 0) 2099#define OMAP4430_WKUPDEP_UART2_MPU_SHIFT 0
2100#define OMAP4430_WKUPDEP_UART2_MPU_MASK BITFIELD(0, 0) 2100#define OMAP4430_WKUPDEP_UART2_MPU_MASK BITFIELD(0, 0)
2101 2101
2102/* Used by PM_L4PER_UART2_WKDEP */ 2102/* Used by PM_L4PER_UART2_WKDEP */
2103#define OMAP4430_WKUPDEP_UART2_SDMA_SHIFT (1 << 3) 2103#define OMAP4430_WKUPDEP_UART2_SDMA_SHIFT 3
2104#define OMAP4430_WKUPDEP_UART2_SDMA_MASK BITFIELD(3, 3) 2104#define OMAP4430_WKUPDEP_UART2_SDMA_MASK BITFIELD(3, 3)
2105 2105
2106/* Used by PM_L4PER_UART3_WKDEP */ 2106/* Used by PM_L4PER_UART3_WKDEP */
2107#define OMAP4430_WKUPDEP_UART3_DUCATI_SHIFT (1 << 1) 2107#define OMAP4430_WKUPDEP_UART3_DUCATI_SHIFT 1
2108#define OMAP4430_WKUPDEP_UART3_DUCATI_MASK BITFIELD(1, 1) 2108#define OMAP4430_WKUPDEP_UART3_DUCATI_MASK BITFIELD(1, 1)
2109 2109
2110/* Used by PM_L4PER_UART3_WKDEP */ 2110/* Used by PM_L4PER_UART3_WKDEP */
2111#define OMAP4430_WKUPDEP_UART3_MPU_SHIFT (1 << 0) 2111#define OMAP4430_WKUPDEP_UART3_MPU_SHIFT 0
2112#define OMAP4430_WKUPDEP_UART3_MPU_MASK BITFIELD(0, 0) 2112#define OMAP4430_WKUPDEP_UART3_MPU_MASK BITFIELD(0, 0)
2113 2113
2114/* Used by PM_L4PER_UART3_WKDEP */ 2114/* Used by PM_L4PER_UART3_WKDEP */
2115#define OMAP4430_WKUPDEP_UART3_SDMA_SHIFT (1 << 3) 2115#define OMAP4430_WKUPDEP_UART3_SDMA_SHIFT 3
2116#define OMAP4430_WKUPDEP_UART3_SDMA_MASK BITFIELD(3, 3) 2116#define OMAP4430_WKUPDEP_UART3_SDMA_MASK BITFIELD(3, 3)
2117 2117
2118/* Used by PM_L4PER_UART3_WKDEP */ 2118/* Used by PM_L4PER_UART3_WKDEP */
2119#define OMAP4430_WKUPDEP_UART3_TESLA_SHIFT (1 << 2) 2119#define OMAP4430_WKUPDEP_UART3_TESLA_SHIFT 2
2120#define OMAP4430_WKUPDEP_UART3_TESLA_MASK BITFIELD(2, 2) 2120#define OMAP4430_WKUPDEP_UART3_TESLA_MASK BITFIELD(2, 2)
2121 2121
2122/* Used by PM_L4PER_UART4_WKDEP */ 2122/* Used by PM_L4PER_UART4_WKDEP */
2123#define OMAP4430_WKUPDEP_UART4_MPU_SHIFT (1 << 0) 2123#define OMAP4430_WKUPDEP_UART4_MPU_SHIFT 0
2124#define OMAP4430_WKUPDEP_UART4_MPU_MASK BITFIELD(0, 0) 2124#define OMAP4430_WKUPDEP_UART4_MPU_MASK BITFIELD(0, 0)
2125 2125
2126/* Used by PM_L4PER_UART4_WKDEP */ 2126/* Used by PM_L4PER_UART4_WKDEP */
2127#define OMAP4430_WKUPDEP_UART4_SDMA_SHIFT (1 << 3) 2127#define OMAP4430_WKUPDEP_UART4_SDMA_SHIFT 3
2128#define OMAP4430_WKUPDEP_UART4_SDMA_MASK BITFIELD(3, 3) 2128#define OMAP4430_WKUPDEP_UART4_SDMA_MASK BITFIELD(3, 3)
2129 2129
2130/* Used by PM_L3INIT_UNIPRO1_WKDEP */ 2130/* Used by PM_L3INIT_UNIPRO1_WKDEP */
2131#define OMAP4430_WKUPDEP_UNIPRO1_DUCATI_SHIFT (1 << 1) 2131#define OMAP4430_WKUPDEP_UNIPRO1_DUCATI_SHIFT 1
2132#define OMAP4430_WKUPDEP_UNIPRO1_DUCATI_MASK BITFIELD(1, 1) 2132#define OMAP4430_WKUPDEP_UNIPRO1_DUCATI_MASK BITFIELD(1, 1)
2133 2133
2134/* Used by PM_L3INIT_UNIPRO1_WKDEP */ 2134/* Used by PM_L3INIT_UNIPRO1_WKDEP */
2135#define OMAP4430_WKUPDEP_UNIPRO1_MPU_SHIFT (1 << 0) 2135#define OMAP4430_WKUPDEP_UNIPRO1_MPU_SHIFT 0
2136#define OMAP4430_WKUPDEP_UNIPRO1_MPU_MASK BITFIELD(0, 0) 2136#define OMAP4430_WKUPDEP_UNIPRO1_MPU_MASK BITFIELD(0, 0)
2137 2137
2138/* Used by PM_L3INIT_USB_HOST_WKDEP */ 2138/* Used by PM_L3INIT_USB_HOST_WKDEP */
2139#define OMAP4430_WKUPDEP_USB_HOST_DUCATI_SHIFT (1 << 1) 2139#define OMAP4430_WKUPDEP_USB_HOST_DUCATI_SHIFT 1
2140#define OMAP4430_WKUPDEP_USB_HOST_DUCATI_MASK BITFIELD(1, 1) 2140#define OMAP4430_WKUPDEP_USB_HOST_DUCATI_MASK BITFIELD(1, 1)
2141 2141
2142/* Used by PM_L3INIT_USB_HOST_FS_WKDEP */ 2142/* Used by PM_L3INIT_USB_HOST_FS_WKDEP */
2143#define OMAP4430_WKUPDEP_USB_HOST_FS_DUCATI_SHIFT (1 << 1) 2143#define OMAP4430_WKUPDEP_USB_HOST_FS_DUCATI_SHIFT 1
2144#define OMAP4430_WKUPDEP_USB_HOST_FS_DUCATI_MASK BITFIELD(1, 1) 2144#define OMAP4430_WKUPDEP_USB_HOST_FS_DUCATI_MASK BITFIELD(1, 1)
2145 2145
2146/* Used by PM_L3INIT_USB_HOST_FS_WKDEP */ 2146/* Used by PM_L3INIT_USB_HOST_FS_WKDEP */
2147#define OMAP4430_WKUPDEP_USB_HOST_FS_MPU_SHIFT (1 << 0) 2147#define OMAP4430_WKUPDEP_USB_HOST_FS_MPU_SHIFT 0
2148#define OMAP4430_WKUPDEP_USB_HOST_FS_MPU_MASK BITFIELD(0, 0) 2148#define OMAP4430_WKUPDEP_USB_HOST_FS_MPU_MASK BITFIELD(0, 0)
2149 2149
2150/* Used by PM_L3INIT_USB_HOST_WKDEP */ 2150/* Used by PM_L3INIT_USB_HOST_WKDEP */
2151#define OMAP4430_WKUPDEP_USB_HOST_MPU_SHIFT (1 << 0) 2151#define OMAP4430_WKUPDEP_USB_HOST_MPU_SHIFT 0
2152#define OMAP4430_WKUPDEP_USB_HOST_MPU_MASK BITFIELD(0, 0) 2152#define OMAP4430_WKUPDEP_USB_HOST_MPU_MASK BITFIELD(0, 0)
2153 2153
2154/* Used by PM_L3INIT_USB_OTG_WKDEP */ 2154/* Used by PM_L3INIT_USB_OTG_WKDEP */
2155#define OMAP4430_WKUPDEP_USB_OTG_DUCATI_SHIFT (1 << 1) 2155#define OMAP4430_WKUPDEP_USB_OTG_DUCATI_SHIFT 1
2156#define OMAP4430_WKUPDEP_USB_OTG_DUCATI_MASK BITFIELD(1, 1) 2156#define OMAP4430_WKUPDEP_USB_OTG_DUCATI_MASK BITFIELD(1, 1)
2157 2157
2158/* Used by PM_L3INIT_USB_OTG_WKDEP */ 2158/* Used by PM_L3INIT_USB_OTG_WKDEP */
2159#define OMAP4430_WKUPDEP_USB_OTG_MPU_SHIFT (1 << 0) 2159#define OMAP4430_WKUPDEP_USB_OTG_MPU_SHIFT 0
2160#define OMAP4430_WKUPDEP_USB_OTG_MPU_MASK BITFIELD(0, 0) 2160#define OMAP4430_WKUPDEP_USB_OTG_MPU_MASK BITFIELD(0, 0)
2161 2161
2162/* Used by PM_L3INIT_USB_TLL_WKDEP */ 2162/* Used by PM_L3INIT_USB_TLL_WKDEP */
2163#define OMAP4430_WKUPDEP_USB_TLL_DUCATI_SHIFT (1 << 1) 2163#define OMAP4430_WKUPDEP_USB_TLL_DUCATI_SHIFT 1
2164#define OMAP4430_WKUPDEP_USB_TLL_DUCATI_MASK BITFIELD(1, 1) 2164#define OMAP4430_WKUPDEP_USB_TLL_DUCATI_MASK BITFIELD(1, 1)
2165 2165
2166/* Used by PM_L3INIT_USB_TLL_WKDEP */ 2166/* Used by PM_L3INIT_USB_TLL_WKDEP */
2167#define OMAP4430_WKUPDEP_USB_TLL_MPU_SHIFT (1 << 0) 2167#define OMAP4430_WKUPDEP_USB_TLL_MPU_SHIFT 0
2168#define OMAP4430_WKUPDEP_USB_TLL_MPU_MASK BITFIELD(0, 0) 2168#define OMAP4430_WKUPDEP_USB_TLL_MPU_MASK BITFIELD(0, 0)
2169 2169
2170/* Used by PM_WKUP_USIM_WKDEP */ 2170/* Used by PM_WKUP_USIM_WKDEP */
2171#define OMAP4430_WKUPDEP_USIM_MPU_SHIFT (1 << 0) 2171#define OMAP4430_WKUPDEP_USIM_MPU_SHIFT 0
2172#define OMAP4430_WKUPDEP_USIM_MPU_MASK BITFIELD(0, 0) 2172#define OMAP4430_WKUPDEP_USIM_MPU_MASK BITFIELD(0, 0)
2173 2173
2174/* Used by PM_WKUP_USIM_WKDEP */ 2174/* Used by PM_WKUP_USIM_WKDEP */
2175#define OMAP4430_WKUPDEP_USIM_SDMA_SHIFT (1 << 3) 2175#define OMAP4430_WKUPDEP_USIM_SDMA_SHIFT 3
2176#define OMAP4430_WKUPDEP_USIM_SDMA_MASK BITFIELD(3, 3) 2176#define OMAP4430_WKUPDEP_USIM_SDMA_MASK BITFIELD(3, 3)
2177 2177
2178/* Used by PM_WKUP_WDT2_WKDEP */ 2178/* Used by PM_WKUP_WDT2_WKDEP */
2179#define OMAP4430_WKUPDEP_WDT2_DUCATI_SHIFT (1 << 1) 2179#define OMAP4430_WKUPDEP_WDT2_DUCATI_SHIFT 1
2180#define OMAP4430_WKUPDEP_WDT2_DUCATI_MASK BITFIELD(1, 1) 2180#define OMAP4430_WKUPDEP_WDT2_DUCATI_MASK BITFIELD(1, 1)
2181 2181
2182/* Used by PM_WKUP_WDT2_WKDEP */ 2182/* Used by PM_WKUP_WDT2_WKDEP */
2183#define OMAP4430_WKUPDEP_WDT2_MPU_SHIFT (1 << 0) 2183#define OMAP4430_WKUPDEP_WDT2_MPU_SHIFT 0
2184#define OMAP4430_WKUPDEP_WDT2_MPU_MASK BITFIELD(0, 0) 2184#define OMAP4430_WKUPDEP_WDT2_MPU_MASK BITFIELD(0, 0)
2185 2185
2186/* Used by PM_ABE_WDT3_WKDEP */ 2186/* Used by PM_ABE_WDT3_WKDEP */
2187#define OMAP4430_WKUPDEP_WDT3_MPU_SHIFT (1 << 0) 2187#define OMAP4430_WKUPDEP_WDT3_MPU_SHIFT 0
2188#define OMAP4430_WKUPDEP_WDT3_MPU_MASK BITFIELD(0, 0) 2188#define OMAP4430_WKUPDEP_WDT3_MPU_MASK BITFIELD(0, 0)
2189 2189
2190/* Used by PM_L3INIT_HSI_WKDEP */ 2190/* Used by PM_L3INIT_HSI_WKDEP */
2191#define OMAP4430_WKUPDEP_WGM_HSI_WAKE_MPU_SHIFT (1 << 8) 2191#define OMAP4430_WKUPDEP_WGM_HSI_WAKE_MPU_SHIFT 8
2192#define OMAP4430_WKUPDEP_WGM_HSI_WAKE_MPU_MASK BITFIELD(8, 8) 2192#define OMAP4430_WKUPDEP_WGM_HSI_WAKE_MPU_MASK BITFIELD(8, 8)
2193 2193
2194/* Used by PM_L3INIT_XHPI_WKDEP */ 2194/* Used by PM_L3INIT_XHPI_WKDEP */
2195#define OMAP4430_WKUPDEP_XHPI_DUCATI_SHIFT (1 << 1) 2195#define OMAP4430_WKUPDEP_XHPI_DUCATI_SHIFT 1
2196#define OMAP4430_WKUPDEP_XHPI_DUCATI_MASK BITFIELD(1, 1) 2196#define OMAP4430_WKUPDEP_XHPI_DUCATI_MASK BITFIELD(1, 1)
2197 2197
2198/* Used by PRM_IO_PMCTRL */ 2198/* Used by PRM_IO_PMCTRL */
2199#define OMAP4430_WUCLK_CTRL_SHIFT (1 << 8) 2199#define OMAP4430_WUCLK_CTRL_SHIFT 8
2200#define OMAP4430_WUCLK_CTRL_MASK BITFIELD(8, 8) 2200#define OMAP4430_WUCLK_CTRL_MASK BITFIELD(8, 8)
2201 2201
2202/* Used by PRM_IO_PMCTRL */ 2202/* Used by PRM_IO_PMCTRL */
2203#define OMAP4430_WUCLK_STATUS_SHIFT (1 << 9) 2203#define OMAP4430_WUCLK_STATUS_SHIFT 9
2204#define OMAP4430_WUCLK_STATUS_MASK BITFIELD(9, 9) 2204#define OMAP4430_WUCLK_STATUS_MASK BITFIELD(9, 9)
2205#endif 2205#endif
diff --git a/arch/arm/mach-omap2/prm.h b/arch/arm/mach-omap2/prm.h
index 40f006285163..5fba2aa8932c 100644
--- a/arch/arm/mach-omap2/prm.h
+++ b/arch/arm/mach-omap2/prm.h
@@ -179,9 +179,11 @@
179 179
180/* Registers appearing on both 24xx and 34xx */ 180/* Registers appearing on both 24xx and 34xx */
181 181
182#define RM_RSTCTRL 0x0050 182#define OMAP2_RM_RSTCTRL 0x0050
183#define RM_RSTTIME 0x0054 183#define OMAP2_RM_RSTTIME 0x0054
184#define RM_RSTST 0x0058 184#define OMAP2_RM_RSTST 0x0058
185#define OMAP2_PM_PWSTCTRL 0x00e0
186#define OMAP2_PM_PWSTST 0x00e4
185 187
186#define PM_WKEN 0x00a0 188#define PM_WKEN 0x00a0
187#define PM_WKEN1 PM_WKEN 189#define PM_WKEN1 PM_WKEN
@@ -191,8 +193,6 @@
191#define PM_EVGENCTRL 0x00d4 193#define PM_EVGENCTRL 0x00d4
192#define PM_EVGENONTIM 0x00d8 194#define PM_EVGENONTIM 0x00d8
193#define PM_EVGENOFFTIM 0x00dc 195#define PM_EVGENOFFTIM 0x00dc
194#define PM_PWSTCTRL 0x00e0
195#define PM_PWSTST 0x00e4
196 196
197/* Omap2 specific registers */ 197/* Omap2 specific registers */
198#define OMAP24XX_PM_WKEN2 0x00a4 198#define OMAP24XX_PM_WKEN2 0x00a4
@@ -220,6 +220,13 @@
220#define OMAP3430_PRM_IRQSTATUS_IVA2 0x00f8 220#define OMAP3430_PRM_IRQSTATUS_IVA2 0x00f8
221#define OMAP3430_PRM_IRQENABLE_IVA2 0x00fc 221#define OMAP3430_PRM_IRQENABLE_IVA2 0x00fc
222 222
223/* Omap4 specific registers */
224#define OMAP4_RM_RSTCTRL 0x0000
225#define OMAP4_RM_RSTTIME 0x0004
226#define OMAP4_RM_RSTST 0x0008
227#define OMAP4_PM_PWSTCTRL 0x0000
228#define OMAP4_PM_PWSTST 0x0004
229
223 230
224#ifndef __ASSEMBLER__ 231#ifndef __ASSEMBLER__
225 232
diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S
index c3626ea48143..22fcc14e63be 100644
--- a/arch/arm/mach-omap2/sleep34xx.S
+++ b/arch/arm/mach-omap2/sleep34xx.S
@@ -38,7 +38,7 @@
38#define PM_PREPWSTST_CORE_P 0x48306AE8 38#define PM_PREPWSTST_CORE_P 0x48306AE8
39#define PM_PREPWSTST_MPU_V OMAP34XX_PRM_REGADDR(MPU_MOD, \ 39#define PM_PREPWSTST_MPU_V OMAP34XX_PRM_REGADDR(MPU_MOD, \
40 OMAP3430_PM_PREPWSTST) 40 OMAP3430_PM_PREPWSTST)
41#define PM_PWSTCTRL_MPU_P OMAP3430_PRM_BASE + MPU_MOD + PM_PWSTCTRL 41#define PM_PWSTCTRL_MPU_P OMAP3430_PRM_BASE + MPU_MOD + OMAP2_PM_PWSTCTRL
42#define CM_IDLEST1_CORE_V OMAP34XX_CM_REGADDR(CORE_MOD, CM_IDLEST1) 42#define CM_IDLEST1_CORE_V OMAP34XX_CM_REGADDR(CORE_MOD, CM_IDLEST1)
43#define SRAM_BASE_P 0x40200000 43#define SRAM_BASE_P 0x40200000
44#define CONTROL_STAT 0x480022F0 44#define CONTROL_STAT 0x480022F0
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
index d9f8c844c385..0ae27538385d 100644
--- a/arch/arm/plat-omap/clock.c
+++ b/arch/arm/plat-omap/clock.c
@@ -173,7 +173,7 @@ EXPORT_SYMBOL(clk_get_parent);
173 * OMAP specific clock functions shared between omap1 and omap2 173 * OMAP specific clock functions shared between omap1 and omap2
174 *-------------------------------------------------------------------------*/ 174 *-------------------------------------------------------------------------*/
175 175
176unsigned int __initdata mpurate; 176int __initdata mpurate;
177 177
178/* 178/*
179 * By default we use the rate set by the bootloader. 179 * By default we use the rate set by the bootloader.
@@ -199,6 +199,17 @@ unsigned long followparent_recalc(struct clk *clk)
199 return clk->parent->rate; 199 return clk->parent->rate;
200} 200}
201 201
202/*
203 * Used for clocks that have the same value as the parent clock,
204 * divided by some factor
205 */
206unsigned long omap_fixed_divisor_recalc(struct clk *clk)
207{
208 WARN_ON(!clk->fixed_div);
209
210 return clk->parent->rate / clk->fixed_div;
211}
212
202void clk_reparent(struct clk *child, struct clk *parent) 213void clk_reparent(struct clk *child, struct clk *parent)
203{ 214{
204 list_del_init(&child->sibling); 215 list_del_init(&child->sibling);
diff --git a/arch/arm/plat-omap/include/plat/clkdev_omap.h b/arch/arm/plat-omap/include/plat/clkdev_omap.h
index 35b36caf5f91..bb937f3fabed 100644
--- a/arch/arm/plat-omap/include/plat/clkdev_omap.h
+++ b/arch/arm/plat-omap/include/plat/clkdev_omap.h
@@ -25,17 +25,25 @@ struct omap_clk {
25 }, \ 25 }, \
26 } 26 }
27 27
28 28/* Platform flags for the clkdev-OMAP integration code */
29#define CK_310 (1 << 0) 29#define CK_310 (1 << 0)
30#define CK_7XX (1 << 1) 30#define CK_7XX (1 << 1) /* 7xx, 850 */
31#define CK_1510 (1 << 2) 31#define CK_1510 (1 << 2)
32#define CK_16XX (1 << 3) 32#define CK_16XX (1 << 3) /* 16xx, 17xx, 5912 */
33#define CK_243X (1 << 4) 33#define CK_242X (1 << 4)
34#define CK_242X (1 << 5) 34#define CK_243X (1 << 5)
35#define CK_343X (1 << 6) 35#define CK_3XXX (1 << 6) /* OMAP3 + AM3 common clocks*/
36#define CK_3430ES1 (1 << 7) 36#define CK_343X (1 << 7) /* OMAP34xx common clocks */
37#define CK_3430ES2 (1 << 8) 37#define CK_3430ES1 (1 << 8) /* 34xxES1 only */
38#define CK_443X (1 << 9) 38#define CK_3430ES2 (1 << 9) /* 34xxES2, ES3, non-Sitara 35xx only */
39#define CK_3505 (1 << 10)
40#define CK_3517 (1 << 11)
41#define CK_36XX (1 << 12) /* OMAP36xx/37xx-specific clocks */
42#define CK_443X (1 << 13)
43
44#define CK_AM35XX (CK_3505 | CK_3517) /* all Sitara AM35xx */
45
46
39 47
40#endif 48#endif
41 49
diff --git a/arch/arm/plat-omap/include/plat/clock.h b/arch/arm/plat-omap/include/plat/clock.h
index 94fe2a0ce40a..e41313208125 100644
--- a/arch/arm/plat-omap/include/plat/clock.h
+++ b/arch/arm/plat-omap/include/plat/clock.h
@@ -88,9 +88,9 @@ struct clk {
88 void (*init)(struct clk *); 88 void (*init)(struct clk *);
89 __u8 enable_bit; 89 __u8 enable_bit;
90 __s8 usecount; 90 __s8 usecount;
91 u8 fixed_div;
91#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) || \ 92#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) || \
92 defined(CONFIG_ARCH_OMAP4) 93 defined(CONFIG_ARCH_OMAP4)
93 u8 fixed_div;
94 void __iomem *clksel_reg; 94 void __iomem *clksel_reg;
95 u32 clksel_mask; 95 u32 clksel_mask;
96 const struct clksel *clksel; 96 const struct clksel *clksel;
@@ -123,7 +123,7 @@ struct clk_functions {
123#endif 123#endif
124}; 124};
125 125
126extern unsigned int mpurate; 126extern int mpurate;
127 127
128extern int clk_init(struct clk_functions *custom_clocks); 128extern int clk_init(struct clk_functions *custom_clocks);
129extern void clk_preinit(struct clk *clk); 129extern void clk_preinit(struct clk *clk);
@@ -134,6 +134,7 @@ extern void propagate_rate(struct clk *clk);
134extern void recalculate_root_clocks(void); 134extern void recalculate_root_clocks(void);
135extern unsigned long followparent_recalc(struct clk *clk); 135extern unsigned long followparent_recalc(struct clk *clk);
136extern void clk_enable_init_clocks(void); 136extern void clk_enable_init_clocks(void);
137unsigned long omap_fixed_divisor_recalc(struct clk *clk);
137#ifdef CONFIG_CPU_FREQ 138#ifdef CONFIG_CPU_FREQ
138extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table); 139extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table);
139extern void clk_exit_cpufreq_table(struct cpufreq_frequency_table **table); 140extern void clk_exit_cpufreq_table(struct cpufreq_frequency_table **table);
diff --git a/arch/arm/plat-omap/include/plat/clockdomain.h b/arch/arm/plat-omap/include/plat/clockdomain.h
index eb734826e64e..ba0a6c07c0fe 100644
--- a/arch/arm/plat-omap/include/plat/clockdomain.h
+++ b/arch/arm/plat-omap/include/plat/clockdomain.h
@@ -4,7 +4,7 @@
4 * OMAP2/3 clockdomain framework functions 4 * OMAP2/3 clockdomain framework functions
5 * 5 *
6 * Copyright (C) 2008 Texas Instruments, Inc. 6 * Copyright (C) 2008 Texas Instruments, Inc.
7 * Copyright (C) 2008 Nokia Corporation 7 * Copyright (C) 2008-2009 Nokia Corporation
8 * 8 *
9 * Written by Paul Walmsley 9 * Written by Paul Walmsley
10 * 10 *
@@ -40,65 +40,95 @@
40#define OMAP34XX_CLKSTCTRL_FORCE_WAKEUP 0x2 40#define OMAP34XX_CLKSTCTRL_FORCE_WAKEUP 0x2
41#define OMAP34XX_CLKSTCTRL_ENABLE_AUTO 0x3 41#define OMAP34XX_CLKSTCTRL_ENABLE_AUTO 0x3
42 42
43/* 43/**
44 * struct clkdm_pwrdm_autodep - a powerdomain that should have wkdeps 44 * struct clkdm_autodep - clkdm deps to add when entering/exiting hwsup mode
45 * and sleepdeps added when a powerdomain should stay active in hwsup mode; 45 * @clkdm: clockdomain to add wkdep+sleepdep on - set name member only
46 * and conversely, removed when the powerdomain should be allowed to go 46 * @omap_chip: OMAP chip types that this autodep is valid on
47 * inactive in hwsup mode. 47 *
48 * A clockdomain that should have wkdeps and sleepdeps added when a
49 * clockdomain should stay active in hwsup mode; and conversely,
50 * removed when the clockdomain should be allowed to go inactive in
51 * hwsup mode.
52 *
53 * Autodeps are deprecated and should be removed after
54 * omap_hwmod-based fine-grained module idle control is added.
48 */ 55 */
49struct clkdm_pwrdm_autodep { 56struct clkdm_autodep {
50
51 union { 57 union {
52 /* Name of the powerdomain to add a wkdep/sleepdep on */
53 const char *name; 58 const char *name;
54 59 struct clockdomain *ptr;
55 /* Powerdomain pointer (looked up at clkdm_init() time) */ 60 } clkdm;
56 struct powerdomain *ptr;
57 } pwrdm;
58
59 /* OMAP chip types that this clockdomain dep is valid on */
60 const struct omap_chip_id omap_chip; 61 const struct omap_chip_id omap_chip;
62};
61 63
64/**
65 * struct clkdm_dep - encode dependencies between clockdomains
66 * @clkdm_name: clockdomain name
67 * @clkdm: pointer to the struct clockdomain of @clkdm_name
68 * @omap_chip: OMAP chip types that this dependency is valid on
69 * @wkdep_usecount: Number of wakeup dependencies causing this clkdm to wake
70 * @sleepdep_usecount: Number of sleep deps that could prevent clkdm from idle
71 *
72 * Statically defined. @clkdm is resolved from @clkdm_name at runtime and
73 * should not be pre-initialized.
74 *
75 * XXX Should also include hardware (fixed) dependencies.
76 */
77struct clkdm_dep {
78 const char *clkdm_name;
79 struct clockdomain *clkdm;
80 atomic_t wkdep_usecount;
81 atomic_t sleepdep_usecount;
82 const struct omap_chip_id omap_chip;
62}; 83};
63 84
85/**
86 * struct clockdomain - OMAP clockdomain
87 * @name: clockdomain name
88 * @pwrdm: powerdomain containing this clockdomain
89 * @clktrctrl_reg: CLKSTCTRL reg for the given clock domain
90 * @clktrctrl_mask: CLKTRCTRL/AUTOSTATE field mask in CM_CLKSTCTRL reg
91 * @flags: Clockdomain capability flags
92 * @dep_bit: Bit shift of this clockdomain's PM_WKDEP/CM_SLEEPDEP bit
93 * @wkdep_srcs: Clockdomains that can be told to wake this powerdomain up
94 * @sleepdep_srcs: Clockdomains that can be told to keep this clkdm from inact
95 * @omap_chip: OMAP chip types that this clockdomain is valid on
96 * @usecount: Usecount tracking
97 * @node: list_head to link all clockdomains together
98 */
64struct clockdomain { 99struct clockdomain {
65
66 /* Clockdomain name */
67 const char *name; 100 const char *name;
68
69 union { 101 union {
70 /* Powerdomain enclosing this clockdomain */
71 const char *name; 102 const char *name;
72
73 /* Powerdomain pointer assigned at clkdm_register() */
74 struct powerdomain *ptr; 103 struct powerdomain *ptr;
75 } pwrdm; 104 } pwrdm;
76 105 void __iomem *clkstctrl_reg;
77 /* CLKTRCTRL/AUTOSTATE field mask in CM_CLKSTCTRL reg */
78 const u16 clktrctrl_mask; 106 const u16 clktrctrl_mask;
79
80 /* Clockdomain capability flags */
81 const u8 flags; 107 const u8 flags;
82 108 const u8 dep_bit;
83 /* OMAP chip types that this clockdomain is valid on */ 109 struct clkdm_dep *wkdep_srcs;
110 struct clkdm_dep *sleepdep_srcs;
84 const struct omap_chip_id omap_chip; 111 const struct omap_chip_id omap_chip;
85
86 /* Usecount tracking */
87 atomic_t usecount; 112 atomic_t usecount;
88
89 struct list_head node; 113 struct list_head node;
90
91}; 114};
92 115
93void clkdm_init(struct clockdomain **clkdms, struct clkdm_pwrdm_autodep *autodeps); 116void clkdm_init(struct clockdomain **clkdms, struct clkdm_autodep *autodeps);
94int clkdm_register(struct clockdomain *clkdm);
95int clkdm_unregister(struct clockdomain *clkdm);
96struct clockdomain *clkdm_lookup(const char *name); 117struct clockdomain *clkdm_lookup(const char *name);
97 118
98int clkdm_for_each(int (*fn)(struct clockdomain *clkdm, void *user), 119int clkdm_for_each(int (*fn)(struct clockdomain *clkdm, void *user),
99 void *user); 120 void *user);
100struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm); 121struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm);
101 122
123int clkdm_add_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
124int clkdm_del_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
125int clkdm_read_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
126int clkdm_clear_all_wkdeps(struct clockdomain *clkdm);
127int clkdm_add_sleepdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
128int clkdm_del_sleepdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
129int clkdm_read_sleepdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
130int clkdm_clear_all_sleepdeps(struct clockdomain *clkdm);
131
102void omap2_clkdm_allow_idle(struct clockdomain *clkdm); 132void omap2_clkdm_allow_idle(struct clockdomain *clkdm);
103void omap2_clkdm_deny_idle(struct clockdomain *clkdm); 133void omap2_clkdm_deny_idle(struct clockdomain *clkdm);
104 134
diff --git a/arch/arm/plat-omap/include/plat/control.h b/arch/arm/plat-omap/include/plat/control.h
index a745d62fad0d..61e7b8a8c993 100644
--- a/arch/arm/plat-omap/include/plat/control.h
+++ b/arch/arm/plat-omap/include/plat/control.h
@@ -160,6 +160,14 @@
160#define OMAP343X_CONTROL_SRAMLDO5 (OMAP2_CONTROL_GENERAL + 0x02C0) 160#define OMAP343X_CONTROL_SRAMLDO5 (OMAP2_CONTROL_GENERAL + 0x02C0)
161#define OMAP343X_CONTROL_CSI (OMAP2_CONTROL_GENERAL + 0x02C4) 161#define OMAP343X_CONTROL_CSI (OMAP2_CONTROL_GENERAL + 0x02C4)
162 162
163/* AM35XX only CONTROL_GENERAL register offsets */
164#define AM35XX_CONTROL_MSUSPENDMUX_6 (OMAP2_CONTROL_GENERAL + 0x0038)
165#define AM35XX_CONTROL_DEVCONF2 (OMAP2_CONTROL_GENERAL + 0x0310)
166#define AM35XX_CONTROL_DEVCONF3 (OMAP2_CONTROL_GENERAL + 0x0314)
167#define AM35XX_CONTROL_CBA_PRIORITY (OMAP2_CONTROL_GENERAL + 0x0320)
168#define AM35XX_CONTROL_LVL_INTR_CLEAR (OMAP2_CONTROL_GENERAL + 0x0324)
169#define AM35XX_CONTROL_IP_SW_RESET (OMAP2_CONTROL_GENERAL + 0x0328)
170#define AM35XX_CONTROL_IPSS_CLK_CTRL (OMAP2_CONTROL_GENERAL + 0x032C)
163 171
164/* 34xx PADCONF register offsets */ 172/* 34xx PADCONF register offsets */
165#define OMAP343X_PADCONF_ETK(i) (OMAP2_CONTROL_PADCONFS + 0x5a8 + \ 173#define OMAP343X_PADCONF_ETK(i) (OMAP2_CONTROL_PADCONFS + 0x5a8 + \
@@ -257,6 +265,15 @@
257#define OMAP343X_SCRATCHPAD (OMAP343X_CTRL_BASE + 0x910) 265#define OMAP343X_SCRATCHPAD (OMAP343X_CTRL_BASE + 0x910)
258#define OMAP343X_SCRATCHPAD_ROM_OFFSET 0x19C 266#define OMAP343X_SCRATCHPAD_ROM_OFFSET 0x19C
259 267
268/* AM35XX_CONTROL_IPSS_CLK_CTRL bits */
269#define AM35XX_USBOTG_VBUSP_CLK_SHIFT 0
270#define AM35XX_CPGMAC_VBUSP_CLK_SHIFT 1
271#define AM35XX_VPFE_VBUSP_CLK_SHIFT 2
272#define AM35XX_HECC_VBUSP_CLK_SHIFT 3
273#define AM35XX_USBOTG_FCLK_SHIFT 8
274#define AM35XX_CPGMAC_FCLK_SHIFT 9
275#define AM35XX_VPFE_FCLK_SHIFT 10
276
260/* 277/*
261 * CONTROL OMAP STATUS register to identify OMAP3 features 278 * CONTROL OMAP STATUS register to identify OMAP3 features
262 */ 279 */
diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h
index a162f585b1e3..ccd78fd473d1 100644
--- a/arch/arm/plat-omap/include/plat/cpu.h
+++ b/arch/arm/plat-omap/include/plat/cpu.h
@@ -44,7 +44,7 @@
44int omap_type(void); 44int omap_type(void);
45 45
46struct omap_chip_id { 46struct omap_chip_id {
47 u8 oc; 47 u16 oc;
48 u8 type; 48 u8 type;
49}; 49};
50 50
@@ -154,6 +154,7 @@ unsigned int omap_rev(void);
154 * cpu_is_omap242x(): True for OMAP2420, OMAP2422, OMAP2423 154 * cpu_is_omap242x(): True for OMAP2420, OMAP2422, OMAP2423
155 * cpu_is_omap243x(): True for OMAP2430 155 * cpu_is_omap243x(): True for OMAP2430
156 * cpu_is_omap343x(): True for OMAP3430 156 * cpu_is_omap343x(): True for OMAP3430
157 * cpu_is_omap443x(): True for OMAP4430
157 */ 158 */
158#define GET_OMAP_CLASS (omap_rev() & 0xff) 159#define GET_OMAP_CLASS (omap_rev() & 0xff)
159 160
@@ -286,6 +287,7 @@ IS_OMAP_SUBCLASS(443x, 0x443)
286 * cpu_is_omap2423(): True for OMAP2423 287 * cpu_is_omap2423(): True for OMAP2423
287 * cpu_is_omap2430(): True for OMAP2430 288 * cpu_is_omap2430(): True for OMAP2430
288 * cpu_is_omap3430(): True for OMAP3430 289 * cpu_is_omap3430(): True for OMAP3430
290 * cpu_is_omap4430(): True for OMAP4430
289 * cpu_is_omap3505(): True for OMAP3505 291 * cpu_is_omap3505(): True for OMAP3505
290 * cpu_is_omap3517(): True for OMAP3517 292 * cpu_is_omap3517(): True for OMAP3517
291 */ 293 */
@@ -334,6 +336,7 @@ IS_OMAP_TYPE(3517, 0x3517)
334#define cpu_is_omap3505() 0 336#define cpu_is_omap3505() 0
335#define cpu_is_omap3517() 0 337#define cpu_is_omap3517() 0
336#define cpu_is_omap3430() 0 338#define cpu_is_omap3430() 0
339#define cpu_is_omap4430() 0
337#define cpu_is_omap3630() 0 340#define cpu_is_omap3630() 0
338 341
339/* 342/*
@@ -471,9 +474,12 @@ IS_OMAP_TYPE(3517, 0x3517)
471#define CHIP_IS_OMAP3430ES3_0 (1 << 5) 474#define CHIP_IS_OMAP3430ES3_0 (1 << 5)
472#define CHIP_IS_OMAP3430ES3_1 (1 << 6) 475#define CHIP_IS_OMAP3430ES3_1 (1 << 6)
473#define CHIP_IS_OMAP3630ES1 (1 << 7) 476#define CHIP_IS_OMAP3630ES1 (1 << 7)
477#define CHIP_IS_OMAP4430ES1 (1 << 8)
474 478
475#define CHIP_IS_OMAP24XX (CHIP_IS_OMAP2420 | CHIP_IS_OMAP2430) 479#define CHIP_IS_OMAP24XX (CHIP_IS_OMAP2420 | CHIP_IS_OMAP2430)
476 480
481#define CHIP_IS_OMAP4430 (CHIP_IS_OMAP4430ES1)
482
477/* 483/*
478 * "GE" here represents "greater than or equal to" in terms of ES 484 * "GE" here represents "greater than or equal to" in terms of ES
479 * levels. So CHIP_GE_OMAP3430ES2 is intended to match all OMAP3430 485 * levels. So CHIP_GE_OMAP3430ES2 is intended to match all OMAP3430
diff --git a/arch/arm/plat-omap/include/plat/omap_device.h b/arch/arm/plat-omap/include/plat/omap_device.h
index dc1fac1d805c..76d49171fed9 100644
--- a/arch/arm/plat-omap/include/plat/omap_device.h
+++ b/arch/arm/plat-omap/include/plat/omap_device.h
@@ -131,11 +131,15 @@ int omap_device_enable_clocks(struct omap_device *od);
131 */ 131 */
132struct omap_device_pm_latency { 132struct omap_device_pm_latency {
133 u32 deactivate_lat; 133 u32 deactivate_lat;
134 u32 deactivate_lat_worst;
134 int (*deactivate_func)(struct omap_device *od); 135 int (*deactivate_func)(struct omap_device *od);
135 u32 activate_lat; 136 u32 activate_lat;
137 u32 activate_lat_worst;
136 int (*activate_func)(struct omap_device *od); 138 int (*activate_func)(struct omap_device *od);
139 u32 flags;
137}; 140};
138 141
142#define OMAP_DEVICE_LATENCY_AUTO_ADJUST BIT(1)
139 143
140/* Get omap_device pointer from platform_device pointer */ 144/* Get omap_device pointer from platform_device pointer */
141#define to_omap_device(x) container_of((x), struct omap_device, pdev) 145#define to_omap_device(x) container_of((x), struct omap_device, pdev)
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h b/arch/arm/plat-omap/include/plat/omap_hwmod.h
index 33933256a226..921990e2a29a 100644
--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
+++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
@@ -441,6 +441,8 @@ int omap_hwmod_shutdown(struct omap_hwmod *oh);
441int omap_hwmod_enable_clocks(struct omap_hwmod *oh); 441int omap_hwmod_enable_clocks(struct omap_hwmod *oh);
442int omap_hwmod_disable_clocks(struct omap_hwmod *oh); 442int omap_hwmod_disable_clocks(struct omap_hwmod *oh);
443 443
444int omap_hwmod_set_slave_idlemode(struct omap_hwmod *oh, u8 idlemode);
445
444int omap_hwmod_reset(struct omap_hwmod *oh); 446int omap_hwmod_reset(struct omap_hwmod *oh);
445void omap_hwmod_ocp_barrier(struct omap_hwmod *oh); 447void omap_hwmod_ocp_barrier(struct omap_hwmod *oh);
446 448
diff --git a/arch/arm/plat-omap/include/plat/powerdomain.h b/arch/arm/plat-omap/include/plat/powerdomain.h
index 0b960051eaed..e15c7e9da975 100644
--- a/arch/arm/plat-omap/include/plat/powerdomain.h
+++ b/arch/arm/plat-omap/include/plat/powerdomain.h
@@ -1,8 +1,8 @@
1/* 1/*
2 * OMAP2/3 powerdomain control 2 * OMAP2/3 powerdomain control
3 * 3 *
4 * Copyright (C) 2007-8 Texas Instruments, Inc. 4 * Copyright (C) 2007-2008 Texas Instruments, Inc.
5 * Copyright (C) 2007-8 Nokia Corporation 5 * Copyright (C) 2007-2009 Nokia Corporation
6 * 6 *
7 * Written by Paul Walmsley 7 * Written by Paul Walmsley
8 * 8 *
@@ -37,6 +37,9 @@
37#define PWRSTS_OFF_RET ((1 << PWRDM_POWER_OFF) | \ 37#define PWRSTS_OFF_RET ((1 << PWRDM_POWER_OFF) | \
38 (1 << PWRDM_POWER_RET)) 38 (1 << PWRDM_POWER_RET))
39 39
40#define PWRSTS_RET_ON ((1 << PWRDM_POWER_RET) | \
41 (1 << PWRDM_POWER_ON))
42
40#define PWRSTS_OFF_RET_ON (PWRSTS_OFF_RET | (1 << PWRDM_POWER_ON)) 43#define PWRSTS_OFF_RET_ON (PWRSTS_OFF_RET | (1 << PWRDM_POWER_ON))
41 44
42 45
@@ -48,16 +51,16 @@
48 */ 51 */
49 52
50/* 53/*
51 * Number of memory banks that are power-controllable. On OMAP3430, the 54 * Number of memory banks that are power-controllable. On OMAP4430, the
52 * maximum is 4. 55 * maximum is 5.
53 */ 56 */
54#define PWRDM_MAX_MEM_BANKS 4 57#define PWRDM_MAX_MEM_BANKS 5
55 58
56/* 59/*
57 * Maximum number of clockdomains that can be associated with a powerdomain. 60 * Maximum number of clockdomains that can be associated with a powerdomain.
58 * CORE powerdomain on OMAP3 is the worst case 61 * CORE powerdomain on OMAP4 is the worst case
59 */ 62 */
60#define PWRDM_MAX_CLKDMS 4 63#define PWRDM_MAX_CLKDMS 9
61 64
62/* XXX A completely arbitrary number. What is reasonable here? */ 65/* XXX A completely arbitrary number. What is reasonable here? */
63#define PWRDM_TRANSITION_BAILOUT 100000 66#define PWRDM_TRANSITION_BAILOUT 100000
@@ -65,63 +68,36 @@
65struct clockdomain; 68struct clockdomain;
66struct powerdomain; 69struct powerdomain;
67 70
68/* Encodes dependencies between powerdomains - statically defined */ 71/**
69struct pwrdm_dep { 72 * struct powerdomain - OMAP powerdomain
70 73 * @name: Powerdomain name
71 /* Powerdomain name */ 74 * @omap_chip: represents the OMAP chip types containing this pwrdm
72 const char *pwrdm_name; 75 * @prcm_offs: the address offset from CM_BASE/PRM_BASE
73 76 * @pwrsts: Possible powerdomain power states
74 /* Powerdomain pointer - resolved by the powerdomain code */ 77 * @pwrsts_logic_ret: Possible logic power states when pwrdm in RETENTION
75 struct powerdomain *pwrdm; 78 * @flags: Powerdomain flags
76 79 * @banks: Number of software-controllable memory banks in this powerdomain
77 /* Flags to mark OMAP chip restrictions, etc. */ 80 * @pwrsts_mem_ret: Possible memory bank pwrstates when pwrdm in RETENTION
78 const struct omap_chip_id omap_chip; 81 * @pwrsts_mem_on: Possible memory bank pwrstates when pwrdm in ON
79 82 * @pwrdm_clkdms: Clockdomains in this powerdomain
80}; 83 * @node: list_head linking all powerdomains
81 84 * @state:
85 * @state_counter:
86 * @timer:
87 * @state_timer:
88 */
82struct powerdomain { 89struct powerdomain {
83
84 /* Powerdomain name */
85 const char *name; 90 const char *name;
86
87 /* the address offset from CM_BASE/PRM_BASE */
88 const s16 prcm_offs;
89
90 /* Used to represent the OMAP chip types containing this pwrdm */
91 const struct omap_chip_id omap_chip; 91 const struct omap_chip_id omap_chip;
92 92 const s16 prcm_offs;
93 /* Powerdomains that can be told to wake this powerdomain up */
94 struct pwrdm_dep *wkdep_srcs;
95
96 /* Powerdomains that can be told to keep this pwrdm from inactivity */
97 struct pwrdm_dep *sleepdep_srcs;
98
99 /* Bit shift of this powerdomain's PM_WKDEP/CM_SLEEPDEP bit */
100 const u8 dep_bit;
101
102 /* Possible powerdomain power states */
103 const u8 pwrsts; 93 const u8 pwrsts;
104
105 /* Possible logic power states when pwrdm in RETENTION */
106 const u8 pwrsts_logic_ret; 94 const u8 pwrsts_logic_ret;
107
108 /* Powerdomain flags */
109 const u8 flags; 95 const u8 flags;
110
111 /* Number of software-controllable memory banks in this powerdomain */
112 const u8 banks; 96 const u8 banks;
113
114 /* Possible memory bank pwrstates when pwrdm in RETENTION */
115 const u8 pwrsts_mem_ret[PWRDM_MAX_MEM_BANKS]; 97 const u8 pwrsts_mem_ret[PWRDM_MAX_MEM_BANKS];
116
117 /* Possible memory bank pwrstates when pwrdm is ON */
118 const u8 pwrsts_mem_on[PWRDM_MAX_MEM_BANKS]; 98 const u8 pwrsts_mem_on[PWRDM_MAX_MEM_BANKS];
119
120 /* Clockdomains in this powerdomain */
121 struct clockdomain *pwrdm_clkdms[PWRDM_MAX_CLKDMS]; 99 struct clockdomain *pwrdm_clkdms[PWRDM_MAX_CLKDMS];
122
123 struct list_head node; 100 struct list_head node;
124
125 int state; 101 int state;
126 unsigned state_counter[PWRDM_MAX_PWRSTS]; 102 unsigned state_counter[PWRDM_MAX_PWRSTS];
127 103
@@ -134,8 +110,6 @@ struct powerdomain {
134 110
135void pwrdm_init(struct powerdomain **pwrdm_list); 111void pwrdm_init(struct powerdomain **pwrdm_list);
136 112
137int pwrdm_register(struct powerdomain *pwrdm);
138int pwrdm_unregister(struct powerdomain *pwrdm);
139struct powerdomain *pwrdm_lookup(const char *name); 113struct powerdomain *pwrdm_lookup(const char *name);
140 114
141int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm, void *user), 115int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm, void *user),
@@ -149,13 +123,6 @@ int pwrdm_for_each_clkdm(struct powerdomain *pwrdm,
149 int (*fn)(struct powerdomain *pwrdm, 123 int (*fn)(struct powerdomain *pwrdm,
150 struct clockdomain *clkdm)); 124 struct clockdomain *clkdm));
151 125
152int pwrdm_add_wkdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2);
153int pwrdm_del_wkdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2);
154int pwrdm_read_wkdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2);
155int pwrdm_add_sleepdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2);
156int pwrdm_del_sleepdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2);
157int pwrdm_read_sleepdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2);
158
159int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm); 126int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm);
160 127
161int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst); 128int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst);
diff --git a/arch/arm/plat-omap/include/plat/prcm.h b/arch/arm/plat-omap/include/plat/prcm.h
index e63e94e18975..66938a9f8dae 100644
--- a/arch/arm/plat-omap/include/plat/prcm.h
+++ b/arch/arm/plat-omap/include/plat/prcm.h
@@ -33,6 +33,14 @@ int omap2_cm_wait_idlest(void __iomem *reg, u32 mask, const char *name);
33void omap3_prcm_save_context(void); 33void omap3_prcm_save_context(void);
34void omap3_prcm_restore_context(void); 34void omap3_prcm_restore_context(void);
35 35
36u32 prm_read_mod_reg(s16 module, u16 idx);
37void prm_write_mod_reg(u32 val, s16 module, u16 idx);
38u32 prm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx);
39u32 prm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask);
40u32 cm_read_mod_reg(s16 module, u16 idx);
41void cm_write_mod_reg(u32 val, s16 module, u16 idx);
42u32 cm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx);
43
36#endif 44#endif
37 45
38 46
diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
index 1e5648d3e3d8..d8c75c8f78d7 100644
--- a/arch/arm/plat-omap/omap_device.c
+++ b/arch/arm/plat-omap/omap_device.c
@@ -148,10 +148,22 @@ static int _omap_device_activate(struct omap_device *od, u8 ignore_lat)
148 "%llu nsec\n", od->pdev.name, od->pm_lat_level, 148 "%llu nsec\n", od->pdev.name, od->pm_lat_level,
149 act_lat); 149 act_lat);
150 150
151 WARN(act_lat > odpl->activate_lat, "omap_device: %s.%d: " 151 if (act_lat > odpl->activate_lat) {
152 "activate step %d took longer than expected (%llu > %d)\n", 152 odpl->activate_lat_worst = act_lat;
153 od->pdev.name, od->pdev.id, od->pm_lat_level, 153 if (odpl->flags & OMAP_DEVICE_LATENCY_AUTO_ADJUST) {
154 act_lat, odpl->activate_lat); 154 odpl->activate_lat = act_lat;
155 pr_warning("omap_device: %s.%d: new worst case "
156 "activate latency %d: %llu\n",
157 od->pdev.name, od->pdev.id,
158 od->pm_lat_level, act_lat);
159 } else
160 pr_warning("omap_device: %s.%d: activate "
161 "latency %d higher than exptected. "
162 "(%llu > %d)\n",
163 od->pdev.name, od->pdev.id,
164 od->pm_lat_level, act_lat,
165 odpl->activate_lat);
166 }
155 167
156 od->dev_wakeup_lat -= odpl->activate_lat; 168 od->dev_wakeup_lat -= odpl->activate_lat;
157 } 169 }
@@ -204,10 +216,23 @@ static int _omap_device_deactivate(struct omap_device *od, u8 ignore_lat)
204 "%llu nsec\n", od->pdev.name, od->pm_lat_level, 216 "%llu nsec\n", od->pdev.name, od->pm_lat_level,
205 deact_lat); 217 deact_lat);
206 218
207 WARN(deact_lat > odpl->deactivate_lat, "omap_device: %s.%d: " 219 if (deact_lat > odpl->deactivate_lat) {
208 "deactivate step %d took longer than expected " 220 odpl->deactivate_lat_worst = deact_lat;
209 "(%llu > %d)\n", od->pdev.name, od->pdev.id, 221 if (odpl->flags & OMAP_DEVICE_LATENCY_AUTO_ADJUST) {
210 od->pm_lat_level, deact_lat, odpl->deactivate_lat); 222 odpl->deactivate_lat = deact_lat;
223 pr_warning("omap_device: %s.%d: new worst case "
224 "deactivate latency %d: %llu\n",
225 od->pdev.name, od->pdev.id,
226 od->pm_lat_level, deact_lat);
227 } else
228 pr_warning("omap_device: %s.%d: deactivate "
229 "latency %d higher than exptected. "
230 "(%llu > %d)\n",
231 od->pdev.name, od->pdev.id,
232 od->pm_lat_level, deact_lat,
233 odpl->deactivate_lat);
234 }
235
211 236
212 od->dev_wakeup_lat += odpl->activate_lat; 237 od->dev_wakeup_lat += odpl->activate_lat;
213 238