diff options
author | Chenhui Zhao <chenhui.zhao@freescale.com> | 2014-02-17 09:58:56 (GMT) |
---|---|---|
committer | Jose Rivera <German.Rivera@freescale.com> | 2014-04-05 21:52:55 (GMT) |
commit | d92b336def412d29863f0086d3edffb05df2ebc5 (patch) | |
tree | 4e62bddc7809a3b85330e2c731934a12e95a0bae /arch/powerpc/include | |
parent | 67d36dfe1a4095561287da8ce2bafd0a62a4dddc (diff) | |
download | linux-fsl-qoriq-d92b336def412d29863f0086d3edffb05df2ebc5.tar.xz |
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.
There are two versions of register map in RCPM, which is specified by
the compatible entry in the RCPM node of device tree.
Change-Id: I113211311c7241df95f067103d0ed81ada26d2ed
Signed-off-by: Chenhui Zhao <chenhui.zhao@freescale.com>
Reviewed-on: http://git.am.freescale.net:8181/10706
Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com>
Reviewed-by: Yang Li <LeoLi@freescale.com>
Reviewed-by: Jose Rivera <German.Rivera@freescale.com>
Diffstat (limited to 'arch/powerpc/include')
-rw-r--r-- | arch/powerpc/include/asm/fsl_guts.h | 2 | ||||
-rw-r--r-- | arch/powerpc/include/asm/fsl_pm.h | 37 |
2 files changed, 38 insertions, 1 deletions
diff --git a/arch/powerpc/include/asm/fsl_guts.h b/arch/powerpc/include/asm/fsl_guts.h index 193d1f1..1b5055d 100644 --- a/arch/powerpc/include/asm/fsl_guts.h +++ b/arch/powerpc/include/asm/fsl_guts.h @@ -106,7 +106,7 @@ struct ccsr_guts { /* Alternate function signal multiplex control */ #define MPC85xx_PMUXCR_QE(x) (0x8000 >> (x)) -struct ccsr_rcpm { +struct ccsr_rcpm_v1 { u8 res0000[4]; __be32 cdozsr; /* 0x0004 - Core Doze Status Register */ u8 res0008[4]; diff --git a/arch/powerpc/include/asm/fsl_pm.h b/arch/powerpc/include/asm/fsl_pm.h new file mode 100644 index 0000000..03f35a4 --- /dev/null +++ b/arch/powerpc/include/asm/fsl_pm.h @@ -0,0 +1,37 @@ +/* + * Support Power Management + * + * Copyright 2014 Freescale Semiconductor Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ +#ifndef __PPC_FSL_PM_H +#define __PPC_FSL_PM_H +#ifdef __KERNEL__ + +#define E500_PM_PH10 1 +#define E500_PM_PH15 2 +#define E500_PM_PH20 3 +#define E500_PM_PH30 4 +#define E500_PM_DOZE E500_PM_PH10 +#define E500_PM_NAP E500_PM_PH15 + +#define PLAT_PM_SLEEP 20 +#define PLAT_PM_LPM20 30 + +struct fsl_pm_ops { + void (*irq_mask)(int cpu); + void (*irq_unmask)(int cpu); + void (*cpu_enter_state)(int cpu, int state); + void (*cpu_exit_state)(int cpu, int state); + int (*plat_enter_state)(int state); + void (*freeze_time_base)(int freeze); + void (*set_ip_power)(int enable, u32 mask); +}; + +extern const struct fsl_pm_ops *qoriq_pm_ops; +#endif /* __KERNEL__ */ +#endif /* __PPC_FSL_PM_H */ |