diff options
| author | chenhui zhao <chenhui.zhao@freescale.com> | 2015-11-20 04:13:59 -0500 |
|---|---|---|
| committer | Scott Wood <oss@buserror.net> | 2016-03-05 00:50:27 -0500 |
| commit | d17799f9c10e283cccd4d598d3416e6fac336ab9 (patch) | |
| tree | a1af0cb18e1821922d66a198d25aed9cdb18806f /include/linux/fsl | |
| parent | e7affb1dba0e9068aeb3978e858f39753e0dc20a (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.h | 105 |
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 | ||
| 192 | struct 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 | |||
| 231 | struct 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 |
