Merge master.kernel.org:/home/rmk/linux-2.6-serial
[linux-2.6] / include / linux / platform.h
1 /*
2  * include/linux/platform.h - platform driver definitions
3  *
4  * Because of the prolific consumerism of the average American,
5  * and the dominant marketing budgets of PC OEMs, we have been
6  * blessed with frequent updates of the PC architecture. 
7  *
8  * While most of these calls are singular per architecture, they 
9  * require an extra layer of abstraction on the x86 so the right
10  * subsystem gets the right call. 
11  *
12  * Basically, this consolidates the power off and reboot callbacks 
13  * into one structure, as well as adding power management hooks.
14  *
15  * When adding a platform driver, please make sure all callbacks are 
16  * filled. There are defaults defined below that do nothing; use those
17  * if you do not support that callback.
18  */ 
19
20 #ifndef _PLATFORM_H_
21 #define _PLATFORM_H_
22 #ifdef __KERNEL__
23
24 #include <linux/types.h>
25
26 struct platform_t {
27         char    * name;
28         u32     suspend_states;
29         void    (*reboot)(char * cmd);
30         void    (*halt)(void);
31         void    (*power_off)(void);
32         int     (*suspend)(int state, int flags);
33         void    (*idle)(void);
34 };
35
36 extern struct platform_t * platform;
37 extern void default_reboot(char * cmd);
38 extern void default_halt(void);
39 extern int default_suspend(int state, int flags);
40 extern void default_idle(void);
41
42 #endif /* __KERNEL__ */
43 #endif /* _PLATFORM_H */