Commit 756c7b74 authored by Richard Purdie's avatar Richard Purdie Committed by Russell King

[ARM] 3113/1: PXA: Allow machines to override (and also reuse) pxa pm functions

Patch from Richard Purdie

Update the PXA pm.c file to allow machines (such as the Sharp
Zaurus) to override the standard pm functions but reuse/wrap them
where needed.

The init call is made slightly earlier to give machine code an init
level to override them in removing any race.

Signed-off-by: Richard Purdie
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent b7ec4795
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
*/ */
#include <linux/config.h> #include <linux/config.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h>
#include <linux/suspend.h> #include <linux/suspend.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/time.h> #include <linux/time.h>
...@@ -19,6 +20,7 @@ ...@@ -19,6 +20,7 @@
#include <asm/hardware.h> #include <asm/hardware.h>
#include <asm/memory.h> #include <asm/memory.h>
#include <asm/system.h> #include <asm/system.h>
#include <asm/arch/pm.h>
#include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-regs.h>
#include <asm/arch/lubbock.h> #include <asm/arch/lubbock.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
...@@ -72,7 +74,7 @@ enum { SLEEP_SAVE_START = 0, ...@@ -72,7 +74,7 @@ enum { SLEEP_SAVE_START = 0,
}; };
static int pxa_pm_enter(suspend_state_t state) int pxa_pm_enter(suspend_state_t state)
{ {
unsigned long sleep_save[SLEEP_SAVE_SIZE]; unsigned long sleep_save[SLEEP_SAVE_SIZE];
unsigned long checksum = 0; unsigned long checksum = 0;
...@@ -191,6 +193,8 @@ static int pxa_pm_enter(suspend_state_t state) ...@@ -191,6 +193,8 @@ static int pxa_pm_enter(suspend_state_t state)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(pxa_pm_enter);
unsigned long sleep_phys_sp(void *sp) unsigned long sleep_phys_sp(void *sp)
{ {
return virt_to_phys(sp); return virt_to_phys(sp);
...@@ -199,21 +203,25 @@ unsigned long sleep_phys_sp(void *sp) ...@@ -199,21 +203,25 @@ unsigned long sleep_phys_sp(void *sp)
/* /*
* Called after processes are frozen, but before we shut down devices. * Called after processes are frozen, but before we shut down devices.
*/ */
static int pxa_pm_prepare(suspend_state_t state) int pxa_pm_prepare(suspend_state_t state)
{ {
extern int pxa_cpu_pm_prepare(suspend_state_t state); extern int pxa_cpu_pm_prepare(suspend_state_t state);
return pxa_cpu_pm_prepare(state); return pxa_cpu_pm_prepare(state);
} }
EXPORT_SYMBOL_GPL(pxa_pm_prepare);
/* /*
* Called after devices are re-setup, but before processes are thawed. * Called after devices are re-setup, but before processes are thawed.
*/ */
static int pxa_pm_finish(suspend_state_t state) int pxa_pm_finish(suspend_state_t state)
{ {
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(pxa_pm_finish);
/* /*
* Set to PM_DISK_FIRMWARE so we can quickly veto suspend-to-disk. * Set to PM_DISK_FIRMWARE so we can quickly veto suspend-to-disk.
*/ */
...@@ -230,4 +238,4 @@ static int __init pxa_pm_init(void) ...@@ -230,4 +238,4 @@ static int __init pxa_pm_init(void)
return 0; return 0;
} }
late_initcall(pxa_pm_init); device_initcall(pxa_pm_init);
/*
* Copyright (c) 2005 Richard Purdie
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
*/
extern int pxa_pm_prepare(suspend_state_t state);
extern int pxa_pm_enter(suspend_state_t state);
extern int pxa_pm_finish(suspend_state_t state);
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