711be5ccfe
1. introduce a structure pxa_cpu_pm_fns for pxa25x/pxa27x specific operations as follows: struct pxa_cpu_pm_fns { int save_size; void (*save)(unsigned long *); void (*restore)(unsigned long *); int (*valid)(suspend_state_t state); void (*enter)(suspend_state_t state); } 2. processor specific registers saving and restoring are performed by calling the corresponding (*save) and (*restore) 3. pxa_cpu_pm_fns->save_size should be initialized to the required size for processor specific registers saving, the allocated memory address will be passed to (*save) and (*restore) memory allocation happens early in pxa_pm_init(), and save_size should be assigned prior to this (which is usually true, since pxa_pm_init() happens in device_initcall() 4. there're some redundancies for those SLEEP_SAVE_XXX and related macros, will be fixed later, one way possible is for the system devices to handle the specific registers saving and restoring Signed-off-by: eric miao <eric.y.miao@gmail.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
21 lines
521 B
C
21 lines
521 B
C
/*
|
|
* 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.
|
|
*
|
|
*/
|
|
|
|
struct pxa_cpu_pm_fns {
|
|
int save_size;
|
|
void (*save)(unsigned long *);
|
|
void (*restore)(unsigned long *);
|
|
int (*valid)(suspend_state_t state);
|
|
void (*enter)(suspend_state_t state);
|
|
};
|
|
|
|
extern struct pxa_cpu_pm_fns *pxa_cpu_pm_fns;
|
|
|
|
extern int pxa_pm_enter(suspend_state_t state);
|