Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
cpu_pm.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2011 Google, Inc.
3
*
4
* Author:
5
* Colin Cross <
[email protected]
>
6
*
7
* This software is licensed under the terms of the GNU General Public
8
* License version 2, as published by the Free Software Foundation, and
9
* may be copied, distributed, and modified under those terms.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
*/
17
18
#ifndef _LINUX_CPU_PM_H
19
#define _LINUX_CPU_PM_H
20
21
#include <linux/kernel.h>
22
#include <
linux/notifier.h
>
23
24
/*
25
* When a CPU goes to a low power state that turns off power to the CPU's
26
* power domain, the contents of some blocks (floating point coprocessors,
27
* interrupt controllers, caches, timers) in the same power domain can
28
* be lost. The cpm_pm notifiers provide a method for platform idle, suspend,
29
* and hotplug implementations to notify the drivers for these blocks that
30
* they may be reset.
31
*
32
* All cpu_pm notifications must be called with interrupts disabled.
33
*
34
* The notifications are split into two classes: CPU notifications and CPU
35
* cluster notifications.
36
*
37
* CPU notifications apply to a single CPU and must be called on the affected
38
* CPU. They are used to save per-cpu context for affected blocks.
39
*
40
* CPU cluster notifications apply to all CPUs in a single power domain. They
41
* are used to save any global context for affected blocks, and must be called
42
* after all the CPUs in the power domain have been notified of the low power
43
* state.
44
*/
45
46
/*
47
* Event codes passed as unsigned long val to notifier calls
48
*/
49
enum
cpu_pm_event
{
50
/* A single cpu is entering a low power state */
51
CPU_PM_ENTER
,
52
53
/* A single cpu failed to enter a low power state */
54
CPU_PM_ENTER_FAILED
,
55
56
/* A single cpu is exiting a low power state */
57
CPU_PM_EXIT
,
58
59
/* A cpu power domain is entering a low power state */
60
CPU_CLUSTER_PM_ENTER
,
61
62
/* A cpu power domain failed to enter a low power state */
63
CPU_CLUSTER_PM_ENTER_FAILED
,
64
65
/* A cpu power domain is exiting a low power state */
66
CPU_CLUSTER_PM_EXIT
,
67
};
68
69
#ifdef CONFIG_CPU_PM
70
int
cpu_pm_register_notifier
(
struct
notifier_block
*nb);
71
int
cpu_pm_unregister_notifier
(
struct
notifier_block
*nb);
72
int
cpu_pm_enter
(
void
);
73
int
cpu_pm_exit
(
void
);
74
int
cpu_cluster_pm_enter
(
void
);
75
int
cpu_cluster_pm_exit
(
void
);
76
77
#else
78
79
static
inline
int
cpu_pm_register_notifier
(
struct
notifier_block
*nb)
80
{
81
return
0;
82
}
83
84
static
inline
int
cpu_pm_unregister_notifier
(
struct
notifier_block
*nb)
85
{
86
return
0;
87
}
88
89
static
inline
int
cpu_pm_enter
(
void
)
90
{
91
return
0;
92
}
93
94
static
inline
int
cpu_pm_exit
(
void
)
95
{
96
return
0;
97
}
98
99
static
inline
int
cpu_cluster_pm_enter
(
void
)
100
{
101
return
0;
102
}
103
104
static
inline
int
cpu_cluster_pm_exit
(
void
)
105
{
106
return
0;
107
}
108
#endif
109
#endif
Generated on Thu Jan 10 2013 14:51:14 for Linux Kernel by
1.8.2