Commit c912f7e1 authored by Kevin Hilman's avatar Kevin Hilman

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: default avatarKevin Hilman <khilman@deeprootsystems.com>
parent d3fd3290
...@@ -53,11 +53,12 @@ ...@@ -53,11 +53,12 @@
#include <mach/clock.h> #include <mach/clock.h>
#include <mach/sram.h> #include <mach/sram.h>
#include <mach/tc.h> #include <mach/tc.h>
#include <mach/pm.h>
#include <mach/mux.h> #include <mach/mux.h>
#include <mach/dma.h> #include <mach/dma.h>
#include <mach/dmtimer.h> #include <mach/dmtimer.h>
#include "pm.h"
static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE]; static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE];
static unsigned short dsp_sleep_save[DSP_SLEEP_SAVE_SIZE]; static unsigned short dsp_sleep_save[DSP_SLEEP_SAVE_SIZE];
static unsigned short ulpd_sleep_save[ULPD_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; ...@@ -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 * going idle we continue to do idle even if we get
* a clock tick interrupt . . * a clock tick interrupt . .
*/ */
void omap_pm_idle(void) void omap1_pm_idle(void)
{ {
extern __u32 arm_idlect1_mask; extern __u32 arm_idlect1_mask;
__u32 use_idlect1 = arm_idlect1_mask; __u32 use_idlect1 = arm_idlect1_mask;
...@@ -222,7 +223,7 @@ static void omap_pm_wakeup_setup(void) ...@@ -222,7 +223,7 @@ static void omap_pm_wakeup_setup(void)
#define EN_APICK 6 /* ARM_IDLECT2 */ #define EN_APICK 6 /* ARM_IDLECT2 */
#define DSP_EN 1 /* ARM_RSTCT1 */ #define DSP_EN 1 /* ARM_RSTCT1 */
void omap_pm_suspend(void) void omap1_pm_suspend(void)
{ {
unsigned long arg0 = 0, arg1 = 0; unsigned long arg0 = 0, arg1 = 0;
...@@ -610,7 +611,7 @@ static int omap_pm_enter(suspend_state_t state) ...@@ -610,7 +611,7 @@ static int omap_pm_enter(suspend_state_t state)
{ {
case PM_SUSPEND_STANDBY: case PM_SUSPEND_STANDBY:
case PM_SUSPEND_MEM: case PM_SUSPEND_MEM:
omap_pm_suspend(); omap1_pm_suspend();
break; break;
default: default:
return -EINVAL; return -EINVAL;
...@@ -683,7 +684,7 @@ static int __init omap_pm_init(void) ...@@ -683,7 +684,7 @@ static int __init omap_pm_init(void)
return -ENODEV; return -ENODEV;
} }
pm_idle = omap_pm_idle; pm_idle = omap1_pm_idle;
if (cpu_is_omap730()) if (cpu_is_omap730())
setup_irq(INT_730_WAKE_UP_REQ, &omap_wakeup_irq); setup_irq(INT_730_WAKE_UP_REQ, &omap_wakeup_irq);
......
/* /*
* 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. * Author: MontaVista Software, Inc.
* support@mvista.com * support@mvista.com
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
* 675 Mass Ave, Cambridge, MA 02139, USA. * 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
#ifndef __ASM_ARCH_OMAP_PM_H #ifndef __ARCH_ARM_MACH_OMAP1_PM_H
#define __ASM_ARCH_OMAP_PM_H #define __ARCH_ARM_MACH_OMAP1_PM_H
/* /*
* ---------------------------------------------------------------------------- * ----------------------------------------------------------------------------
...@@ -106,8 +106,7 @@ ...@@ -106,8 +106,7 @@
#if !defined(CONFIG_ARCH_OMAP730) && \ #if !defined(CONFIG_ARCH_OMAP730) && \
!defined(CONFIG_ARCH_OMAP15XX) && \ !defined(CONFIG_ARCH_OMAP15XX) && \
!defined(CONFIG_ARCH_OMAP16XX) && \ !defined(CONFIG_ARCH_OMAP16XX)
!defined(CONFIG_ARCH_OMAP24XX)
#warning "Power management for this processor not implemented yet" #warning "Power management for this processor not implemented yet"
#endif #endif
...@@ -115,29 +114,27 @@ ...@@ -115,29 +114,27 @@
#include <linux/clk.h> #include <linux/clk.h>
extern struct kset power_subsys;
extern void prevent_idle_sleep(void); extern void prevent_idle_sleep(void);
extern void allow_idle_sleep(void); extern void allow_idle_sleep(void);
extern void omap_pm_idle(void); extern void omap1_pm_idle(void);
extern void omap_pm_suspend(void); extern void omap1_pm_suspend(void);
extern void omap730_cpu_suspend(unsigned short, unsigned short); extern void omap730_cpu_suspend(unsigned short, unsigned short);
extern void omap1510_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 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 omap730_idle_loop_suspend(void);
extern void omap1510_idle_loop_suspend(void); extern void omap1510_idle_loop_suspend(void);
extern void omap1610_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 omap730_cpu_suspend_sz;
extern unsigned int omap1510_cpu_suspend_sz; extern unsigned int omap1510_cpu_suspend_sz;
extern unsigned int omap1610_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 omap730_idle_loop_suspend_sz;
extern unsigned int omap1510_idle_loop_suspend_sz; extern unsigned int omap1510_idle_loop_suspend_sz;
extern unsigned int omap1610_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 #ifdef CONFIG_OMAP_SERIAL_WAKE
extern void omap_serial_wake_trigger(int enable); extern void omap_serial_wake_trigger(int enable);
...@@ -170,10 +167,6 @@ 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_RESTORE(x) omap_writel((mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_##x]), (x))
#define MPUI1610_SHOW(x) mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_##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. * List of global OMAP registers to preserve.
* More ones like CP and general purpose register values are preserved * More ones like CP and general purpose register values are preserved
...@@ -283,63 +276,5 @@ enum mpui1610_save_state { ...@@ -283,63 +276,5 @@ enum mpui1610_save_state {
#endif #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 /* ASSEMBLER */
#endif /* __ASM_ARCH_OMAP_PM_H */ #endif /* __ASM_ARCH_OMAP_PM_H */
...@@ -26,9 +26,6 @@ ...@@ -26,9 +26,6 @@
#include <mach/mux.h> #include <mach/mux.h>
#include <mach/gpio.h> #include <mach/gpio.h>
#include <mach/fpga.h> #include <mach/fpga.h>
#ifdef CONFIG_PM
#include <mach/pm.h>
#endif
static struct clk * uart1_ck; static struct clk * uart1_ck;
static struct clk * uart2_ck; static struct clk * uart2_ck;
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include <mach/io.h> #include <mach/io.h>
#include <mach/pm.h> #include "pm.h"
.text .text
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment