aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-01-04 16:05:20 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-01-04 16:05:20 -0500
commite3e9b577b477edbf50e6c1f93beee89f450f2b68 (patch)
treefba9c882c67cb4212a1a041011c22a1703ff9d5b
parent6b0e2b32871b7c10c75d647b0295a092f918f3e7 (diff)
ACPICA: Drop Linux-specific waking vector functions
Commit f06147f9fbf1 (ACPICA: Hardware: Enable firmware waking vector for both 32-bit and 64-bit FACS) added three functions that aren't present in upstream ACPICA, acpi_hw_set_firmware_waking_vectors(), acpi_set_firmware_waking_vectors() and acpi_set_firmware_waking_vector64(), to allow Linux to use the previously existing API for setting the platform firmware waking vector. However, that wasn't necessary, since the ACPI sleep support code in Linux can be modified to use the upstream ACPICA's API easily and the additional functions may be dropped which reduces the code size and puts the kernel's ACPICA code more in line with the upstream. Make the changes as per the above. While at it, make the relevant function desctiption comments reflect the upstream ACPICA's ones. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Lv Zheng <lv.zheng@intel.com>
-rw-r--r--drivers/acpi/acpica/hwxfsleep.c96
-rw-r--r--drivers/acpi/sleep.c4
-rw-r--r--drivers/acpi/sleep.h6
-rw-r--r--include/acpi/acpixf.h10
4 files changed, 28 insertions, 88 deletions
diff --git a/drivers/acpi/acpica/hwxfsleep.c b/drivers/acpi/acpica/hwxfsleep.c
index f8af1abb6ef1..1ce4efa1a2bd 100644
--- a/drivers/acpi/acpica/hwxfsleep.c
+++ b/drivers/acpi/acpica/hwxfsleep.c
@@ -52,9 +52,9 @@ ACPI_MODULE_NAME("hwxfsleep")
52/* Local prototypes */ 52/* Local prototypes */
53#if (!ACPI_REDUCED_HARDWARE) 53#if (!ACPI_REDUCED_HARDWARE)
54static acpi_status 54static acpi_status
55acpi_hw_set_firmware_waking_vectors(struct acpi_table_facs *facs, 55acpi_hw_set_firmware_waking_vector(struct acpi_table_facs *facs,
56 acpi_physical_address physical_address, 56 acpi_physical_address physical_address,
57 acpi_physical_address physical_address64); 57 acpi_physical_address physical_address64);
58#endif 58#endif
59 59
60static acpi_status acpi_hw_sleep_dispatch(u8 sleep_state, u32 function_id); 60static acpi_status acpi_hw_sleep_dispatch(u8 sleep_state, u32 function_id);
@@ -79,22 +79,20 @@ static struct acpi_sleep_functions acpi_sleep_dispatch[] = {
79 79
80/* 80/*
81 * These functions are removed for the ACPI_REDUCED_HARDWARE case: 81 * These functions are removed for the ACPI_REDUCED_HARDWARE case:
82 * acpi_set_firmware_waking_vectors
83 * acpi_set_firmware_waking_vector 82 * acpi_set_firmware_waking_vector
84 * acpi_set_firmware_waking_vector64
85 * acpi_enter_sleep_state_s4bios 83 * acpi_enter_sleep_state_s4bios
86 */ 84 */
87 85
88#if (!ACPI_REDUCED_HARDWARE) 86#if (!ACPI_REDUCED_HARDWARE)
89/******************************************************************************* 87/*******************************************************************************
90 * 88 *
91 * FUNCTION: acpi_hw_set_firmware_waking_vectors 89 * FUNCTION: acpi_hw_set_firmware_waking_vector
92 * 90 *
93 * PARAMETERS: facs - Pointer to FACS table 91 * PARAMETERS: facs - Pointer to FACS table
94 * physical_address - 32-bit physical address of ACPI real mode 92 * physical_address - 32-bit physical address of ACPI real mode
95 * entry point. 93 * entry point
96 * physical_address64 - 64-bit physical address of ACPI protected 94 * physical_address64 - 64-bit physical address of ACPI protected
97 * mode entry point. 95 * mode entry point
98 * 96 *
99 * RETURN: Status 97 * RETURN: Status
100 * 98 *
@@ -103,11 +101,11 @@ static struct acpi_sleep_functions acpi_sleep_dispatch[] = {
103 ******************************************************************************/ 101 ******************************************************************************/
104 102
105static acpi_status 103static acpi_status
106acpi_hw_set_firmware_waking_vectors(struct acpi_table_facs *facs, 104acpi_hw_set_firmware_waking_vector(struct acpi_table_facs *facs,
107 acpi_physical_address physical_address, 105 acpi_physical_address physical_address,
108 acpi_physical_address physical_address64) 106 acpi_physical_address physical_address64)
109{ 107{
110 ACPI_FUNCTION_TRACE(acpi_hw_set_firmware_waking_vectors); 108 ACPI_FUNCTION_TRACE(acpi_hw_set_firmware_waking_vector);
111 109
112 110
113 /* 111 /*
@@ -140,12 +138,12 @@ acpi_hw_set_firmware_waking_vectors(struct acpi_table_facs *facs,
140 138
141/******************************************************************************* 139/*******************************************************************************
142 * 140 *
143 * FUNCTION: acpi_set_firmware_waking_vectors 141 * FUNCTION: acpi_set_firmware_waking_vector
144 * 142 *
145 * PARAMETERS: physical_address - 32-bit physical address of ACPI real mode 143 * PARAMETERS: physical_address - 32-bit physical address of ACPI real mode
146 * entry point. 144 * entry point
147 * physical_address64 - 64-bit physical address of ACPI protected 145 * physical_address64 - 64-bit physical address of ACPI protected
148 * mode entry point. 146 * mode entry point
149 * 147 *
150 * RETURN: Status 148 * RETURN: Status
151 * 149 *
@@ -154,79 +152,23 @@ acpi_hw_set_firmware_waking_vectors(struct acpi_table_facs *facs,
154 ******************************************************************************/ 152 ******************************************************************************/
155 153
156acpi_status 154acpi_status
157acpi_set_firmware_waking_vectors(acpi_physical_address physical_address, 155acpi_set_firmware_waking_vector(acpi_physical_address physical_address,
158 acpi_physical_address physical_address64) 156 acpi_physical_address physical_address64)
159{ 157{
160 158
161 ACPI_FUNCTION_TRACE(acpi_set_firmware_waking_vectors); 159 ACPI_FUNCTION_TRACE(acpi_set_firmware_waking_vector);
162 160
163 if (acpi_gbl_FACS) { 161 if (acpi_gbl_FACS) {
164 (void)acpi_hw_set_firmware_waking_vectors(acpi_gbl_FACS, 162 (void)acpi_hw_set_firmware_waking_vector(acpi_gbl_FACS,
165 physical_address, 163 physical_address,
166 physical_address64); 164 physical_address64);
167 } 165 }
168 166
169 return_ACPI_STATUS(AE_OK); 167 return_ACPI_STATUS(AE_OK);
170} 168}
171 169
172ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vectors)
173
174/*******************************************************************************
175 *
176 * FUNCTION: acpi_set_firmware_waking_vector
177 *
178 * PARAMETERS: physical_address - 32-bit physical address of ACPI real mode
179 * entry point.
180 *
181 * RETURN: Status
182 *
183 * DESCRIPTION: Sets the 32-bit firmware_waking_vector field of the FACS
184 *
185 ******************************************************************************/
186acpi_status acpi_set_firmware_waking_vector(u32 physical_address)
187{
188 acpi_status status;
189
190 ACPI_FUNCTION_TRACE(acpi_set_firmware_waking_vector);
191
192 status = acpi_set_firmware_waking_vectors((acpi_physical_address)
193 physical_address, 0);
194
195 return_ACPI_STATUS(status);
196}
197
198ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector) 170ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector)
199 171
200#if ACPI_MACHINE_WIDTH == 64
201/*******************************************************************************
202 *
203 * FUNCTION: acpi_set_firmware_waking_vector64
204 *
205 * PARAMETERS: physical_address - 64-bit physical address of ACPI protected
206 * mode entry point.
207 *
208 * RETURN: Status
209 *
210 * DESCRIPTION: Sets the 64-bit X_firmware_waking_vector field of the FACS, if
211 * it exists in the table. This function is intended for use with
212 * 64-bit host operating systems.
213 *
214 ******************************************************************************/
215acpi_status acpi_set_firmware_waking_vector64(u64 physical_address)
216{
217 acpi_status status;
218
219 ACPI_FUNCTION_TRACE(acpi_set_firmware_waking_vector64);
220
221 status = acpi_set_firmware_waking_vectors(0,
222 (acpi_physical_address)
223 physical_address);
224
225 return_ACPI_STATUS(status);
226}
227
228ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector64)
229#endif
230/******************************************************************************* 172/*******************************************************************************
231 * 173 *
232 * FUNCTION: acpi_enter_sleep_state_s4bios 174 * FUNCTION: acpi_enter_sleep_state_s4bios
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 0d94621dc856..9cb975200cac 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -61,7 +61,7 @@ static int acpi_sleep_prepare(u32 acpi_state)
61 if (acpi_state == ACPI_STATE_S3) { 61 if (acpi_state == ACPI_STATE_S3) {
62 if (!acpi_wakeup_address) 62 if (!acpi_wakeup_address)
63 return -EFAULT; 63 return -EFAULT;
64 acpi_set_firmware_waking_vector(acpi_wakeup_address); 64 acpi_set_waking_vector(acpi_wakeup_address);
65 65
66 } 66 }
67 ACPI_FLUSH_CPU_CACHE(); 67 ACPI_FLUSH_CPU_CACHE();
@@ -410,7 +410,7 @@ static void acpi_pm_finish(void)
410 acpi_leave_sleep_state(acpi_state); 410 acpi_leave_sleep_state(acpi_state);
411 411
412 /* reset firmware waking vector */ 412 /* reset firmware waking vector */
413 acpi_set_firmware_waking_vector((acpi_physical_address) 0); 413 acpi_set_waking_vector(0);
414 414
415 acpi_target_sleep_state = ACPI_STATE_S0; 415 acpi_target_sleep_state = ACPI_STATE_S0;
416 416
diff --git a/drivers/acpi/sleep.h b/drivers/acpi/sleep.h
index c797ffa568d5..a9cc34e663f9 100644
--- a/drivers/acpi/sleep.h
+++ b/drivers/acpi/sleep.h
@@ -6,3 +6,9 @@ extern struct list_head acpi_wakeup_device_list;
6extern struct mutex acpi_device_lock; 6extern struct mutex acpi_device_lock;
7 7
8extern void acpi_resume_power_resources(void); 8extern void acpi_resume_power_resources(void);
9
10static inline acpi_status acpi_set_waking_vector(u32 wakeup_address)
11{
12 return acpi_set_firmware_waking_vector(
13 (acpi_physical_address)wakeup_address, 0);
14}
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h
index 1b462d800d27..012b2eed7a93 100644
--- a/include/acpi/acpixf.h
+++ b/include/acpi/acpixf.h
@@ -863,17 +863,9 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status
863ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_leave_sleep_state(u8 sleep_state)) 863ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_leave_sleep_state(u8 sleep_state))
864 864
865ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 865ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
866 acpi_set_firmware_waking_vectors 866 acpi_set_firmware_waking_vector
867 (acpi_physical_address physical_address, 867 (acpi_physical_address physical_address,
868 acpi_physical_address physical_address64)) 868 acpi_physical_address physical_address64))
869ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
870 acpi_set_firmware_waking_vector(u32
871 physical_address))
872#if ACPI_MACHINE_WIDTH == 64
873ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
874 acpi_set_firmware_waking_vector64(u64
875 physical_address))
876#endif
877/* 869/*
878 * ACPI Timer interfaces 870 * ACPI Timer interfaces
879 */ 871 */