aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/acpica/tbfadt.c
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2011-11-15 21:57:28 -0500
committerLen Brown <len.brown@intel.com>2012-01-17 03:36:28 -0500
commit22e5b40ab21fcac21db0ff25fbb844ffecc73a4a (patch)
tree6fe339a8c410d2f8f2a0f844c976046d3be47e17 /drivers/acpi/acpica/tbfadt.c
parent2355e10f07b2c550c671f98b68aedf323c299aeb (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.c22
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++) {