blob: ff216f24f1a07ea0428b726f2877c3e561e7eac3 [file] [log] [blame]
Paul Walmsley801954d2008-08-19 11:08:44 +03001/*
2 * OMAP2/3 clockdomains
3 *
4 * Copyright (C) 2008 Texas Instruments, Inc.
Paul Walmsley55ed9692010-01-26 20:12:59 -07005 * Copyright (C) 2008-2009 Nokia Corporation
Paul Walmsley801954d2008-08-19 11:08:44 +03006 *
Paul Walmsley55ed9692010-01-26 20:12:59 -07007 * 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
Paul Walmsley801954d2008-08-19 11:08:44 +030027 */
28
Abhijit Pagare1a422722010-01-26 20:12:54 -070029/*
30 * To-Do List
31 * -> Port the Sleep/Wakeup dependencies for the domains
32 * from the Power domain framework
33 */
34
Paul Walmsley801954d2008-08-19 11:08:44 +030035#ifndef __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H
36#define __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H
37
Tony Lindgrence491cf2009-10-20 09:40:47 -070038#include <plat/clockdomain.h>
Abhijit Pagare84c0c392010-01-26 20:12:53 -070039#include "cm.h"
Abhijit Pagare1a422722010-01-26 20:12:54 -070040#include "prm.h"
Paul Walmsley801954d2008-08-19 11:08:44 +030041
42/*
Paul Walmsley55ed9692010-01-26 20:12:59 -070043 * 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 */
56static struct clkdm_dep gfx_sgx_wkdeps[] = {
57 {
58 .clkdm_name = "core_l3_clkdm",
59 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
60 },
61 {
62 .clkdm_name = "core_l4_clkdm",
63 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
64 },
65 {
66 .clkdm_name = "iva2_clkdm",
67 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
68 },
69 {
70 .clkdm_name = "mpu_clkdm",
71 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX |
72 CHIP_IS_OMAP3430)
73 },
74 {
75 .clkdm_name = "wkup_clkdm",
76 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX |
77 CHIP_IS_OMAP3430)
78 },
79 { NULL },
80};
81
82
83/* 24XX-specific possible dependencies */
84
85#ifdef CONFIG_ARCH_OMAP24XX
86
87/* Wakeup dependency source arrays */
88
89/*
90 * 2420/2430 PM_WKDEP_DSP: CORE, MPU, WKUP
91 * 2420/2430 PM_WKDEP_MDM: same as DSP
92 */
93static struct clkdm_dep dsp_mdm_24xx_wkdeps[] = {
94 {
95 .clkdm_name = "core_l3_clkdm",
96 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
97 },
98 {
99 .clkdm_name = "core_l4_clkdm",
100 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
101 },
102 {
103 .clkdm_name = "mpu_clkdm",
104 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
105 },
106 {
107 .clkdm_name = "wkup_clkdm",
108 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
109 },
110 { NULL },
111};
112
113/*
114 * 2420 PM_WKDEP_MPU: CORE, DSP, WKUP
115 * 2430 adds MDM
116 */
117static struct clkdm_dep mpu_24xx_wkdeps[] = {
118 {
119 .clkdm_name = "core_l3_clkdm",
120 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
121 },
122 {
123 .clkdm_name = "core_l4_clkdm",
124 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
125 },
126 {
127 .clkdm_name = "dsp_clkdm",
128 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
129 },
130 {
131 .clkdm_name = "wkup_clkdm",
132 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
133 },
134 {
135 .clkdm_name = "mdm_clkdm",
136 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430)
137 },
138 { NULL },
139};
140
141/*
142 * 2420 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP
143 * 2430 adds MDM
144 */
145static struct clkdm_dep core_24xx_wkdeps[] = {
146 {
147 .clkdm_name = "dsp_clkdm",
148 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
149 },
150 {
151 .clkdm_name = "gfx_clkdm",
152 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
153 },
154 {
155 .clkdm_name = "mpu_clkdm",
156 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
157 },
158 {
159 .clkdm_name = "wkup_clkdm",
160 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
161 },
162 {
163 .clkdm_name = "mdm_clkdm",
164 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430)
165 },
166 { NULL },
167};
168
169#endif
170
171/* 34XX-specific possible dependencies */
172
173#ifdef CONFIG_ARCH_OMAP34XX
174
175/*
176 * 3430: PM_WKDEP_{PER,USBHOST}: CORE, IVA2, MPU, WKUP
177 * (USBHOST is ES2 only)
178 */
179static struct clkdm_dep per_usbhost_wkdeps[] = {
180 {
181 .clkdm_name = "core_l3_clkdm",
182 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
183 },
184 {
185 .clkdm_name = "core_l4_clkdm",
186 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
187 },
188 {
189 .clkdm_name = "iva2_clkdm",
190 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
191 },
192 {
193 .clkdm_name = "mpu_clkdm",
194 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
195 },
196 {
197 .clkdm_name = "wkup_clkdm",
198 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
199 },
200 { NULL },
201};
202
203/*
204 * 3430 PM_WKDEP_MPU: CORE, IVA2, DSS, PER
205 */
206static struct clkdm_dep mpu_34xx_wkdeps[] = {
207 {
208 .clkdm_name = "core_l3_clkdm",
209 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
210 },
211 {
212 .clkdm_name = "core_l4_clkdm",
213 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
214 },
215 {
216 .clkdm_name = "iva2_clkdm",
217 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
218 },
219 {
220 .clkdm_name = "dss_clkdm",
221 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
222 },
223 {
224 .clkdm_name = "per_clkdm",
225 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
226 },
227 { NULL },
228};
229
230/*
231 * 3430 PM_WKDEP_IVA2: CORE, MPU, WKUP, DSS, PER
232 */
233static struct clkdm_dep iva2_wkdeps[] = {
234 {
235 .clkdm_name = "core_l3_clkdm",
236 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
237 },
238 {
239 .clkdm_name = "core_l4_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 {
251 .clkdm_name = "dss_clkdm",
252 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
253 },
254 {
255 .clkdm_name = "per_clkdm",
256 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
257 },
258 { NULL },
259};
260
261
262/* 3430 PM_WKDEP_{CAM,DSS}: IVA2, MPU, WKUP */
263static struct clkdm_dep cam_dss_wkdeps[] = {
264 {
265 .clkdm_name = "iva2_clkdm",
266 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
267 },
268 {
269 .clkdm_name = "mpu_clkdm",
270 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
271 },
272 {
273 .clkdm_name = "wkup_clkdm",
274 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
275 },
276 { NULL },
277};
278
279/* 3430: PM_WKDEP_NEON: MPU */
280static struct clkdm_dep neon_wkdeps[] = {
281 {
282 .clkdm_name = "mpu_clkdm",
283 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
284 },
285 { NULL },
286};
287
288
289/* Sleep dependency source arrays for 34xx-specific clkdms - 34XX only */
290
291/*
292 * 3430: CM_SLEEPDEP_{DSS,PER}: MPU, IVA
293 * 3430ES2: CM_SLEEPDEP_USBHOST: MPU, IVA
294 */
295static struct clkdm_dep dss_per_usbhost_sleepdeps[] = {
296 {
297 .clkdm_name = "mpu_clkdm",
298 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
299 },
300 {
301 .clkdm_name = "iva2_clkdm",
302 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
303 },
304 { NULL },
305};
306
307/*
308 * 3430: CM_SLEEPDEP_CAM: MPU
309 * 3430ES1: CM_SLEEPDEP_GFX: MPU
310 * 3430ES2: CM_SLEEPDEP_SGX: MPU
311 */
312static struct clkdm_dep cam_gfx_sleepdeps[] = {
313 {
314 .clkdm_name = "mpu_clkdm",
315 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
316 },
317 { NULL },
318};
319
320#endif /* CONFIG_ARCH_OMAP34XX */
321
322
323/*
Paul Walmsley801954d2008-08-19 11:08:44 +0300324 * OMAP2/3-common clockdomains
Paul Walmsleyd37f1a12008-09-10 10:47:36 -0600325 *
326 * Even though the 2420 has a single PRCM module from the
327 * interconnect's perspective, internally it does appear to have
328 * separate PRM and CM clockdomains. The usual test case is
329 * sys_clkout/sys_clkout2.
Paul Walmsley801954d2008-08-19 11:08:44 +0300330 */
331
Abhijit Pagare1a422722010-01-26 20:12:54 -0700332#if defined(CONFIG_ARCH_OMAP24XX) | defined(CONFIG_ARCH_OMAP34XX)
333
Paul Walmsley801954d2008-08-19 11:08:44 +0300334/* This is an implicit clockdomain - it is never defined as such in TRM */
335static struct clockdomain wkup_clkdm = {
336 .name = "wkup_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700337 .pwrdm = { .name = "wkup_pwrdm" },
Paul Walmsley55ed9692010-01-26 20:12:59 -0700338 .dep_bit = OMAP_EN_WKUP_SHIFT,
Paul Walmsley801954d2008-08-19 11:08:44 +0300339 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
340};
341
Paul Walmsleyd37f1a12008-09-10 10:47:36 -0600342static struct clockdomain prm_clkdm = {
343 .name = "prm_clkdm",
344 .pwrdm = { .name = "wkup_pwrdm" },
345 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
346};
347
348static struct clockdomain cm_clkdm = {
349 .name = "cm_clkdm",
350 .pwrdm = { .name = "core_pwrdm" },
351 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
352};
353
Abhijit Pagare1a422722010-01-26 20:12:54 -0700354#endif
355
Paul Walmsley801954d2008-08-19 11:08:44 +0300356/*
357 * 2420-only clockdomains
358 */
359
360#if defined(CONFIG_ARCH_OMAP2420)
361
362static struct clockdomain mpu_2420_clkdm = {
363 .name = "mpu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700364 .pwrdm = { .name = "mpu_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300365 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700366 .clkstctrl_reg = OMAP2420_CM_REGADDR(MPU_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700367 .wkdep_srcs = mpu_24xx_wkdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300368 .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
369 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
370};
371
372static struct clockdomain iva1_2420_clkdm = {
373 .name = "iva1_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700374 .pwrdm = { .name = "dsp_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300375 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700376 .clkstctrl_reg = OMAP2420_CM_REGADDR(OMAP24XX_DSP_MOD,
377 OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700378 .dep_bit = OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT,
379 .wkdep_srcs = dsp_mdm_24xx_wkdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300380 .clktrctrl_mask = OMAP2420_AUTOSTATE_IVA_MASK,
381 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
382};
383
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700384static struct clockdomain dsp_2420_clkdm = {
385 .name = "dsp_clkdm",
386 .pwrdm = { .name = "dsp_pwrdm" },
387 .flags = CLKDM_CAN_HWSUP_SWSUP,
388 .clkstctrl_reg = OMAP2420_CM_REGADDR(OMAP24XX_DSP_MOD,
389 OMAP2_CM_CLKSTCTRL),
390 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
391 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
392};
393
394static struct clockdomain gfx_2420_clkdm = {
395 .name = "gfx_clkdm",
396 .pwrdm = { .name = "gfx_pwrdm" },
397 .flags = CLKDM_CAN_HWSUP_SWSUP,
398 .clkstctrl_reg = OMAP2420_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700399 .wkdep_srcs = gfx_sgx_wkdeps,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700400 .clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
401 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
402};
403
404static struct clockdomain core_l3_2420_clkdm = {
405 .name = "core_l3_clkdm",
406 .pwrdm = { .name = "core_pwrdm" },
407 .flags = CLKDM_CAN_HWSUP,
408 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700409 .wkdep_srcs = core_24xx_wkdeps,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700410 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
411 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
412};
413
414static struct clockdomain core_l4_2420_clkdm = {
415 .name = "core_l4_clkdm",
416 .pwrdm = { .name = "core_pwrdm" },
417 .flags = CLKDM_CAN_HWSUP,
418 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700419 .wkdep_srcs = core_24xx_wkdeps,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700420 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
421 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
422};
423
424static struct clockdomain dss_2420_clkdm = {
425 .name = "dss_clkdm",
426 .pwrdm = { .name = "core_pwrdm" },
427 .flags = CLKDM_CAN_HWSUP,
428 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
429 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
430 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
431};
432
433#endif /* CONFIG_ARCH_OMAP2420 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300434
435
436/*
437 * 2430-only clockdomains
438 */
439
440#if defined(CONFIG_ARCH_OMAP2430)
441
442static struct clockdomain mpu_2430_clkdm = {
443 .name = "mpu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700444 .pwrdm = { .name = "mpu_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300445 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700446 .clkstctrl_reg = OMAP2430_CM_REGADDR(MPU_MOD,
447 OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700448 .wkdep_srcs = mpu_24xx_wkdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300449 .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
450 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
451};
452
Paul Walmsley55ed9692010-01-26 20:12:59 -0700453/* Another case of bit name collisions between several registers: EN_MDM */
Paul Walmsley801954d2008-08-19 11:08:44 +0300454static struct clockdomain mdm_clkdm = {
455 .name = "mdm_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700456 .pwrdm = { .name = "mdm_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300457 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700458 .clkstctrl_reg = OMAP2430_CM_REGADDR(OMAP2430_MDM_MOD,
459 OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700460 .dep_bit = OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT,
461 .wkdep_srcs = dsp_mdm_24xx_wkdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300462 .clktrctrl_mask = OMAP2430_AUTOSTATE_MDM_MASK,
463 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
464};
465
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700466static struct clockdomain dsp_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300467 .name = "dsp_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700468 .pwrdm = { .name = "dsp_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300469 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700470 .clkstctrl_reg = OMAP2430_CM_REGADDR(OMAP24XX_DSP_MOD,
471 OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700472 .dep_bit = OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT,
473 .wkdep_srcs = dsp_mdm_24xx_wkdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300474 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700475 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300476};
477
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700478static struct clockdomain gfx_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300479 .name = "gfx_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700480 .pwrdm = { .name = "gfx_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300481 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700482 .clkstctrl_reg = OMAP2430_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700483 .wkdep_srcs = gfx_sgx_wkdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300484 .clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700485 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300486};
487
Paul Walmsley55ed9692010-01-26 20:12:59 -0700488/*
489 * XXX add usecounting for clkdm dependencies, otherwise the presence
490 * of a single dep bit for core_l3_24xx_clkdm and core_l4_24xx_clkdm
491 * could cause trouble
492 */
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700493static struct clockdomain core_l3_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300494 .name = "core_l3_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700495 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300496 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700497 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700498 .dep_bit = OMAP24XX_EN_CORE_SHIFT,
499 .wkdep_srcs = core_24xx_wkdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300500 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700501 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300502};
503
Paul Walmsley55ed9692010-01-26 20:12:59 -0700504/*
505 * XXX add usecounting for clkdm dependencies, otherwise the presence
506 * of a single dep bit for core_l3_24xx_clkdm and core_l4_24xx_clkdm
507 * could cause trouble
508 */
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700509static struct clockdomain core_l4_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300510 .name = "core_l4_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700511 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300512 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700513 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700514 .dep_bit = OMAP24XX_EN_CORE_SHIFT,
515 .wkdep_srcs = core_24xx_wkdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300516 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700517 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300518};
519
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700520static struct clockdomain dss_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300521 .name = "dss_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700522 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300523 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700524 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300525 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700526 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300527};
528
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700529#endif /* CONFIG_ARCH_OMAP2430 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300530
531
532/*
533 * 34xx clockdomains
534 */
535
536#if defined(CONFIG_ARCH_OMAP34XX)
537
538static struct clockdomain mpu_34xx_clkdm = {
539 .name = "mpu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700540 .pwrdm = { .name = "mpu_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300541 .flags = CLKDM_CAN_HWSUP | CLKDM_CAN_FORCE_WAKEUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700542 .clkstctrl_reg = OMAP34XX_CM_REGADDR(MPU_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700543 .dep_bit = OMAP3430_EN_MPU_SHIFT,
544 .wkdep_srcs = mpu_34xx_wkdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300545 .clktrctrl_mask = OMAP3430_CLKTRCTRL_MPU_MASK,
546 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
547};
548
549static struct clockdomain neon_clkdm = {
550 .name = "neon_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700551 .pwrdm = { .name = "neon_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300552 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700553 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_NEON_MOD,
554 OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700555 .wkdep_srcs = neon_wkdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300556 .clktrctrl_mask = OMAP3430_CLKTRCTRL_NEON_MASK,
557 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
558};
559
560static struct clockdomain iva2_clkdm = {
561 .name = "iva2_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700562 .pwrdm = { .name = "iva2_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300563 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700564 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_IVA2_MOD,
565 OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700566 .dep_bit = OMAP3430_PM_WKDEP_MPU_EN_IVA2_SHIFT,
567 .wkdep_srcs = iva2_wkdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300568 .clktrctrl_mask = OMAP3430_CLKTRCTRL_IVA2_MASK,
569 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
570};
571
572static struct clockdomain gfx_3430es1_clkdm = {
573 .name = "gfx_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700574 .pwrdm = { .name = "gfx_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300575 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700576 .clkstctrl_reg = OMAP34XX_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700577 .wkdep_srcs = gfx_sgx_wkdeps,
578 .sleepdep_srcs = cam_gfx_sleepdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300579 .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_GFX_MASK,
580 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1),
581};
582
583static struct clockdomain sgx_clkdm = {
584 .name = "sgx_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700585 .pwrdm = { .name = "sgx_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300586 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700587 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430ES2_SGX_MOD,
588 OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700589 .wkdep_srcs = gfx_sgx_wkdeps,
590 .sleepdep_srcs = cam_gfx_sleepdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300591 .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_SGX_MASK,
Paul Walmsleyd41ad522009-02-05 20:45:25 -0700592 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
Paul Walmsley801954d2008-08-19 11:08:44 +0300593};
594
Paul Walmsley333943b2008-08-19 11:08:45 +0300595/*
596 * The die-to-die clockdomain was documented in the 34xx ES1 TRM, but
597 * then that information was removed from the 34xx ES2+ TRM. It is
598 * unclear whether the core is still there, but the clockdomain logic
599 * is there, and must be programmed to an appropriate state if the
600 * CORE clockdomain is to become inactive.
601 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300602static struct clockdomain d2d_clkdm = {
603 .name = "d2d_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700604 .pwrdm = { .name = "core_pwrdm" },
Kevin Hilman01cbd4d2008-11-25 21:48:28 -0800605 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700606 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300607 .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_D2D_MASK,
Paul Walmsley333943b2008-08-19 11:08:45 +0300608 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300609};
610
Paul Walmsley55ed9692010-01-26 20:12:59 -0700611/*
612 * XXX add usecounting for clkdm dependencies, otherwise the presence
613 * of a single dep bit for core_l3_34xx_clkdm and core_l4_34xx_clkdm
614 * could cause trouble
615 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300616static struct clockdomain core_l3_34xx_clkdm = {
617 .name = "core_l3_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700618 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300619 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700620 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700621 .dep_bit = OMAP3430_EN_CORE_SHIFT,
Paul Walmsley801954d2008-08-19 11:08:44 +0300622 .clktrctrl_mask = OMAP3430_CLKTRCTRL_L3_MASK,
623 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
624};
625
Paul Walmsley55ed9692010-01-26 20:12:59 -0700626/*
627 * XXX add usecounting for clkdm dependencies, otherwise the presence
628 * of a single dep bit for core_l3_34xx_clkdm and core_l4_34xx_clkdm
629 * could cause trouble
630 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300631static struct clockdomain core_l4_34xx_clkdm = {
632 .name = "core_l4_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700633 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300634 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700635 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700636 .dep_bit = OMAP3430_EN_CORE_SHIFT,
Paul Walmsley801954d2008-08-19 11:08:44 +0300637 .clktrctrl_mask = OMAP3430_CLKTRCTRL_L4_MASK,
638 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
639};
640
Paul Walmsley55ed9692010-01-26 20:12:59 -0700641/* Another case of bit name collisions between several registers: EN_DSS */
Paul Walmsley801954d2008-08-19 11:08:44 +0300642static struct clockdomain dss_34xx_clkdm = {
643 .name = "dss_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700644 .pwrdm = { .name = "dss_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300645 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700646 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD,
647 OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700648 .dep_bit = OMAP3430_PM_WKDEP_MPU_EN_DSS_SHIFT,
649 .wkdep_srcs = cam_dss_wkdeps,
650 .sleepdep_srcs = dss_per_usbhost_sleepdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300651 .clktrctrl_mask = OMAP3430_CLKTRCTRL_DSS_MASK,
652 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
653};
654
655static struct clockdomain cam_clkdm = {
656 .name = "cam_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700657 .pwrdm = { .name = "cam_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300658 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700659 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_CAM_MOD,
660 OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700661 .wkdep_srcs = cam_dss_wkdeps,
662 .sleepdep_srcs = cam_gfx_sleepdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300663 .clktrctrl_mask = OMAP3430_CLKTRCTRL_CAM_MASK,
664 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
665};
666
667static struct clockdomain usbhost_clkdm = {
668 .name = "usbhost_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700669 .pwrdm = { .name = "usbhost_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300670 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700671 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430ES2_USBHOST_MOD,
672 OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700673 .wkdep_srcs = per_usbhost_wkdeps,
674 .sleepdep_srcs = dss_per_usbhost_sleepdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300675 .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_USBHOST_MASK,
Paul Walmsleyd41ad522009-02-05 20:45:25 -0700676 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
Paul Walmsley801954d2008-08-19 11:08:44 +0300677};
678
679static struct clockdomain per_clkdm = {
680 .name = "per_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700681 .pwrdm = { .name = "per_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300682 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700683 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD,
684 OMAP2_CM_CLKSTCTRL),
Paul Walmsley55ed9692010-01-26 20:12:59 -0700685 .dep_bit = OMAP3430_EN_PER_SHIFT,
686 .wkdep_srcs = per_usbhost_wkdeps,
687 .sleepdep_srcs = dss_per_usbhost_sleepdeps,
Paul Walmsley801954d2008-08-19 11:08:44 +0300688 .clktrctrl_mask = OMAP3430_CLKTRCTRL_PER_MASK,
689 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
690};
691
Jouni Hoganderf2669502009-01-27 19:44:38 -0700692/*
693 * Disable hw supervised mode for emu_clkdm, because emu_pwrdm is
694 * switched of even if sdti is in use
695 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300696static struct clockdomain emu_clkdm = {
697 .name = "emu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700698 .pwrdm = { .name = "emu_pwrdm" },
Jouni Hoganderf2669502009-01-27 19:44:38 -0700699 .flags = /* CLKDM_CAN_ENABLE_AUTO | */CLKDM_CAN_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700700 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_EMU_MOD,
701 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300702 .clktrctrl_mask = OMAP3430_CLKTRCTRL_EMU_MASK,
703 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
704};
705
Paul Walmsley46e0ccf2009-01-27 19:44:18 -0700706static struct clockdomain dpll1_clkdm = {
707 .name = "dpll1_clkdm",
708 .pwrdm = { .name = "dpll1_pwrdm" },
709 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
710};
711
712static struct clockdomain dpll2_clkdm = {
713 .name = "dpll2_clkdm",
714 .pwrdm = { .name = "dpll2_pwrdm" },
715 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
716};
717
718static struct clockdomain dpll3_clkdm = {
719 .name = "dpll3_clkdm",
720 .pwrdm = { .name = "dpll3_pwrdm" },
721 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
722};
723
724static struct clockdomain dpll4_clkdm = {
725 .name = "dpll4_clkdm",
726 .pwrdm = { .name = "dpll4_pwrdm" },
727 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
728};
729
730static struct clockdomain dpll5_clkdm = {
731 .name = "dpll5_clkdm",
732 .pwrdm = { .name = "dpll5_pwrdm" },
Paul Walmsleyd41ad522009-02-05 20:45:25 -0700733 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
Paul Walmsley46e0ccf2009-01-27 19:44:18 -0700734};
735
Paul Walmsley801954d2008-08-19 11:08:44 +0300736#endif /* CONFIG_ARCH_OMAP34XX */
737
Abhijit Pagare1a422722010-01-26 20:12:54 -0700738#include "clockdomains44xx.h"
739
Paul Walmsley801954d2008-08-19 11:08:44 +0300740/*
Paul Walmsley55ed9692010-01-26 20:12:59 -0700741 * Clockdomain hwsup dependencies (34XX only)
Paul Walmsley801954d2008-08-19 11:08:44 +0300742 */
743
Paul Walmsley55ed9692010-01-26 20:12:59 -0700744static struct clkdm_autodep clkdm_autodeps[] = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300745 {
Paul Walmsley55ed9692010-01-26 20:12:59 -0700746 .clkdm = { .name = "mpu_clkdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300747 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
748 },
749 {
Paul Walmsley55ed9692010-01-26 20:12:59 -0700750 .clkdm = { .name = "iva2_clkdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300751 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
752 },
Paul Walmsley5b74c672009-02-03 02:10:03 -0700753 {
Paul Walmsley55ed9692010-01-26 20:12:59 -0700754 .clkdm = { .name = NULL },
Paul Walmsley5b74c672009-02-03 02:10:03 -0700755 }
Paul Walmsley801954d2008-08-19 11:08:44 +0300756};
757
758/*
Abhijit Pagare1a422722010-01-26 20:12:54 -0700759 * List of clockdomain pointers per platform
Paul Walmsley801954d2008-08-19 11:08:44 +0300760 */
761
762static struct clockdomain *clockdomains_omap[] = {
763
Abhijit Pagare1a422722010-01-26 20:12:54 -0700764#if defined(CONFIG_ARCH_OMAP24XX) | defined(CONFIG_ARCH_OMAP34XX)
Paul Walmsley801954d2008-08-19 11:08:44 +0300765 &wkup_clkdm,
Paul Walmsleyd37f1a12008-09-10 10:47:36 -0600766 &cm_clkdm,
767 &prm_clkdm,
Abhijit Pagare1a422722010-01-26 20:12:54 -0700768#endif
Paul Walmsley801954d2008-08-19 11:08:44 +0300769
770#ifdef CONFIG_ARCH_OMAP2420
771 &mpu_2420_clkdm,
772 &iva1_2420_clkdm,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700773 &dsp_2420_clkdm,
774 &gfx_2420_clkdm,
775 &core_l3_2420_clkdm,
776 &core_l4_2420_clkdm,
777 &dss_2420_clkdm,
Paul Walmsley801954d2008-08-19 11:08:44 +0300778#endif
779
780#ifdef CONFIG_ARCH_OMAP2430
781 &mpu_2430_clkdm,
782 &mdm_clkdm,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700783 &dsp_2430_clkdm,
784 &gfx_2430_clkdm,
785 &core_l3_2430_clkdm,
786 &core_l4_2430_clkdm,
787 &dss_2430_clkdm,
Paul Walmsley801954d2008-08-19 11:08:44 +0300788#endif
789
790#ifdef CONFIG_ARCH_OMAP34XX
791 &mpu_34xx_clkdm,
792 &neon_clkdm,
793 &iva2_clkdm,
794 &gfx_3430es1_clkdm,
795 &sgx_clkdm,
796 &d2d_clkdm,
797 &core_l3_34xx_clkdm,
798 &core_l4_34xx_clkdm,
799 &dss_34xx_clkdm,
800 &cam_clkdm,
801 &usbhost_clkdm,
802 &per_clkdm,
803 &emu_clkdm,
Paul Walmsley46e0ccf2009-01-27 19:44:18 -0700804 &dpll1_clkdm,
805 &dpll2_clkdm,
806 &dpll3_clkdm,
807 &dpll4_clkdm,
808 &dpll5_clkdm,
Paul Walmsley801954d2008-08-19 11:08:44 +0300809#endif
810
Abhijit Pagare1a422722010-01-26 20:12:54 -0700811#ifdef CONFIG_ARCH_OMAP4
812 &l4_cefuse_44xx_clkdm,
813 &l4_cfg_44xx_clkdm,
814 &tesla_44xx_clkdm,
815 &l3_gfx_44xx_clkdm,
816 &ivahd_44xx_clkdm,
817 &l4_secure_44xx_clkdm,
818 &l4_per_44xx_clkdm,
819 &abe_44xx_clkdm,
Abhijit Pagare6b04e0d2010-01-26 20:12:58 -0700820 &l3_instr_44xx_clkdm,
Abhijit Pagare1a422722010-01-26 20:12:54 -0700821 &l3_init_44xx_clkdm,
822 &mpuss_44xx_clkdm,
823 &mpu0_44xx_clkdm,
824 &mpu1_44xx_clkdm,
825 &l3_emif_44xx_clkdm,
826 &l4_ao_44xx_clkdm,
827 &ducati_44xx_clkdm,
828 &l3_2_44xx_clkdm,
829 &l3_1_44xx_clkdm,
830 &l3_d2d_44xx_clkdm,
831 &iss_44xx_clkdm,
832 &l3_dss_44xx_clkdm,
833 &l4_wkup_44xx_clkdm,
834 &emu_sys_44xx_clkdm,
835 &l3_dma_44xx_clkdm,
836#endif
837
Paul Walmsley801954d2008-08-19 11:08:44 +0300838 NULL,
839};
840
841#endif