aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBin Meng <bmeng.cn@gmail.com>2018-07-18 21:42:16 -0700
committerBin Meng <bmeng.cn@gmail.com>2018-07-20 09:33:22 +0800
commit474a62bc74fe923cd6f43e13ca82b1ce2f40e76f (patch)
tree1dfaa8a9b44152b328ff87aa2637a3ce1c90a8e7
parenta0609a8d19d4a9a86572fffb7cb8a3661fffbcf7 (diff)
downloadu-boot-474a62bc74fe923cd6f43e13ca82b1ce2f40e76f.zip
u-boot-474a62bc74fe923cd6f43e13ca82b1ce2f40e76f.tar.gz
u-boot-474a62bc74fe923cd6f43e13ca82b1ce2f40e76f.tar.bz2
x86: acpi: Don't touch ACPI hardware in write_acpi_tables()
write_acpi_tables() currently touches ACPI hardware to switch to ACPI mode at the end. Move such operation out of this function, so that it only does what the function name tells us. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-rw-r--r--arch/x86/cpu/cpu.c21
-rw-r--r--arch/x86/lib/acpi_table.c11
2 files changed, 18 insertions, 14 deletions
diff --git a/arch/x86/cpu/cpu.c b/arch/x86/cpu/cpu.c
index d08b7d9..290ee08 100644
--- a/arch/x86/cpu/cpu.c
+++ b/arch/x86/cpu/cpu.c
@@ -179,17 +179,32 @@ __weak void board_final_cleanup(void)
int last_stage_init(void)
{
+ struct acpi_fadt __maybe_unused *fadt;
+
board_final_cleanup();
-#if CONFIG_HAVE_ACPI_RESUME
- struct acpi_fadt *fadt = acpi_find_fadt();
+#ifdef CONFIG_HAVE_ACPI_RESUME
+ fadt = acpi_find_fadt();
- if (fadt != NULL && gd->arch.prev_sleep_state == ACPI_S3)
+ if (fadt && gd->arch.prev_sleep_state == ACPI_S3)
acpi_resume(fadt);
#endif
write_tables();
+#ifdef CONFIG_GENERATE_ACPI_TABLE
+ fadt = acpi_find_fadt();
+
+ /* Don't touch ACPI hardware on HW reduced platforms */
+ if (fadt && !(fadt->flags & ACPI_FADT_HW_REDUCED_ACPI)) {
+ /*
+ * Other than waiting for OSPM to request us to switch to ACPI
+ * mode, do it by ourselves, since SMI will not be triggered.
+ */
+ enter_acpi_mode(fadt->pm1a_cnt_blk);
+ }
+#endif
+
return 0;
}
#endif
diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c
index e26c54d..e48c9b9 100644
--- a/arch/x86/lib/acpi_table.c
+++ b/arch/x86/lib/acpi_table.c
@@ -12,7 +12,6 @@
#include <dm/uclass-internal.h>
#include <version.h>
#include <asm/acpi/global_nvs.h>
-#include <asm/acpi.h>
#include <asm/acpi_table.h>
#include <asm/ioapic.h>
#include <asm/lapic.h>
@@ -444,16 +443,6 @@ ulong write_acpi_tables(ulong start)
acpi_rsdp_addr = (unsigned long)rsdp;
debug("ACPI: done\n");
- /* Don't touch ACPI hardware on HW reduced platforms */
- if (fadt->flags & ACPI_FADT_HW_REDUCED_ACPI)
- return current;
-
- /*
- * Other than waiting for OSPM to request us to switch to ACPI mode,
- * do it by ourselves, since SMI will not be triggered.
- */
- enter_acpi_mode(fadt->pm1a_cnt_blk);
-
return current;
}