blob: 7fc81f651b5e77a73b983ac654c3f7770148763c [file] [log] [blame]
Abhijit Pagare30b88632010-01-26 20:12:54 -07001/*
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
Abhijit Pagare1a422722010-01-26 20:12:54 -070021/*
22 * To-Do List
23 * -> Populate the Sleep/Wakeup dependencies for the domains
24 */
25
Paul Walmsleydc0b3a72010-12-21 20:01:20 -070026#include <linux/kernel.h>
27#include <linux/io.h>
Abhijit Pagare30b88632010-01-26 20:12:54 -070028
29#include <plat/clockdomain.h>
Paul Walmsley59fb6592010-12-21 15:30:55 -070030#include "cm1_44xx.h"
31#include "cm2_44xx.h"
Abhijit Pagare30b88632010-01-26 20:12:54 -070032
Paul Walmsleyd198b512010-12-21 15:30:54 -070033#include "cm1_44xx.h"
34#include "cm2_44xx.h"
Paul Walmsleydc0b3a72010-12-21 20:01:20 -070035#include "cm-regbits-44xx.h"
Paul Walmsleyd198b512010-12-21 15:30:54 -070036#include "prm44xx.h"
37#include "prcm_mpu44xx.h"
38
Abhijit Pagare30b88632010-01-26 20:12:54 -070039
40static struct clockdomain l4_cefuse_44xx_clkdm = {
41 .name = "l4_cefuse_clkdm",
42 .pwrdm = { .name = "cefuse_pwrdm" },
43 .clkstctrl_reg = OMAP4430_CM_CEFUSE_CLKSTCTRL,
44 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
45 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
46 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
47};
48
49static struct clockdomain l4_cfg_44xx_clkdm = {
50 .name = "l4_cfg_clkdm",
51 .pwrdm = { .name = "core_pwrdm" },
52 .clkstctrl_reg = OMAP4430_CM_L4CFG_CLKSTCTRL,
53 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
54 .flags = CLKDM_CAN_HWSUP,
55 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
56};
57
58static struct clockdomain tesla_44xx_clkdm = {
59 .name = "tesla_clkdm",
60 .pwrdm = { .name = "tesla_pwrdm" },
61 .clkstctrl_reg = OMAP4430_CM_TESLA_CLKSTCTRL,
62 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
63 .flags = CLKDM_CAN_HWSUP_SWSUP,
64 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
65};
66
67static struct clockdomain l3_gfx_44xx_clkdm = {
68 .name = "l3_gfx_clkdm",
69 .pwrdm = { .name = "gfx_pwrdm" },
70 .clkstctrl_reg = OMAP4430_CM_GFX_CLKSTCTRL,
71 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
72 .flags = CLKDM_CAN_HWSUP_SWSUP,
73 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
74};
75
76static struct clockdomain ivahd_44xx_clkdm = {
77 .name = "ivahd_clkdm",
78 .pwrdm = { .name = "ivahd_pwrdm" },
79 .clkstctrl_reg = OMAP4430_CM_IVAHD_CLKSTCTRL,
80 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
81 .flags = CLKDM_CAN_HWSUP_SWSUP,
82 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
83};
84
85static struct clockdomain l4_secure_44xx_clkdm = {
86 .name = "l4_secure_clkdm",
87 .pwrdm = { .name = "l4per_pwrdm" },
88 .clkstctrl_reg = OMAP4430_CM_L4SEC_CLKSTCTRL,
89 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
90 .flags = CLKDM_CAN_HWSUP_SWSUP,
91 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
92};
93
94static struct clockdomain l4_per_44xx_clkdm = {
95 .name = "l4_per_clkdm",
96 .pwrdm = { .name = "l4per_pwrdm" },
97 .clkstctrl_reg = OMAP4430_CM_L4PER_CLKSTCTRL,
98 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
99 .flags = CLKDM_CAN_HWSUP_SWSUP,
100 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
101};
102
103static struct clockdomain abe_44xx_clkdm = {
104 .name = "abe_clkdm",
105 .pwrdm = { .name = "abe_pwrdm" },
106 .clkstctrl_reg = OMAP4430_CM1_ABE_CLKSTCTRL,
107 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
108 .flags = CLKDM_CAN_HWSUP_SWSUP,
109 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
110};
111
Abhijit Pagare6b04e0d2010-01-26 20:12:58 -0700112static struct clockdomain l3_instr_44xx_clkdm = {
113 .name = "l3_instr_clkdm",
114 .pwrdm = { .name = "core_pwrdm" },
115 .clkstctrl_reg = OMAP4430_CM_L3INSTR_CLKSTCTRL,
116 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
117 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
118};
119
Abhijit Pagare30b88632010-01-26 20:12:54 -0700120static struct clockdomain l3_init_44xx_clkdm = {
121 .name = "l3_init_clkdm",
122 .pwrdm = { .name = "l3init_pwrdm" },
123 .clkstctrl_reg = OMAP4430_CM_L3INIT_CLKSTCTRL,
124 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
125 .flags = CLKDM_CAN_HWSUP_SWSUP,
126 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
127};
128
129static struct clockdomain mpuss_44xx_clkdm = {
130 .name = "mpuss_clkdm",
131 .pwrdm = { .name = "mpu_pwrdm" },
132 .clkstctrl_reg = OMAP4430_CM_MPU_CLKSTCTRL,
133 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
134 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
135 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
136};
137
138static struct clockdomain mpu0_44xx_clkdm = {
139 .name = "mpu0_clkdm",
140 .pwrdm = { .name = "cpu0_pwrdm" },
Benoit Cousson79328702010-05-20 12:31:11 -0600141 .clkstctrl_reg = OMAP4430_CM_CPU0_CLKSTCTRL,
Abhijit Pagare30b88632010-01-26 20:12:54 -0700142 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
143 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
144 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
145};
146
147static struct clockdomain mpu1_44xx_clkdm = {
148 .name = "mpu1_clkdm",
149 .pwrdm = { .name = "cpu1_pwrdm" },
Benoit Cousson79328702010-05-20 12:31:11 -0600150 .clkstctrl_reg = OMAP4430_CM_CPU1_CLKSTCTRL,
Abhijit Pagare30b88632010-01-26 20:12:54 -0700151 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
152 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
153 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
154};
155
156static struct clockdomain l3_emif_44xx_clkdm = {
157 .name = "l3_emif_clkdm",
158 .pwrdm = { .name = "core_pwrdm" },
159 .clkstctrl_reg = OMAP4430_CM_MEMIF_CLKSTCTRL,
160 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
161 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
162 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
163};
164
165static struct clockdomain l4_ao_44xx_clkdm = {
166 .name = "l4_ao_clkdm",
167 .pwrdm = { .name = "always_on_core_pwrdm" },
168 .clkstctrl_reg = OMAP4430_CM_ALWON_CLKSTCTRL,
169 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
170 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
171 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
172};
173
174static struct clockdomain ducati_44xx_clkdm = {
175 .name = "ducati_clkdm",
176 .pwrdm = { .name = "core_pwrdm" },
177 .clkstctrl_reg = OMAP4430_CM_DUCATI_CLKSTCTRL,
178 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
179 .flags = CLKDM_CAN_HWSUP_SWSUP,
180 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
181};
182
183static struct clockdomain l3_2_44xx_clkdm = {
184 .name = "l3_2_clkdm",
185 .pwrdm = { .name = "core_pwrdm" },
186 .clkstctrl_reg = OMAP4430_CM_L3_2_CLKSTCTRL,
187 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
188 .flags = CLKDM_CAN_HWSUP,
189 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
190};
191
192static struct clockdomain l3_1_44xx_clkdm = {
193 .name = "l3_1_clkdm",
194 .pwrdm = { .name = "core_pwrdm" },
195 .clkstctrl_reg = OMAP4430_CM_L3_1_CLKSTCTRL,
196 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
197 .flags = CLKDM_CAN_HWSUP,
198 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
199};
200
201static struct clockdomain l3_d2d_44xx_clkdm = {
202 .name = "l3_d2d_clkdm",
203 .pwrdm = { .name = "core_pwrdm" },
204 .clkstctrl_reg = OMAP4430_CM_D2D_CLKSTCTRL,
205 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
206 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
207 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
208};
209
210static struct clockdomain iss_44xx_clkdm = {
211 .name = "iss_clkdm",
212 .pwrdm = { .name = "cam_pwrdm" },
213 .clkstctrl_reg = OMAP4430_CM_CAM_CLKSTCTRL,
214 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
215 .flags = CLKDM_CAN_HWSUP_SWSUP,
216 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
217};
218
219static struct clockdomain l3_dss_44xx_clkdm = {
220 .name = "l3_dss_clkdm",
221 .pwrdm = { .name = "dss_pwrdm" },
222 .clkstctrl_reg = OMAP4430_CM_DSS_CLKSTCTRL,
223 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
224 .flags = CLKDM_CAN_HWSUP_SWSUP,
225 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
226};
227
228static struct clockdomain l4_wkup_44xx_clkdm = {
229 .name = "l4_wkup_clkdm",
230 .pwrdm = { .name = "wkup_pwrdm" },
231 .clkstctrl_reg = OMAP4430_CM_WKUP_CLKSTCTRL,
232 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
233 .flags = CLKDM_CAN_HWSUP,
234 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
235};
236
237static struct clockdomain emu_sys_44xx_clkdm = {
238 .name = "emu_sys_clkdm",
239 .pwrdm = { .name = "emu_pwrdm" },
240 .clkstctrl_reg = OMAP4430_CM_EMU_CLKSTCTRL,
241 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
242 .flags = CLKDM_CAN_HWSUP,
243 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
244};
245
246static struct clockdomain l3_dma_44xx_clkdm = {
247 .name = "l3_dma_clkdm",
248 .pwrdm = { .name = "core_pwrdm" },
249 .clkstctrl_reg = OMAP4430_CM_SDMA_CLKSTCTRL,
250 .clktrctrl_mask = OMAP4430_CLKTRCTRL_MASK,
251 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
252 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
253};
254
Paul Walmsleydc0b3a72010-12-21 20:01:20 -0700255static struct clockdomain *clockdomains_omap44xx[] __initdata = {
256 &l4_cefuse_44xx_clkdm,
257 &l4_cfg_44xx_clkdm,
258 &tesla_44xx_clkdm,
259 &l3_gfx_44xx_clkdm,
260 &ivahd_44xx_clkdm,
261 &l4_secure_44xx_clkdm,
262 &l4_per_44xx_clkdm,
263 &abe_44xx_clkdm,
264 &l3_instr_44xx_clkdm,
265 &l3_init_44xx_clkdm,
266 &mpuss_44xx_clkdm,
267 &mpu0_44xx_clkdm,
268 &mpu1_44xx_clkdm,
269 &l3_emif_44xx_clkdm,
270 &l4_ao_44xx_clkdm,
271 &ducati_44xx_clkdm,
272 &l3_2_44xx_clkdm,
273 &l3_1_44xx_clkdm,
274 &l3_d2d_44xx_clkdm,
275 &iss_44xx_clkdm,
276 &l3_dss_44xx_clkdm,
277 &l4_wkup_44xx_clkdm,
278 &emu_sys_44xx_clkdm,
279 &l3_dma_44xx_clkdm,
280 NULL,
281};
Abhijit Pagare30b88632010-01-26 20:12:54 -0700282
Paul Walmsleydc0b3a72010-12-21 20:01:20 -0700283void __init omap44xx_clockdomains_init(void)
284{
285 clkdm_init(clockdomains_omap44xx, NULL);
286}