diff options
Diffstat (limited to 'drivers/acpi/hardware')
-rw-r--r-- | drivers/acpi/hardware/hwacpi.c | 56 | ||||
-rw-r--r-- | drivers/acpi/hardware/hwgpe.c | 15 | ||||
-rw-r--r-- | drivers/acpi/hardware/hwregs.c | 98 | ||||
-rw-r--r-- | drivers/acpi/hardware/hwsleep.c | 81 | ||||
-rw-r--r-- | drivers/acpi/hardware/hwtimer.c | 9 |
5 files changed, 124 insertions, 135 deletions
diff --git a/drivers/acpi/hardware/hwacpi.c b/drivers/acpi/hardware/hwacpi.c index de50fab2a910..6031ca13dd2f 100644 --- a/drivers/acpi/hardware/hwacpi.c +++ b/drivers/acpi/hardware/hwacpi.c | |||
@@ -6,7 +6,7 @@ | |||
6 | *****************************************************************************/ | 6 | *****************************************************************************/ |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Copyright (C) 2000 - 2006, R. Byron Moore | 9 | * Copyright (C) 2000 - 2007, R. Byron Moore |
10 | * All rights reserved. | 10 | * All rights reserved. |
11 | * | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | 12 | * Redistribution and use in source and binary forms, with or without |
@@ -49,41 +49,6 @@ ACPI_MODULE_NAME("hwacpi") | |||
49 | 49 | ||
50 | /****************************************************************************** | 50 | /****************************************************************************** |
51 | * | 51 | * |
52 | * FUNCTION: acpi_hw_initialize | ||
53 | * | ||
54 | * PARAMETERS: None | ||
55 | * | ||
56 | * RETURN: Status | ||
57 | * | ||
58 | * DESCRIPTION: Initialize and validate the various ACPI registers defined in | ||
59 | * the FADT. | ||
60 | * | ||
61 | ******************************************************************************/ | ||
62 | acpi_status acpi_hw_initialize(void) | ||
63 | { | ||
64 | acpi_status status; | ||
65 | |||
66 | ACPI_FUNCTION_TRACE(hw_initialize); | ||
67 | |||
68 | /* We must have the ACPI tables by the time we get here */ | ||
69 | |||
70 | if (!acpi_gbl_FADT) { | ||
71 | ACPI_ERROR((AE_INFO, "No FADT is present")); | ||
72 | return_ACPI_STATUS(AE_NO_ACPI_TABLES); | ||
73 | } | ||
74 | |||
75 | /* Sanity check the FADT for valid values */ | ||
76 | |||
77 | status = acpi_ut_validate_fadt(); | ||
78 | if (ACPI_FAILURE(status)) { | ||
79 | return_ACPI_STATUS(status); | ||
80 | } | ||
81 | |||
82 | return_ACPI_STATUS(AE_OK); | ||
83 | } | ||
84 | |||
85 | /****************************************************************************** | ||
86 | * | ||
87 | * FUNCTION: acpi_hw_set_mode | 52 | * FUNCTION: acpi_hw_set_mode |
88 | * | 53 | * |
89 | * PARAMETERS: Mode - SYS_MODE_ACPI or SYS_MODE_LEGACY | 54 | * PARAMETERS: Mode - SYS_MODE_ACPI or SYS_MODE_LEGACY |
@@ -93,7 +58,6 @@ acpi_status acpi_hw_initialize(void) | |||
93 | * DESCRIPTION: Transitions the system into the requested mode. | 58 | * DESCRIPTION: Transitions the system into the requested mode. |
94 | * | 59 | * |
95 | ******************************************************************************/ | 60 | ******************************************************************************/ |
96 | |||
97 | acpi_status acpi_hw_set_mode(u32 mode) | 61 | acpi_status acpi_hw_set_mode(u32 mode) |
98 | { | 62 | { |
99 | 63 | ||
@@ -106,7 +70,7 @@ acpi_status acpi_hw_set_mode(u32 mode) | |||
106 | * ACPI 2.0 clarified that if SMI_CMD in FADT is zero, | 70 | * ACPI 2.0 clarified that if SMI_CMD in FADT is zero, |
107 | * system does not support mode transition. | 71 | * system does not support mode transition. |
108 | */ | 72 | */ |
109 | if (!acpi_gbl_FADT->smi_cmd) { | 73 | if (!acpi_gbl_FADT.smi_command) { |
110 | ACPI_ERROR((AE_INFO, | 74 | ACPI_ERROR((AE_INFO, |
111 | "No SMI_CMD in FADT, mode transition failed")); | 75 | "No SMI_CMD in FADT, mode transition failed")); |
112 | return_ACPI_STATUS(AE_NO_HARDWARE_RESPONSE); | 76 | return_ACPI_STATUS(AE_NO_HARDWARE_RESPONSE); |
@@ -119,7 +83,7 @@ acpi_status acpi_hw_set_mode(u32 mode) | |||
119 | * we make sure both the numbers are zero to determine these | 83 | * we make sure both the numbers are zero to determine these |
120 | * transitions are not supported. | 84 | * transitions are not supported. |
121 | */ | 85 | */ |
122 | if (!acpi_gbl_FADT->acpi_enable && !acpi_gbl_FADT->acpi_disable) { | 86 | if (!acpi_gbl_FADT.acpi_enable && !acpi_gbl_FADT.acpi_disable) { |
123 | ACPI_ERROR((AE_INFO, | 87 | ACPI_ERROR((AE_INFO, |
124 | "No ACPI mode transition supported in this system (enable/disable both zero)")); | 88 | "No ACPI mode transition supported in this system (enable/disable both zero)")); |
125 | return_ACPI_STATUS(AE_OK); | 89 | return_ACPI_STATUS(AE_OK); |
@@ -130,9 +94,8 @@ acpi_status acpi_hw_set_mode(u32 mode) | |||
130 | 94 | ||
131 | /* BIOS should have disabled ALL fixed and GP events */ | 95 | /* BIOS should have disabled ALL fixed and GP events */ |
132 | 96 | ||
133 | status = acpi_os_write_port(acpi_gbl_FADT->smi_cmd, | 97 | status = acpi_os_write_port(acpi_gbl_FADT.smi_command, |
134 | (u32) acpi_gbl_FADT->acpi_enable, | 98 | (u32) acpi_gbl_FADT.acpi_enable, 8); |
135 | 8); | ||
136 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | 99 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
137 | "Attempting to enable ACPI mode\n")); | 100 | "Attempting to enable ACPI mode\n")); |
138 | break; | 101 | break; |
@@ -143,8 +106,8 @@ acpi_status acpi_hw_set_mode(u32 mode) | |||
143 | * BIOS should clear all fixed status bits and restore fixed event | 106 | * BIOS should clear all fixed status bits and restore fixed event |
144 | * enable bits to default | 107 | * enable bits to default |
145 | */ | 108 | */ |
146 | status = acpi_os_write_port(acpi_gbl_FADT->smi_cmd, | 109 | status = acpi_os_write_port(acpi_gbl_FADT.smi_command, |
147 | (u32) acpi_gbl_FADT->acpi_disable, | 110 | (u32) acpi_gbl_FADT.acpi_disable, |
148 | 8); | 111 | 8); |
149 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | 112 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
150 | "Attempting to enable Legacy (non-ACPI) mode\n")); | 113 | "Attempting to enable Legacy (non-ACPI) mode\n")); |
@@ -204,12 +167,11 @@ u32 acpi_hw_get_mode(void) | |||
204 | * ACPI 2.0 clarified that if SMI_CMD in FADT is zero, | 167 | * ACPI 2.0 clarified that if SMI_CMD in FADT is zero, |
205 | * system does not support mode transition. | 168 | * system does not support mode transition. |
206 | */ | 169 | */ |
207 | if (!acpi_gbl_FADT->smi_cmd) { | 170 | if (!acpi_gbl_FADT.smi_command) { |
208 | return_UINT32(ACPI_SYS_MODE_ACPI); | 171 | return_UINT32(ACPI_SYS_MODE_ACPI); |
209 | } | 172 | } |
210 | 173 | ||
211 | status = | 174 | status = acpi_get_register(ACPI_BITREG_SCI_ENABLE, &value); |
212 | acpi_get_register(ACPI_BITREG_SCI_ENABLE, &value, ACPI_MTX_LOCK); | ||
213 | if (ACPI_FAILURE(status)) { | 175 | if (ACPI_FAILURE(status)) { |
214 | return_UINT32(ACPI_SYS_MODE_LEGACY); | 176 | return_UINT32(ACPI_SYS_MODE_LEGACY); |
215 | } | 177 | } |
diff --git a/drivers/acpi/hardware/hwgpe.c b/drivers/acpi/hardware/hwgpe.c index 608a3a60ee11..117a05cadaaa 100644 --- a/drivers/acpi/hardware/hwgpe.c +++ b/drivers/acpi/hardware/hwgpe.c | |||
@@ -6,7 +6,7 @@ | |||
6 | *****************************************************************************/ | 6 | *****************************************************************************/ |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Copyright (C) 2000 - 2006, R. Byron Moore | 9 | * Copyright (C) 2000 - 2007, R. Byron Moore |
10 | * All rights reserved. | 10 | * All rights reserved. |
11 | * | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | 12 | * Redistribution and use in source and binary forms, with or without |
@@ -105,14 +105,20 @@ acpi_hw_write_gpe_enable_reg(struct acpi_gpe_event_info *gpe_event_info) | |||
105 | acpi_status acpi_hw_clear_gpe(struct acpi_gpe_event_info * gpe_event_info) | 105 | acpi_status acpi_hw_clear_gpe(struct acpi_gpe_event_info * gpe_event_info) |
106 | { | 106 | { |
107 | acpi_status status; | 107 | acpi_status status; |
108 | u8 register_bit; | ||
108 | 109 | ||
109 | ACPI_FUNCTION_ENTRY(); | 110 | ACPI_FUNCTION_ENTRY(); |
110 | 111 | ||
112 | register_bit = (u8) | ||
113 | (1 << | ||
114 | (gpe_event_info->gpe_number - | ||
115 | gpe_event_info->register_info->base_gpe_number)); | ||
116 | |||
111 | /* | 117 | /* |
112 | * Write a one to the appropriate bit in the status register to | 118 | * Write a one to the appropriate bit in the status register to |
113 | * clear this GPE. | 119 | * clear this GPE. |
114 | */ | 120 | */ |
115 | status = acpi_hw_low_level_write(8, gpe_event_info->register_bit, | 121 | status = acpi_hw_low_level_write(8, register_bit, |
116 | &gpe_event_info->register_info-> | 122 | &gpe_event_info->register_info-> |
117 | status_address); | 123 | status_address); |
118 | 124 | ||
@@ -155,7 +161,10 @@ acpi_hw_get_gpe_status(struct acpi_gpe_event_info * gpe_event_info, | |||
155 | 161 | ||
156 | /* Get the register bitmask for this GPE */ | 162 | /* Get the register bitmask for this GPE */ |
157 | 163 | ||
158 | register_bit = gpe_event_info->register_bit; | 164 | register_bit = (u8) |
165 | (1 << | ||
166 | (gpe_event_info->gpe_number - | ||
167 | gpe_event_info->register_info->base_gpe_number)); | ||
159 | 168 | ||
160 | /* GPE currently enabled? (enabled for runtime?) */ | 169 | /* GPE currently enabled? (enabled for runtime?) */ |
161 | 170 | ||
diff --git a/drivers/acpi/hardware/hwregs.c b/drivers/acpi/hardware/hwregs.c index fa58c1edce1e..1d371fa663f2 100644 --- a/drivers/acpi/hardware/hwregs.c +++ b/drivers/acpi/hardware/hwregs.c | |||
@@ -7,7 +7,7 @@ | |||
7 | ******************************************************************************/ | 7 | ******************************************************************************/ |
8 | 8 | ||
9 | /* | 9 | /* |
10 | * Copyright (C) 2000 - 2006, R. Byron Moore | 10 | * Copyright (C) 2000 - 2007, R. Byron Moore |
11 | * All rights reserved. | 11 | * All rights reserved. |
12 | * | 12 | * |
13 | * Redistribution and use in source and binary forms, with or without | 13 | * Redistribution and use in source and binary forms, with or without |
@@ -54,17 +54,15 @@ ACPI_MODULE_NAME("hwregs") | |||
54 | * | 54 | * |
55 | * FUNCTION: acpi_hw_clear_acpi_status | 55 | * FUNCTION: acpi_hw_clear_acpi_status |
56 | * | 56 | * |
57 | * PARAMETERS: Flags - Lock the hardware or not | 57 | * PARAMETERS: None |
58 | * | 58 | * |
59 | * RETURN: none | 59 | * RETURN: None |
60 | * | 60 | * |
61 | * DESCRIPTION: Clears all fixed and general purpose status bits | 61 | * DESCRIPTION: Clears all fixed and general purpose status bits |
62 | * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED | 62 | * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED |
63 | * | 63 | * |
64 | * NOTE: TBD: Flags parameter is obsolete, to be removed | ||
65 | * | ||
66 | ******************************************************************************/ | 64 | ******************************************************************************/ |
67 | acpi_status acpi_hw_clear_acpi_status(u32 flags) | 65 | acpi_status acpi_hw_clear_acpi_status(void) |
68 | { | 66 | { |
69 | acpi_status status; | 67 | acpi_status status; |
70 | acpi_cpu_flags lock_flags = 0; | 68 | acpi_cpu_flags lock_flags = 0; |
@@ -73,7 +71,7 @@ acpi_status acpi_hw_clear_acpi_status(u32 flags) | |||
73 | 71 | ||
74 | ACPI_DEBUG_PRINT((ACPI_DB_IO, "About to write %04X to %04X\n", | 72 | ACPI_DEBUG_PRINT((ACPI_DB_IO, "About to write %04X to %04X\n", |
75 | ACPI_BITMASK_ALL_FIXED_STATUS, | 73 | ACPI_BITMASK_ALL_FIXED_STATUS, |
76 | (u16) acpi_gbl_FADT->xpm1a_evt_blk.address)); | 74 | (u16) acpi_gbl_FADT.xpm1a_event_block.address)); |
77 | 75 | ||
78 | lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock); | 76 | lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock); |
79 | 77 | ||
@@ -86,10 +84,10 @@ acpi_status acpi_hw_clear_acpi_status(u32 flags) | |||
86 | 84 | ||
87 | /* Clear the fixed events */ | 85 | /* Clear the fixed events */ |
88 | 86 | ||
89 | if (acpi_gbl_FADT->xpm1b_evt_blk.address) { | 87 | if (acpi_gbl_FADT.xpm1b_event_block.address) { |
90 | status = | 88 | status = |
91 | acpi_hw_low_level_write(16, ACPI_BITMASK_ALL_FIXED_STATUS, | 89 | acpi_hw_low_level_write(16, ACPI_BITMASK_ALL_FIXED_STATUS, |
92 | &acpi_gbl_FADT->xpm1b_evt_blk); | 90 | &acpi_gbl_FADT.xpm1b_event_block); |
93 | if (ACPI_FAILURE(status)) { | 91 | if (ACPI_FAILURE(status)) { |
94 | goto unlock_and_exit; | 92 | goto unlock_and_exit; |
95 | } | 93 | } |
@@ -253,18 +251,15 @@ struct acpi_bit_register_info *acpi_hw_get_bit_register_info(u32 register_id) | |||
253 | * | 251 | * |
254 | * PARAMETERS: register_id - ID of ACPI bit_register to access | 252 | * PARAMETERS: register_id - ID of ACPI bit_register to access |
255 | * return_value - Value that was read from the register | 253 | * return_value - Value that was read from the register |
256 | * Flags - Lock the hardware or not | ||
257 | * | 254 | * |
258 | * RETURN: Status and the value read from specified Register. Value | 255 | * RETURN: Status and the value read from specified Register. Value |
259 | * returned is normalized to bit0 (is shifted all the way right) | 256 | * returned is normalized to bit0 (is shifted all the way right) |
260 | * | 257 | * |
261 | * DESCRIPTION: ACPI bit_register read function. | 258 | * DESCRIPTION: ACPI bit_register read function. |
262 | * | 259 | * |
263 | * NOTE: TBD: Flags parameter is obsolete, to be removed | ||
264 | * | ||
265 | ******************************************************************************/ | 260 | ******************************************************************************/ |
266 | 261 | ||
267 | acpi_status acpi_get_register(u32 register_id, u32 * return_value, u32 flags) | 262 | acpi_status acpi_get_register(u32 register_id, u32 * return_value) |
268 | { | 263 | { |
269 | u32 register_value = 0; | 264 | u32 register_value = 0; |
270 | struct acpi_bit_register_info *bit_reg_info; | 265 | struct acpi_bit_register_info *bit_reg_info; |
@@ -312,16 +307,13 @@ ACPI_EXPORT_SYMBOL(acpi_get_register) | |||
312 | * PARAMETERS: register_id - ID of ACPI bit_register to access | 307 | * PARAMETERS: register_id - ID of ACPI bit_register to access |
313 | * Value - (only used on write) value to write to the | 308 | * Value - (only used on write) value to write to the |
314 | * Register, NOT pre-normalized to the bit pos | 309 | * Register, NOT pre-normalized to the bit pos |
315 | * Flags - Lock the hardware or not | ||
316 | * | 310 | * |
317 | * RETURN: Status | 311 | * RETURN: Status |
318 | * | 312 | * |
319 | * DESCRIPTION: ACPI Bit Register write function. | 313 | * DESCRIPTION: ACPI Bit Register write function. |
320 | * | 314 | * |
321 | * NOTE: TBD: Flags parameter is obsolete, to be removed | ||
322 | * | ||
323 | ******************************************************************************/ | 315 | ******************************************************************************/ |
324 | acpi_status acpi_set_register(u32 register_id, u32 value, u32 flags) | 316 | acpi_status acpi_set_register(u32 register_id, u32 value) |
325 | { | 317 | { |
326 | u32 register_value = 0; | 318 | u32 register_value = 0; |
327 | struct acpi_bit_register_info *bit_reg_info; | 319 | struct acpi_bit_register_info *bit_reg_info; |
@@ -422,8 +414,9 @@ acpi_status acpi_set_register(u32 register_id, u32 value, u32 flags) | |||
422 | ACPI_DEBUG_PRINT((ACPI_DB_IO, | 414 | ACPI_DEBUG_PRINT((ACPI_DB_IO, |
423 | "PM2 control: Read %X from %8.8X%8.8X\n", | 415 | "PM2 control: Read %X from %8.8X%8.8X\n", |
424 | register_value, | 416 | register_value, |
425 | ACPI_FORMAT_UINT64(acpi_gbl_FADT-> | 417 | ACPI_FORMAT_UINT64(acpi_gbl_FADT. |
426 | xpm2_cnt_blk.address))); | 418 | xpm2_control_block. |
419 | address))); | ||
427 | 420 | ||
428 | ACPI_REGISTER_INSERT_VALUE(register_value, | 421 | ACPI_REGISTER_INSERT_VALUE(register_value, |
429 | bit_reg_info->bit_position, | 422 | bit_reg_info->bit_position, |
@@ -433,8 +426,9 @@ acpi_status acpi_set_register(u32 register_id, u32 value, u32 flags) | |||
433 | ACPI_DEBUG_PRINT((ACPI_DB_IO, | 426 | ACPI_DEBUG_PRINT((ACPI_DB_IO, |
434 | "About to write %4.4X to %8.8X%8.8X\n", | 427 | "About to write %4.4X to %8.8X%8.8X\n", |
435 | register_value, | 428 | register_value, |
436 | ACPI_FORMAT_UINT64(acpi_gbl_FADT-> | 429 | ACPI_FORMAT_UINT64(acpi_gbl_FADT. |
437 | xpm2_cnt_blk.address))); | 430 | xpm2_control_block. |
431 | address))); | ||
438 | 432 | ||
439 | status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, | 433 | status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, |
440 | ACPI_REGISTER_PM2_CONTROL, | 434 | ACPI_REGISTER_PM2_CONTROL, |
@@ -495,7 +489,7 @@ acpi_hw_register_read(u8 use_lock, u32 register_id, u32 * return_value) | |||
495 | 489 | ||
496 | status = | 490 | status = |
497 | acpi_hw_low_level_read(16, &value1, | 491 | acpi_hw_low_level_read(16, &value1, |
498 | &acpi_gbl_FADT->xpm1a_evt_blk); | 492 | &acpi_gbl_FADT.xpm1a_event_block); |
499 | if (ACPI_FAILURE(status)) { | 493 | if (ACPI_FAILURE(status)) { |
500 | goto unlock_and_exit; | 494 | goto unlock_and_exit; |
501 | } | 495 | } |
@@ -504,7 +498,7 @@ acpi_hw_register_read(u8 use_lock, u32 register_id, u32 * return_value) | |||
504 | 498 | ||
505 | status = | 499 | status = |
506 | acpi_hw_low_level_read(16, &value2, | 500 | acpi_hw_low_level_read(16, &value2, |
507 | &acpi_gbl_FADT->xpm1b_evt_blk); | 501 | &acpi_gbl_FADT.xpm1b_event_block); |
508 | value1 |= value2; | 502 | value1 |= value2; |
509 | break; | 503 | break; |
510 | 504 | ||
@@ -527,14 +521,14 @@ acpi_hw_register_read(u8 use_lock, u32 register_id, u32 * return_value) | |||
527 | 521 | ||
528 | status = | 522 | status = |
529 | acpi_hw_low_level_read(16, &value1, | 523 | acpi_hw_low_level_read(16, &value1, |
530 | &acpi_gbl_FADT->xpm1a_cnt_blk); | 524 | &acpi_gbl_FADT.xpm1a_control_block); |
531 | if (ACPI_FAILURE(status)) { | 525 | if (ACPI_FAILURE(status)) { |
532 | goto unlock_and_exit; | 526 | goto unlock_and_exit; |
533 | } | 527 | } |
534 | 528 | ||
535 | status = | 529 | status = |
536 | acpi_hw_low_level_read(16, &value2, | 530 | acpi_hw_low_level_read(16, &value2, |
537 | &acpi_gbl_FADT->xpm1b_cnt_blk); | 531 | &acpi_gbl_FADT.xpm1b_control_block); |
538 | value1 |= value2; | 532 | value1 |= value2; |
539 | break; | 533 | break; |
540 | 534 | ||
@@ -542,19 +536,20 @@ acpi_hw_register_read(u8 use_lock, u32 register_id, u32 * return_value) | |||
542 | 536 | ||
543 | status = | 537 | status = |
544 | acpi_hw_low_level_read(8, &value1, | 538 | acpi_hw_low_level_read(8, &value1, |
545 | &acpi_gbl_FADT->xpm2_cnt_blk); | 539 | &acpi_gbl_FADT.xpm2_control_block); |
546 | break; | 540 | break; |
547 | 541 | ||
548 | case ACPI_REGISTER_PM_TIMER: /* 32-bit access */ | 542 | case ACPI_REGISTER_PM_TIMER: /* 32-bit access */ |
549 | 543 | ||
550 | status = | 544 | status = |
551 | acpi_hw_low_level_read(32, &value1, | 545 | acpi_hw_low_level_read(32, &value1, |
552 | &acpi_gbl_FADT->xpm_tmr_blk); | 546 | &acpi_gbl_FADT.xpm_timer_block); |
553 | break; | 547 | break; |
554 | 548 | ||
555 | case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */ | 549 | case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */ |
556 | 550 | ||
557 | status = acpi_os_read_port(acpi_gbl_FADT->smi_cmd, &value1, 8); | 551 | status = |
552 | acpi_os_read_port(acpi_gbl_FADT.smi_command, &value1, 8); | ||
558 | break; | 553 | break; |
559 | 554 | ||
560 | default: | 555 | default: |
@@ -635,7 +630,7 @@ acpi_status acpi_hw_register_write(u8 use_lock, u32 register_id, u32 value) | |||
635 | 630 | ||
636 | status = | 631 | status = |
637 | acpi_hw_low_level_write(16, value, | 632 | acpi_hw_low_level_write(16, value, |
638 | &acpi_gbl_FADT->xpm1a_evt_blk); | 633 | &acpi_gbl_FADT.xpm1a_event_block); |
639 | if (ACPI_FAILURE(status)) { | 634 | if (ACPI_FAILURE(status)) { |
640 | goto unlock_and_exit; | 635 | goto unlock_and_exit; |
641 | } | 636 | } |
@@ -644,7 +639,7 @@ acpi_status acpi_hw_register_write(u8 use_lock, u32 register_id, u32 value) | |||
644 | 639 | ||
645 | status = | 640 | status = |
646 | acpi_hw_low_level_write(16, value, | 641 | acpi_hw_low_level_write(16, value, |
647 | &acpi_gbl_FADT->xpm1b_evt_blk); | 642 | &acpi_gbl_FADT.xpm1b_event_block); |
648 | break; | 643 | break; |
649 | 644 | ||
650 | case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access */ | 645 | case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access */ |
@@ -682,49 +677,50 @@ acpi_status acpi_hw_register_write(u8 use_lock, u32 register_id, u32 value) | |||
682 | 677 | ||
683 | status = | 678 | status = |
684 | acpi_hw_low_level_write(16, value, | 679 | acpi_hw_low_level_write(16, value, |
685 | &acpi_gbl_FADT->xpm1a_cnt_blk); | 680 | &acpi_gbl_FADT.xpm1a_control_block); |
686 | if (ACPI_FAILURE(status)) { | 681 | if (ACPI_FAILURE(status)) { |
687 | goto unlock_and_exit; | 682 | goto unlock_and_exit; |
688 | } | 683 | } |
689 | 684 | ||
690 | status = | 685 | status = |
691 | acpi_hw_low_level_write(16, value, | 686 | acpi_hw_low_level_write(16, value, |
692 | &acpi_gbl_FADT->xpm1b_cnt_blk); | 687 | &acpi_gbl_FADT.xpm1b_control_block); |
693 | break; | 688 | break; |
694 | 689 | ||
695 | case ACPI_REGISTER_PM1A_CONTROL: /* 16-bit access */ | 690 | case ACPI_REGISTER_PM1A_CONTROL: /* 16-bit access */ |
696 | 691 | ||
697 | status = | 692 | status = |
698 | acpi_hw_low_level_write(16, value, | 693 | acpi_hw_low_level_write(16, value, |
699 | &acpi_gbl_FADT->xpm1a_cnt_blk); | 694 | &acpi_gbl_FADT.xpm1a_control_block); |
700 | break; | 695 | break; |
701 | 696 | ||
702 | case ACPI_REGISTER_PM1B_CONTROL: /* 16-bit access */ | 697 | case ACPI_REGISTER_PM1B_CONTROL: /* 16-bit access */ |
703 | 698 | ||
704 | status = | 699 | status = |
705 | acpi_hw_low_level_write(16, value, | 700 | acpi_hw_low_level_write(16, value, |
706 | &acpi_gbl_FADT->xpm1b_cnt_blk); | 701 | &acpi_gbl_FADT.xpm1b_control_block); |
707 | break; | 702 | break; |
708 | 703 | ||
709 | case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ | 704 | case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ |
710 | 705 | ||
711 | status = | 706 | status = |
712 | acpi_hw_low_level_write(8, value, | 707 | acpi_hw_low_level_write(8, value, |
713 | &acpi_gbl_FADT->xpm2_cnt_blk); | 708 | &acpi_gbl_FADT.xpm2_control_block); |
714 | break; | 709 | break; |
715 | 710 | ||
716 | case ACPI_REGISTER_PM_TIMER: /* 32-bit access */ | 711 | case ACPI_REGISTER_PM_TIMER: /* 32-bit access */ |
717 | 712 | ||
718 | status = | 713 | status = |
719 | acpi_hw_low_level_write(32, value, | 714 | acpi_hw_low_level_write(32, value, |
720 | &acpi_gbl_FADT->xpm_tmr_blk); | 715 | &acpi_gbl_FADT.xpm_timer_block); |
721 | break; | 716 | break; |
722 | 717 | ||
723 | case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */ | 718 | case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */ |
724 | 719 | ||
725 | /* SMI_CMD is currently always in IO space */ | 720 | /* SMI_CMD is currently always in IO space */ |
726 | 721 | ||
727 | status = acpi_os_write_port(acpi_gbl_FADT->smi_cmd, value, 8); | 722 | status = |
723 | acpi_os_write_port(acpi_gbl_FADT.smi_command, value, 8); | ||
728 | break; | 724 | break; |
729 | 725 | ||
730 | default: | 726 | default: |
@@ -783,7 +779,7 @@ acpi_hw_low_level_read(u32 width, u32 * value, struct acpi_generic_address *reg) | |||
783 | * Two address spaces supported: Memory or IO. | 779 | * Two address spaces supported: Memory or IO. |
784 | * PCI_Config is not supported here because the GAS struct is insufficient | 780 | * PCI_Config is not supported here because the GAS struct is insufficient |
785 | */ | 781 | */ |
786 | switch (reg->address_space_id) { | 782 | switch (reg->space_id) { |
787 | case ACPI_ADR_SPACE_SYSTEM_MEMORY: | 783 | case ACPI_ADR_SPACE_SYSTEM_MEMORY: |
788 | 784 | ||
789 | status = acpi_os_read_memory((acpi_physical_address) address, | 785 | status = acpi_os_read_memory((acpi_physical_address) address, |
@@ -792,22 +788,20 @@ acpi_hw_low_level_read(u32 width, u32 * value, struct acpi_generic_address *reg) | |||
792 | 788 | ||
793 | case ACPI_ADR_SPACE_SYSTEM_IO: | 789 | case ACPI_ADR_SPACE_SYSTEM_IO: |
794 | 790 | ||
795 | status = acpi_os_read_port((acpi_io_address) address, | 791 | status = |
796 | value, width); | 792 | acpi_os_read_port((acpi_io_address) address, value, width); |
797 | break; | 793 | break; |
798 | 794 | ||
799 | default: | 795 | default: |
800 | ACPI_ERROR((AE_INFO, | 796 | ACPI_ERROR((AE_INFO, |
801 | "Unsupported address space: %X", | 797 | "Unsupported address space: %X", reg->space_id)); |
802 | reg->address_space_id)); | ||
803 | return (AE_BAD_PARAMETER); | 798 | return (AE_BAD_PARAMETER); |
804 | } | 799 | } |
805 | 800 | ||
806 | ACPI_DEBUG_PRINT((ACPI_DB_IO, | 801 | ACPI_DEBUG_PRINT((ACPI_DB_IO, |
807 | "Read: %8.8X width %2d from %8.8X%8.8X (%s)\n", | 802 | "Read: %8.8X width %2d from %8.8X%8.8X (%s)\n", |
808 | *value, width, | 803 | *value, width, ACPI_FORMAT_UINT64(address), |
809 | ACPI_FORMAT_UINT64(address), | 804 | acpi_ut_get_region_name(reg->space_id))); |
810 | acpi_ut_get_region_name(reg->address_space_id))); | ||
811 | 805 | ||
812 | return (status); | 806 | return (status); |
813 | } | 807 | } |
@@ -854,7 +848,7 @@ acpi_hw_low_level_write(u32 width, u32 value, struct acpi_generic_address * reg) | |||
854 | * Two address spaces supported: Memory or IO. | 848 | * Two address spaces supported: Memory or IO. |
855 | * PCI_Config is not supported here because the GAS struct is insufficient | 849 | * PCI_Config is not supported here because the GAS struct is insufficient |
856 | */ | 850 | */ |
857 | switch (reg->address_space_id) { | 851 | switch (reg->space_id) { |
858 | case ACPI_ADR_SPACE_SYSTEM_MEMORY: | 852 | case ACPI_ADR_SPACE_SYSTEM_MEMORY: |
859 | 853 | ||
860 | status = acpi_os_write_memory((acpi_physical_address) address, | 854 | status = acpi_os_write_memory((acpi_physical_address) address, |
@@ -863,22 +857,20 @@ acpi_hw_low_level_write(u32 width, u32 value, struct acpi_generic_address * reg) | |||
863 | 857 | ||
864 | case ACPI_ADR_SPACE_SYSTEM_IO: | 858 | case ACPI_ADR_SPACE_SYSTEM_IO: |
865 | 859 | ||
866 | status = acpi_os_write_port((acpi_io_address) address, | 860 | status = acpi_os_write_port((acpi_io_address) address, value, |
867 | value, width); | 861 | width); |
868 | break; | 862 | break; |
869 | 863 | ||
870 | default: | 864 | default: |
871 | ACPI_ERROR((AE_INFO, | 865 | ACPI_ERROR((AE_INFO, |
872 | "Unsupported address space: %X", | 866 | "Unsupported address space: %X", reg->space_id)); |
873 | reg->address_space_id)); | ||
874 | return (AE_BAD_PARAMETER); | 867 | return (AE_BAD_PARAMETER); |
875 | } | 868 | } |
876 | 869 | ||
877 | ACPI_DEBUG_PRINT((ACPI_DB_IO, | 870 | ACPI_DEBUG_PRINT((ACPI_DB_IO, |
878 | "Wrote: %8.8X width %2d to %8.8X%8.8X (%s)\n", | 871 | "Wrote: %8.8X width %2d to %8.8X%8.8X (%s)\n", |
879 | value, width, | 872 | value, width, ACPI_FORMAT_UINT64(address), |
880 | ACPI_FORMAT_UINT64(address), | 873 | acpi_ut_get_region_name(reg->space_id))); |
881 | acpi_ut_get_region_name(reg->address_space_id))); | ||
882 | 874 | ||
883 | return (status); | 875 | return (status); |
884 | } | 876 | } |
diff --git a/drivers/acpi/hardware/hwsleep.c b/drivers/acpi/hardware/hwsleep.c index 8bb43cae60c2..57901ca3ade9 100644 --- a/drivers/acpi/hardware/hwsleep.c +++ b/drivers/acpi/hardware/hwsleep.c | |||
@@ -6,7 +6,7 @@ | |||
6 | *****************************************************************************/ | 6 | *****************************************************************************/ |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Copyright (C) 2000 - 2006, R. Byron Moore | 9 | * Copyright (C) 2000 - 2007, R. Byron Moore |
10 | * All rights reserved. | 10 | * All rights reserved. |
11 | * | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | 12 | * Redistribution and use in source and binary forms, with or without |
@@ -43,6 +43,7 @@ | |||
43 | */ | 43 | */ |
44 | 44 | ||
45 | #include <acpi/acpi.h> | 45 | #include <acpi/acpi.h> |
46 | #include <acpi/actables.h> | ||
46 | 47 | ||
47 | #define _COMPONENT ACPI_HARDWARE | 48 | #define _COMPONENT ACPI_HARDWARE |
48 | ACPI_MODULE_NAME("hwsleep") | 49 | ACPI_MODULE_NAME("hwsleep") |
@@ -62,17 +63,32 @@ ACPI_MODULE_NAME("hwsleep") | |||
62 | acpi_status | 63 | acpi_status |
63 | acpi_set_firmware_waking_vector(acpi_physical_address physical_address) | 64 | acpi_set_firmware_waking_vector(acpi_physical_address physical_address) |
64 | { | 65 | { |
66 | struct acpi_table_facs *facs; | ||
67 | acpi_status status; | ||
65 | 68 | ||
66 | ACPI_FUNCTION_TRACE(acpi_set_firmware_waking_vector); | 69 | ACPI_FUNCTION_TRACE(acpi_set_firmware_waking_vector); |
67 | 70 | ||
71 | /* Get the FACS */ | ||
72 | |||
73 | status = | ||
74 | acpi_get_table_by_index(ACPI_TABLE_INDEX_FACS, | ||
75 | (struct acpi_table_header **)&facs); | ||
76 | if (ACPI_FAILURE(status)) { | ||
77 | return_ACPI_STATUS(status); | ||
78 | } | ||
79 | |||
68 | /* Set the vector */ | 80 | /* Set the vector */ |
69 | 81 | ||
70 | if (acpi_gbl_common_fACS.vector_width == 32) { | 82 | if ((facs->length < 32) || (!(facs->xfirmware_waking_vector))) { |
71 | *(ACPI_CAST_PTR | 83 | /* |
72 | (u32, acpi_gbl_common_fACS.firmware_waking_vector)) | 84 | * ACPI 1.0 FACS or short table or optional X_ field is zero |
73 | = (u32) physical_address; | 85 | */ |
86 | facs->firmware_waking_vector = (u32) physical_address; | ||
74 | } else { | 87 | } else { |
75 | *acpi_gbl_common_fACS.firmware_waking_vector = physical_address; | 88 | /* |
89 | * ACPI 2.0 FACS with valid X_ field | ||
90 | */ | ||
91 | facs->xfirmware_waking_vector = physical_address; | ||
76 | } | 92 | } |
77 | 93 | ||
78 | return_ACPI_STATUS(AE_OK); | 94 | return_ACPI_STATUS(AE_OK); |
@@ -97,6 +113,8 @@ ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector) | |||
97 | acpi_status | 113 | acpi_status |
98 | acpi_get_firmware_waking_vector(acpi_physical_address * physical_address) | 114 | acpi_get_firmware_waking_vector(acpi_physical_address * physical_address) |
99 | { | 115 | { |
116 | struct acpi_table_facs *facs; | ||
117 | acpi_status status; | ||
100 | 118 | ||
101 | ACPI_FUNCTION_TRACE(acpi_get_firmware_waking_vector); | 119 | ACPI_FUNCTION_TRACE(acpi_get_firmware_waking_vector); |
102 | 120 | ||
@@ -104,16 +122,29 @@ acpi_get_firmware_waking_vector(acpi_physical_address * physical_address) | |||
104 | return_ACPI_STATUS(AE_BAD_PARAMETER); | 122 | return_ACPI_STATUS(AE_BAD_PARAMETER); |
105 | } | 123 | } |
106 | 124 | ||
125 | /* Get the FACS */ | ||
126 | |||
127 | status = | ||
128 | acpi_get_table_by_index(ACPI_TABLE_INDEX_FACS, | ||
129 | (struct acpi_table_header **)&facs); | ||
130 | if (ACPI_FAILURE(status)) { | ||
131 | return_ACPI_STATUS(status); | ||
132 | } | ||
133 | |||
107 | /* Get the vector */ | 134 | /* Get the vector */ |
108 | 135 | ||
109 | if (acpi_gbl_common_fACS.vector_width == 32) { | 136 | if ((facs->length < 32) || (!(facs->xfirmware_waking_vector))) { |
110 | *physical_address = (acpi_physical_address) | 137 | /* |
111 | * | 138 | * ACPI 1.0 FACS or short table or optional X_ field is zero |
112 | (ACPI_CAST_PTR | 139 | */ |
113 | (u32, acpi_gbl_common_fACS.firmware_waking_vector)); | 140 | *physical_address = |
141 | (acpi_physical_address) facs->firmware_waking_vector; | ||
114 | } else { | 142 | } else { |
143 | /* | ||
144 | * ACPI 2.0 FACS with valid X_ field | ||
145 | */ | ||
115 | *physical_address = | 146 | *physical_address = |
116 | *acpi_gbl_common_fACS.firmware_waking_vector; | 147 | (acpi_physical_address) facs->xfirmware_waking_vector; |
117 | } | 148 | } |
118 | 149 | ||
119 | return_ACPI_STATUS(AE_OK); | 150 | return_ACPI_STATUS(AE_OK); |
@@ -246,15 +277,14 @@ acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state) | |||
246 | 277 | ||
247 | /* Clear wake status */ | 278 | /* Clear wake status */ |
248 | 279 | ||
249 | status = | 280 | status = acpi_set_register(ACPI_BITREG_WAKE_STATUS, 1); |
250 | acpi_set_register(ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_DO_NOT_LOCK); | ||
251 | if (ACPI_FAILURE(status)) { | 281 | if (ACPI_FAILURE(status)) { |
252 | return_ACPI_STATUS(status); | 282 | return_ACPI_STATUS(status); |
253 | } | 283 | } |
254 | 284 | ||
255 | /* Clear all fixed and general purpose status bits */ | 285 | /* Clear all fixed and general purpose status bits */ |
256 | 286 | ||
257 | status = acpi_hw_clear_acpi_status(ACPI_MTX_DO_NOT_LOCK); | 287 | status = acpi_hw_clear_acpi_status(); |
258 | if (ACPI_FAILURE(status)) { | 288 | if (ACPI_FAILURE(status)) { |
259 | return_ACPI_STATUS(status); | 289 | return_ACPI_STATUS(status); |
260 | } | 290 | } |
@@ -367,8 +397,7 @@ acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state) | |||
367 | /* Wait until we enter sleep state */ | 397 | /* Wait until we enter sleep state */ |
368 | 398 | ||
369 | do { | 399 | do { |
370 | status = acpi_get_register(ACPI_BITREG_WAKE_STATUS, &in_value, | 400 | status = acpi_get_register(ACPI_BITREG_WAKE_STATUS, &in_value); |
371 | ACPI_MTX_DO_NOT_LOCK); | ||
372 | if (ACPI_FAILURE(status)) { | 401 | if (ACPI_FAILURE(status)) { |
373 | return_ACPI_STATUS(status); | 402 | return_ACPI_STATUS(status); |
374 | } | 403 | } |
@@ -401,13 +430,12 @@ acpi_status asmlinkage acpi_enter_sleep_state_s4bios(void) | |||
401 | 430 | ||
402 | ACPI_FUNCTION_TRACE(acpi_enter_sleep_state_s4bios); | 431 | ACPI_FUNCTION_TRACE(acpi_enter_sleep_state_s4bios); |
403 | 432 | ||
404 | status = | 433 | status = acpi_set_register(ACPI_BITREG_WAKE_STATUS, 1); |
405 | acpi_set_register(ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_DO_NOT_LOCK); | ||
406 | if (ACPI_FAILURE(status)) { | 434 | if (ACPI_FAILURE(status)) { |
407 | return_ACPI_STATUS(status); | 435 | return_ACPI_STATUS(status); |
408 | } | 436 | } |
409 | 437 | ||
410 | status = acpi_hw_clear_acpi_status(ACPI_MTX_DO_NOT_LOCK); | 438 | status = acpi_hw_clear_acpi_status(); |
411 | if (ACPI_FAILURE(status)) { | 439 | if (ACPI_FAILURE(status)) { |
412 | return_ACPI_STATUS(status); | 440 | return_ACPI_STATUS(status); |
413 | } | 441 | } |
@@ -429,13 +457,12 @@ acpi_status asmlinkage acpi_enter_sleep_state_s4bios(void) | |||
429 | 457 | ||
430 | ACPI_FLUSH_CPU_CACHE(); | 458 | ACPI_FLUSH_CPU_CACHE(); |
431 | 459 | ||
432 | status = acpi_os_write_port(acpi_gbl_FADT->smi_cmd, | 460 | status = acpi_os_write_port(acpi_gbl_FADT.smi_command, |
433 | (u32) acpi_gbl_FADT->S4bios_req, 8); | 461 | (u32) acpi_gbl_FADT.S4bios_request, 8); |
434 | 462 | ||
435 | do { | 463 | do { |
436 | acpi_os_stall(1000); | 464 | acpi_os_stall(1000); |
437 | status = acpi_get_register(ACPI_BITREG_WAKE_STATUS, &in_value, | 465 | status = acpi_get_register(ACPI_BITREG_WAKE_STATUS, &in_value); |
438 | ACPI_MTX_DO_NOT_LOCK); | ||
439 | if (ACPI_FAILURE(status)) { | 466 | if (ACPI_FAILURE(status)) { |
440 | return_ACPI_STATUS(status); | 467 | return_ACPI_STATUS(status); |
441 | } | 468 | } |
@@ -568,13 +595,11 @@ acpi_status acpi_leave_sleep_state(u8 sleep_state) | |||
568 | 595 | ||
569 | (void) | 596 | (void) |
570 | acpi_set_register(acpi_gbl_fixed_event_info | 597 | acpi_set_register(acpi_gbl_fixed_event_info |
571 | [ACPI_EVENT_POWER_BUTTON].enable_register_id, 1, | 598 | [ACPI_EVENT_POWER_BUTTON].enable_register_id, 1); |
572 | ACPI_MTX_DO_NOT_LOCK); | ||
573 | 599 | ||
574 | (void) | 600 | (void) |
575 | acpi_set_register(acpi_gbl_fixed_event_info | 601 | acpi_set_register(acpi_gbl_fixed_event_info |
576 | [ACPI_EVENT_POWER_BUTTON].status_register_id, 1, | 602 | [ACPI_EVENT_POWER_BUTTON].status_register_id, 1); |
577 | ACPI_MTX_DO_NOT_LOCK); | ||
578 | 603 | ||
579 | arg.integer.value = ACPI_SST_WORKING; | 604 | arg.integer.value = ACPI_SST_WORKING; |
580 | status = acpi_evaluate_object(NULL, METHOD_NAME__SST, &arg_list, NULL); | 605 | status = acpi_evaluate_object(NULL, METHOD_NAME__SST, &arg_list, NULL); |
diff --git a/drivers/acpi/hardware/hwtimer.c b/drivers/acpi/hardware/hwtimer.c index c4ec47c939fd..c32eab696acd 100644 --- a/drivers/acpi/hardware/hwtimer.c +++ b/drivers/acpi/hardware/hwtimer.c | |||
@@ -6,7 +6,7 @@ | |||
6 | *****************************************************************************/ | 6 | *****************************************************************************/ |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Copyright (C) 2000 - 2006, R. Byron Moore | 9 | * Copyright (C) 2000 - 2007, R. Byron Moore |
10 | * All rights reserved. | 10 | * All rights reserved. |
11 | * | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | 12 | * Redistribution and use in source and binary forms, with or without |
@@ -66,7 +66,7 @@ acpi_status acpi_get_timer_resolution(u32 * resolution) | |||
66 | return_ACPI_STATUS(AE_BAD_PARAMETER); | 66 | return_ACPI_STATUS(AE_BAD_PARAMETER); |
67 | } | 67 | } |
68 | 68 | ||
69 | if (acpi_gbl_FADT->tmr_val_ext == 0) { | 69 | if ((acpi_gbl_FADT.flags & ACPI_FADT_32BIT_TIMER) == 0) { |
70 | *resolution = 24; | 70 | *resolution = 24; |
71 | } else { | 71 | } else { |
72 | *resolution = 32; | 72 | *resolution = 32; |
@@ -98,7 +98,8 @@ acpi_status acpi_get_timer(u32 * ticks) | |||
98 | return_ACPI_STATUS(AE_BAD_PARAMETER); | 98 | return_ACPI_STATUS(AE_BAD_PARAMETER); |
99 | } | 99 | } |
100 | 100 | ||
101 | status = acpi_hw_low_level_read(32, ticks, &acpi_gbl_FADT->xpm_tmr_blk); | 101 | status = |
102 | acpi_hw_low_level_read(32, ticks, &acpi_gbl_FADT.xpm_timer_block); | ||
102 | 103 | ||
103 | return_ACPI_STATUS(status); | 104 | return_ACPI_STATUS(status); |
104 | } | 105 | } |
@@ -153,7 +154,7 @@ acpi_get_timer_duration(u32 start_ticks, u32 end_ticks, u32 * time_elapsed) | |||
153 | if (start_ticks < end_ticks) { | 154 | if (start_ticks < end_ticks) { |
154 | delta_ticks = end_ticks - start_ticks; | 155 | delta_ticks = end_ticks - start_ticks; |
155 | } else if (start_ticks > end_ticks) { | 156 | } else if (start_ticks > end_ticks) { |
156 | if (acpi_gbl_FADT->tmr_val_ext == 0) { | 157 | if ((acpi_gbl_FADT.flags & ACPI_FADT_32BIT_TIMER) == 0) { |
157 | 158 | ||
158 | /* 24-bit Timer */ | 159 | /* 24-bit Timer */ |
159 | 160 | ||