Linux Audio

Check our new training course

Loading...
v3.1
  1/******************************************************************************
  2 *
  3 * Module Name: evxfevnt - External Interfaces, ACPI event disable/enable
  4 *
  5 *****************************************************************************/
  6
  7/*
  8 * Copyright (C) 2000 - 2011, Intel Corp.
  9 * All rights reserved.
 10 *
 11 * Redistribution and use in source and binary forms, with or without
 12 * modification, are permitted provided that the following conditions
 13 * are met:
 14 * 1. Redistributions of source code must retain the above copyright
 15 *    notice, this list of conditions, and the following disclaimer,
 16 *    without modification.
 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
 18 *    substantially similar to the "NO WARRANTY" disclaimer below
 19 *    ("Disclaimer") and any redistribution must be conditioned upon
 20 *    including a substantially similar Disclaimer requirement for further
 21 *    binary redistribution.
 22 * 3. Neither the names of the above-listed copyright holders nor the names
 23 *    of any contributors may be used to endorse or promote products derived
 24 *    from this software without specific prior written permission.
 25 *
 26 * Alternatively, this software may be distributed under the terms of the
 27 * GNU General Public License ("GPL") version 2 as published by the Free
 28 * Software Foundation.
 29 *
 30 * NO WARRANTY
 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 41 * POSSIBILITY OF SUCH DAMAGES.
 42 */
 43
 
 
 44#include <acpi/acpi.h>
 45#include "accommon.h"
 46#include "actables.h"
 47
 48#define _COMPONENT          ACPI_EVENTS
 49ACPI_MODULE_NAME("evxfevnt")
 50
 
 51/*******************************************************************************
 52 *
 53 * FUNCTION:    acpi_enable
 54 *
 55 * PARAMETERS:  None
 56 *
 57 * RETURN:      Status
 58 *
 59 * DESCRIPTION: Transfers the system into ACPI mode.
 60 *
 61 ******************************************************************************/
 62
 63acpi_status acpi_enable(void)
 64{
 65	acpi_status status;
 66	int retry;
 67
 68	ACPI_FUNCTION_TRACE(acpi_enable);
 69
 70	/* ACPI tables must be present */
 71
 72	if (!acpi_tb_tables_loaded()) {
 73		return_ACPI_STATUS(AE_NO_ACPI_TABLES);
 74	}
 75
 
 
 
 
 
 
 76	/* Check current mode */
 77
 78	if (acpi_hw_get_mode() == ACPI_SYS_MODE_ACPI) {
 79		ACPI_DEBUG_PRINT((ACPI_DB_INIT,
 80				  "System is already in ACPI mode\n"));
 81		return_ACPI_STATUS(AE_OK);
 82	}
 83
 84	/* Transition to ACPI mode */
 85
 86	status = acpi_hw_set_mode(ACPI_SYS_MODE_ACPI);
 87	if (ACPI_FAILURE(status)) {
 88		ACPI_ERROR((AE_INFO,
 89			    "Could not transition to ACPI mode"));
 90		return_ACPI_STATUS(status);
 91	}
 92
 93	/* Sanity check that transition succeeded */
 94
 95	for (retry = 0; retry < 30000; ++retry) {
 96		if (acpi_hw_get_mode() == ACPI_SYS_MODE_ACPI) {
 97			if (retry != 0)
 98				ACPI_WARNING((AE_INFO,
 99				"Platform took > %d00 usec to enter ACPI mode", retry));
100			return_ACPI_STATUS(AE_OK);
101		}
102		acpi_os_stall(100);	/* 100 usec */
103	}
104
105	ACPI_ERROR((AE_INFO, "Hardware did not enter ACPI mode"));
106	return_ACPI_STATUS(AE_NO_HARDWARE_RESPONSE);
107}
108
109ACPI_EXPORT_SYMBOL(acpi_enable)
110
111/*******************************************************************************
112 *
113 * FUNCTION:    acpi_disable
114 *
115 * PARAMETERS:  None
116 *
117 * RETURN:      Status
118 *
119 * DESCRIPTION: Transfers the system into LEGACY (non-ACPI) mode.
120 *
121 ******************************************************************************/
122acpi_status acpi_disable(void)
123{
124	acpi_status status = AE_OK;
125
126	ACPI_FUNCTION_TRACE(acpi_disable);
127
 
 
 
 
 
 
128	if (acpi_hw_get_mode() == ACPI_SYS_MODE_LEGACY) {
129		ACPI_DEBUG_PRINT((ACPI_DB_INIT,
130				  "System is already in legacy (non-ACPI) mode\n"));
131	} else {
132		/* Transition to LEGACY mode */
133
134		status = acpi_hw_set_mode(ACPI_SYS_MODE_LEGACY);
135
136		if (ACPI_FAILURE(status)) {
137			ACPI_ERROR((AE_INFO,
138				    "Could not exit ACPI mode to legacy mode"));
139			return_ACPI_STATUS(status);
140		}
141
142		ACPI_DEBUG_PRINT((ACPI_DB_INIT, "ACPI mode disabled\n"));
143	}
144
145	return_ACPI_STATUS(status);
146}
147
148ACPI_EXPORT_SYMBOL(acpi_disable)
149
150/*******************************************************************************
151 *
152 * FUNCTION:    acpi_enable_event
153 *
154 * PARAMETERS:  Event           - The fixed eventto be enabled
155 *              Flags           - Reserved
156 *
157 * RETURN:      Status
158 *
159 * DESCRIPTION: Enable an ACPI event (fixed)
160 *
161 ******************************************************************************/
162acpi_status acpi_enable_event(u32 event, u32 flags)
163{
164	acpi_status status = AE_OK;
165	u32 value;
166
167	ACPI_FUNCTION_TRACE(acpi_enable_event);
168
169	/* Decode the Fixed Event */
170
171	if (event > ACPI_EVENT_MAX) {
172		return_ACPI_STATUS(AE_BAD_PARAMETER);
173	}
174
175	/*
176	 * Enable the requested fixed event (by writing a one to the enable
177	 * register bit)
178	 */
179	status =
180	    acpi_write_bit_register(acpi_gbl_fixed_event_info[event].
181				    enable_register_id, ACPI_ENABLE_EVENT);
182	if (ACPI_FAILURE(status)) {
183		return_ACPI_STATUS(status);
184	}
185
186	/* Make sure that the hardware responded */
187
188	status =
189	    acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
190				   enable_register_id, &value);
191	if (ACPI_FAILURE(status)) {
192		return_ACPI_STATUS(status);
193	}
194
195	if (value != 1) {
196		ACPI_ERROR((AE_INFO,
197			    "Could not enable %s event",
198			    acpi_ut_get_event_name(event)));
199		return_ACPI_STATUS(AE_NO_HARDWARE_RESPONSE);
200	}
201
202	return_ACPI_STATUS(status);
203}
204
205ACPI_EXPORT_SYMBOL(acpi_enable_event)
206
207/*******************************************************************************
208 *
209 * FUNCTION:    acpi_disable_event
210 *
211 * PARAMETERS:  Event           - The fixed eventto be enabled
212 *              Flags           - Reserved
213 *
214 * RETURN:      Status
215 *
216 * DESCRIPTION: Disable an ACPI event (fixed)
217 *
218 ******************************************************************************/
219acpi_status acpi_disable_event(u32 event, u32 flags)
220{
221	acpi_status status = AE_OK;
222	u32 value;
223
224	ACPI_FUNCTION_TRACE(acpi_disable_event);
225
226	/* Decode the Fixed Event */
227
228	if (event > ACPI_EVENT_MAX) {
229		return_ACPI_STATUS(AE_BAD_PARAMETER);
230	}
231
232	/*
233	 * Disable the requested fixed event (by writing a zero to the enable
234	 * register bit)
235	 */
236	status =
237	    acpi_write_bit_register(acpi_gbl_fixed_event_info[event].
238				    enable_register_id, ACPI_DISABLE_EVENT);
239	if (ACPI_FAILURE(status)) {
240		return_ACPI_STATUS(status);
241	}
242
243	status =
244	    acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
245				   enable_register_id, &value);
246	if (ACPI_FAILURE(status)) {
247		return_ACPI_STATUS(status);
248	}
249
250	if (value != 0) {
251		ACPI_ERROR((AE_INFO,
252			    "Could not disable %s events",
253			    acpi_ut_get_event_name(event)));
254		return_ACPI_STATUS(AE_NO_HARDWARE_RESPONSE);
255	}
256
257	return_ACPI_STATUS(status);
258}
259
260ACPI_EXPORT_SYMBOL(acpi_disable_event)
261
262/*******************************************************************************
263 *
264 * FUNCTION:    acpi_clear_event
265 *
266 * PARAMETERS:  Event           - The fixed event to be cleared
267 *
268 * RETURN:      Status
269 *
270 * DESCRIPTION: Clear an ACPI event (fixed)
271 *
272 ******************************************************************************/
273acpi_status acpi_clear_event(u32 event)
274{
275	acpi_status status = AE_OK;
276
277	ACPI_FUNCTION_TRACE(acpi_clear_event);
278
279	/* Decode the Fixed Event */
280
281	if (event > ACPI_EVENT_MAX) {
282		return_ACPI_STATUS(AE_BAD_PARAMETER);
283	}
284
285	/*
286	 * Clear the requested fixed event (By writing a one to the status
287	 * register bit)
288	 */
289	status =
290	    acpi_write_bit_register(acpi_gbl_fixed_event_info[event].
291				    status_register_id, ACPI_CLEAR_STATUS);
292
293	return_ACPI_STATUS(status);
294}
295
296ACPI_EXPORT_SYMBOL(acpi_clear_event)
297
298/*******************************************************************************
299 *
300 * FUNCTION:    acpi_get_event_status
301 *
302 * PARAMETERS:  Event           - The fixed event
303 *              event_status    - Where the current status of the event will
304 *                                be returned
305 *
306 * RETURN:      Status
307 *
308 * DESCRIPTION: Obtains and returns the current status of the event
309 *
310 ******************************************************************************/
311acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status)
312{
313	acpi_status status = AE_OK;
314	u32 value;
315
316	ACPI_FUNCTION_TRACE(acpi_get_event_status);
317
318	if (!event_status) {
319		return_ACPI_STATUS(AE_BAD_PARAMETER);
320	}
321
322	/* Decode the Fixed Event */
323
324	if (event > ACPI_EVENT_MAX) {
325		return_ACPI_STATUS(AE_BAD_PARAMETER);
326	}
327
328	/* Get the status of the requested fixed event */
329
330	status =
331	    acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
332			      enable_register_id, &value);
333	if (ACPI_FAILURE(status))
334		return_ACPI_STATUS(status);
335
336	*event_status = value;
337
338	status =
339	    acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
340			      status_register_id, &value);
341	if (ACPI_FAILURE(status))
342		return_ACPI_STATUS(status);
343
344	if (value)
345		*event_status |= ACPI_EVENT_FLAG_SET;
346
347	if (acpi_gbl_fixed_event_handlers[event].handler)
348		*event_status |= ACPI_EVENT_FLAG_HANDLE;
349
350	return_ACPI_STATUS(status);
351}
352
353ACPI_EXPORT_SYMBOL(acpi_get_event_status)
v3.15
  1/******************************************************************************
  2 *
  3 * Module Name: evxfevnt - External Interfaces, ACPI event disable/enable
  4 *
  5 *****************************************************************************/
  6
  7/*
  8 * Copyright (C) 2000 - 2014, Intel Corp.
  9 * All rights reserved.
 10 *
 11 * Redistribution and use in source and binary forms, with or without
 12 * modification, are permitted provided that the following conditions
 13 * are met:
 14 * 1. Redistributions of source code must retain the above copyright
 15 *    notice, this list of conditions, and the following disclaimer,
 16 *    without modification.
 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
 18 *    substantially similar to the "NO WARRANTY" disclaimer below
 19 *    ("Disclaimer") and any redistribution must be conditioned upon
 20 *    including a substantially similar Disclaimer requirement for further
 21 *    binary redistribution.
 22 * 3. Neither the names of the above-listed copyright holders nor the names
 23 *    of any contributors may be used to endorse or promote products derived
 24 *    from this software without specific prior written permission.
 25 *
 26 * Alternatively, this software may be distributed under the terms of the
 27 * GNU General Public License ("GPL") version 2 as published by the Free
 28 * Software Foundation.
 29 *
 30 * NO WARRANTY
 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 41 * POSSIBILITY OF SUCH DAMAGES.
 42 */
 43
 44#define EXPORT_ACPI_INTERFACES
 45
 46#include <acpi/acpi.h>
 47#include "accommon.h"
 48#include "actables.h"
 49
 50#define _COMPONENT          ACPI_EVENTS
 51ACPI_MODULE_NAME("evxfevnt")
 52
 53#if (!ACPI_REDUCED_HARDWARE)	/* Entire module */
 54/*******************************************************************************
 55 *
 56 * FUNCTION:    acpi_enable
 57 *
 58 * PARAMETERS:  None
 59 *
 60 * RETURN:      Status
 61 *
 62 * DESCRIPTION: Transfers the system into ACPI mode.
 63 *
 64 ******************************************************************************/
 
 65acpi_status acpi_enable(void)
 66{
 67	acpi_status status;
 68	int retry;
 69
 70	ACPI_FUNCTION_TRACE(acpi_enable);
 71
 72	/* ACPI tables must be present */
 73
 74	if (!acpi_tb_tables_loaded()) {
 75		return_ACPI_STATUS(AE_NO_ACPI_TABLES);
 76	}
 77
 78	/* If the Hardware Reduced flag is set, machine is always in acpi mode */
 79
 80	if (acpi_gbl_reduced_hardware) {
 81		return_ACPI_STATUS(AE_OK);
 82	}
 83
 84	/* Check current mode */
 85
 86	if (acpi_hw_get_mode() == ACPI_SYS_MODE_ACPI) {
 87		ACPI_DEBUG_PRINT((ACPI_DB_INIT,
 88				  "System is already in ACPI mode\n"));
 89		return_ACPI_STATUS(AE_OK);
 90	}
 91
 92	/* Transition to ACPI mode */
 93
 94	status = acpi_hw_set_mode(ACPI_SYS_MODE_ACPI);
 95	if (ACPI_FAILURE(status)) {
 96		ACPI_ERROR((AE_INFO,
 97			    "Could not transition to ACPI mode"));
 98		return_ACPI_STATUS(status);
 99	}
100
101	/* Sanity check that transition succeeded */
102
103	for (retry = 0; retry < 30000; ++retry) {
104		if (acpi_hw_get_mode() == ACPI_SYS_MODE_ACPI) {
105			if (retry != 0)
106				ACPI_WARNING((AE_INFO,
107				"Platform took > %d00 usec to enter ACPI mode", retry));
108			return_ACPI_STATUS(AE_OK);
109		}
110		acpi_os_stall(100);	/* 100 usec */
111	}
112
113	ACPI_ERROR((AE_INFO, "Hardware did not enter ACPI mode"));
114	return_ACPI_STATUS(AE_NO_HARDWARE_RESPONSE);
115}
116
117ACPI_EXPORT_SYMBOL(acpi_enable)
118
119/*******************************************************************************
120 *
121 * FUNCTION:    acpi_disable
122 *
123 * PARAMETERS:  None
124 *
125 * RETURN:      Status
126 *
127 * DESCRIPTION: Transfers the system into LEGACY (non-ACPI) mode.
128 *
129 ******************************************************************************/
130acpi_status acpi_disable(void)
131{
132	acpi_status status = AE_OK;
133
134	ACPI_FUNCTION_TRACE(acpi_disable);
135
136	/* If the Hardware Reduced flag is set, machine is always in acpi mode */
137
138	if (acpi_gbl_reduced_hardware) {
139		return_ACPI_STATUS(AE_OK);
140	}
141
142	if (acpi_hw_get_mode() == ACPI_SYS_MODE_LEGACY) {
143		ACPI_DEBUG_PRINT((ACPI_DB_INIT,
144				  "System is already in legacy (non-ACPI) mode\n"));
145	} else {
146		/* Transition to LEGACY mode */
147
148		status = acpi_hw_set_mode(ACPI_SYS_MODE_LEGACY);
149
150		if (ACPI_FAILURE(status)) {
151			ACPI_ERROR((AE_INFO,
152				    "Could not exit ACPI mode to legacy mode"));
153			return_ACPI_STATUS(status);
154		}
155
156		ACPI_DEBUG_PRINT((ACPI_DB_INIT, "ACPI mode disabled\n"));
157	}
158
159	return_ACPI_STATUS(status);
160}
161
162ACPI_EXPORT_SYMBOL(acpi_disable)
163
164/*******************************************************************************
165 *
166 * FUNCTION:    acpi_enable_event
167 *
168 * PARAMETERS:  event           - The fixed eventto be enabled
169 *              flags           - Reserved
170 *
171 * RETURN:      Status
172 *
173 * DESCRIPTION: Enable an ACPI event (fixed)
174 *
175 ******************************************************************************/
176acpi_status acpi_enable_event(u32 event, u32 flags)
177{
178	acpi_status status = AE_OK;
179	u32 value;
180
181	ACPI_FUNCTION_TRACE(acpi_enable_event);
182
183	/* Decode the Fixed Event */
184
185	if (event > ACPI_EVENT_MAX) {
186		return_ACPI_STATUS(AE_BAD_PARAMETER);
187	}
188
189	/*
190	 * Enable the requested fixed event (by writing a one to the enable
191	 * register bit)
192	 */
193	status =
194	    acpi_write_bit_register(acpi_gbl_fixed_event_info[event].
195				    enable_register_id, ACPI_ENABLE_EVENT);
196	if (ACPI_FAILURE(status)) {
197		return_ACPI_STATUS(status);
198	}
199
200	/* Make sure that the hardware responded */
201
202	status =
203	    acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
204				   enable_register_id, &value);
205	if (ACPI_FAILURE(status)) {
206		return_ACPI_STATUS(status);
207	}
208
209	if (value != 1) {
210		ACPI_ERROR((AE_INFO,
211			    "Could not enable %s event",
212			    acpi_ut_get_event_name(event)));
213		return_ACPI_STATUS(AE_NO_HARDWARE_RESPONSE);
214	}
215
216	return_ACPI_STATUS(status);
217}
218
219ACPI_EXPORT_SYMBOL(acpi_enable_event)
220
221/*******************************************************************************
222 *
223 * FUNCTION:    acpi_disable_event
224 *
225 * PARAMETERS:  event           - The fixed event to be disabled
226 *              flags           - Reserved
227 *
228 * RETURN:      Status
229 *
230 * DESCRIPTION: Disable an ACPI event (fixed)
231 *
232 ******************************************************************************/
233acpi_status acpi_disable_event(u32 event, u32 flags)
234{
235	acpi_status status = AE_OK;
236	u32 value;
237
238	ACPI_FUNCTION_TRACE(acpi_disable_event);
239
240	/* Decode the Fixed Event */
241
242	if (event > ACPI_EVENT_MAX) {
243		return_ACPI_STATUS(AE_BAD_PARAMETER);
244	}
245
246	/*
247	 * Disable the requested fixed event (by writing a zero to the enable
248	 * register bit)
249	 */
250	status =
251	    acpi_write_bit_register(acpi_gbl_fixed_event_info[event].
252				    enable_register_id, ACPI_DISABLE_EVENT);
253	if (ACPI_FAILURE(status)) {
254		return_ACPI_STATUS(status);
255	}
256
257	status =
258	    acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
259				   enable_register_id, &value);
260	if (ACPI_FAILURE(status)) {
261		return_ACPI_STATUS(status);
262	}
263
264	if (value != 0) {
265		ACPI_ERROR((AE_INFO,
266			    "Could not disable %s events",
267			    acpi_ut_get_event_name(event)));
268		return_ACPI_STATUS(AE_NO_HARDWARE_RESPONSE);
269	}
270
271	return_ACPI_STATUS(status);
272}
273
274ACPI_EXPORT_SYMBOL(acpi_disable_event)
275
276/*******************************************************************************
277 *
278 * FUNCTION:    acpi_clear_event
279 *
280 * PARAMETERS:  event           - The fixed event to be cleared
281 *
282 * RETURN:      Status
283 *
284 * DESCRIPTION: Clear an ACPI event (fixed)
285 *
286 ******************************************************************************/
287acpi_status acpi_clear_event(u32 event)
288{
289	acpi_status status = AE_OK;
290
291	ACPI_FUNCTION_TRACE(acpi_clear_event);
292
293	/* Decode the Fixed Event */
294
295	if (event > ACPI_EVENT_MAX) {
296		return_ACPI_STATUS(AE_BAD_PARAMETER);
297	}
298
299	/*
300	 * Clear the requested fixed event (By writing a one to the status
301	 * register bit)
302	 */
303	status =
304	    acpi_write_bit_register(acpi_gbl_fixed_event_info[event].
305				    status_register_id, ACPI_CLEAR_STATUS);
306
307	return_ACPI_STATUS(status);
308}
309
310ACPI_EXPORT_SYMBOL(acpi_clear_event)
311
312/*******************************************************************************
313 *
314 * FUNCTION:    acpi_get_event_status
315 *
316 * PARAMETERS:  event           - The fixed event
317 *              event_status    - Where the current status of the event will
318 *                                be returned
319 *
320 * RETURN:      Status
321 *
322 * DESCRIPTION: Obtains and returns the current status of the event
323 *
324 ******************************************************************************/
325acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status)
326{
327	acpi_status status = AE_OK;
328	u32 value;
329
330	ACPI_FUNCTION_TRACE(acpi_get_event_status);
331
332	if (!event_status) {
333		return_ACPI_STATUS(AE_BAD_PARAMETER);
334	}
335
336	/* Decode the Fixed Event */
337
338	if (event > ACPI_EVENT_MAX) {
339		return_ACPI_STATUS(AE_BAD_PARAMETER);
340	}
341
342	/* Get the status of the requested fixed event */
343
344	status =
345	    acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
346			      enable_register_id, &value);
347	if (ACPI_FAILURE(status))
348		return_ACPI_STATUS(status);
349
350	*event_status = value;
351
352	status =
353	    acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
354			      status_register_id, &value);
355	if (ACPI_FAILURE(status))
356		return_ACPI_STATUS(status);
357
358	if (value)
359		*event_status |= ACPI_EVENT_FLAG_SET;
360
361	if (acpi_gbl_fixed_event_handlers[event].handler)
362		*event_status |= ACPI_EVENT_FLAG_HANDLE;
363
364	return_ACPI_STATUS(status);
365}
366
367ACPI_EXPORT_SYMBOL(acpi_get_event_status)
368#endif				/* !ACPI_REDUCED_HARDWARE */