powerdomains3xxx_data.c revision 72e06d087204f3bc9acf281717b90ebf0b9731f7
1ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley/*
298fa3d8aeabf7a039cc920a9c2ffebc6b4648e2bPaul Walmsley * OMAP3 powerdomain definitions
3ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley *
4ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley * Copyright (C) 2007-2008 Texas Instruments, Inc.
598fa3d8aeabf7a039cc920a9c2ffebc6b4648e2bPaul Walmsley * Copyright (C) 2007-2010 Nokia Corporation
6ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley *
76e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley * Paul Walmsley, Jouni Högander
8ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley *
9ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley * This program is free software; you can redistribute it and/or modify
10ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley * it under the terms of the GNU General Public License version 2 as
11ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley * published by the Free Software Foundation.
12ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley */
13ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
146e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley#include <linux/kernel.h>
156e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley#include <linux/init.h>
16ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
1772e06d087204f3bc9acf281717b90ebf0b9731f7Paul Walmsley#include "powerdomain.h"
186e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley#include "powerdomains2xxx_3xxx_data.h"
19ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
20ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley#include "prcm-common.h"
2159fb659b065f52fcc2deed293cfbfc58f890376cPaul Walmsley#include "prm2xxx_3xxx.h"
22ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley#include "prm-regbits-34xx.h"
2359fb659b065f52fcc2deed293cfbfc58f890376cPaul Walmsley#include "cm2xxx_3xxx.h"
24ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley#include "cm-regbits-34xx.h"
25ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
26ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley/*
27ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley * 34XX-specific powerdomains, dependencies
28ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley */
29ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
3098fa3d8aeabf7a039cc920a9c2ffebc6b4648e2bPaul Walmsley#ifdef CONFIG_ARCH_OMAP3
31ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
32ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley/*
33ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley * Powerdomains
34ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley */
35ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
36ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsleystatic struct powerdomain iva2_pwrdm = {
37ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.name		  = "iva2_pwrdm",
38ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.prcm_offs	  = OMAP3430_IVA2_MOD,
39ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
40ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts		  = PWRSTS_OFF_RET_ON,
41ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_logic_ret = PWRSTS_OFF_RET,
42ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.banks		  = 4,
43ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_ret	  = {
44ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRSTS_OFF_RET,
45ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[1] = PWRSTS_OFF_RET,
46ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[2] = PWRSTS_OFF_RET,
47ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[3] = PWRSTS_OFF_RET,
48ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
49ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_on	  = {
50ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRDM_POWER_ON,
51ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[1] = PWRDM_POWER_ON,
52ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[2] = PWRSTS_OFF_ON,
53ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[3] = PWRDM_POWER_ON,
54ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
55ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley};
56ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
5798fa3d8aeabf7a039cc920a9c2ffebc6b4648e2bPaul Walmsleystatic struct powerdomain mpu_3xxx_pwrdm = {
58ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.name		  = "mpu_pwrdm",
59ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.prcm_offs	  = MPU_MOD,
60ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
61ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts		  = PWRSTS_OFF_RET_ON,
62ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_logic_ret = PWRSTS_OFF_RET,
633863c74b512c1afd3ce6b2f81d8dea9f1d860968Thara Gopinath	.flags		  = PWRDM_HAS_MPU_QUIRK,
64ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.banks		  = 1,
65ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_ret	  = {
66ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRSTS_OFF_RET,
67ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
68ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_on	  = {
69ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRSTS_OFF_ON,
70ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
71ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley};
72ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
7358dcfb3a0f5eb0a882f7b696d4d2dc49b709ce5cAnand Gadiyar/*
7458dcfb3a0f5eb0a882f7b696d4d2dc49b709ce5cAnand Gadiyar * The USBTLL Save-and-Restore mechanism is broken on
7558dcfb3a0f5eb0a882f7b696d4d2dc49b709ce5cAnand Gadiyar * 3430s upto ES3.0 and 3630ES1.0. Hence this feature
7658dcfb3a0f5eb0a882f7b696d4d2dc49b709ce5cAnand Gadiyar * needs to be disabled on these chips.
7758dcfb3a0f5eb0a882f7b696d4d2dc49b709ce5cAnand Gadiyar * Refer: 3430 errata ID i459 and 3630 errata ID i579
78447b8da5d78ac8f2815a7824c0eb4ad66ba3e11eJean Pihet *
79447b8da5d78ac8f2815a7824c0eb4ad66ba3e11eJean Pihet * Note: setting the SAR flag could help for errata ID i478
80447b8da5d78ac8f2815a7824c0eb4ad66ba3e11eJean Pihet *  which applies to 3430 <= ES3.1, but since the SAR feature
81447b8da5d78ac8f2815a7824c0eb4ad66ba3e11eJean Pihet *  is broken, do not use it.
8258dcfb3a0f5eb0a882f7b696d4d2dc49b709ce5cAnand Gadiyar */
8398fa3d8aeabf7a039cc920a9c2ffebc6b4648e2bPaul Walmsleystatic struct powerdomain core_3xxx_pre_es3_1_pwrdm = {
84ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.name		  = "core_pwrdm",
85ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.prcm_offs	  = CORE_MOD,
867eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1 |
877eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley					   CHIP_IS_OMAP3430ES2 |
8858dcfb3a0f5eb0a882f7b696d4d2dc49b709ce5cAnand Gadiyar					   CHIP_IS_OMAP3430ES3_0 |
8958dcfb3a0f5eb0a882f7b696d4d2dc49b709ce5cAnand Gadiyar					   CHIP_IS_OMAP3630ES1),
907eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley	.pwrsts		  = PWRSTS_OFF_RET_ON,
914133a44e28cb65c380903ca69806eec039401f46Thara Gopinath	.pwrsts_logic_ret = PWRSTS_OFF_RET,
927eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley	.banks		  = 2,
937eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley	.pwrsts_mem_ret	  = {
947eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley		[0] = PWRSTS_OFF_RET,	 /* MEM1RETSTATE */
957eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley		[1] = PWRSTS_OFF_RET,	 /* MEM2RETSTATE */
967eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley	},
977eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley	.pwrsts_mem_on	  = {
987eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley		[0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */
997eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley		[1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */
1007eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley	},
1017eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley};
1027eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley
10398fa3d8aeabf7a039cc920a9c2ffebc6b4648e2bPaul Walmsleystatic struct powerdomain core_3xxx_es3_1_pwrdm = {
1047eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley	.name		  = "core_pwrdm",
1057eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley	.prcm_offs	  = CORE_MOD,
10658dcfb3a0f5eb0a882f7b696d4d2dc49b709ce5cAnand Gadiyar	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES3_1 |
10758dcfb3a0f5eb0a882f7b696d4d2dc49b709ce5cAnand Gadiyar					  CHIP_GE_OMAP3630ES1_1),
108ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts		  = PWRSTS_OFF_RET_ON,
1094133a44e28cb65c380903ca69806eec039401f46Thara Gopinath	.pwrsts_logic_ret = PWRSTS_OFF_RET,
110447b8da5d78ac8f2815a7824c0eb4ad66ba3e11eJean Pihet	/*
111447b8da5d78ac8f2815a7824c0eb4ad66ba3e11eJean Pihet	 * Setting the SAR flag for errata ID i478 which applies
112447b8da5d78ac8f2815a7824c0eb4ad66ba3e11eJean Pihet	 *  to 3430 <= ES3.1
113447b8da5d78ac8f2815a7824c0eb4ad66ba3e11eJean Pihet	 */
1147eb1afc9765d07c9036b1ad9e7c03e5bd1a58a2bPaul Walmsley	.flags		  = PWRDM_HAS_HDWR_SAR, /* for USBTLL only */
115ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.banks		  = 2,
116ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_ret	  = {
117ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRSTS_OFF_RET,	 /* MEM1RETSTATE */
118ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[1] = PWRSTS_OFF_RET,	 /* MEM2RETSTATE */
119ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
120ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_on	  = {
121ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */
122ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */
123ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
124ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley};
125ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
126ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsleystatic struct powerdomain dss_pwrdm = {
127ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.name		  = "dss_pwrdm",
128ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
129ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.prcm_offs	  = OMAP3430_DSS_MOD,
130ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts		  = PWRSTS_OFF_RET_ON,
131ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_logic_ret = PWRDM_POWER_RET,
132ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.banks		  = 1,
133ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_ret	  = {
134ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRDM_POWER_RET, /* MEMRETSTATE */
135ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
136ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_on	  = {
137ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRDM_POWER_ON,  /* MEMONSTATE */
138ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
139ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley};
140ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
141be48ea74d49408c5c4f999c730d35eaf0034f273Paul Walmsley/*
142be48ea74d49408c5c4f999c730d35eaf0034f273Paul Walmsley * Although the 34XX TRM Rev K Table 4-371 notes that retention is a
143be48ea74d49408c5c4f999c730d35eaf0034f273Paul Walmsley * possible SGX powerstate, the SGX device itself does not support
144be48ea74d49408c5c4f999c730d35eaf0034f273Paul Walmsley * retention.
145be48ea74d49408c5c4f999c730d35eaf0034f273Paul Walmsley */
146ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsleystatic struct powerdomain sgx_pwrdm = {
147ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.name		  = "sgx_pwrdm",
148ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.prcm_offs	  = OMAP3430ES2_SGX_MOD,
149d41ad52040dee5043ce6b1d49a1c8864706d2bfdPaul Walmsley	.omap_chip	  = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
150ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	/* XXX This is accurate for 3430 SGX, but what about GFX? */
151be48ea74d49408c5c4f999c730d35eaf0034f273Paul Walmsley	.pwrsts		  = PWRSTS_OFF_ON,
152ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_logic_ret = PWRDM_POWER_RET,
153ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.banks		  = 1,
154ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_ret	  = {
155ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRDM_POWER_RET, /* MEMRETSTATE */
156ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
157ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_on	  = {
158ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRDM_POWER_ON,  /* MEMONSTATE */
159ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
160ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley};
161ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
162ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsleystatic struct powerdomain cam_pwrdm = {
163ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.name		  = "cam_pwrdm",
164ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
165ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.prcm_offs	  = OMAP3430_CAM_MOD,
166ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts		  = PWRSTS_OFF_RET_ON,
167ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_logic_ret = PWRDM_POWER_RET,
168ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.banks		  = 1,
169ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_ret	  = {
170ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRDM_POWER_RET, /* MEMRETSTATE */
171ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
172ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_on	  = {
173ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRDM_POWER_ON,  /* MEMONSTATE */
174ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
175ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley};
176ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
177ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsleystatic struct powerdomain per_pwrdm = {
178ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.name		  = "per_pwrdm",
179ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.prcm_offs	  = OMAP3430_PER_MOD,
180ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
181ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts		  = PWRSTS_OFF_RET_ON,
182ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_logic_ret = PWRSTS_OFF_RET,
183ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.banks		  = 1,
184ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_ret	  = {
185ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRDM_POWER_RET, /* MEMRETSTATE */
186ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
187ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_on	  = {
188ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRDM_POWER_ON,  /* MEMONSTATE */
189ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
190ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley};
191ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
192ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsleystatic struct powerdomain emu_pwrdm = {
193ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.name		= "emu_pwrdm",
194ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.prcm_offs	= OMAP3430_EMU_MOD,
195ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
196ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley};
197ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
198ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsleystatic struct powerdomain neon_pwrdm = {
199ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.name		  = "neon_pwrdm",
200ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.prcm_offs	  = OMAP3430_NEON_MOD,
201ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.omap_chip	  = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
202ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts		  = PWRSTS_OFF_RET_ON,
203ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_logic_ret = PWRDM_POWER_RET,
204ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley};
205ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
206ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsleystatic struct powerdomain usbhost_pwrdm = {
207ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.name		  = "usbhost_pwrdm",
208ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.prcm_offs	  = OMAP3430ES2_USBHOST_MOD,
209d41ad52040dee5043ce6b1d49a1c8864706d2bfdPaul Walmsley	.omap_chip	  = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
210ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts		  = PWRSTS_OFF_RET_ON,
211ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_logic_ret = PWRDM_POWER_RET,
212867d320b6c30d2478358eafeca0e1a6c60cf06c3Kalle Jokiniemi	/*
213867d320b6c30d2478358eafeca0e1a6c60cf06c3Kalle Jokiniemi	 * REVISIT: Enabling usb host save and restore mechanism seems to
214867d320b6c30d2478358eafeca0e1a6c60cf06c3Kalle Jokiniemi	 * leave the usb host domain permanently in ACTIVE mode after
215867d320b6c30d2478358eafeca0e1a6c60cf06c3Kalle Jokiniemi	 * changing the usb host power domain state from OFF to active once.
216867d320b6c30d2478358eafeca0e1a6c60cf06c3Kalle Jokiniemi	 * Disabling for now.
217867d320b6c30d2478358eafeca0e1a6c60cf06c3Kalle Jokiniemi	 */
218867d320b6c30d2478358eafeca0e1a6c60cf06c3Kalle Jokiniemi	/*.flags	  = PWRDM_HAS_HDWR_SAR,*/ /* for USBHOST ctrlr only */
219ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.banks		  = 1,
220ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_ret	  = {
221ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRDM_POWER_RET, /* MEMRETSTATE */
222ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
223ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	.pwrsts_mem_on	  = {
224ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley		[0] = PWRDM_POWER_ON,  /* MEMONSTATE */
225ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley	},
226ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley};
227ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
22846e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsleystatic struct powerdomain dpll1_pwrdm = {
22946e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.name		= "dpll1_pwrdm",
23046e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.prcm_offs	= MPU_MOD,
23146e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
23246e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley};
23346e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley
23446e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsleystatic struct powerdomain dpll2_pwrdm = {
23546e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.name		= "dpll2_pwrdm",
23646e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.prcm_offs	= OMAP3430_IVA2_MOD,
23746e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
23846e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley};
23946e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley
24046e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsleystatic struct powerdomain dpll3_pwrdm = {
24146e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.name		= "dpll3_pwrdm",
24246e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.prcm_offs	= PLL_MOD,
24346e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
24446e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley};
24546e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley
24646e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsleystatic struct powerdomain dpll4_pwrdm = {
24746e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.name		= "dpll4_pwrdm",
24846e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.prcm_offs	= PLL_MOD,
24946e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
25046e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley};
25146e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley
25246e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsleystatic struct powerdomain dpll5_pwrdm = {
25346e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.name		= "dpll5_pwrdm",
25446e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley	.prcm_offs	= PLL_MOD,
255d41ad52040dee5043ce6b1d49a1c8864706d2bfdPaul Walmsley	.omap_chip	= OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
25646e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley};
25746e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley
2586e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley/* As powerdomains are added or removed above, this list must also be changed */
2596e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsleystatic struct powerdomain *powerdomains_omap3xxx[] __initdata = {
26046e0ccf8ae32e53dc34a274977e2c6256b2deddcPaul Walmsley
2616e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&wkup_omap2_pwrdm,
2626e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&gfx_omap2_pwrdm,
2636e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&iva2_pwrdm,
2646e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&mpu_3xxx_pwrdm,
2656e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&neon_pwrdm,
2666e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&core_3xxx_pre_es3_1_pwrdm,
2676e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&core_3xxx_es3_1_pwrdm,
2686e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&cam_pwrdm,
2696e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&dss_pwrdm,
2706e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&per_pwrdm,
2716e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&emu_pwrdm,
2726e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&sgx_pwrdm,
2736e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&usbhost_pwrdm,
2746e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&dpll1_pwrdm,
2756e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&dpll2_pwrdm,
2766e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&dpll3_pwrdm,
2776e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&dpll4_pwrdm,
2786e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	&dpll5_pwrdm,
2796e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley#endif
2806e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	NULL
2816e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley};
282ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
283ecb24aa129c6d4b2152571f856320aa7dea41676Paul Walmsley
2846e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsleyvoid __init omap3xxx_powerdomains_init(void)
2856e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley{
2866e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley	pwrdm_init(powerdomains_omap3xxx, &omap3_pwrdm_operations);
2876e01478ae8a4322c9a2b2d6efed50196265ed5f2Paul Walmsley}
288