1*d2912cb1SThomas 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