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