From d7b1a83fc3e320c5dc1d26c48dab5fa9f0ad2028 Mon Sep 17 00:00:00 2001 From: Fredrik Holmqvist Date: Fri, 20 Aug 2010 19:23:33 +0000 Subject: [PATCH] Add get_current_resources call to ACPI module which allows us to read out a device current resources. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38288 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/os/drivers/ACPI.h | 2 ++ src/add-ons/kernel/bus_managers/acpi/acpi_busman.c | 9 +++++++++ src/add-ons/kernel/bus_managers/acpi/acpi_module.c | 1 + src/add-ons/kernel/bus_managers/acpi/acpi_priv.h | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/headers/os/drivers/ACPI.h b/headers/os/drivers/ACPI.h index 73528b8035..374f683f00 100644 --- a/headers/os/drivers/ACPI.h +++ b/headers/os/drivers/ACPI.h @@ -229,6 +229,8 @@ struct acpi_module_info { status_t (*get_irq_routing_table)(acpi_handle busDeviceHandle, acpi_data *retBuffer); + status_t (*get_current_resources)(acpi_handle busDeviceHandle, + acpi_data *retBuffer); /* Power state setting */ 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 f6baa4eb7a..7633794fef 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c @@ -566,6 +566,14 @@ get_irq_routing_table(acpi_handle busDeviceHandle, acpi_data *retBuffer) } +status_t +get_current_resources(acpi_handle busDeviceHandle, acpi_data *retBuffer) +{ + return AcpiGetCurrentResources(busDeviceHandle, (ACPI_BUFFER*)retBuffer) + == AE_OK ? B_OK : B_ERROR; +} + + status_t prepare_sleep_state(uint8 state, void (*wakeFunc)(void), size_t size) { @@ -680,6 +688,7 @@ struct acpi_module_info gACPIModule = { evaluate_object, evaluate_method, get_irq_routing_table, + get_current_resources, prepare_sleep_state, enter_sleep_state, reboot diff --git a/src/add-ons/kernel/bus_managers/acpi/acpi_module.c b/src/add-ons/kernel/bus_managers/acpi/acpi_module.c index bc3bb947e2..5a43d0e71c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpi_module.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpi_module.c @@ -218,6 +218,7 @@ static struct acpi_root_info sACPIRootModule = { evaluate_object, evaluate_method, get_irq_routing_table, + get_current_resources, prepare_sleep_state, enter_sleep_state, reboot diff --git a/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h b/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h index 00cada3553..1c7f53f7a4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h @@ -122,6 +122,8 @@ typedef struct acpi_root_info { status_t (*get_irq_routing_table)(acpi_handle busDeviceHandle, acpi_data *retBuffer); + status_t (*get_current_resources)(acpi_handle busDeviceHandle, + acpi_data *retBuffer); /* Power state setting */ @@ -193,6 +195,8 @@ status_t evaluate_method(acpi_handle handle, const char* method, status_t get_irq_routing_table(acpi_handle busDeviceHandle, acpi_data* returnValue); +status_t get_current_resources(acpi_handle busDeviceHandle, + acpi_data* returnValue); status_t prepare_sleep_state(uint8 state, void (*wakeFunc)(void), size_t size); status_t enter_sleep_state(uint8 state);