diff options
author | Bob Moore <robert.moore@intel.com> | 2008-11-12 02:34:52 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-12-29 22:38:37 -0500 |
commit | 009c4cbe99bea2da53f29ad685975a36f38c001c (patch) | |
tree | 170887ee9986ae84792200abd3f3022df01630ce /drivers/acpi/events | |
parent | c87609f31a8641009641fc1d19dac75e6de06fd4 (diff) |
ACPICA: Add global pointer for FACS table to simplify FACS access
Use a global pointer instead of using AcpiGetTableByIndex for
each FACS access. This simplifies the code for the Global Lock
and the Firmware Waking Vector(s).
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/events')
-rw-r--r-- | drivers/acpi/events/evmisc.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/drivers/acpi/events/evmisc.c b/drivers/acpi/events/evmisc.c index 1d5670be729a..82c457fa5a1f 100644 --- a/drivers/acpi/events/evmisc.c +++ b/drivers/acpi/events/evmisc.c | |||
@@ -49,11 +49,7 @@ | |||
49 | #define _COMPONENT ACPI_EVENTS | 49 | #define _COMPONENT ACPI_EVENTS |
50 | ACPI_MODULE_NAME("evmisc") | 50 | ACPI_MODULE_NAME("evmisc") |
51 | 51 | ||
52 | /* Pointer to FACS needed for the Global Lock */ | ||
53 | static struct acpi_table_facs *facs = NULL; | ||
54 | |||
55 | /* Local prototypes */ | 52 | /* Local prototypes */ |
56 | |||
57 | static void ACPI_SYSTEM_XFACE acpi_ev_notify_dispatch(void *context); | 53 | static void ACPI_SYSTEM_XFACE acpi_ev_notify_dispatch(void *context); |
58 | 54 | ||
59 | static u32 acpi_ev_global_lock_handler(void *context); | 55 | static u32 acpi_ev_global_lock_handler(void *context); |
@@ -299,7 +295,7 @@ static u32 acpi_ev_global_lock_handler(void *context) | |||
299 | * If we don't get it now, it will be marked pending and we will | 295 | * If we don't get it now, it will be marked pending and we will |
300 | * take another interrupt when it becomes free. | 296 | * take another interrupt when it becomes free. |
301 | */ | 297 | */ |
302 | ACPI_ACQUIRE_GLOBAL_LOCK(facs, acquired); | 298 | ACPI_ACQUIRE_GLOBAL_LOCK(acpi_gbl_FACS, acquired); |
303 | if (acquired) { | 299 | if (acquired) { |
304 | 300 | ||
305 | /* Got the lock, now wake all threads waiting for it */ | 301 | /* Got the lock, now wake all threads waiting for it */ |
@@ -336,15 +332,8 @@ acpi_status acpi_ev_init_global_lock_handler(void) | |||
336 | 332 | ||
337 | ACPI_FUNCTION_TRACE(ev_init_global_lock_handler); | 333 | ACPI_FUNCTION_TRACE(ev_init_global_lock_handler); |
338 | 334 | ||
339 | status = acpi_get_table_by_index(ACPI_TABLE_INDEX_FACS, | 335 | /* Attempt installation of the global lock handler */ |
340 | ACPI_CAST_INDIRECT_PTR(struct | ||
341 | acpi_table_header, | ||
342 | &facs)); | ||
343 | if (ACPI_FAILURE(status)) { | ||
344 | return_ACPI_STATUS(status); | ||
345 | } | ||
346 | 336 | ||
347 | acpi_gbl_global_lock_present = TRUE; | ||
348 | status = acpi_install_fixed_event_handler(ACPI_EVENT_GLOBAL, | 337 | status = acpi_install_fixed_event_handler(ACPI_EVENT_GLOBAL, |
349 | acpi_ev_global_lock_handler, | 338 | acpi_ev_global_lock_handler, |
350 | NULL); | 339 | NULL); |
@@ -361,9 +350,10 @@ acpi_status acpi_ev_init_global_lock_handler(void) | |||
361 | "No response from Global Lock hardware, disabling lock")); | 350 | "No response from Global Lock hardware, disabling lock")); |
362 | 351 | ||
363 | acpi_gbl_global_lock_present = FALSE; | 352 | acpi_gbl_global_lock_present = FALSE; |
364 | status = AE_OK; | 353 | return_ACPI_STATUS(AE_OK); |
365 | } | 354 | } |
366 | 355 | ||
356 | acpi_gbl_global_lock_present = TRUE; | ||
367 | return_ACPI_STATUS(status); | 357 | return_ACPI_STATUS(status); |
368 | } | 358 | } |
369 | 359 | ||
@@ -472,7 +462,7 @@ acpi_status acpi_ev_acquire_global_lock(u16 timeout) | |||
472 | 462 | ||
473 | /* Attempt to acquire the actual hardware lock */ | 463 | /* Attempt to acquire the actual hardware lock */ |
474 | 464 | ||
475 | ACPI_ACQUIRE_GLOBAL_LOCK(facs, acquired); | 465 | ACPI_ACQUIRE_GLOBAL_LOCK(acpi_gbl_FACS, acquired); |
476 | if (acquired) { | 466 | if (acquired) { |
477 | 467 | ||
478 | /* We got the lock */ | 468 | /* We got the lock */ |
@@ -536,7 +526,7 @@ acpi_status acpi_ev_release_global_lock(void) | |||
536 | 526 | ||
537 | /* Allow any thread to release the lock */ | 527 | /* Allow any thread to release the lock */ |
538 | 528 | ||
539 | ACPI_RELEASE_GLOBAL_LOCK(facs, pending); | 529 | ACPI_RELEASE_GLOBAL_LOCK(acpi_gbl_FACS, pending); |
540 | 530 | ||
541 | /* | 531 | /* |
542 | * If the pending bit was set, we must write GBL_RLS to the control | 532 | * If the pending bit was set, we must write GBL_RLS to the control |