1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
26e01478aSPaul Walmsley /*
36e01478aSPaul Walmsley  * OMAP4 Power domains framework
46e01478aSPaul Walmsley  *
59a2a3603SBenoit Cousson  * Copyright (C) 2009-2011 Texas Instruments, Inc.
64cb49fecSPaul Walmsley  * Copyright (C) 2009-2011 Nokia Corporation
76e01478aSPaul Walmsley  *
86e01478aSPaul Walmsley  * Abhijit Pagare (abhijitpagare@ti.com)
96e01478aSPaul Walmsley  * Benoit Cousson (b-cousson@ti.com)
106e01478aSPaul Walmsley  * Paul Walmsley (paul@pwsan.com)
116e01478aSPaul Walmsley  *
126e01478aSPaul Walmsley  * This file is automatically generated from the OMAP hardware databases.
136e01478aSPaul Walmsley  * We respectfully ask that any modifications to this file be coordinated
146e01478aSPaul Walmsley  * with the public linux-omap@vger.kernel.org mailing list and the
156e01478aSPaul Walmsley  * authors above to ensure that the autogeneration scripts are kept
166e01478aSPaul Walmsley  * up-to-date with the file contents.
176e01478aSPaul Walmsley  */
186e01478aSPaul Walmsley 
196e01478aSPaul Walmsley #include <linux/kernel.h>
206e01478aSPaul Walmsley #include <linux/init.h>
216e01478aSPaul Walmsley 
2272e06d08SPaul Walmsley #include "powerdomain.h"
236e01478aSPaul Walmsley 
246e01478aSPaul Walmsley #include "prcm-common.h"
25a64bb9cdSPaul Walmsley #include "prcm44xx.h"
266e01478aSPaul Walmsley #include "prm-regbits-44xx.h"
27d198b514SPaul Walmsley #include "prm44xx.h"
28d198b514SPaul Walmsley #include "prcm_mpu44xx.h"
296e01478aSPaul Walmsley 
306e01478aSPaul Walmsley /* core_44xx_pwrdm: CORE power domain */
316e01478aSPaul Walmsley static struct powerdomain core_44xx_pwrdm = {
326e01478aSPaul Walmsley 	.name		  = "core_pwrdm",
337e1b9405SBenoit Cousson 	.voltdm		  = { .name = "core" },
34cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_CORE_INST,
35a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
366e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_RET_ON,
376e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
386e01478aSPaul Walmsley 	.banks		  = 5,
396e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
404cb49fecSPaul Walmsley 		[0] = PWRSTS_OFF,	/* core_nret_bank */
419a2a3603SBenoit Cousson 		[1] = PWRSTS_RET,	/* core_ocmram */
424cb49fecSPaul Walmsley 		[2] = PWRSTS_RET,	/* core_other_bank */
436e01478aSPaul Walmsley 		[3] = PWRSTS_OFF_RET,	/* ducati_l2ram */
446e01478aSPaul Walmsley 		[4] = PWRSTS_OFF_RET,	/* ducati_unicache */
456e01478aSPaul Walmsley 	},
466e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
474cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* core_nret_bank */
489a2a3603SBenoit Cousson 		[1] = PWRSTS_ON,	/* core_ocmram */
494cb49fecSPaul Walmsley 		[2] = PWRSTS_ON,	/* core_other_bank */
504cb49fecSPaul Walmsley 		[3] = PWRSTS_ON,	/* ducati_l2ram */
514cb49fecSPaul Walmsley 		[4] = PWRSTS_ON,	/* ducati_unicache */
526e01478aSPaul Walmsley 	},
536e01478aSPaul Walmsley 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
546e01478aSPaul Walmsley };
556e01478aSPaul Walmsley 
566e01478aSPaul Walmsley /* gfx_44xx_pwrdm: 3D accelerator power domain */
576e01478aSPaul Walmsley static struct powerdomain gfx_44xx_pwrdm = {
586e01478aSPaul Walmsley 	.name		  = "gfx_pwrdm",
597e1b9405SBenoit Cousson 	.voltdm		  = { .name = "core" },
60cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_GFX_INST,
61a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
626e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_ON,
636e01478aSPaul Walmsley 	.banks		  = 1,
646e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
654cb49fecSPaul Walmsley 		[0] = PWRSTS_OFF,	/* gfx_mem */
666e01478aSPaul Walmsley 	},
676e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
684cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* gfx_mem */
696e01478aSPaul Walmsley 	},
706e01478aSPaul Walmsley 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
716e01478aSPaul Walmsley };
726e01478aSPaul Walmsley 
736e01478aSPaul Walmsley /* abe_44xx_pwrdm: Audio back end power domain */
746e01478aSPaul Walmsley static struct powerdomain abe_44xx_pwrdm = {
756e01478aSPaul Walmsley 	.name		  = "abe_pwrdm",
767e1b9405SBenoit Cousson 	.voltdm		  = { .name = "iva" },
77cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_ABE_INST,
78a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
796e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
803ed4566eSSantosh Shilimkar 	.pwrsts_logic_ret = PWRSTS_OFF,
816e01478aSPaul Walmsley 	.banks		  = 2,
826e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
834cb49fecSPaul Walmsley 		[0] = PWRSTS_RET,	/* aessmem */
844cb49fecSPaul Walmsley 		[1] = PWRSTS_OFF,	/* periphmem */
856e01478aSPaul Walmsley 	},
866e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
874cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* aessmem */
884cb49fecSPaul Walmsley 		[1] = PWRSTS_ON,	/* periphmem */
896e01478aSPaul Walmsley 	},
906e01478aSPaul Walmsley 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
916e01478aSPaul Walmsley };
926e01478aSPaul Walmsley 
936e01478aSPaul Walmsley /* dss_44xx_pwrdm: Display subsystem power domain */
946e01478aSPaul Walmsley static struct powerdomain dss_44xx_pwrdm = {
956e01478aSPaul Walmsley 	.name		  = "dss_pwrdm",
967e1b9405SBenoit Cousson 	.voltdm		  = { .name = "core" },
97cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_DSS_INST,
98a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
996e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
1006e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF,
1016e01478aSPaul Walmsley 	.banks		  = 1,
1026e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1034cb49fecSPaul Walmsley 		[0] = PWRSTS_OFF,	/* dss_mem */
1046e01478aSPaul Walmsley 	},
1056e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1064cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* dss_mem */
1076e01478aSPaul Walmsley 	},
1086e01478aSPaul Walmsley 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
1096e01478aSPaul Walmsley };
1106e01478aSPaul Walmsley 
1116e01478aSPaul Walmsley /* tesla_44xx_pwrdm: Tesla processor power domain */
1126e01478aSPaul Walmsley static struct powerdomain tesla_44xx_pwrdm = {
1136e01478aSPaul Walmsley 	.name		  = "tesla_pwrdm",
1147e1b9405SBenoit Cousson 	.voltdm		  = { .name = "iva" },
115cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_TESLA_INST,
116a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
1176e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
1186e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
1196e01478aSPaul Walmsley 	.banks		  = 3,
1206e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1214cb49fecSPaul Walmsley 		[0] = PWRSTS_RET,	/* tesla_edma */
1226e01478aSPaul Walmsley 		[1] = PWRSTS_OFF_RET,	/* tesla_l1 */
1236e01478aSPaul Walmsley 		[2] = PWRSTS_OFF_RET,	/* tesla_l2 */
1246e01478aSPaul Walmsley 	},
1256e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1264cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* tesla_edma */
1274cb49fecSPaul Walmsley 		[1] = PWRSTS_ON,	/* tesla_l1 */
1284cb49fecSPaul Walmsley 		[2] = PWRSTS_ON,	/* tesla_l2 */
1296e01478aSPaul Walmsley 	},
1306e01478aSPaul Walmsley 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
1316e01478aSPaul Walmsley };
1326e01478aSPaul Walmsley 
1336e01478aSPaul Walmsley /* wkup_44xx_pwrdm: Wake-up power domain */
1346e01478aSPaul Walmsley static struct powerdomain wkup_44xx_pwrdm = {
1356e01478aSPaul Walmsley 	.name		  = "wkup_pwrdm",
1367e1b9405SBenoit Cousson 	.voltdm		  = { .name = "wakeup" },
137cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_WKUP_INST,
138a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
1396e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_ON,
1406e01478aSPaul Walmsley 	.banks		  = 1,
1416e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1424cb49fecSPaul Walmsley 		[0] = PWRSTS_OFF,	/* wkup_bank */
1436e01478aSPaul Walmsley 	},
1446e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1454cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* wkup_bank */
1466e01478aSPaul Walmsley 	},
1476e01478aSPaul Walmsley };
1486e01478aSPaul Walmsley 
1496e01478aSPaul Walmsley /* cpu0_44xx_pwrdm: MPU0 processor and Neon coprocessor power domain */
1506e01478aSPaul Walmsley static struct powerdomain cpu0_44xx_pwrdm = {
1516e01478aSPaul Walmsley 	.name		  = "cpu0_pwrdm",
1527e1b9405SBenoit Cousson 	.voltdm		  = { .name = "mpu" },
153cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRCM_MPU_CPU0_INST,
154a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRCM_MPU_PARTITION,
1556e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
1566e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
1576e01478aSPaul Walmsley 	.banks		  = 1,
1586e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1596e01478aSPaul Walmsley 		[0] = PWRSTS_OFF_RET,	/* cpu0_l1 */
1606e01478aSPaul Walmsley 	},
1616e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1624cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* cpu0_l1 */
1636e01478aSPaul Walmsley 	},
1646e01478aSPaul Walmsley };
1656e01478aSPaul Walmsley 
1666e01478aSPaul Walmsley /* cpu1_44xx_pwrdm: MPU1 processor and Neon coprocessor power domain */
1676e01478aSPaul Walmsley static struct powerdomain cpu1_44xx_pwrdm = {
1686e01478aSPaul Walmsley 	.name		  = "cpu1_pwrdm",
1697e1b9405SBenoit Cousson 	.voltdm		  = { .name = "mpu" },
170cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRCM_MPU_CPU1_INST,
171a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRCM_MPU_PARTITION,
1726e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
1736e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
1746e01478aSPaul Walmsley 	.banks		  = 1,
1756e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1766e01478aSPaul Walmsley 		[0] = PWRSTS_OFF_RET,	/* cpu1_l1 */
1776e01478aSPaul Walmsley 	},
1786e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1794cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* cpu1_l1 */
1806e01478aSPaul Walmsley 	},
1816e01478aSPaul Walmsley };
1826e01478aSPaul Walmsley 
1836e01478aSPaul Walmsley /* emu_44xx_pwrdm: Emulation power domain */
1846e01478aSPaul Walmsley static struct powerdomain emu_44xx_pwrdm = {
1856e01478aSPaul Walmsley 	.name		  = "emu_pwrdm",
1867e1b9405SBenoit Cousson 	.voltdm		  = { .name = "wakeup" },
187cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_EMU_INST,
188a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
1896e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_ON,
1906e01478aSPaul Walmsley 	.banks		  = 1,
1916e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1924cb49fecSPaul Walmsley 		[0] = PWRSTS_OFF,	/* emu_bank */
1936e01478aSPaul Walmsley 	},
1946e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1954cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* emu_bank */
1966e01478aSPaul Walmsley 	},
1976e01478aSPaul Walmsley };
1986e01478aSPaul Walmsley 
1996e01478aSPaul Walmsley /* mpu_44xx_pwrdm: Modena processor and the Neon coprocessor power domain */
2006e01478aSPaul Walmsley static struct powerdomain mpu_44xx_pwrdm = {
2016e01478aSPaul Walmsley 	.name		  = "mpu_pwrdm",
2027e1b9405SBenoit Cousson 	.voltdm		  = { .name = "mpu" },
203cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_MPU_INST,
204a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
205a57341f7SSantosh Shilimkar 	.pwrsts		  = PWRSTS_RET_ON,
2066e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
2076e01478aSPaul Walmsley 	.banks		  = 3,
2086e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
2096e01478aSPaul Walmsley 		[0] = PWRSTS_OFF_RET,	/* mpu_l1 */
2106e01478aSPaul Walmsley 		[1] = PWRSTS_OFF_RET,	/* mpu_l2 */
2114cb49fecSPaul Walmsley 		[2] = PWRSTS_RET,	/* mpu_ram */
2126e01478aSPaul Walmsley 	},
2136e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
2144cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* mpu_l1 */
2154cb49fecSPaul Walmsley 		[1] = PWRSTS_ON,	/* mpu_l2 */
2164cb49fecSPaul Walmsley 		[2] = PWRSTS_ON,	/* mpu_ram */
2176e01478aSPaul Walmsley 	},
2186e01478aSPaul Walmsley };
2196e01478aSPaul Walmsley 
2206e01478aSPaul Walmsley /* ivahd_44xx_pwrdm: IVA-HD power domain */
2216e01478aSPaul Walmsley static struct powerdomain ivahd_44xx_pwrdm = {
2226e01478aSPaul Walmsley 	.name		  = "ivahd_pwrdm",
2237e1b9405SBenoit Cousson 	.voltdm		  = { .name = "iva" },
224cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_IVAHD_INST,
225a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
2266e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
2273ed4566eSSantosh Shilimkar 	.pwrsts_logic_ret = PWRSTS_OFF,
2286e01478aSPaul Walmsley 	.banks		  = 4,
2296e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
2304cb49fecSPaul Walmsley 		[0] = PWRSTS_OFF,	/* hwa_mem */
2316e01478aSPaul Walmsley 		[1] = PWRSTS_OFF_RET,	/* sl2_mem */
2326e01478aSPaul Walmsley 		[2] = PWRSTS_OFF_RET,	/* tcm1_mem */
2336e01478aSPaul Walmsley 		[3] = PWRSTS_OFF_RET,	/* tcm2_mem */
2346e01478aSPaul Walmsley 	},
2356e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
2364cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* hwa_mem */
2374cb49fecSPaul Walmsley 		[1] = PWRSTS_ON,	/* sl2_mem */
2384cb49fecSPaul Walmsley 		[2] = PWRSTS_ON,	/* tcm1_mem */
2394cb49fecSPaul Walmsley 		[3] = PWRSTS_ON,	/* tcm2_mem */
2406e01478aSPaul Walmsley 	},
2416e01478aSPaul Walmsley 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
2426e01478aSPaul Walmsley };
2436e01478aSPaul Walmsley 
2446e01478aSPaul Walmsley /* cam_44xx_pwrdm: Camera subsystem power domain */
2456e01478aSPaul Walmsley static struct powerdomain cam_44xx_pwrdm = {
2466e01478aSPaul Walmsley 	.name		  = "cam_pwrdm",
2477e1b9405SBenoit Cousson 	.voltdm		  = { .name = "core" },
248cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_CAM_INST,
249a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
2506e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_ON,
2516e01478aSPaul Walmsley 	.banks		  = 1,
2526e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
2534cb49fecSPaul Walmsley 		[0] = PWRSTS_OFF,	/* cam_mem */
2546e01478aSPaul Walmsley 	},
2556e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
2564cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* cam_mem */
2576e01478aSPaul Walmsley 	},
2586e01478aSPaul Walmsley 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
2596e01478aSPaul Walmsley };
2606e01478aSPaul Walmsley 
2616e01478aSPaul Walmsley /* l3init_44xx_pwrdm: L3 initators pheripherals power domain  */
2626e01478aSPaul Walmsley static struct powerdomain l3init_44xx_pwrdm = {
2636e01478aSPaul Walmsley 	.name		  = "l3init_pwrdm",
2647e1b9405SBenoit Cousson 	.voltdm		  = { .name = "core" },
265cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_L3INIT_INST,
266a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
26780f09365SSantosh Shilimkar 	.pwrsts		  = PWRSTS_RET_ON,
2686e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
2696e01478aSPaul Walmsley 	.banks		  = 1,
2706e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
2714cb49fecSPaul Walmsley 		[0] = PWRSTS_OFF,	/* l3init_bank1 */
2726e01478aSPaul Walmsley 	},
2736e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
2744cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* l3init_bank1 */
2756e01478aSPaul Walmsley 	},
2766e01478aSPaul Walmsley 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
2776e01478aSPaul Walmsley };
2786e01478aSPaul Walmsley 
2796e01478aSPaul Walmsley /* l4per_44xx_pwrdm: Target peripherals power domain */
2806e01478aSPaul Walmsley static struct powerdomain l4per_44xx_pwrdm = {
2816e01478aSPaul Walmsley 	.name		  = "l4per_pwrdm",
2827e1b9405SBenoit Cousson 	.voltdm		  = { .name = "core" },
283cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_L4PER_INST,
284a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
285474e7aebSRajendra Nayak 	.pwrsts		  = PWRSTS_RET_ON,
2866e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
2876e01478aSPaul Walmsley 	.banks		  = 2,
2886e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
2894cb49fecSPaul Walmsley 		[0] = PWRSTS_OFF,	/* nonretained_bank */
2904cb49fecSPaul Walmsley 		[1] = PWRSTS_RET,	/* retained_bank */
2916e01478aSPaul Walmsley 	},
2926e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
2934cb49fecSPaul Walmsley 		[0] = PWRSTS_ON,	/* nonretained_bank */
2944cb49fecSPaul Walmsley 		[1] = PWRSTS_ON,	/* retained_bank */
2956e01478aSPaul Walmsley 	},
2966e01478aSPaul Walmsley 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
2976e01478aSPaul Walmsley };
2986e01478aSPaul Walmsley 
2996e01478aSPaul Walmsley /*
3006e01478aSPaul Walmsley  * always_on_core_44xx_pwrdm: Always ON logic that sits in VDD_CORE voltage
3016e01478aSPaul Walmsley  * domain
3026e01478aSPaul Walmsley  */
3036e01478aSPaul Walmsley static struct powerdomain always_on_core_44xx_pwrdm = {
3046e01478aSPaul Walmsley 	.name		  = "always_on_core_pwrdm",
3057e1b9405SBenoit Cousson 	.voltdm		  = { .name = "core" },
306cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_ALWAYS_ON_INST,
307a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
3086e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_ON,
3096e01478aSPaul Walmsley };
3106e01478aSPaul Walmsley 
3116e01478aSPaul Walmsley /* cefuse_44xx_pwrdm: Customer efuse controller power domain */
3126e01478aSPaul Walmsley static struct powerdomain cefuse_44xx_pwrdm = {
3136e01478aSPaul Walmsley 	.name		  = "cefuse_pwrdm",
3147e1b9405SBenoit Cousson 	.voltdm		  = { .name = "core" },
315cdb54c44SPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_CEFUSE_INST,
316a64bb9cdSPaul Walmsley 	.prcm_partition	  = OMAP4430_PRM_PARTITION,
3176e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_ON,
3189a2a3603SBenoit Cousson 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
3196e01478aSPaul Walmsley };
3206e01478aSPaul Walmsley 
3216e01478aSPaul Walmsley /*
3226e01478aSPaul Walmsley  * The following power domains are not under SW control
3236e01478aSPaul Walmsley  *
3246e01478aSPaul Walmsley  * always_on_iva
3256e01478aSPaul Walmsley  * always_on_mpu
3266e01478aSPaul Walmsley  * stdefuse
3276e01478aSPaul Walmsley  */
3286e01478aSPaul Walmsley 
3296e01478aSPaul Walmsley /* As powerdomains are added or removed above, this list must also be changed */
3306e01478aSPaul Walmsley static struct powerdomain *powerdomains_omap44xx[] __initdata = {
3316e01478aSPaul Walmsley 	&core_44xx_pwrdm,
3326e01478aSPaul Walmsley 	&gfx_44xx_pwrdm,
3336e01478aSPaul Walmsley 	&abe_44xx_pwrdm,
3346e01478aSPaul Walmsley 	&dss_44xx_pwrdm,
3356e01478aSPaul Walmsley 	&tesla_44xx_pwrdm,
3366e01478aSPaul Walmsley 	&wkup_44xx_pwrdm,
3376e01478aSPaul Walmsley 	&cpu0_44xx_pwrdm,
3386e01478aSPaul Walmsley 	&cpu1_44xx_pwrdm,
3396e01478aSPaul Walmsley 	&emu_44xx_pwrdm,
3406e01478aSPaul Walmsley 	&mpu_44xx_pwrdm,
3416e01478aSPaul Walmsley 	&ivahd_44xx_pwrdm,
3426e01478aSPaul Walmsley 	&cam_44xx_pwrdm,
3436e01478aSPaul Walmsley 	&l3init_44xx_pwrdm,
3446e01478aSPaul Walmsley 	&l4per_44xx_pwrdm,
3456e01478aSPaul Walmsley 	&always_on_core_44xx_pwrdm,
3466e01478aSPaul Walmsley 	&cefuse_44xx_pwrdm,
3476e01478aSPaul Walmsley 	NULL
3486e01478aSPaul Walmsley };
3496e01478aSPaul Walmsley 
omap44xx_powerdomains_init(void)3506e01478aSPaul Walmsley void __init omap44xx_powerdomains_init(void)
3516e01478aSPaul Walmsley {
352129c65eeSPaul Walmsley 	pwrdm_register_platform_funcs(&omap4_pwrdm_operations);
353129c65eeSPaul Walmsley 	pwrdm_register_pwrdms(powerdomains_omap44xx);
354129c65eeSPaul Walmsley 	pwrdm_complete_init();
3556e01478aSPaul Walmsley }
356