diff options
author | Bob Moore <robert.moore@intel.com> | 2011-11-15 21:57:28 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2012-01-17 03:36:28 -0500 |
commit | 22e5b40ab21fcac21db0ff25fbb844ffecc73a4a (patch) | |
tree | 6fe339a8c410d2f8f2a0f844c976046d3be47e17 /drivers/acpi/acpica/tbfadt.c | |
parent | 2355e10f07b2c550c671f98b68aedf323c299aeb (diff) |
ACPI 5.0: Implement hardware-reduced option
If HW-reduced flag is set in the FADT, do not attempt to access
or initialize any ACPI hardware, including SCI and global lock.
No FACS will be present.
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/acpica/tbfadt.c')
-rw-r--r-- | drivers/acpi/acpica/tbfadt.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/drivers/acpi/acpica/tbfadt.c b/drivers/acpi/acpica/tbfadt.c index 536fd2bc7a47..1e1a7de34439 100644 --- a/drivers/acpi/acpica/tbfadt.c +++ b/drivers/acpi/acpica/tbfadt.c | |||
@@ -253,8 +253,13 @@ void acpi_tb_parse_fadt(u32 table_index) | |||
253 | acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.Xdsdt, | 253 | acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.Xdsdt, |
254 | ACPI_SIG_DSDT, ACPI_TABLE_INDEX_DSDT); | 254 | ACPI_SIG_DSDT, ACPI_TABLE_INDEX_DSDT); |
255 | 255 | ||
256 | acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.Xfacs, | 256 | /* If Hardware Reduced flag is set, there is no FACS */ |
257 | ACPI_SIG_FACS, ACPI_TABLE_INDEX_FACS); | 257 | |
258 | if (!acpi_gbl_reduced_hardware) { | ||
259 | acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT. | ||
260 | Xfacs, ACPI_SIG_FACS, | ||
261 | ACPI_TABLE_INDEX_FACS); | ||
262 | } | ||
258 | } | 263 | } |
259 | 264 | ||
260 | /******************************************************************************* | 265 | /******************************************************************************* |
@@ -297,6 +302,13 @@ void acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 length) | |||
297 | ACPI_MEMCPY(&acpi_gbl_FADT, table, | 302 | ACPI_MEMCPY(&acpi_gbl_FADT, table, |
298 | ACPI_MIN(length, sizeof(struct acpi_table_fadt))); | 303 | ACPI_MIN(length, sizeof(struct acpi_table_fadt))); |
299 | 304 | ||
305 | /* Take a copy of the Hardware Reduced flag */ | ||
306 | |||
307 | acpi_gbl_reduced_hardware = FALSE; | ||
308 | if (acpi_gbl_FADT.flags & ACPI_FADT_HW_REDUCED) { | ||
309 | acpi_gbl_reduced_hardware = TRUE; | ||
310 | } | ||
311 | |||
300 | /* Convert the local copy of the FADT to the common internal format */ | 312 | /* Convert the local copy of the FADT to the common internal format */ |
301 | 313 | ||
302 | acpi_tb_convert_fadt(); | 314 | acpi_tb_convert_fadt(); |
@@ -502,6 +514,12 @@ static void acpi_tb_validate_fadt(void) | |||
502 | acpi_gbl_FADT.Xdsdt = (u64) acpi_gbl_FADT.dsdt; | 514 | acpi_gbl_FADT.Xdsdt = (u64) acpi_gbl_FADT.dsdt; |
503 | } | 515 | } |
504 | 516 | ||
517 | /* If Hardware Reduced flag is set, we are all done */ | ||
518 | |||
519 | if (acpi_gbl_reduced_hardware) { | ||
520 | return; | ||
521 | } | ||
522 | |||
505 | /* Examine all of the 64-bit extended address fields (X fields) */ | 523 | /* Examine all of the 64-bit extended address fields (X fields) */ |
506 | 524 | ||
507 | for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) { | 525 | for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) { |