diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-30 19:45:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-30 19:45:39 -0400 |
commit | a335750b9a039a9d4cd727cdccacfb90fd63c4e8 (patch) | |
tree | 8f3198984fb75fe494e771d9431f6799228623c5 /include/linux | |
parent | 10f3cb41d48ab30f5c754b30eea557371892b4c2 (diff) | |
parent | d326f44e5f2204c7a24db69bfc6dd3fe5f86182b (diff) |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
Pull ACPI & Power Management changes from Len Brown:
- ACPI 5.0 after-ripples, ACPICA/Linux divergence cleanup
- cpuidle evolving, more ARM use
- thermal sub-system evolving, ditto
- assorted other PM bits
Fix up conflicts in various cpuidle implementations due to ARM cpuidle
cleanups (ARM at91 self-refresh and cpu idle code rewritten into
"standby" in asm conflicting with the consolidation of cpuidle time
keeping), trivial SH include file context conflict and RCU tracing fixes
in generic code.
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux: (77 commits)
ACPI throttling: fix endian bug in acpi_read_throttling_status()
Disable MCP limit exceeded messages from Intel IPS driver
ACPI video: Don't start video device until its associated input device has been allocated
ACPI video: Harden video bus adding.
ACPI: Add support for exposing BGRT data
ACPI: export acpi_kobj
ACPI: Fix logic for removing mappings in 'acpi_unmap'
CPER failed to handle generic error records with multiple sections
ACPI: Clean redundant codes in scan.c
ACPI: Fix unprotected smp_processor_id() in acpi_processor_cst_has_changed()
ACPI: consistently use should_use_kmap()
PNPACPI: Fix device ref leaking in acpi_pnp_match
ACPI: Fix use-after-free in acpi_map_lsapic
ACPI: processor_driver: add missing kfree
ACPI, APEI: Fix incorrect APEI register bit width check and usage
Update documentation for parameter *notrigger* in einj.txt
ACPI, APEI, EINJ, new parameter to control trigger action
ACPI, APEI, EINJ, limit the range of einj_param
ACPI, APEI, Fix ERST header length check
cpuidle: power_usage should be declared signed integer
...
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/acpi.h | 10 | ||||
-rw-r--r-- | include/linux/cpuidle.h | 22 | ||||
-rw-r--r-- | include/linux/platform_data/spear_thermal.h | 26 | ||||
-rw-r--r-- | include/linux/tboot.h | 1 |
4 files changed, 55 insertions, 4 deletions
diff --git a/include/linux/acpi.h b/include/linux/acpi.h index f53fea61f40a..f421dd84f29d 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h | |||
@@ -372,4 +372,14 @@ static inline int acpi_nvs_for_each_region(int (*func)(__u64, __u64, void *), | |||
372 | 372 | ||
373 | #endif /* !CONFIG_ACPI */ | 373 | #endif /* !CONFIG_ACPI */ |
374 | 374 | ||
375 | #ifdef CONFIG_ACPI | ||
376 | void acpi_os_set_prepare_sleep(int (*func)(u8 sleep_state, | ||
377 | u32 pm1a_ctrl, u32 pm1b_ctrl)); | ||
378 | |||
379 | acpi_status acpi_os_prepare_sleep(u8 sleep_state, | ||
380 | u32 pm1a_control, u32 pm1b_control); | ||
381 | #else | ||
382 | #define acpi_os_set_prepare_sleep(func, pm1a_ctrl, pm1b_ctrl) do { } while (0) | ||
383 | #endif | ||
384 | |||
375 | #endif /*_LINUX_ACPI_H*/ | 385 | #endif /*_LINUX_ACPI_H*/ |
diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h index 712abcc205ae..6c26a3da0e03 100644 --- a/include/linux/cpuidle.h +++ b/include/linux/cpuidle.h | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/list.h> | 15 | #include <linux/list.h> |
16 | #include <linux/kobject.h> | 16 | #include <linux/kobject.h> |
17 | #include <linux/completion.h> | 17 | #include <linux/completion.h> |
18 | #include <linux/hrtimer.h> | ||
18 | 19 | ||
19 | #define CPUIDLE_STATE_MAX 8 | 20 | #define CPUIDLE_STATE_MAX 8 |
20 | #define CPUIDLE_NAME_LEN 16 | 21 | #define CPUIDLE_NAME_LEN 16 |
@@ -43,12 +44,15 @@ struct cpuidle_state { | |||
43 | 44 | ||
44 | unsigned int flags; | 45 | unsigned int flags; |
45 | unsigned int exit_latency; /* in US */ | 46 | unsigned int exit_latency; /* in US */ |
46 | unsigned int power_usage; /* in mW */ | 47 | int power_usage; /* in mW */ |
47 | unsigned int target_residency; /* in US */ | 48 | unsigned int target_residency; /* in US */ |
49 | unsigned int disable; | ||
48 | 50 | ||
49 | int (*enter) (struct cpuidle_device *dev, | 51 | int (*enter) (struct cpuidle_device *dev, |
50 | struct cpuidle_driver *drv, | 52 | struct cpuidle_driver *drv, |
51 | int index); | 53 | int index); |
54 | |||
55 | int (*enter_dead) (struct cpuidle_device *dev, int index); | ||
52 | }; | 56 | }; |
53 | 57 | ||
54 | /* Idle State Flags */ | 58 | /* Idle State Flags */ |
@@ -96,7 +100,6 @@ struct cpuidle_device { | |||
96 | struct list_head device_list; | 100 | struct list_head device_list; |
97 | struct kobject kobj; | 101 | struct kobject kobj; |
98 | struct completion kobj_unregister; | 102 | struct completion kobj_unregister; |
99 | void *governor_data; | ||
100 | }; | 103 | }; |
101 | 104 | ||
102 | DECLARE_PER_CPU(struct cpuidle_device *, cpuidle_devices); | 105 | DECLARE_PER_CPU(struct cpuidle_device *, cpuidle_devices); |
@@ -118,10 +121,12 @@ static inline int cpuidle_get_last_residency(struct cpuidle_device *dev) | |||
118 | ****************************/ | 121 | ****************************/ |
119 | 122 | ||
120 | struct cpuidle_driver { | 123 | struct cpuidle_driver { |
121 | char name[CPUIDLE_NAME_LEN]; | 124 | const char *name; |
122 | struct module *owner; | 125 | struct module *owner; |
123 | 126 | ||
124 | unsigned int power_specified:1; | 127 | unsigned int power_specified:1; |
128 | /* set to 1 to use the core cpuidle time keeping (for all states). */ | ||
129 | unsigned int en_core_tk_irqen:1; | ||
125 | struct cpuidle_state states[CPUIDLE_STATE_MAX]; | 130 | struct cpuidle_state states[CPUIDLE_STATE_MAX]; |
126 | int state_count; | 131 | int state_count; |
127 | int safe_state_index; | 132 | int safe_state_index; |
@@ -140,6 +145,11 @@ extern void cpuidle_pause_and_lock(void); | |||
140 | extern void cpuidle_resume_and_unlock(void); | 145 | extern void cpuidle_resume_and_unlock(void); |
141 | extern int cpuidle_enable_device(struct cpuidle_device *dev); | 146 | extern int cpuidle_enable_device(struct cpuidle_device *dev); |
142 | extern void cpuidle_disable_device(struct cpuidle_device *dev); | 147 | extern void cpuidle_disable_device(struct cpuidle_device *dev); |
148 | extern int cpuidle_wrap_enter(struct cpuidle_device *dev, | ||
149 | struct cpuidle_driver *drv, int index, | ||
150 | int (*enter)(struct cpuidle_device *dev, | ||
151 | struct cpuidle_driver *drv, int index)); | ||
152 | extern int cpuidle_play_dead(void); | ||
143 | 153 | ||
144 | #else | 154 | #else |
145 | static inline void disable_cpuidle(void) { } | 155 | static inline void disable_cpuidle(void) { } |
@@ -157,6 +167,12 @@ static inline void cpuidle_resume_and_unlock(void) { } | |||
157 | static inline int cpuidle_enable_device(struct cpuidle_device *dev) | 167 | static inline int cpuidle_enable_device(struct cpuidle_device *dev) |
158 | {return -ENODEV; } | 168 | {return -ENODEV; } |
159 | static inline void cpuidle_disable_device(struct cpuidle_device *dev) { } | 169 | static inline void cpuidle_disable_device(struct cpuidle_device *dev) { } |
170 | static inline int cpuidle_wrap_enter(struct cpuidle_device *dev, | ||
171 | struct cpuidle_driver *drv, int index, | ||
172 | int (*enter)(struct cpuidle_device *dev, | ||
173 | struct cpuidle_driver *drv, int index)) | ||
174 | { return -ENODEV; } | ||
175 | static inline int cpuidle_play_dead(void) {return -ENODEV; } | ||
160 | 176 | ||
161 | #endif | 177 | #endif |
162 | 178 | ||
diff --git a/include/linux/platform_data/spear_thermal.h b/include/linux/platform_data/spear_thermal.h new file mode 100644 index 000000000000..724f2e1cbbcb --- /dev/null +++ b/include/linux/platform_data/spear_thermal.h | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * SPEAr thermal driver platform data. | ||
3 | * | ||
4 | * Copyright (C) 2011-2012 ST Microelectronics | ||
5 | * Author: Vincenzo Frascino <vincenzo.frascino@st.com> | ||
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 | #ifndef SPEAR_THERMAL_H | ||
18 | #define SPEAR_THERMAL_H | ||
19 | |||
20 | /* SPEAr Thermal Sensor Platform Data */ | ||
21 | struct spear_thermal_pdata { | ||
22 | /* flags used to enable thermal sensor */ | ||
23 | unsigned int thermal_flags; | ||
24 | }; | ||
25 | |||
26 | #endif /* SPEAR_THERMAL_H */ | ||
diff --git a/include/linux/tboot.h b/include/linux/tboot.h index 1dba6ee55203..c75128bed5fa 100644 --- a/include/linux/tboot.h +++ b/include/linux/tboot.h | |||
@@ -143,7 +143,6 @@ static inline int tboot_enabled(void) | |||
143 | 143 | ||
144 | extern void tboot_probe(void); | 144 | extern void tboot_probe(void); |
145 | extern void tboot_shutdown(u32 shutdown_type); | 145 | extern void tboot_shutdown(u32 shutdown_type); |
146 | extern void tboot_sleep(u8 sleep_state, u32 pm1a_control, u32 pm1b_control); | ||
147 | extern struct acpi_table_header *tboot_get_dmar_table( | 146 | extern struct acpi_table_header *tboot_get_dmar_table( |
148 | struct acpi_table_header *dmar_tbl); | 147 | struct acpi_table_header *dmar_tbl); |
149 | extern int tboot_force_iommu(void); | 148 | extern int tboot_force_iommu(void); |