Merge with git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
[powerpc.git] / kernel / power / console.c
1 /*
2  * drivers/power/process.c - Functions for saving/restoring console.
3  *
4  * Originally from swsusp.
5  */
6
7 #include <linux/vt_kern.h>
8 #include <linux/kbd_kern.h>
9 #include <linux/console.h>
10 #include "power.h"
11
12 #ifdef SUSPEND_CONSOLE
13 static int orig_fgconsole, orig_kmsg;
14
15 int pm_prepare_console(void)
16 {
17         acquire_console_sem();
18
19         orig_fgconsole = fg_console;
20
21         if (vc_allocate(SUSPEND_CONSOLE)) {
22           /* we can't have a free VC for now. Too bad,
23            * we don't want to mess the screen for now. */
24                 release_console_sem();
25                 return 1;
26         }
27
28         set_console(SUSPEND_CONSOLE);
29         release_console_sem();
30
31         if (vt_waitactive(SUSPEND_CONSOLE)) {
32                 pr_debug("Suspend: Can't switch VCs.");
33                 return 1;
34         }
35         orig_kmsg = kmsg_redirect;
36         kmsg_redirect = SUSPEND_CONSOLE;
37         return 0;
38 }
39
40 void pm_restore_console(void)
41 {
42         acquire_console_sem();
43         set_console(orig_fgconsole);
44         release_console_sem();
45         kmsg_redirect = orig_kmsg;
46         return;
47 }
48 #endif