aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/fsl
diff options
context:
space:
mode:
authorchenhui zhao <chenhui.zhao@freescale.com>2015-11-20 04:13:59 -0500
committerScott Wood <oss@buserror.net>2016-03-05 00:50:27 -0500
commitd17799f9c10e283cccd4d598d3416e6fac336ab9 (patch)
treea1af0cb18e1821922d66a198d25aed9cdb18806f /include/linux/fsl
parente7affb1dba0e9068aeb3978e858f39753e0dc20a (diff)
powerpc/rcpm: add RCPM driver
There is a RCPM (Run Control/Power Management) in Freescale QorIQ series processors. The device performs tasks associated with device run control and power management. The driver implements some features: mask/unmask irq, enter/exit low power states, freeze time base, etc. Signed-off-by: Chenhui Zhao <chenhui.zhao@freescale.com> Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com> [scottwood: remove __KERNEL__ ifdef] Signed-off-by: Scott Wood <oss@buserror.net>
Diffstat (limited to 'include/linux/fsl')
-rw-r--r--include/linux/fsl/guts.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/include/linux/fsl/guts.h b/include/linux/fsl/guts.h
index 84d971ff3fba..649e9171a9b3 100644
--- a/include/linux/fsl/guts.h
+++ b/include/linux/fsl/guts.h
@@ -189,4 +189,109 @@ static inline void guts_set_pmuxcr_dma(struct ccsr_guts __iomem *guts,
189 189
190#endif 190#endif
191 191
192struct ccsr_rcpm_v1 {
193 u8 res0000[4];
194 __be32 cdozsr; /* 0x0004 Core Doze Status Register */
195 u8 res0008[4];
196 __be32 cdozcr; /* 0x000c Core Doze Control Register */
197 u8 res0010[4];
198 __be32 cnapsr; /* 0x0014 Core Nap Status Register */
199 u8 res0018[4];
200 __be32 cnapcr; /* 0x001c Core Nap Control Register */
201 u8 res0020[4];
202 __be32 cdozpsr; /* 0x0024 Core Doze Previous Status Register */
203 u8 res0028[4];
204 __be32 cnappsr; /* 0x002c Core Nap Previous Status Register */
205 u8 res0030[4];
206 __be32 cwaitsr; /* 0x0034 Core Wait Status Register */
207 u8 res0038[4];
208 __be32 cwdtdsr; /* 0x003c Core Watchdog Detect Status Register */
209 __be32 powmgtcsr; /* 0x0040 PM Control&Status Register */
210#define RCPM_POWMGTCSR_SLP 0x00020000
211 u8 res0044[12];
212 __be32 ippdexpcr; /* 0x0050 IP Powerdown Exception Control Register */
213 u8 res0054[16];
214 __be32 cpmimr; /* 0x0064 Core PM IRQ Mask Register */
215 u8 res0068[4];
216 __be32 cpmcimr; /* 0x006c Core PM Critical IRQ Mask Register */
217 u8 res0070[4];
218 __be32 cpmmcmr; /* 0x0074 Core PM Machine Check Mask Register */
219 u8 res0078[4];
220 __be32 cpmnmimr; /* 0x007c Core PM NMI Mask Register */
221 u8 res0080[4];
222 __be32 ctbenr; /* 0x0084 Core Time Base Enable Register */
223 u8 res0088[4];
224 __be32 ctbckselr; /* 0x008c Core Time Base Clock Select Register */
225 u8 res0090[4];
226 __be32 ctbhltcr; /* 0x0094 Core Time Base Halt Control Register */
227 u8 res0098[4];
228 __be32 cmcpmaskcr; /* 0x00a4 Core Machine Check Mask Register */
229};
230
231struct ccsr_rcpm_v2 {
232 u8 res_00[12];
233 __be32 tph10sr0; /* Thread PH10 Status Register */
234 u8 res_10[12];
235 __be32 tph10setr0; /* Thread PH10 Set Control Register */
236 u8 res_20[12];
237 __be32 tph10clrr0; /* Thread PH10 Clear Control Register */
238 u8 res_30[12];
239 __be32 tph10psr0; /* Thread PH10 Previous Status Register */
240 u8 res_40[12];
241 __be32 twaitsr0; /* Thread Wait Status Register */
242 u8 res_50[96];
243 __be32 pcph15sr; /* Physical Core PH15 Status Register */
244 __be32 pcph15setr; /* Physical Core PH15 Set Control Register */
245 __be32 pcph15clrr; /* Physical Core PH15 Clear Control Register */
246 __be32 pcph15psr; /* Physical Core PH15 Prev Status Register */
247 u8 res_c0[16];
248 __be32 pcph20sr; /* Physical Core PH20 Status Register */
249 __be32 pcph20setr; /* Physical Core PH20 Set Control Register */
250 __be32 pcph20clrr; /* Physical Core PH20 Clear Control Register */
251 __be32 pcph20psr; /* Physical Core PH20 Prev Status Register */
252 __be32 pcpw20sr; /* Physical Core PW20 Status Register */
253 u8 res_e0[12];
254 __be32 pcph30sr; /* Physical Core PH30 Status Register */
255 __be32 pcph30setr; /* Physical Core PH30 Set Control Register */
256 __be32 pcph30clrr; /* Physical Core PH30 Clear Control Register */
257 __be32 pcph30psr; /* Physical Core PH30 Prev Status Register */
258 u8 res_100[32];
259 __be32 ippwrgatecr; /* IP Power Gating Control Register */
260 u8 res_124[12];
261 __be32 powmgtcsr; /* Power Management Control & Status Reg */
262#define RCPM_POWMGTCSR_LPM20_RQ 0x00100000
263#define RCPM_POWMGTCSR_LPM20_ST 0x00000200
264#define RCPM_POWMGTCSR_P_LPM20_ST 0x00000100
265 u8 res_134[12];
266 __be32 ippdexpcr[4]; /* IP Powerdown Exception Control Reg */
267 u8 res_150[12];
268 __be32 tpmimr0; /* Thread PM Interrupt Mask Reg */
269 u8 res_160[12];
270 __be32 tpmcimr0; /* Thread PM Crit Interrupt Mask Reg */
271 u8 res_170[12];
272 __be32 tpmmcmr0; /* Thread PM Machine Check Interrupt Mask Reg */
273 u8 res_180[12];
274 __be32 tpmnmimr0; /* Thread PM NMI Mask Reg */
275 u8 res_190[12];
276 __be32 tmcpmaskcr0; /* Thread Machine Check Mask Control Reg */
277 __be32 pctbenr; /* Physical Core Time Base Enable Reg */
278 __be32 pctbclkselr; /* Physical Core Time Base Clock Select */
279 __be32 tbclkdivr; /* Time Base Clock Divider Register */
280 u8 res_1ac[4];
281 __be32 ttbhltcr[4]; /* Thread Time Base Halt Control Register */
282 __be32 clpcl10sr; /* Cluster PCL10 Status Register */
283 __be32 clpcl10setr; /* Cluster PCL30 Set Control Register */
284 __be32 clpcl10clrr; /* Cluster PCL30 Clear Control Register */
285 __be32 clpcl10psr; /* Cluster PCL30 Prev Status Register */
286 __be32 cddslpsetr; /* Core Domain Deep Sleep Set Register */
287 __be32 cddslpclrr; /* Core Domain Deep Sleep Clear Register */
288 __be32 cdpwroksetr; /* Core Domain Power OK Set Register */
289 __be32 cdpwrokclrr; /* Core Domain Power OK Clear Register */
290 __be32 cdpwrensr; /* Core Domain Power Enable Status Register */
291 __be32 cddslsr; /* Core Domain Deep Sleep Status Register */
292 u8 res_1e8[8];
293 __be32 dslpcntcr[8]; /* Deep Sleep Counter Cfg Register */
294 u8 res_300[3568];
295};
296
192#endif 297#endif