summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2020-04-26 10:31:20 +1000
committerDamien Zammit <damien@zamaudio.com>2020-04-26 10:31:20 +1000
commitaad7f5cadf8f036c31bb6bd3f4f20bd5706c63cd (patch)
tree8de370f18ae5f94b42af3d0905ae6eadb6499bfb
parent9840390afecb79572dee29d61678105408c501f4 (diff)
acpica: Init properly as per spec, hang on failures
-rw-r--r--acpica/acpi_init.c67
1 files changed, 66 insertions, 1 deletions
diff --git a/acpica/acpi_init.c b/acpica/acpi_init.c
index 849afac1..4999bbf3 100644
--- a/acpica/acpi_init.c
+++ b/acpica/acpi_init.c
@@ -90,6 +90,12 @@ acpi_os_delete_cache(acpi_cache_t *cache)
}
acpi_status
+acpi_os_purge_cache(acpi_cache_t *cache)
+{
+ return (AE_OK);
+}
+
+acpi_status
acpi_os_release_object(acpi_cache_t *cache, void *object)
{
return (AE_OK);
@@ -423,6 +429,19 @@ acpi_os_write_pci_configuration(struct acpi_pci_id * pci_id, u32 reg,
return AE_ERROR;
}
+acpi_status
+acpi_os_initialize(void)
+{
+ return AE_OK;
+}
+
+acpi_status
+acpi_os_terminate(void)
+{
+ acpi_os_printf("Bye!\n");
+ return AE_OK;
+}
+
/*
* Missing symbols to implement:
*
@@ -465,9 +484,55 @@ acpi_os_write_pci_configuration(struct acpi_pci_id * pci_id, u32 reg,
* xx acpi_os_read_pci_configuration
* xx acpi_os_remove_interrupt_handler
* xx acpi_os_write_pci_configuration
+ * x acpi_os_initialize
+ * x acpi_os_purge_cache
+ * x acpi_os_terminate
*/
void acpi_init(void)
{
- acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0);
+ int where = 0;
+ acpi_status err;
+
+ err = acpi_initialize_tables (initial_tables, ACPI_MAX_TABLES, 0);
+ if (ACPI_FAILURE (err)) {
+ where = 1;
+ goto die;
+ }
+
+ err = acpi_initialize_subsystem ();
+ if (ACPI_FAILURE (err)) {
+ where = 2;
+ goto die;
+ }
+
+ err = acpi_reallocate_root_table ();
+ if (ACPI_FAILURE (err)) {
+ where = 3;
+ goto die;
+ }
+
+ err = acpi_load_tables ();
+ if (ACPI_FAILURE (err)) {
+ where = 4;
+ goto die;
+ }
+
+ err = acpi_enable_subsystem (ACPI_FULL_INITIALIZATION);
+ if (ACPI_FAILURE (err)) {
+ where = 5;
+ goto die;
+ }
+
+ err = acpi_initialize_objects (ACPI_FULL_INITIALIZATION);
+ if (ACPI_FAILURE (err)) {
+ where = 6;
+ goto die;
+ }
+
+ acpi_os_printf("PASS!\n");
+ return;
+die:
+ acpi_os_printf("OUCH! where = %d\n", where);
+ for (;;);
}