diff options
author | Tony Lindgren <tony@atomide.com> | 2010-01-29 14:37:48 -0500 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2010-01-29 14:37:48 -0500 |
commit | 9ba874506b7b3883d78b8cad61eba39c4bb09885 (patch) | |
tree | 8e2112bea42e5cca4f8394274309e30f83b55fc1 | |
parent | 4f4e65d2484811210a2826fa9d59712c7fcf1b49 (diff) | |
parent | 98fa3d8aeabf7a039cc920a9c2ffebc6b4648e2b (diff) |
Merge branch 'for_2.6.34_4f4e65_a' of git://git.pwsan.com/linux-2.6 into omap-for-linus
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 */ | ||
56 | unsigned long omap1_watchdog_recalc(struct clk *clk) | ||
57 | { | ||
58 | return clk->parent->rate / 14; | ||
59 | } | ||
60 | |||
61 | unsigned long omap1_uart_recalc(struct clk *clk) | 55 | unsigned 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 @@ | |||
6 | obj-y := id.o io.o control.o mux.o devices.o serial.o gpmc.o timer-gp.o | 6 | obj-y := id.o io.o control.o mux.o devices.o serial.o gpmc.o timer-gp.o |
7 | 7 | ||
8 | omap-2-3-common = irq.o sdrc.o omap_hwmod.o | 8 | omap-2-3-common = irq.o sdrc.o omap_hwmod.o |
9 | omap-3-4-common = dpll.o | 9 | omap-3-4-common = dpll3xxx.o |
10 | prcm-common = prcm.o powerdomain.o | 10 | prcm-common = prcm.o powerdomain.o |
11 | clock-common = clock.o clock_common_data.o clockdomain.o | 11 | clock-common = clock.o clock_common_data.o \ |
12 | 12 | clockdomain.o clkt_dpll.o \ | |
13 | obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(prcm-common) $(clock-common) | 13 | clkt_clksel.o |
14 | clock-omap2xxx = clkt2xxx_dpllcore.o \ | ||
15 | clkt2xxx_virt_prcm_set.o \ | ||
16 | clkt2xxx_apll.o clkt2xxx_osc.o \ | ||
17 | clkt2xxx_sys.o | ||
18 | clock-omap3xxx = clkt34xx_dpll3m2.o | ||
19 | |||
20 | obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(prcm-common) $(clock-common) \ | ||
21 | $(clock-omap2xxx) | ||
14 | obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(prcm-common) $(clock-common) \ | 22 | obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(prcm-common) $(clock-common) \ |
15 | $(omap-3-4-common) | 23 | $(omap-3-4-common) $(clock-omap3xxx) |
16 | obj-$(CONFIG_ARCH_OMAP4) += $(omap-3-4-common) prcm.o clock.o | 24 | obj-$(CONFIG_ARCH_OMAP4) += $(omap-3-4-common) $(prcm-common) $(clock-common) |
17 | 25 | ||
18 | obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o | 26 | obj-$(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 */ | ||
44 | static 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 | |||
69 | static int omap2_clk_apll96_enable(struct clk *clk) | ||
70 | { | ||
71 | return omap2_clk_apll_enable(clk, OMAP24XX_ST_96M_APLL); | ||
72 | } | ||
73 | |||
74 | static 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 */ | ||
80 | static 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 | |||
91 | const struct clkops clkops_apll96 = { | ||
92 | .enable = omap2_clk_apll96_enable, | ||
93 | .disable = omap2_clk_apll_disable, | ||
94 | }; | ||
95 | |||
96 | const struct clkops clkops_apll54 = { | ||
97 | .enable = omap2_clk_apll54_enable, | ||
98 | .disable = omap2_clk_apll_disable, | ||
99 | }; | ||
100 | |||
101 | /* Public functions */ | ||
102 | |||
103 | u32 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 | */ | ||
50 | unsigned 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 | */ | ||
72 | static 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 | |||
101 | unsigned long omap2_dpllcore_recalc(struct clk *clk) | ||
102 | { | ||
103 | return omap2xxx_clk_get_core_rate(clk); | ||
104 | } | ||
105 | |||
106 | int 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 | |||
33 | static 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 | |||
44 | static 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 | |||
53 | const struct clkops clkops_oscck = { | ||
54 | .enable = omap2_enable_osc_ck, | ||
55 | .disable = omap2_disable_osc_ck, | ||
56 | }; | ||
57 | |||
58 | unsigned 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 | |||
32 | void __iomem *prcm_clksrc_ctrl; | ||
33 | |||
34 | u32 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 | |||
45 | unsigned 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 | |||
45 | const struct prcm_config *curr_prcm_set; | ||
46 | const 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 | */ | ||
54 | unsigned 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 | */ | ||
66 | long 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 */ | ||
92 | int 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 | */ | ||
178 | static struct cpufreq_frequency_table *freq_table; | ||
179 | |||
180 | void 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 | |||
246 | void 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 | */ | ||
49 | int 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 | */ | ||
47 | static 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 | */ | ||
74 | static 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 | */ | ||
115 | void 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 | */ | ||
154 | unsigned 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 | */ | ||
185 | u32 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 | */ | ||
247 | long 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 */ | ||
256 | long 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 | */ | ||
278 | u32 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 | */ | ||
311 | u32 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 | */ | ||
344 | u32 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 | |||
357 | int 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 | |||
385 | int 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 | */ | ||
72 | static 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 | |||
107 | static 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 | */ | ||
137 | static 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 | |||
173 | void 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 | */ | ||
219 | u32 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 | */ | ||
277 | int 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 | */ | ||
303 | long 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 | |||
70 | u8 cpu_mask; | 39 | u8 cpu_mask; |
71 | 40 | ||
72 | /*------------------------------------------------------------------------- | 41 | /*------------------------------------------------------------------------- |
73 | * OMAP2/3/4 specific clock functions | 42 | * OMAP2/3/4 specific clock functions |
74 | *-------------------------------------------------------------------------*/ | 43 | *-------------------------------------------------------------------------*/ |
75 | 44 | ||
76 | void 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 | */ | ||
57 | static 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 | */ | ||
77 | static 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 */ | ||
83 | static 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 | */ |
116 | static void _omap2xxx_clk_commit(struct clk *clk) | 98 | void 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 | */ | ||
141 | static 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 */ | ||
185 | void omap2_init_clk_clkdm(struct clk *clk) | 120 | void 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 | */ | ||
212 | void 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 | */ | ||
261 | u32 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 | */ | ||
307 | unsigned 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 | */ | ||
383 | static 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 | |||
400 | int omap2_dflt_clk_enable(struct clk *clk) | 197 | int 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 | */ | ||
462 | static 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 */ | ||
468 | static void _omap2_clk_disable(struct clk *clk) | ||
469 | { | ||
470 | clk->ops->disable(clk); | ||
471 | } | ||
472 | |||
473 | void omap2_clk_disable(struct clk *clk) | 256 | void 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 | ||
513 | err: | 292 | err: |
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 | */ | ||
526 | unsigned 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 | */ | ||
553 | static 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 | */ | ||
589 | u32 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 | */ | ||
651 | long 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 */ | ||
660 | long 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 | */ | ||
682 | u32 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 | */ | ||
715 | u32 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 | */ | ||
748 | u32 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 | |||
761 | int 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 */ |
791 | int omap2_clk_set_rate(struct clk *clk, unsigned long rate) | 300 | int 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 | */ | ||
813 | static 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 | |||
843 | int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) | 318 | int 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 | */ | ||
896 | int 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 | |||
906 | static 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 | */ | ||
936 | static 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 | */ | ||
986 | long 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 | |||
357 | struct 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 | ||
50 | int omap2_clk_init(void); | ||
51 | int omap2_clk_enable(struct clk *clk); | 50 | int omap2_clk_enable(struct clk *clk); |
52 | void omap2_clk_disable(struct clk *clk); | 51 | void omap2_clk_disable(struct clk *clk); |
53 | long omap2_clk_round_rate(struct clk *clk, unsigned long rate); | 52 | long 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); |
79 | u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val); | 78 | u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val); |
80 | u32 omap2_divisor_to_clksel(struct clk *clk, u32 div); | 79 | u32 omap2_divisor_to_clksel(struct clk *clk, u32 div); |
81 | unsigned long omap2_fixed_divisor_recalc(struct clk *clk); | ||
82 | long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate); | 80 | long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate); |
83 | int omap2_clksel_set_rate(struct clk *clk, unsigned long rate); | 81 | int omap2_clksel_set_rate(struct clk *clk, unsigned long rate); |
82 | int omap2_clksel_set_parent(struct clk *clk, struct clk *new_parent); | ||
84 | u32 omap2_get_dpll_rate(struct clk *clk); | 83 | u32 omap2_get_dpll_rate(struct clk *clk); |
85 | void omap2_init_dpll_parent(struct clk *clk); | 84 | void omap2_init_dpll_parent(struct clk *clk); |
86 | int omap2_wait_clock_ready(void __iomem *reg, u32 cval, const char *name); | 85 | int omap2_wait_clock_ready(void __iomem *reg, u32 cval, const char *name); |
87 | void omap2_clk_prepare_for_reboot(void); | ||
88 | int omap2_dflt_clk_enable(struct clk *clk); | 86 | int omap2_dflt_clk_enable(struct clk *clk); |
89 | void omap2_dflt_clk_disable(struct clk *clk); | 87 | void omap2_dflt_clk_disable(struct clk *clk); |
90 | void omap2_clk_dflt_find_companion(struct clk *clk, void __iomem **other_reg, | 88 | void omap2_clk_dflt_find_companion(struct clk *clk, void __iomem **other_reg, |
91 | u8 *other_bit); | 89 | u8 *other_bit); |
92 | void omap2_clk_dflt_find_idlest(struct clk *clk, void __iomem **idlest_reg, | 90 | void omap2_clk_dflt_find_idlest(struct clk *clk, void __iomem **idlest_reg, |
93 | u8 *idlest_bit); | 91 | u8 *idlest_bit); |
92 | void omap2xxx_clk_commit(struct clk *clk); | ||
94 | 93 | ||
95 | extern u8 cpu_mask; | 94 | extern u8 cpu_mask; |
96 | 95 | ||
@@ -104,5 +103,12 @@ extern const struct clksel_rate gpt_32k_rates[]; | |||
104 | extern const struct clksel_rate gpt_sys_rates[]; | 103 | extern const struct clksel_rate gpt_sys_rates[]; |
105 | extern const struct clksel_rate gfx_l3_rates[]; | 104 | extern const struct clksel_rate gfx_l3_rates[]; |
106 | 105 | ||
106 | #if defined(CONFIG_ARCH_OMAP24XX) && defined(CONFIG_CPU_FREQ) | ||
107 | extern void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table); | ||
108 | extern 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 | |||
59 | const struct prcm_config *curr_prcm_set; | ||
60 | const struct prcm_config *rate_table; | ||
61 | |||
62 | struct clk *vclk, *sclk, *dclk; | 32 | struct clk *vclk, *sclk, *dclk; |
63 | 33 | ||
64 | void __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 */ |
90 | const struct clkops clkops_omap2430_i2chs_wait = { | 64 | const 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 | */ | ||
107 | unsigned 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 | |||
125 | static 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 | |||
136 | static 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 | |||
145 | const 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 */ | ||
152 | static 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 */ | ||
163 | static 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 | |||
188 | static int omap2_clk_apll96_enable(struct clk *clk) | ||
189 | { | ||
190 | return omap2_clk_apll_enable(clk, OMAP24XX_ST_96M_APLL); | ||
191 | } | ||
192 | |||
193 | static 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 */ | ||
199 | static 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 | |||
208 | const struct clkops clkops_apll96 = { | ||
209 | .enable = omap2_clk_apll96_enable, | ||
210 | .disable = omap2_clk_apll_disable, | ||
211 | }; | ||
212 | |||
213 | const 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 | */ | ||
222 | long 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 | |||
251 | unsigned long omap2_dpllcore_recalc(struct clk *clk) | ||
252 | { | ||
253 | return omap2xxx_clk_get_core_rate(clk); | ||
254 | } | ||
255 | |||
256 | int 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 | */ | ||
330 | unsigned 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 | */ | ||
342 | long 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 */ | ||
368 | int 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 | */ | ||
454 | static struct cpufreq_frequency_table *freq_table; | ||
455 | |||
456 | void 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 | |||
519 | void omap2_clk_exit_cpufreq_table(struct cpufreq_frequency_table **table) | ||
520 | { | ||
521 | kfree(freq_table); | ||
522 | } | ||
523 | |||
524 | #endif | ||
525 | |||
526 | struct 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 | |||
539 | static 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 | |||
557 | static 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 | |||
568 | unsigned long omap2_osc_clk_recalc(struct clk *clk) | ||
569 | { | ||
570 | return omap2_get_apll_clkin() * omap2_get_sysclkdiv(); | ||
571 | } | ||
572 | |||
573 | unsigned 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 | */ |
581 | void omap2_clk_prepare_for_reboot(void) | 74 | void 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 | */ |
596 | static int __init omap2_clk_arch_init(void) | 89 | static 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 | } |
624 | arch_initcall(omap2_clk_arch_init); | 120 | arch_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 @@ | |||
11 | unsigned long omap2_table_mpu_recalc(struct clk *clk); | 11 | unsigned long omap2_table_mpu_recalc(struct clk *clk); |
12 | int omap2_select_table_rate(struct clk *clk, unsigned long rate); | 12 | int omap2_select_table_rate(struct clk *clk, unsigned long rate); |
13 | long omap2_round_to_table_rate(struct clk *clk, unsigned long rate); | 13 | long omap2_round_to_table_rate(struct clk *clk, unsigned long rate); |
14 | unsigned long omap2_sys_clk_recalc(struct clk *clk); | 14 | unsigned long omap2xxx_sys_clk_recalc(struct clk *clk); |
15 | unsigned long omap2_osc_clk_recalc(struct clk *clk); | 15 | unsigned long omap2_osc_clk_recalc(struct clk *clk); |
16 | unsigned long omap2_sys_clk_recalc(struct clk *clk); | ||
17 | unsigned long omap2_dpllcore_recalc(struct clk *clk); | 16 | unsigned long omap2_dpllcore_recalc(struct clk *clk); |
18 | int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate); | 17 | int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate); |
19 | unsigned long omap2xxx_clk_get_core_rate(struct clk *clk); | 18 | unsigned long omap2xxx_clk_get_core_rate(struct clk *clk); |
19 | u32 omap2xxx_get_apll_clkin(void); | ||
20 | u32 omap2xxx_get_sysclkdiv(void); | ||
21 | void omap2xxx_clk_prepare_for_reboot(void); | ||
22 | int 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 | ||
85 | static struct clk alt_ck = { /* Typical 54M or 48M, may not exist */ | 85 | static 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 | ||
2241 | int __init omap2_clk_init(void) | 2241 | int __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 | 153 | void __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 | */ | ||
181 | int 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 | |||
261 | struct 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 | */ | ||
273 | void 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 | |||
287 | void 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 | */ |
315 | static int __init omap2_clk_arch_init(void) | 183 | static 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 | } |
348 | arch_initcall(omap2_clk_arch_init); | 219 | arch_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 | ||
11 | int omap3xxx_clk_init(void); | ||
11 | int omap3_dpll4_set_rate(struct clk *clk, unsigned long rate); | 12 | int omap3_dpll4_set_rate(struct clk *clk, unsigned long rate); |
12 | int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate); | 13 | int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate); |
13 | void omap3_clk_lock_dpll5(void); | 14 | void 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 | ||
1594 | static struct clk ssi_sst_fck_3430es2 = { | 1594 | static 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 | ||
2991 | static 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), | 2992 | static 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 | ||
3214 | int __init omap2_clk_init(void) | 3215 | int __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 | ||
16 | struct 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 | |||
25 | const struct clkops clkops_noncore_dpll_ops = { | 16 | const 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 | |||
30 | void 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 | ||
13 | int omap4xxx_clk_init(void); | ||
14 | |||
13 | extern const struct clkops clkops_noncore_dpll_ops; | 15 | extern 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 | ||
2729 | int __init omap2_clk_init(void) | 2729 | int __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 */ |
39 | static LIST_HEAD(clkdm_list); | 40 | static 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 */ |
42 | static DEFINE_MUTEX(clkdm_mutex); | 43 | static struct clkdm_autodep *autodeps; |
43 | |||
44 | /* array of powerdomain deps to be added/removed when clkdm in hwsup mode */ | ||
45 | static struct clkdm_pwrdm_autodep *autodeps; | ||
46 | 44 | ||
47 | 45 | ||
48 | /* Private functions */ | 46 | /* Private functions */ |
49 | 47 | ||
48 | static 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 | */ | ||
75 | static 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 */ | ||
107 | static 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 | */ |
63 | static void _autodep_lookup(struct clkdm_pwrdm_autodep *autodep) | 145 | static 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 | */ |
90 | static void _clkdm_add_autodeps(struct clockdomain *clkdm) | 172 | static 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 | */ |
118 | static void _clkdm_del_autodeps(struct clockdomain *clkdm) | 200 | static 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 | */ |
146 | static void _omap2_clkdm_set_hwsup(struct clockdomain *clkdm, int enable) | 228 | static 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 | |||
169 | static 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 | */ |
202 | void clkdm_init(struct clockdomain **clkdms, | 265 | static 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 | */ |
226 | int clkdm_register(struct clockdomain *clkdm) | 309 | static 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 | ||
259 | cr_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 | */ |
272 | int clkdm_unregister(struct clockdomain *clkdm) | 359 | void 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 | */ |
295 | struct clockdomain *clkdm_lookup(const char *name) | 392 | struct 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 | */ |
358 | struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm) | 451 | struct 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 | */ | ||
474 | int 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 | */ | ||
509 | int 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 | */ | ||
548 | int 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 | */ | ||
577 | int 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 | */ | ||
611 | int 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 | */ | ||
653 | int 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 | */ | ||
700 | int 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 | */ | ||
734 | int 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 | */ |
377 | static int omap2_clkdm_clktrctrl_read(struct clockdomain *clkdm) | 768 | static 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 | */ |
516 | void omap2_clkdm_deny_idle(struct clockdomain *clkdm) | 911 | void 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 | */ |
553 | int omap2_clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk) | 948 | int 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 | */ |
604 | int omap2_clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk) | 1000 | int 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 | */ | ||
58 | static 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 */ | ||
92 | static 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 | */ | ||
116 | static 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 | */ | ||
144 | static 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 */ | ||
176 | static 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 */ | ||
204 | static 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 */ | ||
229 | static 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 */ | ||
254 | static 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 */ | ||
279 | static 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 */ | ||
309 | static 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 */ | ||
326 | static 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 */ | ||
343 | static 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 */ | ||
355 | static 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 */ | ||
368 | static 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 */ | ||
381 | static 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 */ | ||
394 | static 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 | */ | ||
408 | static 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 */ |
25 | static struct clockdomain wkup_clkdm = { | 431 | static 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 */ | 480 | static 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 | |||
490 | static 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 | |||
500 | static 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 | |||
510 | static 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 | |||
520 | static 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 */ | ||
82 | static struct clockdomain mdm_clkdm = { | 550 | static 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 */ | 562 | static struct clockdomain dsp_2430_clkdm = { |
91 | |||
92 | |||
93 | /* | ||
94 | * 24XX-only clockdomains | ||
95 | */ | ||
96 | |||
97 | #if defined(CONFIG_ARCH_OMAP24XX) | ||
98 | |||
99 | static 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 | ||
107 | static struct clockdomain gfx_24xx_clkdm = { | 574 | static 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 | ||
115 | static 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 | */ | ||
589 | static 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 | ||
123 | static 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 | */ | ||
605 | static 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 | ||
131 | static struct clockdomain dss_24xx_clkdm = { | 616 | static 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 | ||
148 | static struct clockdomain mpu_34xx_clkdm = { | 634 | static 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 | ||
203 | static 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 | */ | ||
712 | static 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 | ||
211 | static 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 | */ | ||
727 | static 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 | ||
219 | static struct clockdomain dss_34xx_clkdm = { | 737 | /* Another case of bit name collisions between several registers: EN_DSS */ |
738 | static 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 | ||
299 | static struct clkdm_pwrdm_autodep clkdm_pwrdm_autodeps[] = { | 840 | static 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 | ||
317 | static struct clockdomain *clockdomains_omap[] = { | 858 | static 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 | |||
33 | static 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 | |||
42 | static 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 | |||
51 | static 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 | |||
60 | static 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 | |||
69 | static 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 | |||
78 | static 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 | |||
87 | static 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 | |||
96 | static 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 | |||
105 | static 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 | |||
113 | static 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 | |||
122 | static 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 | |||
131 | static 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 | |||
140 | static 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 | |||
149 | static 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 | |||
158 | static 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 | |||
167 | static 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 | |||
176 | static 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 | |||
185 | static 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 | |||
194 | static 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 | |||
203 | static 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 | |||
212 | static 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 | |||
221 | static 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 | |||
230 | static 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 | |||
239 | static 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 | */ | ||
54 | unsigned 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 */ |
60 | static void _omap3_dpll_write_clken(struct clk *clk, u8 clken_bits) | 50 | static 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 | */ | ||
238 | static 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 | */ | ||
278 | unsigned 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 | */ | ||
305 | int 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 | */ |
304 | static int _add_initiator_dep(struct omap_hwmod *oh, struct omap_hwmod *init_oh) | 304 | static 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 | */ |
325 | static int _del_initiator_dep(struct omap_hwmod *oh, struct omap_hwmod *init_oh) | 324 | static 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 | ||
995 | int 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); | |||
57 | static void (*omap2_sram_suspend)(u32 dllctrl, void __iomem *sdrc_dlla_ctrl, | 57 | static void (*omap2_sram_suspend)(u32 dllctrl, void __iomem *sdrc_dlla_ctrl, |
58 | void __iomem *sdrc_power); | 58 | void __iomem *sdrc_power); |
59 | 59 | ||
60 | static struct powerdomain *mpu_pwrdm; | 60 | static struct powerdomain *mpu_pwrdm, *core_pwrdm; |
61 | static struct powerdomain *core_pwrdm; | 61 | static struct clockdomain *dsp_clkdm, *mpu_clkdm, *wkup_clkdm, *gfx_clkdm; |
62 | |||
63 | static struct clockdomain *dsp_clkdm; | ||
64 | static struct clockdomain *gfx_clkdm; | ||
65 | 62 | ||
66 | static struct clk *osc_ck, *emul_ck; | 63 | static 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 | ||
336 | static int _pm_clkdm_enable_hwsup(struct clockdomain *clkdm, void *unused) | 334 | /* XXX This function should be shareable between OMAP2xxx and OMAP3 */ |
335 | static 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 | ||
711 | static void __init omap3_d2d_idle(void) | 711 | static 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 | ||
735 | static void __init prcm_setup_regs(void) | 735 | static 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 | */ |
999 | static int __init clkdms_setup(struct clockdomain *clkdm, void *unused) | 999 | static 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) | |||
1018 | static int __init omap3_pm_init(void) | 1021 | static 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 */ |
44 | static LIST_HEAD(pwrdm_list); | 49 | static 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 | 52 | static 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 | */ |
50 | static 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 | ||
55 | static 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; | 81 | static LIST_HEAD(pwrdm_list); |
61 | v >>= __ffs(mask); | ||
62 | 82 | ||
63 | return v; | 83 | /* Private functions */ |
64 | } | ||
65 | 84 | ||
66 | static struct powerdomain *_pwrdm_lookup(const char *name) | 85 | static 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 | /** |
83 | static 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 | */ | ||
109 | static 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 | ||
110 | static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) | 137 | static 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 | ||
157 | static __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 | */ |
180 | void pwrdm_init(struct powerdomain **pwrdm_list) | 196 | void 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 | */ | ||
200 | int 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 | |||
222 | pr_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 | */ | ||
235 | int 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 | */ |
258 | struct powerdomain *pwrdm_lookup(const char *name) | 225 | struct 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 | */ |
283 | int pwrdm_for_each_nolock(int (*fn)(struct powerdomain *pwrdm, void *user), | 247 | int 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 | */ | ||
310 | int 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 | */ |
333 | int pwrdm_add_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm) | 275 | int 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 | ||
370 | pac_exit: | 309 | pac_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 | */ |
386 | int pwrdm_del_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm) | 323 | int 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 | ||
415 | pdc_exit: | 349 | pdc_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 | */ |
436 | int pwrdm_for_each_clkdm(struct powerdomain *pwrdm, | 365 | int 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 | */ | ||
470 | int 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 | */ | ||
503 | int 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 | */ | ||
540 | int 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 | */ | ||
570 | int 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 | */ | ||
609 | int 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 | */ | ||
652 | int 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 | */ |
681 | int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm) | 388 | int 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 | */ |
780 | int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst) | 487 | int 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 | */ |
818 | int pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, u8 pwrst) | 526 | int 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 | */ |
879 | int pwrdm_set_mem_retst(struct powerdomain *pwrdm, u8 bank, u8 pwrst) | 591 | int 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 | */ |
934 | int pwrdm_read_logic_pwrst(struct powerdomain *pwrdm) | 649 | int 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 | */ |
951 | int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm) | 666 | int 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 | */ |
1026 | int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank) | 746 | int 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 | */ |
1076 | int pwrdm_clear_all_prev_pwrst(struct powerdomain *pwrdm) | 796 | int 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 | */ |
1105 | int pwrdm_enable_hdwr_sar(struct powerdomain *pwrdm) | 825 | int 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 | */ |
1133 | int pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm) | 853 | int 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 | */ |
1157 | bool pwrdm_has_hdwr_sar(struct powerdomain *pwrdm) | 877 | bool 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 | } |
1216 | int 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 | ||
1223 | int pwrdm_pre_transition(void) | 937 | int 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 | */ | ||
79 | static 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 | */ | ||
106 | static 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 | */ |
127 | static struct powerdomain gfx_pwrdm = { | 69 | static 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 | ||
145 | static struct powerdomain wkup_pwrdm = { | 85 | static 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 */ |
155 | static struct powerdomain *powerdomains_omap[] __initdata = { | 95 | static 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 | */ | ||
42 | static 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 | */ | ||
62 | static 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 | */ | ||
86 | static 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 | ||
113 | static struct powerdomain dsp_pwrdm = { | 37 | static 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 */ | ||
180 | static struct powerdomain mdm_pwrdm = { | 97 | static 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 | */ | ||
41 | static 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 | */ | ||
64 | static 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 | */ | ||
87 | static 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 */ | ||
113 | static 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 */ | ||
130 | static 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 | */ | ||
145 | static 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 | ||
185 | static struct powerdomain mpu_34xx_pwrdm = { | 62 | static 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 */ | 78 | static struct powerdomain core_3xxx_pre_es3_1_pwrdm = { |
204 | static 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 */ | 96 | static struct powerdomain core_3xxx_es3_1_pwrdm = { |
224 | static 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 */ | ||
243 | static struct powerdomain dss_pwrdm = { | 113 | static 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 */ | ||
36 | static 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 */ | ||
60 | static 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 */ | ||
75 | static 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 */ | ||
93 | static 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 */ | ||
109 | static 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 */ | ||
129 | static 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 */ | ||
144 | static 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 */ | ||
160 | static 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 */ | ||
176 | static 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 */ | ||
191 | static 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 */ | ||
211 | static 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 */ | ||
233 | static 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 */ | ||
248 | static 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 */ | ||
264 | static 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 | */ | ||
285 | static 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 */ | ||
293 | static 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; | |||
121 | u32 omap_prcm_get_reset_sources(void) | 123 | u32 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 | } |
126 | EXPORT_SYMBOL(omap_prcm_get_reset_sources); | 131 | EXPORT_SYMBOL(omap_prcm_get_reset_sources); |
127 | 132 | ||
@@ -129,11 +134,12 @@ EXPORT_SYMBOL(omap_prcm_get_reset_sources); | |||
129 | void omap_prcm_arch_reset(char mode) | 134 | void 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 | ||
153 | static inline u32 __omap_prcm_read(void __iomem *base, s16 module, u16 reg) | 166 | static 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 */ | ||
205 | u32 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 */ |
192 | u32 cm_read_mod_reg(s16 module, u16 idx) | 217 | u32 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 | ||
176 | unsigned int __initdata mpurate; | 176 | int __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 | */ | ||
206 | unsigned 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 | |||
202 | void clk_reparent(struct clk *child, struct clk *parent) | 213 | void 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 | ||
126 | extern unsigned int mpurate; | 126 | extern int mpurate; |
127 | 127 | ||
128 | extern int clk_init(struct clk_functions *custom_clocks); | 128 | extern int clk_init(struct clk_functions *custom_clocks); |
129 | extern void clk_preinit(struct clk *clk); | 129 | extern void clk_preinit(struct clk *clk); |
@@ -134,6 +134,7 @@ extern void propagate_rate(struct clk *clk); | |||
134 | extern void recalculate_root_clocks(void); | 134 | extern void recalculate_root_clocks(void); |
135 | extern unsigned long followparent_recalc(struct clk *clk); | 135 | extern unsigned long followparent_recalc(struct clk *clk); |
136 | extern void clk_enable_init_clocks(void); | 136 | extern void clk_enable_init_clocks(void); |
137 | unsigned long omap_fixed_divisor_recalc(struct clk *clk); | ||
137 | #ifdef CONFIG_CPU_FREQ | 138 | #ifdef CONFIG_CPU_FREQ |
138 | extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table); | 139 | extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table); |
139 | extern void clk_exit_cpufreq_table(struct cpufreq_frequency_table **table); | 140 | extern 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 | */ |
49 | struct clkdm_pwrdm_autodep { | 56 | struct 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 | */ | ||
77 | struct 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 | */ | ||
64 | struct clockdomain { | 99 | struct 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 | ||
93 | void clkdm_init(struct clockdomain **clkdms, struct clkdm_pwrdm_autodep *autodeps); | 116 | void clkdm_init(struct clockdomain **clkdms, struct clkdm_autodep *autodeps); |
94 | int clkdm_register(struct clockdomain *clkdm); | ||
95 | int clkdm_unregister(struct clockdomain *clkdm); | ||
96 | struct clockdomain *clkdm_lookup(const char *name); | 117 | struct clockdomain *clkdm_lookup(const char *name); |
97 | 118 | ||
98 | int clkdm_for_each(int (*fn)(struct clockdomain *clkdm, void *user), | 119 | int clkdm_for_each(int (*fn)(struct clockdomain *clkdm, void *user), |
99 | void *user); | 120 | void *user); |
100 | struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm); | 121 | struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm); |
101 | 122 | ||
123 | int clkdm_add_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2); | ||
124 | int clkdm_del_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2); | ||
125 | int clkdm_read_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2); | ||
126 | int clkdm_clear_all_wkdeps(struct clockdomain *clkdm); | ||
127 | int clkdm_add_sleepdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2); | ||
128 | int clkdm_del_sleepdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2); | ||
129 | int clkdm_read_sleepdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2); | ||
130 | int clkdm_clear_all_sleepdeps(struct clockdomain *clkdm); | ||
131 | |||
102 | void omap2_clkdm_allow_idle(struct clockdomain *clkdm); | 132 | void omap2_clkdm_allow_idle(struct clockdomain *clkdm); |
103 | void omap2_clkdm_deny_idle(struct clockdomain *clkdm); | 133 | void 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 @@ | |||
44 | int omap_type(void); | 44 | int omap_type(void); |
45 | 45 | ||
46 | struct omap_chip_id { | 46 | struct 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 | */ |
132 | struct omap_device_pm_latency { | 132 | struct 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); | |||
441 | int omap_hwmod_enable_clocks(struct omap_hwmod *oh); | 441 | int omap_hwmod_enable_clocks(struct omap_hwmod *oh); |
442 | int omap_hwmod_disable_clocks(struct omap_hwmod *oh); | 442 | int omap_hwmod_disable_clocks(struct omap_hwmod *oh); |
443 | 443 | ||
444 | int omap_hwmod_set_slave_idlemode(struct omap_hwmod *oh, u8 idlemode); | ||
445 | |||
444 | int omap_hwmod_reset(struct omap_hwmod *oh); | 446 | int omap_hwmod_reset(struct omap_hwmod *oh); |
445 | void omap_hwmod_ocp_barrier(struct omap_hwmod *oh); | 447 | void 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 @@ | |||
65 | struct clockdomain; | 68 | struct clockdomain; |
66 | struct powerdomain; | 69 | struct powerdomain; |
67 | 70 | ||
68 | /* Encodes dependencies between powerdomains - statically defined */ | 71 | /** |
69 | struct 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 | */ | ||
82 | struct powerdomain { | 89 | struct 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 | ||
135 | void pwrdm_init(struct powerdomain **pwrdm_list); | 111 | void pwrdm_init(struct powerdomain **pwrdm_list); |
136 | 112 | ||
137 | int pwrdm_register(struct powerdomain *pwrdm); | ||
138 | int pwrdm_unregister(struct powerdomain *pwrdm); | ||
139 | struct powerdomain *pwrdm_lookup(const char *name); | 113 | struct powerdomain *pwrdm_lookup(const char *name); |
140 | 114 | ||
141 | int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm, void *user), | 115 | int 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 | ||
152 | int pwrdm_add_wkdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2); | ||
153 | int pwrdm_del_wkdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2); | ||
154 | int pwrdm_read_wkdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2); | ||
155 | int pwrdm_add_sleepdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2); | ||
156 | int pwrdm_del_sleepdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2); | ||
157 | int pwrdm_read_sleepdep(struct powerdomain *pwrdm1, struct powerdomain *pwrdm2); | ||
158 | |||
159 | int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm); | 126 | int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm); |
160 | 127 | ||
161 | int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst); | 128 | int 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); | |||
33 | void omap3_prcm_save_context(void); | 33 | void omap3_prcm_save_context(void); |
34 | void omap3_prcm_restore_context(void); | 34 | void omap3_prcm_restore_context(void); |
35 | 35 | ||
36 | u32 prm_read_mod_reg(s16 module, u16 idx); | ||
37 | void prm_write_mod_reg(u32 val, s16 module, u16 idx); | ||
38 | u32 prm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx); | ||
39 | u32 prm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask); | ||
40 | u32 cm_read_mod_reg(s16 module, u16 idx); | ||
41 | void cm_write_mod_reg(u32 val, s16 module, u16 idx); | ||
42 | u32 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 | ||