diff options
author | Damien Zammit <damien@zamaudio.com> | 2020-04-26 10:31:20 +1000 |
---|---|---|
committer | Damien Zammit <damien@zamaudio.com> | 2020-04-26 10:31:20 +1000 |
commit | aad7f5cadf8f036c31bb6bd3f4f20bd5706c63cd (patch) | |
tree | 8de370f18ae5f94b42af3d0905ae6eadb6499bfb | |
parent | 9840390afecb79572dee29d61678105408c501f4 (diff) |
acpica: Init properly as per spec, hang on failures
-rw-r--r-- | acpica/acpi_init.c | 67 |
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 (;;); } |