From a9e916dc25763ac2adbdd2443b83b8c2892ba528 Mon Sep 17 00:00:00 2001 From: Philippe Houdoin Date: Thu, 24 Sep 2009 21:45:44 +0000 Subject: [PATCH] Install default address space handlers too during startup. Without them, embedded controler may have issue accessing some addresses before installing his own handlers. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33273 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/bus_managers/acpi/acpi_busman.c | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c b/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c index 1791f81c79..c8e25a097f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c @@ -127,25 +127,50 @@ acpi_std_ops(int32 op,...) #endif status = AcpiInitializeSubsystem(); - if (status != AE_OK) { + if (ACPI_FAILURE(status)) { ERROR("AcpiInitializeSubsystem failed (%s)\n", AcpiFormatException(status)); goto err; } status = AcpiInitializeTables(NULL, 0, TRUE); - if (status != AE_OK) { + if (ACPI_FAILURE(status)) { ERROR("AcpiInitializeTables failed (%s)\n", AcpiFormatException(status)); goto err; } status = AcpiLoadTables(); - if (status != AE_OK) { + if (ACPI_FAILURE(status)) { ERROR("AcpiLoadTables failed (%s)\n", AcpiFormatException(status)); goto err; } + + /* Install the default address space handlers. */ + status = AcpiInstallAddressSpaceHandler(ACPI_ROOT_OBJECT, + ACPI_ADR_SPACE_SYSTEM_MEMORY, ACPI_DEFAULT_HANDLER, NULL, NULL); + if (ACPI_FAILURE(status)) { + ERROR("Could not initialise SystemMemory handler: %s\n", + AcpiFormatException(status)); + goto err; + } + + status = AcpiInstallAddressSpaceHandler(ACPI_ROOT_OBJECT, + ACPI_ADR_SPACE_SYSTEM_IO, ACPI_DEFAULT_HANDLER, NULL, NULL); + if (ACPI_FAILURE(status)) { + ERROR("Could not initialise SystemIO handler: %s\n", + AcpiFormatException(status)); + goto err; + } + + status = AcpiInstallAddressSpaceHandler(ACPI_ROOT_OBJECT, + ACPI_ADR_SPACE_PCI_CONFIG, ACPI_DEFAULT_HANDLER, NULL, NULL); + if (ACPI_FAILURE(status)) { + ERROR("Could not initialise PciConfig handler: %s\n", + AcpiFormatException(status)); + goto err; + } flags = acpiAvoidFullInit ? ACPI_NO_DEVICE_INIT | ACPI_NO_OBJECT_INIT : @@ -155,14 +180,14 @@ acpi_std_ops(int32 op,...) // well but specs don't define ACPI_NO_DEVICE_INIT // and ACPI_NO_OBJECT_INIT here. status = AcpiEnableSubsystem(ACPI_FULL_INITIALIZATION); - if (status != AE_OK) { + if (ACPI_FAILURE(status)) { ERROR("AcpiEnableSubsystem failed (%s)\n", AcpiFormatException(status)); goto err; } status = AcpiInitializeObjects(flags); - if (status != AE_OK) { + if (ACPI_FAILURE(status)) { ERROR("AcpiInitializeObjects failed (%s)\n", AcpiFormatException(status)); goto err;