OMAP1: PM: update and decouple from OMAP2/3 PM core
Update OMAP1-specific PM infrastructure. This is a sync of what is in linux-omap for OMAP1. This mostly de-couples OMAP1 PM from OMAP2/3 PM and renames things accordingly, and removes omap2/3 specific code from OMAP1 specific headers. Original OMAP1 decoupling patch for OMAP PM branch by Paul Walmsley. Cc: Paul Walmsley <paul@pwsan.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
This commit is contained in:
parent
d3fd3290c4
commit
c912f7e1ea
|
@ -53,11 +53,12 @@
|
|||
#include <mach/clock.h>
|
||||
#include <mach/sram.h>
|
||||
#include <mach/tc.h>
|
||||
#include <mach/pm.h>
|
||||
#include <mach/mux.h>
|
||||
#include <mach/dma.h>
|
||||
#include <mach/dmtimer.h>
|
||||
|
||||
#include "pm.h"
|
||||
|
||||
static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE];
|
||||
static unsigned short dsp_sleep_save[DSP_SLEEP_SAVE_SIZE];
|
||||
static unsigned short ulpd_sleep_save[ULPD_SLEEP_SAVE_SIZE];
|
||||
|
@ -101,7 +102,7 @@ static void (*omap_sram_suspend)(unsigned long r0, unsigned long r1) = NULL;
|
|||
* going idle we continue to do idle even if we get
|
||||
* a clock tick interrupt . .
|
||||
*/
|
||||
void omap_pm_idle(void)
|
||||
void omap1_pm_idle(void)
|
||||
{
|
||||
extern __u32 arm_idlect1_mask;
|
||||
__u32 use_idlect1 = arm_idlect1_mask;
|
||||
|
@ -222,7 +223,7 @@ static void omap_pm_wakeup_setup(void)
|
|||
#define EN_APICK 6 /* ARM_IDLECT2 */
|
||||
#define DSP_EN 1 /* ARM_RSTCT1 */
|
||||
|
||||
void omap_pm_suspend(void)
|
||||
void omap1_pm_suspend(void)
|
||||
{
|
||||
unsigned long arg0 = 0, arg1 = 0;
|
||||
|
||||
|
@ -610,7 +611,7 @@ static int omap_pm_enter(suspend_state_t state)
|
|||
{
|
||||
case PM_SUSPEND_STANDBY:
|
||||
case PM_SUSPEND_MEM:
|
||||
omap_pm_suspend();
|
||||
omap1_pm_suspend();
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
@ -683,7 +684,7 @@ static int __init omap_pm_init(void)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
pm_idle = omap_pm_idle;
|
||||
pm_idle = omap1_pm_idle;
|
||||
|
||||
if (cpu_is_omap730())
|
||||
setup_irq(INT_730_WAKE_UP_REQ, &omap_wakeup_irq);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* arch/arm/plat-omap/include/mach/pm.h
|
||||
* arch/arm/mach-omap1/pm.h
|
||||
*
|
||||
* Header file for OMAP Power Management Routines
|
||||
* Header file for OMAP1 Power Management Routines
|
||||
*
|
||||
* Author: MontaVista Software, Inc.
|
||||
* support@mvista.com
|
||||
|
@ -31,8 +31,8 @@
|
|||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_OMAP_PM_H
|
||||
#define __ASM_ARCH_OMAP_PM_H
|
||||
#ifndef __ARCH_ARM_MACH_OMAP1_PM_H
|
||||
#define __ARCH_ARM_MACH_OMAP1_PM_H
|
||||
|
||||
/*
|
||||
* ----------------------------------------------------------------------------
|
||||
|
@ -106,8 +106,7 @@
|
|||
|
||||
#if !defined(CONFIG_ARCH_OMAP730) && \
|
||||
!defined(CONFIG_ARCH_OMAP15XX) && \
|
||||
!defined(CONFIG_ARCH_OMAP16XX) && \
|
||||
!defined(CONFIG_ARCH_OMAP24XX)
|
||||
!defined(CONFIG_ARCH_OMAP16XX)
|
||||
#warning "Power management for this processor not implemented yet"
|
||||
#endif
|
||||
|
||||
|
@ -115,29 +114,27 @@
|
|||
|
||||
#include <linux/clk.h>
|
||||
|
||||
extern struct kset power_subsys;
|
||||
|
||||
extern void prevent_idle_sleep(void);
|
||||
extern void allow_idle_sleep(void);
|
||||
|
||||
extern void omap_pm_idle(void);
|
||||
extern void omap_pm_suspend(void);
|
||||
extern void omap1_pm_idle(void);
|
||||
extern void omap1_pm_suspend(void);
|
||||
|
||||
extern void omap730_cpu_suspend(unsigned short, unsigned short);
|
||||
extern void omap1510_cpu_suspend(unsigned short, unsigned short);
|
||||
extern void omap1610_cpu_suspend(unsigned short, unsigned short);
|
||||
extern void omap24xx_cpu_suspend(u32 dll_ctrl, void __iomem *sdrc_dlla_ctrl,
|
||||
void __iomem *sdrc_power);
|
||||
extern void omap730_idle_loop_suspend(void);
|
||||
extern void omap1510_idle_loop_suspend(void);
|
||||
extern void omap1610_idle_loop_suspend(void);
|
||||
extern void omap24xx_idle_loop_suspend(void);
|
||||
|
||||
extern unsigned int omap730_cpu_suspend_sz;
|
||||
extern unsigned int omap1510_cpu_suspend_sz;
|
||||
extern unsigned int omap1610_cpu_suspend_sz;
|
||||
extern unsigned int omap24xx_cpu_suspend_sz;
|
||||
extern unsigned int omap730_idle_loop_suspend_sz;
|
||||
extern unsigned int omap1510_idle_loop_suspend_sz;
|
||||
extern unsigned int omap1610_idle_loop_suspend_sz;
|
||||
extern unsigned int omap24xx_idle_loop_suspend_sz;
|
||||
|
||||
#ifdef CONFIG_OMAP_SERIAL_WAKE
|
||||
extern void omap_serial_wake_trigger(int enable);
|
||||
|
@ -170,10 +167,6 @@ extern void omap_serial_wake_trigger(int enable);
|
|||
#define MPUI1610_RESTORE(x) omap_writel((mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_##x]), (x))
|
||||
#define MPUI1610_SHOW(x) mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_##x]
|
||||
|
||||
#define OMAP24XX_SAVE(x) omap24xx_sleep_save[OMAP24XX_SLEEP_SAVE_##x] = x
|
||||
#define OMAP24XX_RESTORE(x) x = omap24xx_sleep_save[OMAP24XX_SLEEP_SAVE_##x]
|
||||
#define OMAP24XX_SHOW(x) omap24xx_sleep_save[OMAP24XX_SLEEP_SAVE_##x]
|
||||
|
||||
/*
|
||||
* List of global OMAP registers to preserve.
|
||||
* More ones like CP and general purpose register values are preserved
|
||||
|
@ -283,63 +276,5 @@ enum mpui1610_save_state {
|
|||
#endif
|
||||
};
|
||||
|
||||
enum omap24xx_save_state {
|
||||
OMAP24XX_SLEEP_SAVE_START = 0,
|
||||
OMAP24XX_SLEEP_SAVE_INTC_MIR0,
|
||||
OMAP24XX_SLEEP_SAVE_INTC_MIR1,
|
||||
OMAP24XX_SLEEP_SAVE_INTC_MIR2,
|
||||
|
||||
OMAP24XX_SLEEP_SAVE_CM_CLKSTCTRL_MPU,
|
||||
OMAP24XX_SLEEP_SAVE_CM_CLKSTCTRL_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_CLKSTCTRL_GFX,
|
||||
OMAP24XX_SLEEP_SAVE_CM_CLKSTCTRL_DSP,
|
||||
OMAP24XX_SLEEP_SAVE_CM_CLKSTCTRL_MDM,
|
||||
|
||||
OMAP24XX_SLEEP_SAVE_PM_PWSTCTRL_MPU,
|
||||
OMAP24XX_SLEEP_SAVE_PM_PWSTCTRL_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_PM_PWSTCTRL_GFX,
|
||||
OMAP24XX_SLEEP_SAVE_PM_PWSTCTRL_DSP,
|
||||
OMAP24XX_SLEEP_SAVE_PM_PWSTCTRL_MDM,
|
||||
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST1_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST2_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST3_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST4_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST_GFX,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST_WKUP,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST_CKGEN,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST_DSP,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST_MDM,
|
||||
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE1_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE2_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE3_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE4_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE_WKUP,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE_PLL,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE_DSP,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE_MDM,
|
||||
|
||||
OMAP24XX_SLEEP_SAVE_CM_FCLKEN1_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_FCLKEN2_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_ICLKEN1_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_ICLKEN2_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_ICLKEN3_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_ICLKEN4_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO1_IRQENABLE1,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO2_IRQENABLE1,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO3_IRQENABLE1,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO4_IRQENABLE1,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO3_OE,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO4_OE,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO3_RISINGDETECT,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO3_FALLINGDETECT,
|
||||
OMAP24XX_SLEEP_SAVE_CONTROL_PADCONF_SPI1_NCS2,
|
||||
OMAP24XX_SLEEP_SAVE_CONTROL_PADCONF_MCBSP1_DX,
|
||||
OMAP24XX_SLEEP_SAVE_CONTROL_PADCONF_SSI1_FLAG_TX,
|
||||
OMAP24XX_SLEEP_SAVE_CONTROL_PADCONF_SYS_NIRQW0,
|
||||
OMAP24XX_SLEEP_SAVE_SIZE
|
||||
};
|
||||
|
||||
#endif /* ASSEMBLER */
|
||||
#endif /* __ASM_ARCH_OMAP_PM_H */
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
#include <mach/mux.h>
|
||||
#include <mach/gpio.h>
|
||||
#include <mach/fpga.h>
|
||||
#ifdef CONFIG_PM
|
||||
#include <mach/pm.h>
|
||||
#endif
|
||||
|
||||
static struct clk * uart1_ck;
|
||||
static struct clk * uart2_ck;
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <mach/io.h>
|
||||
#include <mach/pm.h>
|
||||
#include "pm.h"
|
||||
|
||||
.text
|
||||
|
||||
|
|
Loading…
Reference in New Issue