16e01478aSPaul Walmsley /*
26e01478aSPaul Walmsley  * OMAP4 Power domains framework
36e01478aSPaul Walmsley  *
46e01478aSPaul Walmsley  * Copyright (C) 2009-2010 Texas Instruments, Inc.
56e01478aSPaul Walmsley  * Copyright (C) 2009-2010 Nokia Corporation
66e01478aSPaul Walmsley  *
76e01478aSPaul Walmsley  * Abhijit Pagare (abhijitpagare@ti.com)
86e01478aSPaul Walmsley  * Benoit Cousson (b-cousson@ti.com)
96e01478aSPaul Walmsley  * Paul Walmsley (paul@pwsan.com)
106e01478aSPaul Walmsley  *
116e01478aSPaul Walmsley  * This file is automatically generated from the OMAP hardware databases.
126e01478aSPaul Walmsley  * We respectfully ask that any modifications to this file be coordinated
136e01478aSPaul Walmsley  * with the public linux-omap@vger.kernel.org mailing list and the
146e01478aSPaul Walmsley  * authors above to ensure that the autogeneration scripts are kept
156e01478aSPaul Walmsley  * up-to-date with the file contents.
166e01478aSPaul Walmsley  *
176e01478aSPaul Walmsley  * This program is free software; you can redistribute it and/or modify
186e01478aSPaul Walmsley  * it under the terms of the GNU General Public License version 2 as
196e01478aSPaul Walmsley  * published by the Free Software Foundation.
206e01478aSPaul Walmsley  */
216e01478aSPaul Walmsley 
226e01478aSPaul Walmsley #include <linux/kernel.h>
236e01478aSPaul Walmsley #include <linux/init.h>
246e01478aSPaul Walmsley 
256e01478aSPaul Walmsley #include <plat/powerdomain.h>
266e01478aSPaul Walmsley #include "powerdomains.h"
276e01478aSPaul Walmsley 
286e01478aSPaul Walmsley #include "prcm-common.h"
296e01478aSPaul Walmsley #include "prm.h"
306e01478aSPaul Walmsley #include "prm-regbits-44xx.h"
31d198b514SPaul Walmsley #include "prm44xx.h"
32d198b514SPaul Walmsley #include "prcm_mpu44xx.h"
336e01478aSPaul Walmsley 
346e01478aSPaul Walmsley /* core_44xx_pwrdm: CORE power domain */
356e01478aSPaul Walmsley static struct powerdomain core_44xx_pwrdm = {
366e01478aSPaul Walmsley 	.name		  = "core_pwrdm",
376e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_CORE_MOD,
386e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
396e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_RET_ON,
406e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
416e01478aSPaul Walmsley 	.banks		  = 5,
426e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
436e01478aSPaul Walmsley 		[0] = PWRDM_POWER_OFF,	/* core_nret_bank */
446e01478aSPaul Walmsley 		[1] = PWRSTS_OFF_RET,	/* core_ocmram */
456e01478aSPaul Walmsley 		[2] = PWRDM_POWER_RET,	/* core_other_bank */
466e01478aSPaul Walmsley 		[3] = PWRSTS_OFF_RET,	/* ducati_l2ram */
476e01478aSPaul Walmsley 		[4] = PWRSTS_OFF_RET,	/* ducati_unicache */
486e01478aSPaul Walmsley 	},
496e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
506e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* core_nret_bank */
516e01478aSPaul Walmsley 		[1] = PWRSTS_OFF_RET,	/* core_ocmram */
526e01478aSPaul Walmsley 		[2] = PWRDM_POWER_ON,	/* core_other_bank */
536e01478aSPaul Walmsley 		[3] = PWRDM_POWER_ON,	/* ducati_l2ram */
546e01478aSPaul Walmsley 		[4] = PWRDM_POWER_ON,	/* ducati_unicache */
556e01478aSPaul Walmsley 	},
566e01478aSPaul Walmsley 	.flags		= PWRDM_HAS_LOWPOWERSTATECHANGE,
576e01478aSPaul Walmsley };
586e01478aSPaul Walmsley 
596e01478aSPaul Walmsley /* gfx_44xx_pwrdm: 3D accelerator power domain */
606e01478aSPaul Walmsley static struct powerdomain gfx_44xx_pwrdm = {
616e01478aSPaul Walmsley 	.name		  = "gfx_pwrdm",
626e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_GFX_MOD,
636e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
646e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_ON,
656e01478aSPaul Walmsley 	.banks		  = 1,
666e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
676e01478aSPaul Walmsley 		[0] = PWRDM_POWER_OFF,	/* gfx_mem */
686e01478aSPaul Walmsley 	},
696e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
706e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* gfx_mem */
716e01478aSPaul Walmsley 	},
726e01478aSPaul Walmsley 	.flags		= PWRDM_HAS_LOWPOWERSTATECHANGE,
736e01478aSPaul Walmsley };
746e01478aSPaul Walmsley 
756e01478aSPaul Walmsley /* abe_44xx_pwrdm: Audio back end power domain */
766e01478aSPaul Walmsley static struct powerdomain abe_44xx_pwrdm = {
776e01478aSPaul Walmsley 	.name		  = "abe_pwrdm",
786e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_ABE_MOD,
796e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
806e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
816e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRDM_POWER_OFF,
826e01478aSPaul Walmsley 	.banks		  = 2,
836e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
846e01478aSPaul Walmsley 		[0] = PWRDM_POWER_RET,	/* aessmem */
856e01478aSPaul Walmsley 		[1] = PWRDM_POWER_OFF,	/* periphmem */
866e01478aSPaul Walmsley 	},
876e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
886e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* aessmem */
896e01478aSPaul Walmsley 		[1] = PWRDM_POWER_ON,	/* periphmem */
906e01478aSPaul Walmsley 	},
916e01478aSPaul Walmsley 	.flags		= PWRDM_HAS_LOWPOWERSTATECHANGE,
926e01478aSPaul Walmsley };
936e01478aSPaul Walmsley 
946e01478aSPaul Walmsley /* dss_44xx_pwrdm: Display subsystem power domain */
956e01478aSPaul Walmsley static struct powerdomain dss_44xx_pwrdm = {
966e01478aSPaul Walmsley 	.name		  = "dss_pwrdm",
976e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_DSS_MOD,
986e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
996e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
1006e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF,
1016e01478aSPaul Walmsley 	.banks		  = 1,
1026e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1036e01478aSPaul Walmsley 		[0] = PWRDM_POWER_OFF,	/* dss_mem */
1046e01478aSPaul Walmsley 	},
1056e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1066e01478aSPaul Walmsley 		[0] = PWRDM_POWER_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",
1146e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_TESLA_MOD,
1156e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1166e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
1176e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
1186e01478aSPaul Walmsley 	.banks		  = 3,
1196e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1206e01478aSPaul Walmsley 		[0] = PWRDM_POWER_RET,	/* tesla_edma */
1216e01478aSPaul Walmsley 		[1] = PWRSTS_OFF_RET,	/* tesla_l1 */
1226e01478aSPaul Walmsley 		[2] = PWRSTS_OFF_RET,	/* tesla_l2 */
1236e01478aSPaul Walmsley 	},
1246e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1256e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* tesla_edma */
1266e01478aSPaul Walmsley 		[1] = PWRDM_POWER_ON,	/* tesla_l1 */
1276e01478aSPaul Walmsley 		[2] = PWRDM_POWER_ON,	/* tesla_l2 */
1286e01478aSPaul Walmsley 	},
1296e01478aSPaul Walmsley 	.flags		= PWRDM_HAS_LOWPOWERSTATECHANGE,
1306e01478aSPaul Walmsley };
1316e01478aSPaul Walmsley 
1326e01478aSPaul Walmsley /* wkup_44xx_pwrdm: Wake-up power domain */
1336e01478aSPaul Walmsley static struct powerdomain wkup_44xx_pwrdm = {
1346e01478aSPaul Walmsley 	.name		  = "wkup_pwrdm",
1356e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_WKUP_MOD,
1366e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1376e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_ON,
1386e01478aSPaul Walmsley 	.banks		  = 1,
1396e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1406e01478aSPaul Walmsley 		[0] = PWRDM_POWER_OFF,	/* wkup_bank */
1416e01478aSPaul Walmsley 	},
1426e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1436e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* wkup_bank */
1446e01478aSPaul Walmsley 	},
1456e01478aSPaul Walmsley };
1466e01478aSPaul Walmsley 
1476e01478aSPaul Walmsley /* cpu0_44xx_pwrdm: MPU0 processor and Neon coprocessor power domain */
1486e01478aSPaul Walmsley static struct powerdomain cpu0_44xx_pwrdm = {
1496e01478aSPaul Walmsley 	.name		  = "cpu0_pwrdm",
1506e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRCM_MPU_CPU0_MOD,
1516e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1526e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
1536e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
1546e01478aSPaul Walmsley 	.banks		  = 1,
1556e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1566e01478aSPaul Walmsley 		[0] = PWRSTS_OFF_RET,	/* cpu0_l1 */
1576e01478aSPaul Walmsley 	},
1586e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1596e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* cpu0_l1 */
1606e01478aSPaul Walmsley 	},
1616e01478aSPaul Walmsley };
1626e01478aSPaul Walmsley 
1636e01478aSPaul Walmsley /* cpu1_44xx_pwrdm: MPU1 processor and Neon coprocessor power domain */
1646e01478aSPaul Walmsley static struct powerdomain cpu1_44xx_pwrdm = {
1656e01478aSPaul Walmsley 	.name		  = "cpu1_pwrdm",
1666e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRCM_MPU_CPU1_MOD,
1676e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1686e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
1696e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
1706e01478aSPaul Walmsley 	.banks		  = 1,
1716e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1726e01478aSPaul Walmsley 		[0] = PWRSTS_OFF_RET,	/* cpu1_l1 */
1736e01478aSPaul Walmsley 	},
1746e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1756e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* cpu1_l1 */
1766e01478aSPaul Walmsley 	},
1776e01478aSPaul Walmsley };
1786e01478aSPaul Walmsley 
1796e01478aSPaul Walmsley /* emu_44xx_pwrdm: Emulation power domain */
1806e01478aSPaul Walmsley static struct powerdomain emu_44xx_pwrdm = {
1816e01478aSPaul Walmsley 	.name		  = "emu_pwrdm",
1826e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_EMU_MOD,
1836e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1846e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_ON,
1856e01478aSPaul Walmsley 	.banks		  = 1,
1866e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
1876e01478aSPaul Walmsley 		[0] = PWRDM_POWER_OFF,	/* emu_bank */
1886e01478aSPaul Walmsley 	},
1896e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
1906e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* emu_bank */
1916e01478aSPaul Walmsley 	},
1926e01478aSPaul Walmsley };
1936e01478aSPaul Walmsley 
1946e01478aSPaul Walmsley /* mpu_44xx_pwrdm: Modena processor and the Neon coprocessor power domain */
1956e01478aSPaul Walmsley static struct powerdomain mpu_44xx_pwrdm = {
1966e01478aSPaul Walmsley 	.name		  = "mpu_pwrdm",
1976e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_MPU_MOD,
1986e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1996e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
2006e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
2016e01478aSPaul Walmsley 	.banks		  = 3,
2026e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
2036e01478aSPaul Walmsley 		[0] = PWRSTS_OFF_RET,	/* mpu_l1 */
2046e01478aSPaul Walmsley 		[1] = PWRSTS_OFF_RET,	/* mpu_l2 */
2056e01478aSPaul Walmsley 		[2] = PWRDM_POWER_RET,	/* mpu_ram */
2066e01478aSPaul Walmsley 	},
2076e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
2086e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* mpu_l1 */
2096e01478aSPaul Walmsley 		[1] = PWRDM_POWER_ON,	/* mpu_l2 */
2106e01478aSPaul Walmsley 		[2] = PWRDM_POWER_ON,	/* mpu_ram */
2116e01478aSPaul Walmsley 	},
2126e01478aSPaul Walmsley };
2136e01478aSPaul Walmsley 
2146e01478aSPaul Walmsley /* ivahd_44xx_pwrdm: IVA-HD power domain */
2156e01478aSPaul Walmsley static struct powerdomain ivahd_44xx_pwrdm = {
2166e01478aSPaul Walmsley 	.name		  = "ivahd_pwrdm",
2176e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_IVAHD_MOD,
2186e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2196e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
2206e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRDM_POWER_OFF,
2216e01478aSPaul Walmsley 	.banks		  = 4,
2226e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
2236e01478aSPaul Walmsley 		[0] = PWRDM_POWER_OFF,	/* hwa_mem */
2246e01478aSPaul Walmsley 		[1] = PWRSTS_OFF_RET,	/* sl2_mem */
2256e01478aSPaul Walmsley 		[2] = PWRSTS_OFF_RET,	/* tcm1_mem */
2266e01478aSPaul Walmsley 		[3] = PWRSTS_OFF_RET,	/* tcm2_mem */
2276e01478aSPaul Walmsley 	},
2286e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
2296e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* hwa_mem */
2306e01478aSPaul Walmsley 		[1] = PWRDM_POWER_ON,	/* sl2_mem */
2316e01478aSPaul Walmsley 		[2] = PWRDM_POWER_ON,	/* tcm1_mem */
2326e01478aSPaul Walmsley 		[3] = PWRDM_POWER_ON,	/* tcm2_mem */
2336e01478aSPaul Walmsley 	},
2346e01478aSPaul Walmsley 	.flags		= PWRDM_HAS_LOWPOWERSTATECHANGE,
2356e01478aSPaul Walmsley };
2366e01478aSPaul Walmsley 
2376e01478aSPaul Walmsley /* cam_44xx_pwrdm: Camera subsystem power domain */
2386e01478aSPaul Walmsley static struct powerdomain cam_44xx_pwrdm = {
2396e01478aSPaul Walmsley 	.name		  = "cam_pwrdm",
2406e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_CAM_MOD,
2416e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2426e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_ON,
2436e01478aSPaul Walmsley 	.banks		  = 1,
2446e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
2456e01478aSPaul Walmsley 		[0] = PWRDM_POWER_OFF,	/* cam_mem */
2466e01478aSPaul Walmsley 	},
2476e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
2486e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* cam_mem */
2496e01478aSPaul Walmsley 	},
2506e01478aSPaul Walmsley 	.flags		= PWRDM_HAS_LOWPOWERSTATECHANGE,
2516e01478aSPaul Walmsley };
2526e01478aSPaul Walmsley 
2536e01478aSPaul Walmsley /* l3init_44xx_pwrdm: L3 initators pheripherals power domain  */
2546e01478aSPaul Walmsley static struct powerdomain l3init_44xx_pwrdm = {
2556e01478aSPaul Walmsley 	.name		  = "l3init_pwrdm",
2566e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_L3INIT_MOD,
2576e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2586e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
2596e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
2606e01478aSPaul Walmsley 	.banks		  = 1,
2616e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
2626e01478aSPaul Walmsley 		[0] = PWRDM_POWER_OFF,	/* l3init_bank1 */
2636e01478aSPaul Walmsley 	},
2646e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
2656e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* l3init_bank1 */
2666e01478aSPaul Walmsley 	},
2676e01478aSPaul Walmsley 	.flags		= PWRDM_HAS_LOWPOWERSTATECHANGE,
2686e01478aSPaul Walmsley };
2696e01478aSPaul Walmsley 
2706e01478aSPaul Walmsley /* l4per_44xx_pwrdm: Target peripherals power domain */
2716e01478aSPaul Walmsley static struct powerdomain l4per_44xx_pwrdm = {
2726e01478aSPaul Walmsley 	.name		  = "l4per_pwrdm",
2736e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_L4PER_MOD,
2746e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2756e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_RET_ON,
2766e01478aSPaul Walmsley 	.pwrsts_logic_ret = PWRSTS_OFF_RET,
2776e01478aSPaul Walmsley 	.banks		  = 2,
2786e01478aSPaul Walmsley 	.pwrsts_mem_ret	= {
2796e01478aSPaul Walmsley 		[0] = PWRDM_POWER_OFF,	/* nonretained_bank */
2806e01478aSPaul Walmsley 		[1] = PWRDM_POWER_RET,	/* retained_bank */
2816e01478aSPaul Walmsley 	},
2826e01478aSPaul Walmsley 	.pwrsts_mem_on	= {
2836e01478aSPaul Walmsley 		[0] = PWRDM_POWER_ON,	/* nonretained_bank */
2846e01478aSPaul Walmsley 		[1] = PWRDM_POWER_ON,	/* retained_bank */
2856e01478aSPaul Walmsley 	},
2866e01478aSPaul Walmsley 	.flags		= PWRDM_HAS_LOWPOWERSTATECHANGE,
2876e01478aSPaul Walmsley };
2886e01478aSPaul Walmsley 
2896e01478aSPaul Walmsley /*
2906e01478aSPaul Walmsley  * always_on_core_44xx_pwrdm: Always ON logic that sits in VDD_CORE voltage
2916e01478aSPaul Walmsley  * domain
2926e01478aSPaul Walmsley  */
2936e01478aSPaul Walmsley static struct powerdomain always_on_core_44xx_pwrdm = {
2946e01478aSPaul Walmsley 	.name		  = "always_on_core_pwrdm",
2956e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_ALWAYS_ON_MOD,
2966e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2976e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_ON,
2986e01478aSPaul Walmsley };
2996e01478aSPaul Walmsley 
3006e01478aSPaul Walmsley /* cefuse_44xx_pwrdm: Customer efuse controller power domain */
3016e01478aSPaul Walmsley static struct powerdomain cefuse_44xx_pwrdm = {
3026e01478aSPaul Walmsley 	.name		  = "cefuse_pwrdm",
3036e01478aSPaul Walmsley 	.prcm_offs	  = OMAP4430_PRM_CEFUSE_MOD,
3046e01478aSPaul Walmsley 	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3056e01478aSPaul Walmsley 	.pwrsts		  = PWRSTS_OFF_ON,
3066e01478aSPaul Walmsley };
3076e01478aSPaul Walmsley 
3086e01478aSPaul Walmsley /*
3096e01478aSPaul Walmsley  * The following power domains are not under SW control
3106e01478aSPaul Walmsley  *
3116e01478aSPaul Walmsley  * always_on_iva
3126e01478aSPaul Walmsley  * always_on_mpu
3136e01478aSPaul Walmsley  * stdefuse
3146e01478aSPaul Walmsley  */
3156e01478aSPaul Walmsley 
3166e01478aSPaul Walmsley /* As powerdomains are added or removed above, this list must also be changed */
3176e01478aSPaul Walmsley static struct powerdomain *powerdomains_omap44xx[] __initdata = {
3186e01478aSPaul Walmsley 	&core_44xx_pwrdm,
3196e01478aSPaul Walmsley 	&gfx_44xx_pwrdm,
3206e01478aSPaul Walmsley 	&abe_44xx_pwrdm,
3216e01478aSPaul Walmsley 	&dss_44xx_pwrdm,
3226e01478aSPaul Walmsley 	&tesla_44xx_pwrdm,
3236e01478aSPaul Walmsley 	&wkup_44xx_pwrdm,
3246e01478aSPaul Walmsley 	&cpu0_44xx_pwrdm,
3256e01478aSPaul Walmsley 	&cpu1_44xx_pwrdm,
3266e01478aSPaul Walmsley 	&emu_44xx_pwrdm,
3276e01478aSPaul Walmsley 	&mpu_44xx_pwrdm,
3286e01478aSPaul Walmsley 	&ivahd_44xx_pwrdm,
3296e01478aSPaul Walmsley 	&cam_44xx_pwrdm,
3306e01478aSPaul Walmsley 	&l3init_44xx_pwrdm,
3316e01478aSPaul Walmsley 	&l4per_44xx_pwrdm,
3326e01478aSPaul Walmsley 	&always_on_core_44xx_pwrdm,
3336e01478aSPaul Walmsley 	&cefuse_44xx_pwrdm,
3346e01478aSPaul Walmsley 	NULL
3356e01478aSPaul Walmsley };
3366e01478aSPaul Walmsley 
3376e01478aSPaul Walmsley void __init omap44xx_powerdomains_init(void)
3386e01478aSPaul Walmsley {
3396e01478aSPaul Walmsley 	pwrdm_init(powerdomains_omap44xx, &omap4_pwrdm_operations);
3406e01478aSPaul Walmsley }
341