1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
297dd16b1SAmbresh K /*
397dd16b1SAmbresh K  * DRA7xx Power domains framework
497dd16b1SAmbresh K  *
597dd16b1SAmbresh K  * Copyright (C) 2009-2013 Texas Instruments, Inc.
697dd16b1SAmbresh K  * Copyright (C) 2009-2011 Nokia Corporation
797dd16b1SAmbresh K  *
897dd16b1SAmbresh K  * Generated by code originally written by:
997dd16b1SAmbresh K  * Abhijit Pagare (abhijitpagare@ti.com)
1097dd16b1SAmbresh K  * Benoit Cousson (b-cousson@ti.com)
1197dd16b1SAmbresh K  * Paul Walmsley (paul@pwsan.com)
1297dd16b1SAmbresh K  *
1397dd16b1SAmbresh K  * This file is automatically generated from the OMAP hardware databases.
1497dd16b1SAmbresh K  * We respectfully ask that any modifications to this file be coordinated
1597dd16b1SAmbresh K  * with the public linux-omap@vger.kernel.org mailing list and the
1697dd16b1SAmbresh K  * authors above to ensure that the autogeneration scripts are kept
1797dd16b1SAmbresh K  * up-to-date with the file contents.
1897dd16b1SAmbresh K  */
1997dd16b1SAmbresh K 
2097dd16b1SAmbresh K #include <linux/kernel.h>
2197dd16b1SAmbresh K #include <linux/init.h>
2297dd16b1SAmbresh K 
2397dd16b1SAmbresh K #include "powerdomain.h"
2497dd16b1SAmbresh K 
2597dd16b1SAmbresh K #include "prcm-common.h"
2697dd16b1SAmbresh K #include "prcm44xx.h"
2797dd16b1SAmbresh K #include "prm7xx.h"
2897dd16b1SAmbresh K #include "prcm_mpu7xx.h"
293af6ccc3SLokesh Vutla #include "soc.h"
3097dd16b1SAmbresh K 
3197dd16b1SAmbresh K /* iva_7xx_pwrdm: IVA-HD power domain */
3297dd16b1SAmbresh K static struct powerdomain iva_7xx_pwrdm = {
3397dd16b1SAmbresh K 	.name		  = "iva_pwrdm",
3497dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_IVA_INST,
3597dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
36dac4fba2SNishanth Menon 	.pwrsts		  = PWRSTS_OFF_ON,
3797dd16b1SAmbresh K 	.banks		  = 4,
3897dd16b1SAmbresh K 	.pwrsts_mem_on	= {
3941feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* hwa_mem */
4041feb8efSNishanth Menon 		[1] = PWRSTS_ON,	/* sl2_mem */
4141feb8efSNishanth Menon 		[2] = PWRSTS_ON,	/* tcm1_mem */
4241feb8efSNishanth Menon 		[3] = PWRSTS_ON,	/* tcm2_mem */
4397dd16b1SAmbresh K 	},
4497dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
4597dd16b1SAmbresh K };
4697dd16b1SAmbresh K 
4797dd16b1SAmbresh K /* rtc_7xx_pwrdm:  */
4897dd16b1SAmbresh K static struct powerdomain rtc_7xx_pwrdm = {
4997dd16b1SAmbresh K 	.name		  = "rtc_pwrdm",
5097dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_RTC_INST,
5197dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
5297dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_ON,
5397dd16b1SAmbresh K };
5497dd16b1SAmbresh K 
5597dd16b1SAmbresh K /* custefuse_7xx_pwrdm: Customer efuse controller power domain */
5697dd16b1SAmbresh K static struct powerdomain custefuse_7xx_pwrdm = {
5797dd16b1SAmbresh K 	.name		  = "custefuse_pwrdm",
5897dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_CUSTEFUSE_INST,
5997dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
6097dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_OFF_ON,
6197dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
6297dd16b1SAmbresh K };
6397dd16b1SAmbresh K 
643af6ccc3SLokesh Vutla /* custefuse_aon_7xx_pwrdm: Customer efuse controller power domain */
653af6ccc3SLokesh Vutla static struct powerdomain custefuse_aon_7xx_pwrdm = {
663af6ccc3SLokesh Vutla 	.name		  = "custefuse_pwrdm",
673af6ccc3SLokesh Vutla 	.prcm_offs	  = DRA7XX_PRM_CUSTEFUSE_INST,
683af6ccc3SLokesh Vutla 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
693af6ccc3SLokesh Vutla 	.pwrsts		  = PWRSTS_ON,
703af6ccc3SLokesh Vutla };
713af6ccc3SLokesh Vutla 
7297dd16b1SAmbresh K /* ipu_7xx_pwrdm: Audio back end power domain */
7397dd16b1SAmbresh K static struct powerdomain ipu_7xx_pwrdm = {
7497dd16b1SAmbresh K 	.name		  = "ipu_pwrdm",
7597dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_IPU_INST,
7697dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
77dac4fba2SNishanth Menon 	.pwrsts		  = PWRSTS_OFF_ON,
7897dd16b1SAmbresh K 	.banks		  = 2,
7997dd16b1SAmbresh K 	.pwrsts_mem_on	= {
8041feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* aessmem */
8141feb8efSNishanth Menon 		[1] = PWRSTS_ON,	/* periphmem */
8297dd16b1SAmbresh K 	},
8397dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
8497dd16b1SAmbresh K };
8597dd16b1SAmbresh K 
8697dd16b1SAmbresh K /* dss_7xx_pwrdm: Display subsystem power domain */
8797dd16b1SAmbresh K static struct powerdomain dss_7xx_pwrdm = {
8897dd16b1SAmbresh K 	.name		  = "dss_pwrdm",
8997dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_DSS_INST,
9097dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
91dac4fba2SNishanth Menon 	.pwrsts		  = PWRSTS_OFF_ON,
9297dd16b1SAmbresh K 	.banks		  = 1,
9397dd16b1SAmbresh K 	.pwrsts_mem_on	= {
9441feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* dss_mem */
9597dd16b1SAmbresh K 	},
9697dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
9797dd16b1SAmbresh K };
9897dd16b1SAmbresh K 
9997dd16b1SAmbresh K /* l4per_7xx_pwrdm: Target peripherals power domain */
10097dd16b1SAmbresh K static struct powerdomain l4per_7xx_pwrdm = {
10197dd16b1SAmbresh K 	.name		  = "l4per_pwrdm",
10297dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_L4PER_INST,
10397dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
104d16c0d72SNishanth Menon 	.pwrsts		  = PWRSTS_ON,
10597dd16b1SAmbresh K 	.banks		  = 2,
10697dd16b1SAmbresh K 	.pwrsts_mem_on	= {
10741feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* nonretained_bank */
10841feb8efSNishanth Menon 		[1] = PWRSTS_ON,	/* retained_bank */
10997dd16b1SAmbresh K 	},
11097dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
11197dd16b1SAmbresh K };
11297dd16b1SAmbresh K 
11397dd16b1SAmbresh K /* gpu_7xx_pwrdm: 3D accelerator power domain */
11497dd16b1SAmbresh K static struct powerdomain gpu_7xx_pwrdm = {
11597dd16b1SAmbresh K 	.name		  = "gpu_pwrdm",
11697dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_GPU_INST,
11797dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
11897dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_OFF_ON,
11997dd16b1SAmbresh K 	.banks		  = 1,
12097dd16b1SAmbresh K 	.pwrsts_mem_on	= {
12141feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* gpu_mem */
12297dd16b1SAmbresh K 	},
12397dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
12497dd16b1SAmbresh K };
12597dd16b1SAmbresh K 
12697dd16b1SAmbresh K /* wkupaon_7xx_pwrdm: Wake-up power domain */
12797dd16b1SAmbresh K static struct powerdomain wkupaon_7xx_pwrdm = {
12897dd16b1SAmbresh K 	.name		  = "wkupaon_pwrdm",
12997dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_WKUPAON_INST,
13097dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
13197dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_ON,
13297dd16b1SAmbresh K 	.banks		  = 1,
13397dd16b1SAmbresh K 	.pwrsts_mem_on	= {
13497dd16b1SAmbresh K 		[0] = PWRSTS_ON,	/* wkup_bank */
13597dd16b1SAmbresh K 	},
13697dd16b1SAmbresh K };
13797dd16b1SAmbresh K 
13897dd16b1SAmbresh K /* core_7xx_pwrdm: CORE power domain */
13997dd16b1SAmbresh K static struct powerdomain core_7xx_pwrdm = {
14097dd16b1SAmbresh K 	.name		  = "core_pwrdm",
14197dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_CORE_INST,
14297dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
143f971512cSNishanth Menon 	.pwrsts		  = PWRSTS_ON,
14497dd16b1SAmbresh K 	.banks		  = 5,
14597dd16b1SAmbresh K 	.pwrsts_mem_on	= {
14641feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* core_nret_bank */
14741feb8efSNishanth Menon 		[1] = PWRSTS_ON,	/* core_ocmram */
14841feb8efSNishanth Menon 		[2] = PWRSTS_ON,	/* core_other_bank */
14941feb8efSNishanth Menon 		[3] = PWRSTS_ON,	/* ipu_l2ram */
15041feb8efSNishanth Menon 		[4] = PWRSTS_ON,	/* ipu_unicache */
15197dd16b1SAmbresh K 	},
15297dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
15397dd16b1SAmbresh K };
15497dd16b1SAmbresh K 
15597dd16b1SAmbresh K /* coreaon_7xx_pwrdm: Always ON logic that sits in VDD_CORE voltage domain */
15697dd16b1SAmbresh K static struct powerdomain coreaon_7xx_pwrdm = {
15797dd16b1SAmbresh K 	.name		  = "coreaon_pwrdm",
15897dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_COREAON_INST,
15997dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
16097dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_ON,
16197dd16b1SAmbresh K };
16297dd16b1SAmbresh K 
16397dd16b1SAmbresh K /* cpu0_7xx_pwrdm: MPU0 processor and Neon coprocessor power domain */
16497dd16b1SAmbresh K static struct powerdomain cpu0_7xx_pwrdm = {
16597dd16b1SAmbresh K 	.name		  = "cpu0_pwrdm",
16697dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_MPU_PRCM_PRM_C0_INST,
16797dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_MPU_PRCM_PARTITION,
168cafc8cb5SNishanth Menon 	.pwrsts		  = PWRSTS_RET_ON,
169cafc8cb5SNishanth Menon 	.pwrsts_logic_ret = PWRSTS_RET,
17097dd16b1SAmbresh K 	.banks		  = 1,
17197dd16b1SAmbresh K 	.pwrsts_mem_ret	= {
17297dd16b1SAmbresh K 		[0] = PWRSTS_OFF_RET,	/* cpu0_l1 */
17397dd16b1SAmbresh K 	},
17497dd16b1SAmbresh K 	.pwrsts_mem_on	= {
17597dd16b1SAmbresh K 		[0] = PWRSTS_ON,	/* cpu0_l1 */
17697dd16b1SAmbresh K 	},
17797dd16b1SAmbresh K };
17897dd16b1SAmbresh K 
17997dd16b1SAmbresh K /* cpu1_7xx_pwrdm: MPU1 processor and Neon coprocessor power domain */
18097dd16b1SAmbresh K static struct powerdomain cpu1_7xx_pwrdm = {
18197dd16b1SAmbresh K 	.name		  = "cpu1_pwrdm",
18297dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_MPU_PRCM_PRM_C1_INST,
18397dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_MPU_PRCM_PARTITION,
184cafc8cb5SNishanth Menon 	.pwrsts		  = PWRSTS_RET_ON,
185cafc8cb5SNishanth Menon 	.pwrsts_logic_ret = PWRSTS_RET,
18697dd16b1SAmbresh K 	.banks		  = 1,
18797dd16b1SAmbresh K 	.pwrsts_mem_ret	= {
18897dd16b1SAmbresh K 		[0] = PWRSTS_OFF_RET,	/* cpu1_l1 */
18997dd16b1SAmbresh K 	},
19097dd16b1SAmbresh K 	.pwrsts_mem_on	= {
19197dd16b1SAmbresh K 		[0] = PWRSTS_ON,	/* cpu1_l1 */
19297dd16b1SAmbresh K 	},
19397dd16b1SAmbresh K };
19497dd16b1SAmbresh K 
19597dd16b1SAmbresh K /* vpe_7xx_pwrdm:  */
19697dd16b1SAmbresh K static struct powerdomain vpe_7xx_pwrdm = {
19797dd16b1SAmbresh K 	.name		  = "vpe_pwrdm",
19897dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_VPE_INST,
19997dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
200dac4fba2SNishanth Menon 	.pwrsts		  = PWRSTS_OFF_ON,
20197dd16b1SAmbresh K 	.banks		  = 1,
20297dd16b1SAmbresh K 	.pwrsts_mem_on	= {
20341feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* vpe_bank */
20497dd16b1SAmbresh K 	},
20597dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
20697dd16b1SAmbresh K };
20797dd16b1SAmbresh K 
20897dd16b1SAmbresh K /* mpu_7xx_pwrdm: Modena processor and the Neon coprocessor power domain */
20997dd16b1SAmbresh K static struct powerdomain mpu_7xx_pwrdm = {
21097dd16b1SAmbresh K 	.name		  = "mpu_pwrdm",
21197dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_MPU_INST,
21297dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
21397dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_RET_ON,
214cafc8cb5SNishanth Menon 	.pwrsts_logic_ret = PWRSTS_RET,
21597dd16b1SAmbresh K 	.banks		  = 2,
21697dd16b1SAmbresh K 	.pwrsts_mem_ret	= {
21797dd16b1SAmbresh K 		[0] = PWRSTS_OFF_RET,	/* mpu_l2 */
21897dd16b1SAmbresh K 		[1] = PWRSTS_RET,	/* mpu_ram */
21997dd16b1SAmbresh K 	},
22097dd16b1SAmbresh K 	.pwrsts_mem_on	= {
22141feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* mpu_l2 */
22241feb8efSNishanth Menon 		[1] = PWRSTS_ON,	/* mpu_ram */
22397dd16b1SAmbresh K 	},
22497dd16b1SAmbresh K };
22597dd16b1SAmbresh K 
22697dd16b1SAmbresh K /* l3init_7xx_pwrdm: L3 initators pheripherals power domain  */
22797dd16b1SAmbresh K static struct powerdomain l3init_7xx_pwrdm = {
22897dd16b1SAmbresh K 	.name		  = "l3init_pwrdm",
22997dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_L3INIT_INST,
23097dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
231d16c0d72SNishanth Menon 	.pwrsts		  = PWRSTS_ON,
23297dd16b1SAmbresh K 	.banks		  = 3,
23397dd16b1SAmbresh K 	.pwrsts_mem_on	= {
23441feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* gmac_bank */
23541feb8efSNishanth Menon 		[1] = PWRSTS_ON,	/* l3init_bank1 */
23641feb8efSNishanth Menon 		[2] = PWRSTS_ON,	/* l3init_bank2 */
23797dd16b1SAmbresh K 	},
23897dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
23997dd16b1SAmbresh K };
24097dd16b1SAmbresh K 
24197dd16b1SAmbresh K /* eve3_7xx_pwrdm:  */
24297dd16b1SAmbresh K static struct powerdomain eve3_7xx_pwrdm = {
24397dd16b1SAmbresh K 	.name		  = "eve3_pwrdm",
24497dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_EVE3_INST,
24597dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
24697dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_OFF_ON,
24797dd16b1SAmbresh K 	.banks		  = 1,
24897dd16b1SAmbresh K 	.pwrsts_mem_on	= {
24941feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* eve3_bank */
25097dd16b1SAmbresh K 	},
25197dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
25297dd16b1SAmbresh K };
25397dd16b1SAmbresh K 
25497dd16b1SAmbresh K /* emu_7xx_pwrdm: Emulation power domain */
25597dd16b1SAmbresh K static struct powerdomain emu_7xx_pwrdm = {
25697dd16b1SAmbresh K 	.name		  = "emu_pwrdm",
25797dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_EMU_INST,
25897dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
25997dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_OFF_ON,
26097dd16b1SAmbresh K 	.banks		  = 1,
26197dd16b1SAmbresh K 	.pwrsts_mem_on	= {
26241feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* emu_bank */
26397dd16b1SAmbresh K 	},
26497dd16b1SAmbresh K };
26597dd16b1SAmbresh K 
26697dd16b1SAmbresh K /* dsp2_7xx_pwrdm:  */
26797dd16b1SAmbresh K static struct powerdomain dsp2_7xx_pwrdm = {
26897dd16b1SAmbresh K 	.name		  = "dsp2_pwrdm",
26997dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_DSP2_INST,
27097dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
27197dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_OFF_ON,
27297dd16b1SAmbresh K 	.banks		  = 3,
27397dd16b1SAmbresh K 	.pwrsts_mem_on	= {
27441feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* dsp2_edma */
27541feb8efSNishanth Menon 		[1] = PWRSTS_ON,	/* dsp2_l1 */
27641feb8efSNishanth Menon 		[2] = PWRSTS_ON,	/* dsp2_l2 */
27797dd16b1SAmbresh K 	},
27897dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
27997dd16b1SAmbresh K };
28097dd16b1SAmbresh K 
28197dd16b1SAmbresh K /* dsp1_7xx_pwrdm: Tesla processor power domain */
28297dd16b1SAmbresh K static struct powerdomain dsp1_7xx_pwrdm = {
28397dd16b1SAmbresh K 	.name		  = "dsp1_pwrdm",
28497dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_DSP1_INST,
28597dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
28697dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_OFF_ON,
28797dd16b1SAmbresh K 	.banks		  = 3,
28897dd16b1SAmbresh K 	.pwrsts_mem_on	= {
28941feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* dsp1_edma */
29041feb8efSNishanth Menon 		[1] = PWRSTS_ON,	/* dsp1_l1 */
29141feb8efSNishanth Menon 		[2] = PWRSTS_ON,	/* dsp1_l2 */
29297dd16b1SAmbresh K 	},
29397dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
29497dd16b1SAmbresh K };
29597dd16b1SAmbresh K 
29697dd16b1SAmbresh K /* cam_7xx_pwrdm: Camera subsystem power domain */
29797dd16b1SAmbresh K static struct powerdomain cam_7xx_pwrdm = {
29897dd16b1SAmbresh K 	.name		  = "cam_pwrdm",
29997dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_CAM_INST,
30097dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
30197dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_OFF_ON,
30297dd16b1SAmbresh K 	.banks		  = 1,
30397dd16b1SAmbresh K 	.pwrsts_mem_on	= {
30441feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* vip_bank */
30597dd16b1SAmbresh K 	},
30697dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
30797dd16b1SAmbresh K };
30897dd16b1SAmbresh K 
30997dd16b1SAmbresh K /* eve4_7xx_pwrdm:  */
31097dd16b1SAmbresh K static struct powerdomain eve4_7xx_pwrdm = {
31197dd16b1SAmbresh K 	.name		  = "eve4_pwrdm",
31297dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_EVE4_INST,
31397dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
31497dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_OFF_ON,
31597dd16b1SAmbresh K 	.banks		  = 1,
31697dd16b1SAmbresh K 	.pwrsts_mem_on	= {
31741feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* eve4_bank */
31897dd16b1SAmbresh K 	},
31997dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
32097dd16b1SAmbresh K };
32197dd16b1SAmbresh K 
32297dd16b1SAmbresh K /* eve2_7xx_pwrdm:  */
32397dd16b1SAmbresh K static struct powerdomain eve2_7xx_pwrdm = {
32497dd16b1SAmbresh K 	.name		  = "eve2_pwrdm",
32597dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_EVE2_INST,
32697dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
32797dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_OFF_ON,
32897dd16b1SAmbresh K 	.banks		  = 1,
32997dd16b1SAmbresh K 	.pwrsts_mem_on	= {
33041feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* eve2_bank */
33197dd16b1SAmbresh K 	},
33297dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
33397dd16b1SAmbresh K };
33497dd16b1SAmbresh K 
33597dd16b1SAmbresh K /* eve1_7xx_pwrdm:  */
33697dd16b1SAmbresh K static struct powerdomain eve1_7xx_pwrdm = {
33797dd16b1SAmbresh K 	.name		  = "eve1_pwrdm",
33897dd16b1SAmbresh K 	.prcm_offs	  = DRA7XX_PRM_EVE1_INST,
33997dd16b1SAmbresh K 	.prcm_partition	  = DRA7XX_PRM_PARTITION,
34097dd16b1SAmbresh K 	.pwrsts		  = PWRSTS_OFF_ON,
34197dd16b1SAmbresh K 	.banks		  = 1,
34297dd16b1SAmbresh K 	.pwrsts_mem_on	= {
34341feb8efSNishanth Menon 		[0] = PWRSTS_ON,	/* eve1_bank */
34497dd16b1SAmbresh K 	},
34597dd16b1SAmbresh K 	.flags		  = PWRDM_HAS_LOWPOWERSTATECHANGE,
34697dd16b1SAmbresh K };
34797dd16b1SAmbresh K 
34897dd16b1SAmbresh K /*
34997dd16b1SAmbresh K  * The following power domains are not under SW control
35097dd16b1SAmbresh K  *
35197dd16b1SAmbresh K  * mpuaon
35297dd16b1SAmbresh K  * mmaon
35397dd16b1SAmbresh K  */
35497dd16b1SAmbresh K 
35597dd16b1SAmbresh K /* As powerdomains are added or removed above, this list must also be changed */
35697dd16b1SAmbresh K static struct powerdomain *powerdomains_dra7xx[] __initdata = {
35797dd16b1SAmbresh K 	&iva_7xx_pwrdm,
35897dd16b1SAmbresh K 	&rtc_7xx_pwrdm,
35997dd16b1SAmbresh K 	&ipu_7xx_pwrdm,
36097dd16b1SAmbresh K 	&dss_7xx_pwrdm,
36197dd16b1SAmbresh K 	&l4per_7xx_pwrdm,
36297dd16b1SAmbresh K 	&gpu_7xx_pwrdm,
36397dd16b1SAmbresh K 	&wkupaon_7xx_pwrdm,
36497dd16b1SAmbresh K 	&core_7xx_pwrdm,
36597dd16b1SAmbresh K 	&coreaon_7xx_pwrdm,
36697dd16b1SAmbresh K 	&cpu0_7xx_pwrdm,
36797dd16b1SAmbresh K 	&cpu1_7xx_pwrdm,
36897dd16b1SAmbresh K 	&vpe_7xx_pwrdm,
36997dd16b1SAmbresh K 	&mpu_7xx_pwrdm,
37097dd16b1SAmbresh K 	&l3init_7xx_pwrdm,
37197dd16b1SAmbresh K 	&eve3_7xx_pwrdm,
37297dd16b1SAmbresh K 	&emu_7xx_pwrdm,
37397dd16b1SAmbresh K 	&dsp2_7xx_pwrdm,
37497dd16b1SAmbresh K 	&dsp1_7xx_pwrdm,
37597dd16b1SAmbresh K 	&cam_7xx_pwrdm,
37697dd16b1SAmbresh K 	&eve4_7xx_pwrdm,
37797dd16b1SAmbresh K 	&eve2_7xx_pwrdm,
37897dd16b1SAmbresh K 	&eve1_7xx_pwrdm,
37997dd16b1SAmbresh K 	NULL
38097dd16b1SAmbresh K };
38197dd16b1SAmbresh K 
3823af6ccc3SLokesh Vutla static struct powerdomain *powerdomains_dra76x[] __initdata = {
3833af6ccc3SLokesh Vutla 	&custefuse_aon_7xx_pwrdm,
3843af6ccc3SLokesh Vutla 	NULL
3853af6ccc3SLokesh Vutla };
3863af6ccc3SLokesh Vutla 
3873af6ccc3SLokesh Vutla static struct powerdomain *powerdomains_dra74x[] __initdata = {
3883af6ccc3SLokesh Vutla 	&custefuse_7xx_pwrdm,
3893af6ccc3SLokesh Vutla 	NULL
3903af6ccc3SLokesh Vutla };
3913af6ccc3SLokesh Vutla 
3923af6ccc3SLokesh Vutla static struct powerdomain *powerdomains_dra72x[] __initdata = {
3933af6ccc3SLokesh Vutla 	&custefuse_aon_7xx_pwrdm,
3943af6ccc3SLokesh Vutla 	NULL
3953af6ccc3SLokesh Vutla };
3963af6ccc3SLokesh Vutla 
dra7xx_powerdomains_init(void)39797dd16b1SAmbresh K void __init dra7xx_powerdomains_init(void)
39897dd16b1SAmbresh K {
39997dd16b1SAmbresh K 	pwrdm_register_platform_funcs(&omap4_pwrdm_operations);
40097dd16b1SAmbresh K 	pwrdm_register_pwrdms(powerdomains_dra7xx);
4013af6ccc3SLokesh Vutla 
4023af6ccc3SLokesh Vutla 	if (soc_is_dra76x())
4033af6ccc3SLokesh Vutla 		pwrdm_register_pwrdms(powerdomains_dra76x);
4043af6ccc3SLokesh Vutla 	else if (soc_is_dra74x())
4053af6ccc3SLokesh Vutla 		pwrdm_register_pwrdms(powerdomains_dra74x);
4063af6ccc3SLokesh Vutla 	else if (soc_is_dra72x())
4073af6ccc3SLokesh Vutla 		pwrdm_register_pwrdms(powerdomains_dra72x);
4083af6ccc3SLokesh Vutla 
40997dd16b1SAmbresh K 	pwrdm_complete_init();
41097dd16b1SAmbresh K }
411