blob: 37fd1a567094c5b3525b3b0f3128f9e6e96fb340 [file] [log] [blame]
Thomas Gleixnerd2912cb2019-06-04 10:11:33 +02001// SPDX-License-Identifier: GPL-2.0-only
Abhijit Pagaref37c6df2010-01-26 20:12:52 -07002/*
3 * OMAP4 Power domains framework
4 *
Benoit Cousson9a2a3602011-07-09 20:42:11 -06005 * Copyright (C) 2009-2011 Texas Instruments, Inc.
Paul Walmsley4cb49fe2011-03-07 19:28:15 -07006 * Copyright (C) 2009-2011 Nokia Corporation
Abhijit Pagaref37c6df2010-01-26 20:12:52 -07007 *
8 * Abhijit Pagare (abhijitpagare@ti.com)
9 * Benoit Cousson (b-cousson@ti.com)
Benoit Cousson79328702010-05-20 12:31:11 -060010 * Paul Walmsley (paul@pwsan.com)
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070011 *
12 * This file is automatically generated from the OMAP hardware databases.
13 * We respectfully ask that any modifications to this file be coordinated
14 * with the public linux-omap@vger.kernel.org mailing list and the
15 * authors above to ensure that the autogeneration scripts are kept
16 * up-to-date with the file contents.
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070017 */
18
Paul Walmsley6e014782010-12-21 20:01:20 -070019#include <linux/kernel.h>
20#include <linux/init.h>
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070021
Paul Walmsley72e06d02010-12-21 21:05:16 -070022#include "powerdomain.h"
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070023
24#include "prcm-common.h"
Paul Walmsleya64bb9c2010-12-21 21:05:14 -070025#include "prcm44xx.h"
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070026#include "prm-regbits-44xx.h"
Paul Walmsleyd198b512010-12-21 15:30:54 -070027#include "prm44xx.h"
28#include "prcm_mpu44xx.h"
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070029
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070030/* core_44xx_pwrdm: CORE power domain */
31static struct powerdomain core_44xx_pwrdm = {
32 .name = "core_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +010033 .voltdm = { .name = "core" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -070034 .prcm_offs = OMAP4430_PRM_CORE_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -070035 .prcm_partition = OMAP4430_PRM_PARTITION,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070036 .pwrsts = PWRSTS_RET_ON,
37 .pwrsts_logic_ret = PWRSTS_OFF_RET,
38 .banks = 5,
39 .pwrsts_mem_ret = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -070040 [0] = PWRSTS_OFF, /* core_nret_bank */
Benoit Cousson9a2a3602011-07-09 20:42:11 -060041 [1] = PWRSTS_RET, /* core_ocmram */
Paul Walmsley4cb49fe2011-03-07 19:28:15 -070042 [2] = PWRSTS_RET, /* core_other_bank */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070043 [3] = PWRSTS_OFF_RET, /* ducati_l2ram */
44 [4] = PWRSTS_OFF_RET, /* ducati_unicache */
45 },
46 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -070047 [0] = PWRSTS_ON, /* core_nret_bank */
Benoit Cousson9a2a3602011-07-09 20:42:11 -060048 [1] = PWRSTS_ON, /* core_ocmram */
Paul Walmsley4cb49fe2011-03-07 19:28:15 -070049 [2] = PWRSTS_ON, /* core_other_bank */
50 [3] = PWRSTS_ON, /* ducati_l2ram */
51 [4] = PWRSTS_ON, /* ducati_unicache */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070052 },
Benoit Cousson0fef6582011-07-09 19:15:05 -060053 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070054};
55
56/* gfx_44xx_pwrdm: 3D accelerator power domain */
57static struct powerdomain gfx_44xx_pwrdm = {
58 .name = "gfx_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +010059 .voltdm = { .name = "core" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -070060 .prcm_offs = OMAP4430_PRM_GFX_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -070061 .prcm_partition = OMAP4430_PRM_PARTITION,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070062 .pwrsts = PWRSTS_OFF_ON,
63 .banks = 1,
64 .pwrsts_mem_ret = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -070065 [0] = PWRSTS_OFF, /* gfx_mem */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070066 },
67 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -070068 [0] = PWRSTS_ON, /* gfx_mem */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070069 },
Benoit Cousson0fef6582011-07-09 19:15:05 -060070 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070071};
72
73/* abe_44xx_pwrdm: Audio back end power domain */
74static struct powerdomain abe_44xx_pwrdm = {
75 .name = "abe_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +010076 .voltdm = { .name = "iva" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -070077 .prcm_offs = OMAP4430_PRM_ABE_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -070078 .prcm_partition = OMAP4430_PRM_PARTITION,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070079 .pwrsts = PWRSTS_OFF_RET_ON,
Santosh Shilimkar3ed45662011-02-25 15:21:17 -070080 .pwrsts_logic_ret = PWRSTS_OFF,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070081 .banks = 2,
82 .pwrsts_mem_ret = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -070083 [0] = PWRSTS_RET, /* aessmem */
84 [1] = PWRSTS_OFF, /* periphmem */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070085 },
86 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -070087 [0] = PWRSTS_ON, /* aessmem */
88 [1] = PWRSTS_ON, /* periphmem */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070089 },
Benoit Cousson0fef6582011-07-09 19:15:05 -060090 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070091};
92
93/* dss_44xx_pwrdm: Display subsystem power domain */
94static struct powerdomain dss_44xx_pwrdm = {
95 .name = "dss_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +010096 .voltdm = { .name = "core" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -070097 .prcm_offs = OMAP4430_PRM_DSS_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -070098 .prcm_partition = OMAP4430_PRM_PARTITION,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -070099 .pwrsts = PWRSTS_OFF_RET_ON,
Rajendra Nayakbb722f32010-09-27 14:02:56 -0600100 .pwrsts_logic_ret = PWRSTS_OFF,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700101 .banks = 1,
102 .pwrsts_mem_ret = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700103 [0] = PWRSTS_OFF, /* dss_mem */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700104 },
105 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700106 [0] = PWRSTS_ON, /* dss_mem */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700107 },
Benoit Cousson0fef6582011-07-09 19:15:05 -0600108 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700109};
110
111/* tesla_44xx_pwrdm: Tesla processor power domain */
112static struct powerdomain tesla_44xx_pwrdm = {
113 .name = "tesla_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100114 .voltdm = { .name = "iva" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700115 .prcm_offs = OMAP4430_PRM_TESLA_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700116 .prcm_partition = OMAP4430_PRM_PARTITION,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700117 .pwrsts = PWRSTS_OFF_RET_ON,
118 .pwrsts_logic_ret = PWRSTS_OFF_RET,
119 .banks = 3,
120 .pwrsts_mem_ret = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700121 [0] = PWRSTS_RET, /* tesla_edma */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700122 [1] = PWRSTS_OFF_RET, /* tesla_l1 */
123 [2] = PWRSTS_OFF_RET, /* tesla_l2 */
124 },
125 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700126 [0] = PWRSTS_ON, /* tesla_edma */
127 [1] = PWRSTS_ON, /* tesla_l1 */
128 [2] = PWRSTS_ON, /* tesla_l2 */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700129 },
Benoit Cousson0fef6582011-07-09 19:15:05 -0600130 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700131};
132
133/* wkup_44xx_pwrdm: Wake-up power domain */
134static struct powerdomain wkup_44xx_pwrdm = {
135 .name = "wkup_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100136 .voltdm = { .name = "wakeup" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700137 .prcm_offs = OMAP4430_PRM_WKUP_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700138 .prcm_partition = OMAP4430_PRM_PARTITION,
Rajendra Nayakd3353e12010-05-18 20:24:01 -0600139 .pwrsts = PWRSTS_ON,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700140 .banks = 1,
141 .pwrsts_mem_ret = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700142 [0] = PWRSTS_OFF, /* wkup_bank */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700143 },
144 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700145 [0] = PWRSTS_ON, /* wkup_bank */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700146 },
147};
148
149/* cpu0_44xx_pwrdm: MPU0 processor and Neon coprocessor power domain */
150static struct powerdomain cpu0_44xx_pwrdm = {
151 .name = "cpu0_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100152 .voltdm = { .name = "mpu" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700153 .prcm_offs = OMAP4430_PRCM_MPU_CPU0_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700154 .prcm_partition = OMAP4430_PRCM_MPU_PARTITION,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700155 .pwrsts = PWRSTS_OFF_RET_ON,
156 .pwrsts_logic_ret = PWRSTS_OFF_RET,
157 .banks = 1,
158 .pwrsts_mem_ret = {
159 [0] = PWRSTS_OFF_RET, /* cpu0_l1 */
160 },
161 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700162 [0] = PWRSTS_ON, /* cpu0_l1 */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700163 },
164};
165
166/* cpu1_44xx_pwrdm: MPU1 processor and Neon coprocessor power domain */
167static struct powerdomain cpu1_44xx_pwrdm = {
168 .name = "cpu1_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100169 .voltdm = { .name = "mpu" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700170 .prcm_offs = OMAP4430_PRCM_MPU_CPU1_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700171 .prcm_partition = OMAP4430_PRCM_MPU_PARTITION,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700172 .pwrsts = PWRSTS_OFF_RET_ON,
173 .pwrsts_logic_ret = PWRSTS_OFF_RET,
174 .banks = 1,
175 .pwrsts_mem_ret = {
176 [0] = PWRSTS_OFF_RET, /* cpu1_l1 */
177 },
178 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700179 [0] = PWRSTS_ON, /* cpu1_l1 */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700180 },
181};
182
183/* emu_44xx_pwrdm: Emulation power domain */
184static struct powerdomain emu_44xx_pwrdm = {
185 .name = "emu_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100186 .voltdm = { .name = "wakeup" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700187 .prcm_offs = OMAP4430_PRM_EMU_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700188 .prcm_partition = OMAP4430_PRM_PARTITION,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700189 .pwrsts = PWRSTS_OFF_ON,
190 .banks = 1,
191 .pwrsts_mem_ret = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700192 [0] = PWRSTS_OFF, /* emu_bank */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700193 },
194 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700195 [0] = PWRSTS_ON, /* emu_bank */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700196 },
197};
198
199/* mpu_44xx_pwrdm: Modena processor and the Neon coprocessor power domain */
200static struct powerdomain mpu_44xx_pwrdm = {
201 .name = "mpu_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100202 .voltdm = { .name = "mpu" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700203 .prcm_offs = OMAP4430_PRM_MPU_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700204 .prcm_partition = OMAP4430_PRM_PARTITION,
Santosh Shilimkara57341f2011-07-09 20:42:59 -0600205 .pwrsts = PWRSTS_RET_ON,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700206 .pwrsts_logic_ret = PWRSTS_OFF_RET,
207 .banks = 3,
208 .pwrsts_mem_ret = {
209 [0] = PWRSTS_OFF_RET, /* mpu_l1 */
210 [1] = PWRSTS_OFF_RET, /* mpu_l2 */
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700211 [2] = PWRSTS_RET, /* mpu_ram */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700212 },
213 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700214 [0] = PWRSTS_ON, /* mpu_l1 */
215 [1] = PWRSTS_ON, /* mpu_l2 */
216 [2] = PWRSTS_ON, /* mpu_ram */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700217 },
218};
219
220/* ivahd_44xx_pwrdm: IVA-HD power domain */
221static struct powerdomain ivahd_44xx_pwrdm = {
222 .name = "ivahd_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100223 .voltdm = { .name = "iva" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700224 .prcm_offs = OMAP4430_PRM_IVAHD_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700225 .prcm_partition = OMAP4430_PRM_PARTITION,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700226 .pwrsts = PWRSTS_OFF_RET_ON,
Santosh Shilimkar3ed45662011-02-25 15:21:17 -0700227 .pwrsts_logic_ret = PWRSTS_OFF,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700228 .banks = 4,
229 .pwrsts_mem_ret = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700230 [0] = PWRSTS_OFF, /* hwa_mem */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700231 [1] = PWRSTS_OFF_RET, /* sl2_mem */
232 [2] = PWRSTS_OFF_RET, /* tcm1_mem */
233 [3] = PWRSTS_OFF_RET, /* tcm2_mem */
234 },
235 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700236 [0] = PWRSTS_ON, /* hwa_mem */
237 [1] = PWRSTS_ON, /* sl2_mem */
238 [2] = PWRSTS_ON, /* tcm1_mem */
239 [3] = PWRSTS_ON, /* tcm2_mem */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700240 },
Benoit Cousson0fef6582011-07-09 19:15:05 -0600241 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700242};
243
244/* cam_44xx_pwrdm: Camera subsystem power domain */
245static struct powerdomain cam_44xx_pwrdm = {
246 .name = "cam_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100247 .voltdm = { .name = "core" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700248 .prcm_offs = OMAP4430_PRM_CAM_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700249 .prcm_partition = OMAP4430_PRM_PARTITION,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700250 .pwrsts = PWRSTS_OFF_ON,
251 .banks = 1,
252 .pwrsts_mem_ret = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700253 [0] = PWRSTS_OFF, /* cam_mem */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700254 },
255 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700256 [0] = PWRSTS_ON, /* cam_mem */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700257 },
Benoit Cousson0fef6582011-07-09 19:15:05 -0600258 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700259};
260
261/* l3init_44xx_pwrdm: L3 initators pheripherals power domain */
262static struct powerdomain l3init_44xx_pwrdm = {
263 .name = "l3init_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100264 .voltdm = { .name = "core" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700265 .prcm_offs = OMAP4430_PRM_L3INIT_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700266 .prcm_partition = OMAP4430_PRM_PARTITION,
Santosh Shilimkar80f093652010-12-21 22:37:28 -0700267 .pwrsts = PWRSTS_RET_ON,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700268 .pwrsts_logic_ret = PWRSTS_OFF_RET,
269 .banks = 1,
270 .pwrsts_mem_ret = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700271 [0] = PWRSTS_OFF, /* l3init_bank1 */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700272 },
273 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700274 [0] = PWRSTS_ON, /* l3init_bank1 */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700275 },
Benoit Cousson0fef6582011-07-09 19:15:05 -0600276 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700277};
278
279/* l4per_44xx_pwrdm: Target peripherals power domain */
280static struct powerdomain l4per_44xx_pwrdm = {
281 .name = "l4per_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100282 .voltdm = { .name = "core" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700283 .prcm_offs = OMAP4430_PRM_L4PER_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700284 .prcm_partition = OMAP4430_PRM_PARTITION,
Rajendra Nayak474e7ae2010-12-21 22:37:28 -0700285 .pwrsts = PWRSTS_RET_ON,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700286 .pwrsts_logic_ret = PWRSTS_OFF_RET,
287 .banks = 2,
288 .pwrsts_mem_ret = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700289 [0] = PWRSTS_OFF, /* nonretained_bank */
290 [1] = PWRSTS_RET, /* retained_bank */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700291 },
292 .pwrsts_mem_on = {
Paul Walmsley4cb49fe2011-03-07 19:28:15 -0700293 [0] = PWRSTS_ON, /* nonretained_bank */
294 [1] = PWRSTS_ON, /* retained_bank */
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700295 },
Benoit Cousson0fef6582011-07-09 19:15:05 -0600296 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700297};
298
299/*
300 * always_on_core_44xx_pwrdm: Always ON logic that sits in VDD_CORE voltage
301 * domain
302 */
303static struct powerdomain always_on_core_44xx_pwrdm = {
304 .name = "always_on_core_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100305 .voltdm = { .name = "core" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700306 .prcm_offs = OMAP4430_PRM_ALWAYS_ON_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700307 .prcm_partition = OMAP4430_PRM_PARTITION,
Rajendra Nayakd3353e12010-05-18 20:24:01 -0600308 .pwrsts = PWRSTS_ON,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700309};
310
311/* cefuse_44xx_pwrdm: Customer efuse controller power domain */
312static struct powerdomain cefuse_44xx_pwrdm = {
313 .name = "cefuse_pwrdm",
Benoit Cousson7e1b9402011-03-21 12:11:54 +0100314 .voltdm = { .name = "core" },
Paul Walmsleycdb54c42010-12-21 15:30:55 -0700315 .prcm_offs = OMAP4430_PRM_CEFUSE_INST,
Paul Walmsleya64bb9c2010-12-21 21:05:14 -0700316 .prcm_partition = OMAP4430_PRM_PARTITION,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700317 .pwrsts = PWRSTS_OFF_ON,
Benoit Cousson9a2a3602011-07-09 20:42:11 -0600318 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700319};
320
321/*
322 * The following power domains are not under SW control
323 *
324 * always_on_iva
325 * always_on_mpu
326 * stdefuse
327 */
328
Paul Walmsley6e014782010-12-21 20:01:20 -0700329/* As powerdomains are added or removed above, this list must also be changed */
330static struct powerdomain *powerdomains_omap44xx[] __initdata = {
331 &core_44xx_pwrdm,
332 &gfx_44xx_pwrdm,
333 &abe_44xx_pwrdm,
334 &dss_44xx_pwrdm,
335 &tesla_44xx_pwrdm,
336 &wkup_44xx_pwrdm,
337 &cpu0_44xx_pwrdm,
338 &cpu1_44xx_pwrdm,
339 &emu_44xx_pwrdm,
340 &mpu_44xx_pwrdm,
341 &ivahd_44xx_pwrdm,
342 &cam_44xx_pwrdm,
343 &l3init_44xx_pwrdm,
344 &l4per_44xx_pwrdm,
345 &always_on_core_44xx_pwrdm,
346 &cefuse_44xx_pwrdm,
347 NULL
348};
Abhijit Pagaref37c6df2010-01-26 20:12:52 -0700349
Paul Walmsley6e014782010-12-21 20:01:20 -0700350void __init omap44xx_powerdomains_init(void)
351{
Paul Walmsley129c65e2011-09-14 16:01:21 -0600352 pwrdm_register_platform_funcs(&omap4_pwrdm_operations);
353 pwrdm_register_pwrdms(powerdomains_omap44xx);
354 pwrdm_complete_init();
Paul Walmsley6e014782010-12-21 20:01:20 -0700355}