1/*
2 * OMAP54XX Clock domains framework
3 *
4 * Copyright (C) 2013 Texas Instruments, Inc.
5 *
6 * Abhijit Pagare (abhijitpagare@ti.com)
7 * Benoit Cousson (b-cousson@ti.com)
8 * Paul Walmsley (paul@pwsan.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#include <linux/kernel.h>
22#include <linux/io.h>
23
24#include "clockdomain.h"
25#include "cm1_54xx.h"
26#include "cm2_54xx.h"
27
28#include "cm-regbits-54xx.h"
29#include "prm54xx.h"
30#include "prcm44xx.h"
31#include "prcm_mpu54xx.h"
32
33/* Static Dependencies for OMAP4 Clock Domains */
34
35static struct clkdm_dep c2c_wkup_sleep_deps[] = {
36	{ .clkdm_name = "abe_clkdm" },
37	{ .clkdm_name = "emif_clkdm" },
38	{ .clkdm_name = "iva_clkdm" },
39	{ .clkdm_name = "l3init_clkdm" },
40	{ .clkdm_name = "l3main1_clkdm" },
41	{ .clkdm_name = "l3main2_clkdm" },
42	{ .clkdm_name = "l4cfg_clkdm" },
43	{ .clkdm_name = "l4per_clkdm" },
44	{ NULL },
45};
46
47static struct clkdm_dep cam_wkup_sleep_deps[] = {
48	{ .clkdm_name = "emif_clkdm" },
49	{ .clkdm_name = "iva_clkdm" },
50	{ .clkdm_name = "l3main1_clkdm" },
51	{ NULL },
52};
53
54static struct clkdm_dep dma_wkup_sleep_deps[] = {
55	{ .clkdm_name = "abe_clkdm" },
56	{ .clkdm_name = "dss_clkdm" },
57	{ .clkdm_name = "emif_clkdm" },
58	{ .clkdm_name = "ipu_clkdm" },
59	{ .clkdm_name = "iva_clkdm" },
60	{ .clkdm_name = "l3init_clkdm" },
61	{ .clkdm_name = "l3main1_clkdm" },
62	{ .clkdm_name = "l4cfg_clkdm" },
63	{ .clkdm_name = "l4per_clkdm" },
64	{ .clkdm_name = "l4sec_clkdm" },
65	{ .clkdm_name = "wkupaon_clkdm" },
66	{ NULL },
67};
68
69static struct clkdm_dep dsp_wkup_sleep_deps[] = {
70	{ .clkdm_name = "abe_clkdm" },
71	{ .clkdm_name = "emif_clkdm" },
72	{ .clkdm_name = "iva_clkdm" },
73	{ .clkdm_name = "l3init_clkdm" },
74	{ .clkdm_name = "l3main1_clkdm" },
75	{ .clkdm_name = "l3main2_clkdm" },
76	{ .clkdm_name = "l4cfg_clkdm" },
77	{ .clkdm_name = "l4per_clkdm" },
78	{ .clkdm_name = "wkupaon_clkdm" },
79	{ NULL },
80};
81
82static struct clkdm_dep dss_wkup_sleep_deps[] = {
83	{ .clkdm_name = "emif_clkdm" },
84	{ .clkdm_name = "iva_clkdm" },
85	{ .clkdm_name = "l3main2_clkdm" },
86	{ NULL },
87};
88
89static struct clkdm_dep gpu_wkup_sleep_deps[] = {
90	{ .clkdm_name = "emif_clkdm" },
91	{ .clkdm_name = "iva_clkdm" },
92	{ .clkdm_name = "l3main1_clkdm" },
93	{ NULL },
94};
95
96static struct clkdm_dep ipu_wkup_sleep_deps[] = {
97	{ .clkdm_name = "abe_clkdm" },
98	{ .clkdm_name = "dsp_clkdm" },
99	{ .clkdm_name = "dss_clkdm" },
100	{ .clkdm_name = "emif_clkdm" },
101	{ .clkdm_name = "gpu_clkdm" },
102	{ .clkdm_name = "iva_clkdm" },
103	{ .clkdm_name = "l3init_clkdm" },
104	{ .clkdm_name = "l3main1_clkdm" },
105	{ .clkdm_name = "l3main2_clkdm" },
106	{ .clkdm_name = "l4cfg_clkdm" },
107	{ .clkdm_name = "l4per_clkdm" },
108	{ .clkdm_name = "l4sec_clkdm" },
109	{ .clkdm_name = "wkupaon_clkdm" },
110	{ NULL },
111};
112
113static struct clkdm_dep iva_wkup_sleep_deps[] = {
114	{ .clkdm_name = "emif_clkdm" },
115	{ .clkdm_name = "l3main1_clkdm" },
116	{ NULL },
117};
118
119static struct clkdm_dep l3init_wkup_sleep_deps[] = {
120	{ .clkdm_name = "abe_clkdm" },
121	{ .clkdm_name = "emif_clkdm" },
122	{ .clkdm_name = "iva_clkdm" },
123	{ .clkdm_name = "l4cfg_clkdm" },
124	{ .clkdm_name = "l4per_clkdm" },
125	{ .clkdm_name = "l4sec_clkdm" },
126	{ .clkdm_name = "wkupaon_clkdm" },
127	{ NULL },
128};
129
130static struct clkdm_dep l4sec_wkup_sleep_deps[] = {
131	{ .clkdm_name = "emif_clkdm" },
132	{ .clkdm_name = "l3main1_clkdm" },
133	{ .clkdm_name = "l4per_clkdm" },
134	{ NULL },
135};
136
137static struct clkdm_dep mipiext_wkup_sleep_deps[] = {
138	{ .clkdm_name = "abe_clkdm" },
139	{ .clkdm_name = "emif_clkdm" },
140	{ .clkdm_name = "iva_clkdm" },
141	{ .clkdm_name = "l3init_clkdm" },
142	{ .clkdm_name = "l3main1_clkdm" },
143	{ .clkdm_name = "l3main2_clkdm" },
144	{ .clkdm_name = "l4cfg_clkdm" },
145	{ .clkdm_name = "l4per_clkdm" },
146	{ NULL },
147};
148
149static struct clkdm_dep mpu_wkup_sleep_deps[] = {
150	{ .clkdm_name = "abe_clkdm" },
151	{ .clkdm_name = "dsp_clkdm" },
152	{ .clkdm_name = "dss_clkdm" },
153	{ .clkdm_name = "emif_clkdm" },
154	{ .clkdm_name = "gpu_clkdm" },
155	{ .clkdm_name = "ipu_clkdm" },
156	{ .clkdm_name = "iva_clkdm" },
157	{ .clkdm_name = "l3init_clkdm" },
158	{ .clkdm_name = "l3main1_clkdm" },
159	{ .clkdm_name = "l3main2_clkdm" },
160	{ .clkdm_name = "l4cfg_clkdm" },
161	{ .clkdm_name = "l4per_clkdm" },
162	{ .clkdm_name = "l4sec_clkdm" },
163	{ .clkdm_name = "wkupaon_clkdm" },
164	{ NULL },
165};
166
167static struct clockdomain l4sec_54xx_clkdm = {
168	.name		  = "l4sec_clkdm",
169	.pwrdm		  = { .name = "core_pwrdm" },
170	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
171	.cm_inst	  = OMAP54XX_CM_CORE_CORE_INST,
172	.clkdm_offs	  = OMAP54XX_CM_CORE_CORE_L4SEC_CDOFFS,
173	.dep_bit	  = OMAP54XX_L4SEC_STATDEP_SHIFT,
174	.wkdep_srcs	  = l4sec_wkup_sleep_deps,
175	.sleepdep_srcs	  = l4sec_wkup_sleep_deps,
176	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
177};
178
179static struct clockdomain iva_54xx_clkdm = {
180	.name		  = "iva_clkdm",
181	.pwrdm		  = { .name = "iva_pwrdm" },
182	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
183	.cm_inst	  = OMAP54XX_CM_CORE_IVA_INST,
184	.clkdm_offs	  = OMAP54XX_CM_CORE_IVA_IVA_CDOFFS,
185	.dep_bit	  = OMAP54XX_IVA_STATDEP_SHIFT,
186	.wkdep_srcs	  = iva_wkup_sleep_deps,
187	.sleepdep_srcs	  = iva_wkup_sleep_deps,
188	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
189};
190
191static struct clockdomain mipiext_54xx_clkdm = {
192	.name		  = "mipiext_clkdm",
193	.pwrdm		  = { .name = "core_pwrdm" },
194	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
195	.cm_inst	  = OMAP54XX_CM_CORE_CORE_INST,
196	.clkdm_offs	  = OMAP54XX_CM_CORE_CORE_MIPIEXT_CDOFFS,
197	.wkdep_srcs	  = mipiext_wkup_sleep_deps,
198	.sleepdep_srcs	  = mipiext_wkup_sleep_deps,
199	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
200};
201
202static struct clockdomain l3main2_54xx_clkdm = {
203	.name		  = "l3main2_clkdm",
204	.pwrdm		  = { .name = "core_pwrdm" },
205	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
206	.cm_inst	  = OMAP54XX_CM_CORE_CORE_INST,
207	.clkdm_offs	  = OMAP54XX_CM_CORE_CORE_L3MAIN2_CDOFFS,
208	.dep_bit	  = OMAP54XX_L3MAIN2_STATDEP_SHIFT,
209	.flags		  = CLKDM_CAN_HWSUP,
210};
211
212static struct clockdomain l3main1_54xx_clkdm = {
213	.name		  = "l3main1_clkdm",
214	.pwrdm		  = { .name = "core_pwrdm" },
215	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
216	.cm_inst	  = OMAP54XX_CM_CORE_CORE_INST,
217	.clkdm_offs	  = OMAP54XX_CM_CORE_CORE_L3MAIN1_CDOFFS,
218	.dep_bit	  = OMAP54XX_L3MAIN1_STATDEP_SHIFT,
219	.flags		  = CLKDM_CAN_HWSUP,
220};
221
222static struct clockdomain custefuse_54xx_clkdm = {
223	.name		  = "custefuse_clkdm",
224	.pwrdm		  = { .name = "custefuse_pwrdm" },
225	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
226	.cm_inst	  = OMAP54XX_CM_CORE_CUSTEFUSE_INST,
227	.clkdm_offs	  = OMAP54XX_CM_CORE_CUSTEFUSE_CUSTEFUSE_CDOFFS,
228	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
229};
230
231static struct clockdomain ipu_54xx_clkdm = {
232	.name		  = "ipu_clkdm",
233	.pwrdm		  = { .name = "core_pwrdm" },
234	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
235	.cm_inst	  = OMAP54XX_CM_CORE_CORE_INST,
236	.clkdm_offs	  = OMAP54XX_CM_CORE_CORE_IPU_CDOFFS,
237	.dep_bit	  = OMAP54XX_IPU_STATDEP_SHIFT,
238	.wkdep_srcs	  = ipu_wkup_sleep_deps,
239	.sleepdep_srcs	  = ipu_wkup_sleep_deps,
240	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
241};
242
243static struct clockdomain l4cfg_54xx_clkdm = {
244	.name		  = "l4cfg_clkdm",
245	.pwrdm		  = { .name = "core_pwrdm" },
246	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
247	.cm_inst	  = OMAP54XX_CM_CORE_CORE_INST,
248	.clkdm_offs	  = OMAP54XX_CM_CORE_CORE_L4CFG_CDOFFS,
249	.dep_bit	  = OMAP54XX_L4CFG_STATDEP_SHIFT,
250	.flags		  = CLKDM_CAN_HWSUP,
251};
252
253static struct clockdomain abe_54xx_clkdm = {
254	.name		  = "abe_clkdm",
255	.pwrdm		  = { .name = "abe_pwrdm" },
256	.prcm_partition	  = OMAP54XX_CM_CORE_AON_PARTITION,
257	.cm_inst	  = OMAP54XX_CM_CORE_AON_ABE_INST,
258	.clkdm_offs	  = OMAP54XX_CM_CORE_AON_ABE_ABE_CDOFFS,
259	.dep_bit	  = OMAP54XX_ABE_STATDEP_SHIFT,
260	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
261};
262
263static struct clockdomain dss_54xx_clkdm = {
264	.name		  = "dss_clkdm",
265	.pwrdm		  = { .name = "dss_pwrdm" },
266	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
267	.cm_inst	  = OMAP54XX_CM_CORE_DSS_INST,
268	.clkdm_offs	  = OMAP54XX_CM_CORE_DSS_DSS_CDOFFS,
269	.dep_bit	  = OMAP54XX_DSS_STATDEP_SHIFT,
270	.wkdep_srcs	  = dss_wkup_sleep_deps,
271	.sleepdep_srcs	  = dss_wkup_sleep_deps,
272	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
273};
274
275static struct clockdomain dsp_54xx_clkdm = {
276	.name		  = "dsp_clkdm",
277	.pwrdm		  = { .name = "dsp_pwrdm" },
278	.prcm_partition	  = OMAP54XX_CM_CORE_AON_PARTITION,
279	.cm_inst	  = OMAP54XX_CM_CORE_AON_DSP_INST,
280	.clkdm_offs	  = OMAP54XX_CM_CORE_AON_DSP_DSP_CDOFFS,
281	.dep_bit	  = OMAP54XX_DSP_STATDEP_SHIFT,
282	.wkdep_srcs	  = dsp_wkup_sleep_deps,
283	.sleepdep_srcs	  = dsp_wkup_sleep_deps,
284	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
285};
286
287static struct clockdomain c2c_54xx_clkdm = {
288	.name		  = "c2c_clkdm",
289	.pwrdm		  = { .name = "core_pwrdm" },
290	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
291	.cm_inst	  = OMAP54XX_CM_CORE_CORE_INST,
292	.clkdm_offs	  = OMAP54XX_CM_CORE_CORE_C2C_CDOFFS,
293	.wkdep_srcs	  = c2c_wkup_sleep_deps,
294	.sleepdep_srcs	  = c2c_wkup_sleep_deps,
295	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
296};
297
298static struct clockdomain l4per_54xx_clkdm = {
299	.name		  = "l4per_clkdm",
300	.pwrdm		  = { .name = "core_pwrdm" },
301	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
302	.cm_inst	  = OMAP54XX_CM_CORE_CORE_INST,
303	.clkdm_offs	  = OMAP54XX_CM_CORE_CORE_L4PER_CDOFFS,
304	.dep_bit	  = OMAP54XX_L4PER_STATDEP_SHIFT,
305	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
306};
307
308static struct clockdomain gpu_54xx_clkdm = {
309	.name		  = "gpu_clkdm",
310	.pwrdm		  = { .name = "gpu_pwrdm" },
311	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
312	.cm_inst	  = OMAP54XX_CM_CORE_GPU_INST,
313	.clkdm_offs	  = OMAP54XX_CM_CORE_GPU_GPU_CDOFFS,
314	.dep_bit	  = OMAP54XX_GPU_STATDEP_SHIFT,
315	.wkdep_srcs	  = gpu_wkup_sleep_deps,
316	.sleepdep_srcs	  = gpu_wkup_sleep_deps,
317	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
318};
319
320static struct clockdomain wkupaon_54xx_clkdm = {
321	.name		  = "wkupaon_clkdm",
322	.pwrdm		  = { .name = "wkupaon_pwrdm" },
323	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
324	.cm_inst	  = OMAP54XX_PRM_WKUPAON_CM_INST,
325	.clkdm_offs	  = OMAP54XX_PRM_WKUPAON_CM_WKUPAON_CDOFFS,
326	.dep_bit	  = OMAP54XX_WKUPAON_STATDEP_SHIFT,
327	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
328};
329
330static struct clockdomain mpu0_54xx_clkdm = {
331	.name		  = "mpu0_clkdm",
332	.pwrdm		  = { .name = "cpu0_pwrdm" },
333	.prcm_partition	  = OMAP54XX_PRCM_MPU_PARTITION,
334	.cm_inst	  = OMAP54XX_PRCM_MPU_CM_C0_INST,
335	.clkdm_offs	  = OMAP54XX_PRCM_MPU_CM_C0_CPU0_CDOFFS,
336	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
337};
338
339static struct clockdomain mpu1_54xx_clkdm = {
340	.name		  = "mpu1_clkdm",
341	.pwrdm		  = { .name = "cpu1_pwrdm" },
342	.prcm_partition	  = OMAP54XX_PRCM_MPU_PARTITION,
343	.cm_inst	  = OMAP54XX_PRCM_MPU_CM_C1_INST,
344	.clkdm_offs	  = OMAP54XX_PRCM_MPU_CM_C1_CPU1_CDOFFS,
345	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
346};
347
348static struct clockdomain coreaon_54xx_clkdm = {
349	.name		  = "coreaon_clkdm",
350	.pwrdm		  = { .name = "coreaon_pwrdm" },
351	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
352	.cm_inst	  = OMAP54XX_CM_CORE_COREAON_INST,
353	.clkdm_offs	  = OMAP54XX_CM_CORE_COREAON_COREAON_CDOFFS,
354	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
355};
356
357static struct clockdomain mpu_54xx_clkdm = {
358	.name		  = "mpu_clkdm",
359	.pwrdm		  = { .name = "mpu_pwrdm" },
360	.prcm_partition	  = OMAP54XX_CM_CORE_AON_PARTITION,
361	.cm_inst	  = OMAP54XX_CM_CORE_AON_MPU_INST,
362	.clkdm_offs	  = OMAP54XX_CM_CORE_AON_MPU_MPU_CDOFFS,
363	.wkdep_srcs	  = mpu_wkup_sleep_deps,
364	.sleepdep_srcs	  = mpu_wkup_sleep_deps,
365	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
366};
367
368static struct clockdomain l3init_54xx_clkdm = {
369	.name		  = "l3init_clkdm",
370	.pwrdm		  = { .name = "l3init_pwrdm" },
371	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
372	.cm_inst	  = OMAP54XX_CM_CORE_L3INIT_INST,
373	.clkdm_offs	  = OMAP54XX_CM_CORE_L3INIT_L3INIT_CDOFFS,
374	.dep_bit	  = OMAP54XX_L3INIT_STATDEP_SHIFT,
375	.wkdep_srcs	  = l3init_wkup_sleep_deps,
376	.sleepdep_srcs	  = l3init_wkup_sleep_deps,
377	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
378};
379
380static struct clockdomain dma_54xx_clkdm = {
381	.name		  = "dma_clkdm",
382	.pwrdm		  = { .name = "core_pwrdm" },
383	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
384	.cm_inst	  = OMAP54XX_CM_CORE_CORE_INST,
385	.clkdm_offs	  = OMAP54XX_CM_CORE_CORE_DMA_CDOFFS,
386	.wkdep_srcs	  = dma_wkup_sleep_deps,
387	.sleepdep_srcs	  = dma_wkup_sleep_deps,
388	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
389};
390
391static struct clockdomain l3instr_54xx_clkdm = {
392	.name		  = "l3instr_clkdm",
393	.pwrdm		  = { .name = "core_pwrdm" },
394	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
395	.cm_inst	  = OMAP54XX_CM_CORE_CORE_INST,
396	.clkdm_offs	  = OMAP54XX_CM_CORE_CORE_L3INSTR_CDOFFS,
397};
398
399static struct clockdomain emif_54xx_clkdm = {
400	.name		  = "emif_clkdm",
401	.pwrdm		  = { .name = "core_pwrdm" },
402	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
403	.cm_inst	  = OMAP54XX_CM_CORE_CORE_INST,
404	.clkdm_offs	  = OMAP54XX_CM_CORE_CORE_EMIF_CDOFFS,
405	.dep_bit	  = OMAP54XX_EMIF_STATDEP_SHIFT,
406	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
407};
408
409static struct clockdomain emu_54xx_clkdm = {
410	.name		  = "emu_clkdm",
411	.pwrdm		  = { .name = "emu_pwrdm" },
412	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
413	.cm_inst	  = OMAP54XX_PRM_EMU_CM_INST,
414	.clkdm_offs	  = OMAP54XX_PRM_EMU_CM_EMU_CDOFFS,
415	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
416};
417
418static struct clockdomain cam_54xx_clkdm = {
419	.name		  = "cam_clkdm",
420	.pwrdm		  = { .name = "cam_pwrdm" },
421	.prcm_partition	  = OMAP54XX_CM_CORE_PARTITION,
422	.cm_inst	  = OMAP54XX_CM_CORE_CAM_INST,
423	.clkdm_offs	  = OMAP54XX_CM_CORE_CAM_CAM_CDOFFS,
424	.wkdep_srcs	  = cam_wkup_sleep_deps,
425	.sleepdep_srcs	  = cam_wkup_sleep_deps,
426	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
427};
428
429/* As clockdomains are added or removed above, this list must also be changed */
430static struct clockdomain *clockdomains_omap54xx[] __initdata = {
431	&l4sec_54xx_clkdm,
432	&iva_54xx_clkdm,
433	&mipiext_54xx_clkdm,
434	&l3main2_54xx_clkdm,
435	&l3main1_54xx_clkdm,
436	&custefuse_54xx_clkdm,
437	&ipu_54xx_clkdm,
438	&l4cfg_54xx_clkdm,
439	&abe_54xx_clkdm,
440	&dss_54xx_clkdm,
441	&dsp_54xx_clkdm,
442	&c2c_54xx_clkdm,
443	&l4per_54xx_clkdm,
444	&gpu_54xx_clkdm,
445	&wkupaon_54xx_clkdm,
446	&mpu0_54xx_clkdm,
447	&mpu1_54xx_clkdm,
448	&coreaon_54xx_clkdm,
449	&mpu_54xx_clkdm,
450	&l3init_54xx_clkdm,
451	&dma_54xx_clkdm,
452	&l3instr_54xx_clkdm,
453	&emif_54xx_clkdm,
454	&emu_54xx_clkdm,
455	&cam_54xx_clkdm,
456	NULL
457};
458
459void __init omap54xx_clockdomains_init(void)
460{
461	clkdm_register_platform_funcs(&omap4_clkdm_operations);
462	clkdm_register_clkdms(clockdomains_omap54xx);
463	clkdm_complete_init();
464}
465