1411f968fSBenoit Cousson /*
2411f968fSBenoit Cousson  * OMAP54XX Power domains framework
3411f968fSBenoit Cousson  *
4411f968fSBenoit Cousson  * Copyright (C) 2013 Texas Instruments, Inc.
5411f968fSBenoit Cousson  *
6411f968fSBenoit Cousson  * Abhijit Pagare (abhijitpagare@ti.com)
7411f968fSBenoit Cousson  * Benoit Cousson (b-cousson@ti.com)
8411f968fSBenoit Cousson  * Paul Walmsley (paul@pwsan.com)
9411f968fSBenoit Cousson  *
10411f968fSBenoit Cousson  * This file is automatically generated from the OMAP hardware databases.
11411f968fSBenoit Cousson  * We respectfully ask that any modifications to this file be coordinated
12411f968fSBenoit Cousson  * with the public linux-omap@vger.kernel.org mailing list and the
13411f968fSBenoit Cousson  * authors above to ensure that the autogeneration scripts are kept
14411f968fSBenoit Cousson  * up-to-date with the file contents.
15411f968fSBenoit Cousson  *
16411f968fSBenoit Cousson  * This program is free software; you can redistribute it and/or modify
17411f968fSBenoit Cousson  * it under the terms of the GNU General Public License version 2 as
18411f968fSBenoit Cousson  * published by the Free Software Foundation.
19411f968fSBenoit Cousson  */
20411f968fSBenoit Cousson 
21411f968fSBenoit Cousson #include <linux/kernel.h>
22411f968fSBenoit Cousson #include <linux/init.h>
23411f968fSBenoit Cousson 
24411f968fSBenoit Cousson #include "powerdomain.h"
25411f968fSBenoit Cousson 
26411f968fSBenoit Cousson #include "prcm-common.h"
27411f968fSBenoit Cousson #include "prcm44xx.h"
28411f968fSBenoit Cousson #include "prm-regbits-54xx.h"
29411f968fSBenoit Cousson #include "prm54xx.h"
30411f968fSBenoit Cousson #include "prcm_mpu54xx.h"
31411f968fSBenoit Cousson 
32411f968fSBenoit Cousson /* core_54xx_pwrdm: CORE power domain */
33411f968fSBenoit Cousson static struct powerdomain core_54xx_pwrdm = {
34411f968fSBenoit Cousson 	.name		  = "core_pwrdm",
35411f968fSBenoit Cousson 	.voltdm		  = { .name = "core" },
36411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_CORE_INST,
37411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
38411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_RET_ON,
39411f968fSBenoit Cousson 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
40411f968fSBenoit Cousson 	.banks		  = 5,
41411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
42411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* core_nret_bank */
43411f968fSBenoit Cousson 		[1] = PWRSTS_OFF_RET,	/* core_ocmram */
44411f968fSBenoit Cousson 		[2] = PWRSTS_OFF_RET,	/* core_other_bank */
45411f968fSBenoit Cousson 		[3] = PWRSTS_OFF_RET,	/* ipu_l2ram */
46411f968fSBenoit Cousson 		[4] = PWRSTS_OFF_RET,	/* ipu_unicache */
47411f968fSBenoit Cousson 	},
48411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
49411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* core_nret_bank */
50411f968fSBenoit Cousson 		[1] = PWRSTS_OFF_RET,	/* core_ocmram */
51411f968fSBenoit Cousson 		[2] = PWRSTS_OFF_RET,	/* core_other_bank */
52411f968fSBenoit Cousson 		[3] = PWRSTS_OFF_RET,	/* ipu_l2ram */
53411f968fSBenoit Cousson 		[4] = PWRSTS_OFF_RET,	/* ipu_unicache */
54411f968fSBenoit Cousson 	},
55411f968fSBenoit Cousson 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
56411f968fSBenoit Cousson };
57411f968fSBenoit Cousson 
58411f968fSBenoit Cousson /* abe_54xx_pwrdm: Audio back end power domain */
59411f968fSBenoit Cousson static struct powerdomain abe_54xx_pwrdm = {
60411f968fSBenoit Cousson 	.name		  = "abe_pwrdm",
61411f968fSBenoit Cousson 	.voltdm		  = { .name = "core" },
62411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_ABE_INST,
63411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
64411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_OFF_RET_ON,
65411f968fSBenoit Cousson 	.pwrsts_logic_ret = PWRSTS_OFF,
66411f968fSBenoit Cousson 	.banks		  = 2,
67411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
68411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* aessmem */
69411f968fSBenoit Cousson 		[1] = PWRSTS_OFF_RET,	/* periphmem */
70411f968fSBenoit Cousson 	},
71411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
72411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* aessmem */
73411f968fSBenoit Cousson 		[1] = PWRSTS_OFF_RET,	/* periphmem */
74411f968fSBenoit Cousson 	},
75411f968fSBenoit Cousson 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
76411f968fSBenoit Cousson };
77411f968fSBenoit Cousson 
78411f968fSBenoit Cousson /* coreaon_54xx_pwrdm: Always ON logic that sits in VDD_CORE voltage domain */
79411f968fSBenoit Cousson static struct powerdomain coreaon_54xx_pwrdm = {
80411f968fSBenoit Cousson 	.name		  = "coreaon_pwrdm",
81411f968fSBenoit Cousson 	.voltdm		  = { .name = "core" },
82411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_COREAON_INST,
83411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
84411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_ON,
85411f968fSBenoit Cousson };
86411f968fSBenoit Cousson 
87411f968fSBenoit Cousson /* dss_54xx_pwrdm: Display subsystem power domain */
88411f968fSBenoit Cousson static struct powerdomain dss_54xx_pwrdm = {
89411f968fSBenoit Cousson 	.name		  = "dss_pwrdm",
90411f968fSBenoit Cousson 	.voltdm		  = { .name = "core" },
91411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_DSS_INST,
92411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
93411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_OFF_RET_ON,
94411f968fSBenoit Cousson 	.pwrsts_logic_ret = PWRSTS_OFF,
95411f968fSBenoit Cousson 	.banks		  = 1,
96411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
97411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* dss_mem */
98411f968fSBenoit Cousson 	},
99411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
100411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* dss_mem */
101411f968fSBenoit Cousson 	},
102411f968fSBenoit Cousson 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
103411f968fSBenoit Cousson };
104411f968fSBenoit Cousson 
105411f968fSBenoit Cousson /* cpu0_54xx_pwrdm: MPU0 processor and Neon coprocessor power domain */
106411f968fSBenoit Cousson static struct powerdomain cpu0_54xx_pwrdm = {
107411f968fSBenoit Cousson 	.name		  = "cpu0_pwrdm",
108411f968fSBenoit Cousson 	.voltdm		  = { .name = "mpu" },
109411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRCM_MPU_PRM_C0_INST,
110411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRCM_MPU_PARTITION,
111411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_OFF_RET_ON,
112411f968fSBenoit Cousson 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
113411f968fSBenoit Cousson 	.banks		  = 1,
114411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
115411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* cpu0_l1 */
116411f968fSBenoit Cousson 	},
117411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
118411f968fSBenoit Cousson 		[0] = PWRSTS_ON,	/* cpu0_l1 */
119411f968fSBenoit Cousson 	},
120411f968fSBenoit Cousson };
121411f968fSBenoit Cousson 
122411f968fSBenoit Cousson /* cpu1_54xx_pwrdm: MPU1 processor and Neon coprocessor power domain */
123411f968fSBenoit Cousson static struct powerdomain cpu1_54xx_pwrdm = {
124411f968fSBenoit Cousson 	.name		  = "cpu1_pwrdm",
125411f968fSBenoit Cousson 	.voltdm		  = { .name = "mpu" },
126411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRCM_MPU_PRM_C1_INST,
127411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRCM_MPU_PARTITION,
128411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_OFF_RET_ON,
129411f968fSBenoit Cousson 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
130411f968fSBenoit Cousson 	.banks		  = 1,
131411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
132411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* cpu1_l1 */
133411f968fSBenoit Cousson 	},
134411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
135411f968fSBenoit Cousson 		[0] = PWRSTS_ON,	/* cpu1_l1 */
136411f968fSBenoit Cousson 	},
137411f968fSBenoit Cousson };
138411f968fSBenoit Cousson 
139411f968fSBenoit Cousson /* emu_54xx_pwrdm: Emulation power domain */
140411f968fSBenoit Cousson static struct powerdomain emu_54xx_pwrdm = {
141411f968fSBenoit Cousson 	.name		  = "emu_pwrdm",
142411f968fSBenoit Cousson 	.voltdm		  = { .name = "wkup" },
143411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_EMU_INST,
144411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
145411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_OFF_ON,
146411f968fSBenoit Cousson 	.banks		  = 1,
147411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
148411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* emu_bank */
149411f968fSBenoit Cousson 	},
150411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
151411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* emu_bank */
152411f968fSBenoit Cousson 	},
153411f968fSBenoit Cousson };
154411f968fSBenoit Cousson 
155411f968fSBenoit Cousson /* mpu_54xx_pwrdm: Modena processor and the Neon coprocessor power domain */
156411f968fSBenoit Cousson static struct powerdomain mpu_54xx_pwrdm = {
157411f968fSBenoit Cousson 	.name		  = "mpu_pwrdm",
158411f968fSBenoit Cousson 	.voltdm		  = { .name = "mpu" },
159411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_MPU_INST,
160411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
161411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_RET_ON,
162411f968fSBenoit Cousson 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
163411f968fSBenoit Cousson 	.banks		  = 2,
164411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
165411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* mpu_l2 */
166411f968fSBenoit Cousson 		[1] = PWRSTS_RET,	/* mpu_ram */
167411f968fSBenoit Cousson 	},
168411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
169411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* mpu_l2 */
170411f968fSBenoit Cousson 		[1] = PWRSTS_OFF_RET,	/* mpu_ram */
171411f968fSBenoit Cousson 	},
172411f968fSBenoit Cousson };
173411f968fSBenoit Cousson 
174411f968fSBenoit Cousson /* custefuse_54xx_pwrdm: Customer efuse controller power domain */
175411f968fSBenoit Cousson static struct powerdomain custefuse_54xx_pwrdm = {
176411f968fSBenoit Cousson 	.name		  = "custefuse_pwrdm",
177411f968fSBenoit Cousson 	.voltdm		  = { .name = "core" },
178411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_CUSTEFUSE_INST,
179411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
180411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_OFF_ON,
181411f968fSBenoit Cousson 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
182411f968fSBenoit Cousson };
183411f968fSBenoit Cousson 
184411f968fSBenoit Cousson /* dsp_54xx_pwrdm: Tesla processor power domain */
185411f968fSBenoit Cousson static struct powerdomain dsp_54xx_pwrdm = {
186411f968fSBenoit Cousson 	.name		  = "dsp_pwrdm",
187411f968fSBenoit Cousson 	.voltdm		  = { .name = "mm" },
188411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_DSP_INST,
189411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
190411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_OFF_RET_ON,
191411f968fSBenoit Cousson 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
192411f968fSBenoit Cousson 	.banks		  = 3,
193411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
194411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* dsp_edma */
195411f968fSBenoit Cousson 		[1] = PWRSTS_OFF_RET,	/* dsp_l1 */
196411f968fSBenoit Cousson 		[2] = PWRSTS_OFF_RET,	/* dsp_l2 */
197411f968fSBenoit Cousson 	},
198411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
199411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* dsp_edma */
200411f968fSBenoit Cousson 		[1] = PWRSTS_OFF_RET,	/* dsp_l1 */
201411f968fSBenoit Cousson 		[2] = PWRSTS_OFF_RET,	/* dsp_l2 */
202411f968fSBenoit Cousson 	},
203411f968fSBenoit Cousson 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
204411f968fSBenoit Cousson };
205411f968fSBenoit Cousson 
206411f968fSBenoit Cousson /* cam_54xx_pwrdm: Camera subsystem power domain */
207411f968fSBenoit Cousson static struct powerdomain cam_54xx_pwrdm = {
208411f968fSBenoit Cousson 	.name		  = "cam_pwrdm",
209411f968fSBenoit Cousson 	.voltdm		  = { .name = "core" },
210411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_CAM_INST,
211411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
212411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_OFF_ON,
213411f968fSBenoit Cousson 	.banks		  = 1,
214411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
215411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* cam_mem */
216411f968fSBenoit Cousson 	},
217411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
218411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* cam_mem */
219411f968fSBenoit Cousson 	},
220411f968fSBenoit Cousson 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
221411f968fSBenoit Cousson };
222411f968fSBenoit Cousson 
223411f968fSBenoit Cousson /* l3init_54xx_pwrdm: L3 initators pheripherals power domain  */
224411f968fSBenoit Cousson static struct powerdomain l3init_54xx_pwrdm = {
225411f968fSBenoit Cousson 	.name		  = "l3init_pwrdm",
226411f968fSBenoit Cousson 	.voltdm		  = { .name = "core" },
227411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_L3INIT_INST,
228411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
229411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_RET_ON,
230411f968fSBenoit Cousson 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
231411f968fSBenoit Cousson 	.banks		  = 2,
232411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
233411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* l3init_bank1 */
234411f968fSBenoit Cousson 		[1] = PWRSTS_OFF_RET,	/* l3init_bank2 */
235411f968fSBenoit Cousson 	},
236411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
237411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* l3init_bank1 */
238411f968fSBenoit Cousson 		[1] = PWRSTS_OFF_RET,	/* l3init_bank2 */
239411f968fSBenoit Cousson 	},
240411f968fSBenoit Cousson 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
241411f968fSBenoit Cousson };
242411f968fSBenoit Cousson 
243411f968fSBenoit Cousson /* gpu_54xx_pwrdm: 3D accelerator power domain */
244411f968fSBenoit Cousson static struct powerdomain gpu_54xx_pwrdm = {
245411f968fSBenoit Cousson 	.name		  = "gpu_pwrdm",
246411f968fSBenoit Cousson 	.voltdm		  = { .name = "mm" },
247411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_GPU_INST,
248411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
249411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_OFF_ON,
250411f968fSBenoit Cousson 	.banks		  = 1,
251411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
252411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* gpu_mem */
253411f968fSBenoit Cousson 	},
254411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
255411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* gpu_mem */
256411f968fSBenoit Cousson 	},
257411f968fSBenoit Cousson 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
258411f968fSBenoit Cousson };
259411f968fSBenoit Cousson 
260411f968fSBenoit Cousson /* wkupaon_54xx_pwrdm: Wake-up power domain */
261411f968fSBenoit Cousson static struct powerdomain wkupaon_54xx_pwrdm = {
262411f968fSBenoit Cousson 	.name		  = "wkupaon_pwrdm",
263411f968fSBenoit Cousson 	.voltdm		  = { .name = "wkup" },
264411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_WKUPAON_INST,
265411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
266411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_ON,
267411f968fSBenoit Cousson 	.banks		  = 1,
268411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
269411f968fSBenoit Cousson 	},
270411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
271411f968fSBenoit Cousson 		[0] = PWRSTS_ON,	/* wkup_bank */
272411f968fSBenoit Cousson 	},
273411f968fSBenoit Cousson };
274411f968fSBenoit Cousson 
275411f968fSBenoit Cousson /* iva_54xx_pwrdm: IVA-HD power domain */
276411f968fSBenoit Cousson static struct powerdomain iva_54xx_pwrdm = {
277411f968fSBenoit Cousson 	.name		  = "iva_pwrdm",
278411f968fSBenoit Cousson 	.voltdm		  = { .name = "mm" },
279411f968fSBenoit Cousson 	.prcm_offs	  = OMAP54XX_PRM_IVA_INST,
280411f968fSBenoit Cousson 	.prcm_partition	  = OMAP54XX_PRM_PARTITION,
281411f968fSBenoit Cousson 	.pwrsts		  = PWRSTS_OFF_RET_ON,
282411f968fSBenoit Cousson 	.pwrsts_logic_ret = PWRSTS_OFF,
283411f968fSBenoit Cousson 	.banks		  = 4,
284411f968fSBenoit Cousson 	.pwrsts_mem_ret	= {
285411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* hwa_mem */
286411f968fSBenoit Cousson 		[1] = PWRSTS_OFF_RET,	/* sl2_mem */
287411f968fSBenoit Cousson 		[2] = PWRSTS_OFF_RET,	/* tcm1_mem */
288411f968fSBenoit Cousson 		[3] = PWRSTS_OFF_RET,	/* tcm2_mem */
289411f968fSBenoit Cousson 	},
290411f968fSBenoit Cousson 	.pwrsts_mem_on	= {
291411f968fSBenoit Cousson 		[0] = PWRSTS_OFF_RET,	/* hwa_mem */
292411f968fSBenoit Cousson 		[1] = PWRSTS_OFF_RET,	/* sl2_mem */
293411f968fSBenoit Cousson 		[2] = PWRSTS_OFF_RET,	/* tcm1_mem */
294411f968fSBenoit Cousson 		[3] = PWRSTS_OFF_RET,	/* tcm2_mem */
295411f968fSBenoit Cousson 	},
296411f968fSBenoit Cousson 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
297411f968fSBenoit Cousson };
298411f968fSBenoit Cousson 
299411f968fSBenoit Cousson /*
300411f968fSBenoit Cousson  * The following power domains are not under SW control
301411f968fSBenoit Cousson  *
302411f968fSBenoit Cousson  * mpuaon
303411f968fSBenoit Cousson  * mmaon
304411f968fSBenoit Cousson  */
305411f968fSBenoit Cousson 
306411f968fSBenoit Cousson /* As powerdomains are added or removed above, this list must also be changed */
307411f968fSBenoit Cousson static struct powerdomain *powerdomains_omap54xx[] __initdata = {
308411f968fSBenoit Cousson 	&core_54xx_pwrdm,
309411f968fSBenoit Cousson 	&abe_54xx_pwrdm,
310411f968fSBenoit Cousson 	&coreaon_54xx_pwrdm,
311411f968fSBenoit Cousson 	&dss_54xx_pwrdm,
312411f968fSBenoit Cousson 	&cpu0_54xx_pwrdm,
313411f968fSBenoit Cousson 	&cpu1_54xx_pwrdm,
314411f968fSBenoit Cousson 	&emu_54xx_pwrdm,
315411f968fSBenoit Cousson 	&mpu_54xx_pwrdm,
316411f968fSBenoit Cousson 	&custefuse_54xx_pwrdm,
317411f968fSBenoit Cousson 	&dsp_54xx_pwrdm,
318411f968fSBenoit Cousson 	&cam_54xx_pwrdm,
319411f968fSBenoit Cousson 	&l3init_54xx_pwrdm,
320411f968fSBenoit Cousson 	&gpu_54xx_pwrdm,
321411f968fSBenoit Cousson 	&wkupaon_54xx_pwrdm,
322411f968fSBenoit Cousson 	&iva_54xx_pwrdm,
323411f968fSBenoit Cousson 	NULL
324411f968fSBenoit Cousson };
325411f968fSBenoit Cousson 
326411f968fSBenoit Cousson void __init omap54xx_powerdomains_init(void)
327411f968fSBenoit Cousson {
328411f968fSBenoit Cousson 	pwrdm_register_platform_funcs(&omap4_pwrdm_operations);
329411f968fSBenoit Cousson 	pwrdm_register_pwrdms(powerdomains_omap54xx);
330411f968fSBenoit Cousson 	pwrdm_complete_init();
331411f968fSBenoit Cousson }
332