1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 #ifndef __ARCH_ARM_MACH_OMAP2_OPP2XXX_H
31 #define __ARCH_ARM_MACH_OMAP2_OPP2XXX_H
32
33
34
35
36
37
38
39
40
41
42
43 struct prcm_config {
44 unsigned long xtal_speed;
45 unsigned long dpll_speed;
46 unsigned long mpu_speed;
47 unsigned long cm_clksel_mpu;
48 unsigned long cm_clksel_dsp;
49 unsigned long cm_clksel_gfx;
50 unsigned long cm_clksel1_core;
51 unsigned long cm_clksel1_pll;
52 unsigned long cm_clksel2_pll;
53 unsigned long cm_clksel_mdm;
54 unsigned long base_sdrc_rfr;
55 unsigned short flags;
56 };
57
58
59
60 #define RX_CLKSEL_DSS1 (0x10 << 8)
61 #define RX_CLKSEL_DSS2 (0x0 << 13)
62 #define RX_CLKSEL_SSI (0x5 << 20)
63
64
65
66
67
68
69 #define R1_CLKSEL_L3 (4 << 0)
70 #define R1_CLKSEL_L4 (2 << 5)
71 #define R1_CLKSEL_USB (4 << 25)
72 #define R1_CM_CLKSEL1_CORE_VAL (R1_CLKSEL_USB | RX_CLKSEL_SSI | \
73 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
74 R1_CLKSEL_L4 | R1_CLKSEL_L3)
75 #define R1_CLKSEL_MPU (2 << 0)
76 #define R1_CM_CLKSEL_MPU_VAL R1_CLKSEL_MPU
77 #define R1_CLKSEL_DSP (2 << 0)
78 #define R1_CLKSEL_DSP_IF (2 << 5)
79 #define R1_CM_CLKSEL_DSP_VAL (R1_CLKSEL_DSP | R1_CLKSEL_DSP_IF)
80 #define R1_CLKSEL_GFX (2 << 0)
81 #define R1_CM_CLKSEL_GFX_VAL R1_CLKSEL_GFX
82 #define R1_CLKSEL_MDM (4 << 0)
83 #define R1_CM_CLKSEL_MDM_VAL R1_CLKSEL_MDM
84
85
86 #define R2_CLKSEL_L3 (6 << 0)
87 #define R2_CLKSEL_L4 (2 << 5)
88 #define R2_CLKSEL_USB (2 << 25)
89 #define R2_CM_CLKSEL1_CORE_VAL (R2_CLKSEL_USB | RX_CLKSEL_SSI | \
90 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
91 R2_CLKSEL_L4 | R2_CLKSEL_L3)
92 #define R2_CLKSEL_MPU (2 << 0)
93 #define R2_CM_CLKSEL_MPU_VAL R2_CLKSEL_MPU
94 #define R2_CLKSEL_DSP (2 << 0)
95 #define R2_CLKSEL_DSP_IF (3 << 5)
96 #define R2_CM_CLKSEL_DSP_VAL (R2_CLKSEL_DSP | R2_CLKSEL_DSP_IF)
97 #define R2_CLKSEL_GFX (2 << 0)
98 #define R2_CM_CLKSEL_GFX_VAL R2_CLKSEL_GFX
99 #define R2_CLKSEL_MDM (6 << 0)
100 #define R2_CM_CLKSEL_MDM_VAL R2_CLKSEL_MDM
101
102
103 #define RB_CLKSEL_L3 (1 << 0)
104 #define RB_CLKSEL_L4 (1 << 5)
105 #define RB_CLKSEL_USB (1 << 25)
106 #define RB_CM_CLKSEL1_CORE_VAL (RB_CLKSEL_USB | RX_CLKSEL_SSI | \
107 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
108 RB_CLKSEL_L4 | RB_CLKSEL_L3)
109 #define RB_CLKSEL_MPU (1 << 0)
110 #define RB_CM_CLKSEL_MPU_VAL RB_CLKSEL_MPU
111 #define RB_CLKSEL_DSP (1 << 0)
112 #define RB_CLKSEL_DSP_IF (1 << 5)
113 #define RB_CM_CLKSEL_DSP_VAL (RB_CLKSEL_DSP | RB_CLKSEL_DSP_IF)
114 #define RB_CLKSEL_GFX (1 << 0)
115 #define RB_CM_CLKSEL_GFX_VAL RB_CLKSEL_GFX
116 #define RB_CLKSEL_MDM (1 << 0)
117 #define RB_CM_CLKSEL_MDM_VAL RB_CLKSEL_MDM
118
119
120 #define RXX_CLKSEL_VLYNQ (0x12 << 15)
121 #define RXX_CLKSEL_SSI (0x8 << 20)
122
123
124 #define RIII_CLKSEL_L3 (4 << 0)
125 #define RIII_CLKSEL_L4 (2 << 5)
126 #define RIII_CLKSEL_USB (4 << 25)
127 #define RIII_CM_CLKSEL1_CORE_VAL (RIII_CLKSEL_USB | RXX_CLKSEL_SSI | \
128 RXX_CLKSEL_VLYNQ | RX_CLKSEL_DSS2 | \
129 RX_CLKSEL_DSS1 | RIII_CLKSEL_L4 | \
130 RIII_CLKSEL_L3)
131 #define RIII_CLKSEL_MPU (2 << 0)
132 #define RIII_CM_CLKSEL_MPU_VAL RIII_CLKSEL_MPU
133 #define RIII_CLKSEL_DSP (3 << 0)
134 #define RIII_CLKSEL_DSP_IF (2 << 5)
135 #define RIII_SYNC_DSP (1 << 7)
136 #define RIII_CLKSEL_IVA (6 << 8)
137 #define RIII_SYNC_IVA (1 << 13)
138 #define RIII_CM_CLKSEL_DSP_VAL (RIII_SYNC_IVA | RIII_CLKSEL_IVA | \
139 RIII_SYNC_DSP | RIII_CLKSEL_DSP_IF | \
140 RIII_CLKSEL_DSP)
141 #define RIII_CLKSEL_GFX (2 << 0)
142 #define RIII_CM_CLKSEL_GFX_VAL RIII_CLKSEL_GFX
143
144
145 #define RII_CLKSEL_L3 (6 << 0)
146 #define RII_CLKSEL_L4 (2 << 5)
147 #define RII_CLKSEL_USB (2 << 25)
148 #define RII_CM_CLKSEL1_CORE_VAL (RII_CLKSEL_USB | RXX_CLKSEL_SSI | \
149 RXX_CLKSEL_VLYNQ | RX_CLKSEL_DSS2 | \
150 RX_CLKSEL_DSS1 | RII_CLKSEL_L4 | \
151 RII_CLKSEL_L3)
152 #define RII_CLKSEL_MPU (2 << 0)
153 #define RII_CM_CLKSEL_MPU_VAL RII_CLKSEL_MPU
154 #define RII_CLKSEL_DSP (3 << 0)
155 #define RII_CLKSEL_DSP_IF (2 << 5)
156 #define RII_SYNC_DSP (0 << 7)
157 #define RII_CLKSEL_IVA (3 << 8)
158 #define RII_SYNC_IVA (0 << 13)
159 #define RII_CM_CLKSEL_DSP_VAL (RII_SYNC_IVA | RII_CLKSEL_IVA | \
160 RII_SYNC_DSP | RII_CLKSEL_DSP_IF | \
161 RII_CLKSEL_DSP)
162 #define RII_CLKSEL_GFX (2 << 0)
163 #define RII_CM_CLKSEL_GFX_VAL RII_CLKSEL_GFX
164
165
166 #define RI_CLKSEL_L3 (4 << 0)
167 #define RI_CLKSEL_L4 (2 << 5)
168 #define RI_CLKSEL_USB (4 << 25)
169 #define RI_CM_CLKSEL1_CORE_VAL (RI_CLKSEL_USB | \
170 RXX_CLKSEL_SSI | RXX_CLKSEL_VLYNQ | \
171 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
172 RI_CLKSEL_L4 | RI_CLKSEL_L3)
173 #define RI_CLKSEL_MPU (2 << 0)
174 #define RI_CM_CLKSEL_MPU_VAL RI_CLKSEL_MPU
175 #define RI_CLKSEL_DSP (3 << 0)
176 #define RI_CLKSEL_DSP_IF (2 << 5)
177 #define RI_SYNC_DSP (1 << 7)
178 #define RI_CLKSEL_IVA (4 << 8)
179 #define RI_SYNC_IVA (0 << 13)
180 #define RI_CM_CLKSEL_DSP_VAL (RI_SYNC_IVA | RI_CLKSEL_IVA | \
181 RI_SYNC_DSP | RI_CLKSEL_DSP_IF | \
182 RI_CLKSEL_DSP)
183 #define RI_CLKSEL_GFX (1 << 0)
184 #define RI_CM_CLKSEL_GFX_VAL RI_CLKSEL_GFX
185
186
187 #define RVII_CLKSEL_L3 (1 << 0)
188 #define RVII_CLKSEL_L4 (1 << 5)
189 #define RVII_CLKSEL_DSS1 (1 << 8)
190 #define RVII_CLKSEL_DSS2 (0 << 13)
191 #define RVII_CLKSEL_VLYNQ (1 << 15)
192 #define RVII_CLKSEL_SSI (1 << 20)
193 #define RVII_CLKSEL_USB (1 << 25)
194
195 #define RVII_CM_CLKSEL1_CORE_VAL (RVII_CLKSEL_USB | RVII_CLKSEL_SSI | \
196 RVII_CLKSEL_VLYNQ | \
197 RVII_CLKSEL_DSS2 | RVII_CLKSEL_DSS1 | \
198 RVII_CLKSEL_L4 | RVII_CLKSEL_L3)
199
200 #define RVII_CLKSEL_MPU (1 << 0)
201 #define RVII_CM_CLKSEL_MPU_VAL RVII_CLKSEL_MPU
202
203 #define RVII_CLKSEL_DSP (1 << 0)
204 #define RVII_CLKSEL_DSP_IF (1 << 5)
205 #define RVII_SYNC_DSP (0 << 7)
206 #define RVII_CLKSEL_IVA (1 << 8)
207 #define RVII_SYNC_IVA (0 << 13)
208 #define RVII_CM_CLKSEL_DSP_VAL (RVII_SYNC_IVA | RVII_CLKSEL_IVA | \
209 RVII_SYNC_DSP | RVII_CLKSEL_DSP_IF | \
210 RVII_CLKSEL_DSP)
211
212 #define RVII_CLKSEL_GFX (1 << 0)
213 #define RVII_CM_CLKSEL_GFX_VAL RVII_CLKSEL_GFX
214
215
216
217
218
219
220
221
222 #define MX_48M_SRC (0 << 3)
223 #define MX_54M_SRC (0 << 5)
224 #define MX_APLLS_CLIKIN_12 (3 << 23)
225 #define MX_APLLS_CLIKIN_13 (2 << 23)
226 #define MX_APLLS_CLIKIN_19_2 (0 << 23)
227
228
229
230
231
232 #define M5A_DPLL_MULT_12 (133 << 12)
233 #define M5A_DPLL_DIV_12 (5 << 8)
234 #define M5A_CM_CLKSEL1_PLL_12_VAL (MX_48M_SRC | MX_54M_SRC | \
235 M5A_DPLL_DIV_12 | M5A_DPLL_MULT_12 | \
236 MX_APLLS_CLIKIN_12)
237 #define M5A_DPLL_MULT_13 (61 << 12)
238 #define M5A_DPLL_DIV_13 (2 << 8)
239 #define M5A_CM_CLKSEL1_PLL_13_VAL (MX_48M_SRC | MX_54M_SRC | \
240 M5A_DPLL_DIV_13 | M5A_DPLL_MULT_13 | \
241 MX_APLLS_CLIKIN_13)
242 #define M5A_DPLL_MULT_19 (55 << 12)
243 #define M5A_DPLL_DIV_19 (3 << 8)
244 #define M5A_CM_CLKSEL1_PLL_19_VAL (MX_48M_SRC | MX_54M_SRC | \
245 M5A_DPLL_DIV_19 | M5A_DPLL_MULT_19 | \
246 MX_APLLS_CLIKIN_19_2)
247
248 #define M5B_DPLL_MULT_12 (50 << 12)
249 #define M5B_DPLL_DIV_12 (2 << 8)
250 #define M5B_CM_CLKSEL1_PLL_12_VAL (MX_48M_SRC | MX_54M_SRC | \
251 M5B_DPLL_DIV_12 | M5B_DPLL_MULT_12 | \
252 MX_APLLS_CLIKIN_12)
253 #define M5B_DPLL_MULT_13 (200 << 12)
254 #define M5B_DPLL_DIV_13 (12 << 8)
255
256 #define M5B_CM_CLKSEL1_PLL_13_VAL (MX_48M_SRC | MX_54M_SRC | \
257 M5B_DPLL_DIV_13 | M5B_DPLL_MULT_13 | \
258 MX_APLLS_CLIKIN_13)
259 #define M5B_DPLL_MULT_19 (125 << 12)
260 #define M5B_DPLL_DIV_19 (31 << 8)
261 #define M5B_CM_CLKSEL1_PLL_19_VAL (MX_48M_SRC | MX_54M_SRC | \
262 M5B_DPLL_DIV_19 | M5B_DPLL_MULT_19 | \
263 MX_APLLS_CLIKIN_19_2)
264
265
266
267 #define M4_DPLL_MULT_12 (133 << 12)
268 #define M4_DPLL_DIV_12 (3 << 8)
269 #define M4_CM_CLKSEL1_PLL_12_VAL (MX_48M_SRC | MX_54M_SRC | \
270 M4_DPLL_DIV_12 | M4_DPLL_MULT_12 | \
271 MX_APLLS_CLIKIN_12)
272
273 #define M4_DPLL_MULT_13 (399 << 12)
274 #define M4_DPLL_DIV_13 (12 << 8)
275 #define M4_CM_CLKSEL1_PLL_13_VAL (MX_48M_SRC | MX_54M_SRC | \
276 M4_DPLL_DIV_13 | M4_DPLL_MULT_13 | \
277 MX_APLLS_CLIKIN_13)
278
279 #define M4_DPLL_MULT_19 (145 << 12)
280 #define M4_DPLL_DIV_19 (6 << 8)
281 #define M4_CM_CLKSEL1_PLL_19_VAL (MX_48M_SRC | MX_54M_SRC | \
282 M4_DPLL_DIV_19 | M4_DPLL_MULT_19 | \
283 MX_APLLS_CLIKIN_19_2)
284
285
286
287
288 #define M3_DPLL_MULT_12 (55 << 12)
289 #define M3_DPLL_DIV_12 (1 << 8)
290 #define M3_CM_CLKSEL1_PLL_12_VAL (MX_48M_SRC | MX_54M_SRC | \
291 M3_DPLL_DIV_12 | M3_DPLL_MULT_12 | \
292 MX_APLLS_CLIKIN_12)
293 #define M3_DPLL_MULT_13 (76 << 12)
294 #define M3_DPLL_DIV_13 (2 << 8)
295 #define M3_CM_CLKSEL1_PLL_13_VAL (MX_48M_SRC | MX_54M_SRC | \
296 M3_DPLL_DIV_13 | M3_DPLL_MULT_13 | \
297 MX_APLLS_CLIKIN_13)
298 #define M3_DPLL_MULT_19 (17 << 12)
299 #define M3_DPLL_DIV_19 (0 << 8)
300 #define M3_CM_CLKSEL1_PLL_19_VAL (MX_48M_SRC | MX_54M_SRC | \
301 M3_DPLL_DIV_19 | M3_DPLL_MULT_19 | \
302 MX_APLLS_CLIKIN_19_2)
303
304
305
306
307 #define M2_DPLL_MULT_12 (55 << 12)
308 #define M2_DPLL_DIV_12 (1 << 8)
309 #define M2_CM_CLKSEL1_PLL_12_VAL (MX_48M_SRC | MX_54M_SRC | \
310 M2_DPLL_DIV_12 | M2_DPLL_MULT_12 | \
311 MX_APLLS_CLIKIN_12)
312
313
314
315
316 #define M2_DPLL_MULT_13 (76 << 12)
317 #define M2_DPLL_DIV_13 (2 << 8)
318 #define M2_CM_CLKSEL1_PLL_13_VAL (MX_48M_SRC | MX_54M_SRC | \
319 M2_DPLL_DIV_13 | M2_DPLL_MULT_13 | \
320 MX_APLLS_CLIKIN_13)
321
322 #define M2_DPLL_MULT_19 (17 << 12)
323 #define M2_DPLL_DIV_19 (0 << 8)
324 #define M2_CM_CLKSEL1_PLL_19_VAL (MX_48M_SRC | MX_54M_SRC | \
325 M2_DPLL_DIV_19 | M2_DPLL_MULT_19 | \
326 MX_APLLS_CLIKIN_19_2)
327
328
329 #define MB_DPLL_MULT (1 << 12)
330 #define MB_DPLL_DIV (0 << 8)
331 #define MB_CM_CLKSEL1_PLL_12_VAL (MX_48M_SRC | MX_54M_SRC | \
332 MB_DPLL_DIV | MB_DPLL_MULT | \
333 MX_APLLS_CLIKIN_12)
334
335 #define MB_CM_CLKSEL1_PLL_13_VAL (MX_48M_SRC | MX_54M_SRC | \
336 MB_DPLL_DIV | MB_DPLL_MULT | \
337 MX_APLLS_CLIKIN_13)
338
339 #define MB_CM_CLKSEL1_PLL_19_VAL (MX_48M_SRC | MX_54M_SRC | \
340 MB_DPLL_DIV | MB_DPLL_MULT | \
341 MX_APLLS_CLIKIN_19)
342
343
344
345
346
347
348
349
350
351
352
353
354 #define MI_DPLL_MULT_12 (55 << 12)
355 #define MI_DPLL_DIV_12 (1 << 8)
356 #define MI_CM_CLKSEL1_PLL_12_VAL (MX_48M_SRC | MX_54M_SRC | \
357 MI_DPLL_DIV_12 | MI_DPLL_MULT_12 | \
358 MX_APLLS_CLIKIN_12)
359
360
361
362
363
364 #define MII_DPLL_MULT_12 (50 << 12)
365 #define MII_DPLL_DIV_12 (1 << 8)
366 #define MII_CM_CLKSEL1_PLL_12_VAL (MX_48M_SRC | MX_54M_SRC | \
367 MII_DPLL_DIV_12 | MII_DPLL_MULT_12 | \
368 MX_APLLS_CLIKIN_12)
369 #define MII_DPLL_MULT_13 (300 << 12)
370 #define MII_DPLL_DIV_13 (12 << 8)
371 #define MII_CM_CLKSEL1_PLL_13_VAL (MX_48M_SRC | MX_54M_SRC | \
372 MII_DPLL_DIV_13 | MII_DPLL_MULT_13 | \
373 MX_APLLS_CLIKIN_13)
374
375
376 #define MIII_DPLL_MULT_12 (133 << 12)
377 #define MIII_DPLL_DIV_12 (5 << 8)
378 #define MIII_CM_CLKSEL1_PLL_12_VAL (MX_48M_SRC | MX_54M_SRC | \
379 MIII_DPLL_DIV_12 | \
380 MIII_DPLL_MULT_12 | MX_APLLS_CLIKIN_12)
381 #define MIII_DPLL_MULT_13 (266 << 12)
382 #define MIII_DPLL_DIV_13 (12 << 8)
383 #define MIII_CM_CLKSEL1_PLL_13_VAL (MX_48M_SRC | MX_54M_SRC | \
384 MIII_DPLL_DIV_13 | \
385 MIII_DPLL_MULT_13 | MX_APLLS_CLIKIN_13)
386
387
388 #define MVII_CM_CLKSEL1_PLL_12_VAL MB_CM_CLKSEL1_PLL_12_VAL
389 #define MVII_CM_CLKSEL1_PLL_13_VAL MB_CM_CLKSEL1_PLL_13_VAL
390
391
392 #define MX_CLKSEL2_PLL_2x_VAL (2 << 0)
393 #define MX_CLKSEL2_PLL_1x_VAL (1 << 0)
394
395
396 #define S12M 12000000
397 #define S13M 13000000
398 #define S19M 19200000
399 #define S26M 26000000
400 #define S100M 100000000
401 #define S133M 133000000
402 #define S150M 150000000
403 #define S164M 164000000
404 #define S165M 165000000
405 #define S199M 199000000
406 #define S200M 200000000
407 #define S266M 266000000
408 #define S300M 300000000
409 #define S329M 329000000
410 #define S330M 330000000
411 #define S399M 399000000
412 #define S400M 400000000
413 #define S532M 532000000
414 #define S600M 600000000
415 #define S658M 658000000
416 #define S660M 660000000
417 #define S798M 798000000
418
419
420 extern const struct prcm_config omap2420_rate_table[];
421
422 #ifdef CONFIG_SOC_OMAP2430
423 extern const struct prcm_config omap2430_rate_table[];
424 #else
425 #define omap2430_rate_table NULL
426 #endif
427 extern const struct prcm_config *rate_table;
428 extern const struct prcm_config *curr_prcm_set;
429
430 #endif