blob: 0e6114058db555b44923bc75f68be5eba0bde449 [file] [log] [blame]
Paul Walmsley801954d2008-08-19 11:08:44 +03001/*
2 * OMAP2/3 clockdomains
3 *
4 * Copyright (C) 2008 Texas Instruments, Inc.
5 * Copyright (C) 2008 Nokia Corporation
6 *
7 * Written by Paul Walmsley
8 */
9
10#ifndef __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H
11#define __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H
12
Tony Lindgrence491cf2009-10-20 09:40:47 -070013#include <plat/clockdomain.h>
Abhijit Pagare84c0c392010-01-26 20:12:53 -070014#include "cm.h"
15#include "prm44xx.h"
Paul Walmsley801954d2008-08-19 11:08:44 +030016
17/*
18 * OMAP2/3-common clockdomains
Paul Walmsleyd37f1a12008-09-10 10:47:36 -060019 *
20 * Even though the 2420 has a single PRCM module from the
21 * interconnect's perspective, internally it does appear to have
22 * separate PRM and CM clockdomains. The usual test case is
23 * sys_clkout/sys_clkout2.
Paul Walmsley801954d2008-08-19 11:08:44 +030024 */
25
26/* This is an implicit clockdomain - it is never defined as such in TRM */
27static struct clockdomain wkup_clkdm = {
28 .name = "wkup_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -070029 .pwrdm = { .name = "wkup_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +030030 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
31};
32
Paul Walmsleyd37f1a12008-09-10 10:47:36 -060033static struct clockdomain prm_clkdm = {
34 .name = "prm_clkdm",
35 .pwrdm = { .name = "wkup_pwrdm" },
36 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
37};
38
39static struct clockdomain cm_clkdm = {
40 .name = "cm_clkdm",
41 .pwrdm = { .name = "core_pwrdm" },
42 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
43};
44
Paul Walmsley801954d2008-08-19 11:08:44 +030045/*
46 * 2420-only clockdomains
47 */
48
49#if defined(CONFIG_ARCH_OMAP2420)
50
51static struct clockdomain mpu_2420_clkdm = {
52 .name = "mpu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -070053 .pwrdm = { .name = "mpu_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +030054 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -070055 .clkstctrl_reg = OMAP2420_CM_REGADDR(MPU_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +030056 .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
57 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
58};
59
60static struct clockdomain iva1_2420_clkdm = {
61 .name = "iva1_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -070062 .pwrdm = { .name = "dsp_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +030063 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -070064 .clkstctrl_reg = OMAP2420_CM_REGADDR(OMAP24XX_DSP_MOD,
65 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +030066 .clktrctrl_mask = OMAP2420_AUTOSTATE_IVA_MASK,
67 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
68};
69
Abhijit Pagare84c0c392010-01-26 20:12:53 -070070static struct clockdomain dsp_2420_clkdm = {
71 .name = "dsp_clkdm",
72 .pwrdm = { .name = "dsp_pwrdm" },
73 .flags = CLKDM_CAN_HWSUP_SWSUP,
74 .clkstctrl_reg = OMAP2420_CM_REGADDR(OMAP24XX_DSP_MOD,
75 OMAP2_CM_CLKSTCTRL),
76 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
77 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
78};
79
80static struct clockdomain gfx_2420_clkdm = {
81 .name = "gfx_clkdm",
82 .pwrdm = { .name = "gfx_pwrdm" },
83 .flags = CLKDM_CAN_HWSUP_SWSUP,
84 .clkstctrl_reg = OMAP2420_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
85 .clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
86 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
87};
88
89static struct clockdomain core_l3_2420_clkdm = {
90 .name = "core_l3_clkdm",
91 .pwrdm = { .name = "core_pwrdm" },
92 .flags = CLKDM_CAN_HWSUP,
93 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
94 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
95 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
96};
97
98static struct clockdomain core_l4_2420_clkdm = {
99 .name = "core_l4_clkdm",
100 .pwrdm = { .name = "core_pwrdm" },
101 .flags = CLKDM_CAN_HWSUP,
102 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
103 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
104 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
105};
106
107static struct clockdomain dss_2420_clkdm = {
108 .name = "dss_clkdm",
109 .pwrdm = { .name = "core_pwrdm" },
110 .flags = CLKDM_CAN_HWSUP,
111 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
112 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
113 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
114};
115
116#endif /* CONFIG_ARCH_OMAP2420 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300117
118
119/*
120 * 2430-only clockdomains
121 */
122
123#if defined(CONFIG_ARCH_OMAP2430)
124
125static struct clockdomain mpu_2430_clkdm = {
126 .name = "mpu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700127 .pwrdm = { .name = "mpu_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300128 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700129 .clkstctrl_reg = OMAP2430_CM_REGADDR(MPU_MOD,
130 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300131 .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
132 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
133};
134
135static struct clockdomain mdm_clkdm = {
136 .name = "mdm_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700137 .pwrdm = { .name = "mdm_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300138 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700139 .clkstctrl_reg = OMAP2430_CM_REGADDR(OMAP2430_MDM_MOD,
140 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300141 .clktrctrl_mask = OMAP2430_AUTOSTATE_MDM_MASK,
142 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
143};
144
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700145static struct clockdomain dsp_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300146 .name = "dsp_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700147 .pwrdm = { .name = "dsp_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300148 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700149 .clkstctrl_reg = OMAP2430_CM_REGADDR(OMAP24XX_DSP_MOD,
150 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300151 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700152 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300153};
154
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700155static struct clockdomain gfx_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300156 .name = "gfx_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700157 .pwrdm = { .name = "gfx_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300158 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700159 .clkstctrl_reg = OMAP2430_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300160 .clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700161 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300162};
163
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700164static struct clockdomain core_l3_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300165 .name = "core_l3_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700166 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300167 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700168 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300169 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700170 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300171};
172
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700173static struct clockdomain core_l4_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300174 .name = "core_l4_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700175 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300176 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700177 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300178 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700179 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300180};
181
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700182static struct clockdomain dss_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300183 .name = "dss_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700184 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300185 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700186 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300187 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700188 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300189};
190
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700191#endif /* CONFIG_ARCH_OMAP2430 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300192
193
194/*
195 * 34xx clockdomains
196 */
197
198#if defined(CONFIG_ARCH_OMAP34XX)
199
200static struct clockdomain mpu_34xx_clkdm = {
201 .name = "mpu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700202 .pwrdm = { .name = "mpu_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300203 .flags = CLKDM_CAN_HWSUP | CLKDM_CAN_FORCE_WAKEUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700204 .clkstctrl_reg = OMAP34XX_CM_REGADDR(MPU_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300205 .clktrctrl_mask = OMAP3430_CLKTRCTRL_MPU_MASK,
206 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
207};
208
209static struct clockdomain neon_clkdm = {
210 .name = "neon_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700211 .pwrdm = { .name = "neon_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300212 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700213 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_NEON_MOD,
214 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300215 .clktrctrl_mask = OMAP3430_CLKTRCTRL_NEON_MASK,
216 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
217};
218
219static struct clockdomain iva2_clkdm = {
220 .name = "iva2_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700221 .pwrdm = { .name = "iva2_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300222 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700223 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_IVA2_MOD,
224 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300225 .clktrctrl_mask = OMAP3430_CLKTRCTRL_IVA2_MASK,
226 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
227};
228
229static struct clockdomain gfx_3430es1_clkdm = {
230 .name = "gfx_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700231 .pwrdm = { .name = "gfx_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300232 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700233 .clkstctrl_reg = OMAP34XX_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300234 .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_GFX_MASK,
235 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1),
236};
237
238static struct clockdomain sgx_clkdm = {
239 .name = "sgx_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700240 .pwrdm = { .name = "sgx_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300241 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700242 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430ES2_SGX_MOD,
243 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300244 .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_SGX_MASK,
Paul Walmsleyd41ad522009-02-05 20:45:25 -0700245 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
Paul Walmsley801954d2008-08-19 11:08:44 +0300246};
247
Paul Walmsley333943b2008-08-19 11:08:45 +0300248/*
249 * The die-to-die clockdomain was documented in the 34xx ES1 TRM, but
250 * then that information was removed from the 34xx ES2+ TRM. It is
251 * unclear whether the core is still there, but the clockdomain logic
252 * is there, and must be programmed to an appropriate state if the
253 * CORE clockdomain is to become inactive.
254 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300255static struct clockdomain d2d_clkdm = {
256 .name = "d2d_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700257 .pwrdm = { .name = "core_pwrdm" },
Kevin Hilman01cbd4d2008-11-25 21:48:28 -0800258 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700259 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300260 .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_D2D_MASK,
Paul Walmsley333943b2008-08-19 11:08:45 +0300261 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300262};
263
264static struct clockdomain core_l3_34xx_clkdm = {
265 .name = "core_l3_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700266 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300267 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700268 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300269 .clktrctrl_mask = OMAP3430_CLKTRCTRL_L3_MASK,
270 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
271};
272
273static struct clockdomain core_l4_34xx_clkdm = {
274 .name = "core_l4_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700275 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300276 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700277 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300278 .clktrctrl_mask = OMAP3430_CLKTRCTRL_L4_MASK,
279 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
280};
281
282static struct clockdomain dss_34xx_clkdm = {
283 .name = "dss_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700284 .pwrdm = { .name = "dss_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300285 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700286 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD,
287 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300288 .clktrctrl_mask = OMAP3430_CLKTRCTRL_DSS_MASK,
289 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
290};
291
292static struct clockdomain cam_clkdm = {
293 .name = "cam_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700294 .pwrdm = { .name = "cam_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300295 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700296 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_CAM_MOD,
297 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300298 .clktrctrl_mask = OMAP3430_CLKTRCTRL_CAM_MASK,
299 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
300};
301
302static struct clockdomain usbhost_clkdm = {
303 .name = "usbhost_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700304 .pwrdm = { .name = "usbhost_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300305 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700306 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430ES2_USBHOST_MOD,
307 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300308 .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_USBHOST_MASK,
Paul Walmsleyd41ad522009-02-05 20:45:25 -0700309 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
Paul Walmsley801954d2008-08-19 11:08:44 +0300310};
311
312static struct clockdomain per_clkdm = {
313 .name = "per_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700314 .pwrdm = { .name = "per_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300315 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700316 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD,
317 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300318 .clktrctrl_mask = OMAP3430_CLKTRCTRL_PER_MASK,
319 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
320};
321
Jouni Hoganderf2669502009-01-27 19:44:38 -0700322/*
323 * Disable hw supervised mode for emu_clkdm, because emu_pwrdm is
324 * switched of even if sdti is in use
325 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300326static struct clockdomain emu_clkdm = {
327 .name = "emu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700328 .pwrdm = { .name = "emu_pwrdm" },
Jouni Hoganderf2669502009-01-27 19:44:38 -0700329 .flags = /* CLKDM_CAN_ENABLE_AUTO | */CLKDM_CAN_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700330 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_EMU_MOD,
331 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300332 .clktrctrl_mask = OMAP3430_CLKTRCTRL_EMU_MASK,
333 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
334};
335
Paul Walmsley46e0ccf2009-01-27 19:44:18 -0700336static struct clockdomain dpll1_clkdm = {
337 .name = "dpll1_clkdm",
338 .pwrdm = { .name = "dpll1_pwrdm" },
339 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
340};
341
342static struct clockdomain dpll2_clkdm = {
343 .name = "dpll2_clkdm",
344 .pwrdm = { .name = "dpll2_pwrdm" },
345 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
346};
347
348static struct clockdomain dpll3_clkdm = {
349 .name = "dpll3_clkdm",
350 .pwrdm = { .name = "dpll3_pwrdm" },
351 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
352};
353
354static struct clockdomain dpll4_clkdm = {
355 .name = "dpll4_clkdm",
356 .pwrdm = { .name = "dpll4_pwrdm" },
357 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
358};
359
360static struct clockdomain dpll5_clkdm = {
361 .name = "dpll5_clkdm",
362 .pwrdm = { .name = "dpll5_pwrdm" },
Paul Walmsleyd41ad522009-02-05 20:45:25 -0700363 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
Paul Walmsley46e0ccf2009-01-27 19:44:18 -0700364};
365
Paul Walmsley801954d2008-08-19 11:08:44 +0300366#endif /* CONFIG_ARCH_OMAP34XX */
367
368/*
369 * Clockdomain-powerdomain hwsup dependencies (34XX only)
370 */
371
372static struct clkdm_pwrdm_autodep clkdm_pwrdm_autodeps[] = {
373 {
Paul Walmsley5b74c672009-02-03 02:10:03 -0700374 .pwrdm = { .name = "mpu_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300375 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
376 },
377 {
Paul Walmsley5b74c672009-02-03 02:10:03 -0700378 .pwrdm = { .name = "iva2_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300379 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
380 },
Paul Walmsley5b74c672009-02-03 02:10:03 -0700381 {
382 .pwrdm = { .name = NULL },
383 }
Paul Walmsley801954d2008-08-19 11:08:44 +0300384};
385
386/*
387 *
388 */
389
390static struct clockdomain *clockdomains_omap[] = {
391
392 &wkup_clkdm,
Paul Walmsleyd37f1a12008-09-10 10:47:36 -0600393 &cm_clkdm,
394 &prm_clkdm,
Paul Walmsley801954d2008-08-19 11:08:44 +0300395
396#ifdef CONFIG_ARCH_OMAP2420
397 &mpu_2420_clkdm,
398 &iva1_2420_clkdm,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700399 &dsp_2420_clkdm,
400 &gfx_2420_clkdm,
401 &core_l3_2420_clkdm,
402 &core_l4_2420_clkdm,
403 &dss_2420_clkdm,
Paul Walmsley801954d2008-08-19 11:08:44 +0300404#endif
405
406#ifdef CONFIG_ARCH_OMAP2430
407 &mpu_2430_clkdm,
408 &mdm_clkdm,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700409 &dsp_2430_clkdm,
410 &gfx_2430_clkdm,
411 &core_l3_2430_clkdm,
412 &core_l4_2430_clkdm,
413 &dss_2430_clkdm,
Paul Walmsley801954d2008-08-19 11:08:44 +0300414#endif
415
416#ifdef CONFIG_ARCH_OMAP34XX
417 &mpu_34xx_clkdm,
418 &neon_clkdm,
419 &iva2_clkdm,
420 &gfx_3430es1_clkdm,
421 &sgx_clkdm,
422 &d2d_clkdm,
423 &core_l3_34xx_clkdm,
424 &core_l4_34xx_clkdm,
425 &dss_34xx_clkdm,
426 &cam_clkdm,
427 &usbhost_clkdm,
428 &per_clkdm,
429 &emu_clkdm,
Paul Walmsley46e0ccf2009-01-27 19:44:18 -0700430 &dpll1_clkdm,
431 &dpll2_clkdm,
432 &dpll3_clkdm,
433 &dpll4_clkdm,
434 &dpll5_clkdm,
Paul Walmsley801954d2008-08-19 11:08:44 +0300435#endif
436
437 NULL,
438};
439
440#endif