Author: tqh Date: 2011-05-05 19:29:37 +0200 (Thu, 05 May 2011) New Revision: 41320 Changeset: https://dev.haiku-os.org/changeset/41320 Modified: haiku/trunk/headers/os/drivers/ACPI.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_module.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h Log: This opens up so many possiblities. * ACPI module now has a get_possible_resources function. Modified: haiku/trunk/headers/os/drivers/ACPI.h =================================================================== --- haiku/trunk/headers/os/drivers/ACPI.h 2011-05-04 23:12:25 UTC (rev 41319) +++ haiku/trunk/headers/os/drivers/ACPI.h 2011-05-05 17:29:37 UTC (rev 41320) @@ -239,6 +239,8 @@ acpi_data *retBuffer); status_t (*get_current_resources)(acpi_handle busDeviceHandle, acpi_data *retBuffer); + status_t (*get_possible_resources)(acpi_handle busDeviceHandle, + acpi_data *retBuffer); /* Power state setting */ Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c 2011-05-04 23:12:25 UTC (rev 41319) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c 2011-05-05 17:29:37 UTC (rev 41320) @@ -84,7 +84,7 @@ while (true) { status = AcpiGetTable (ACPI_SIG_MADT, ++madtCount, &madt); if (status != AE_OK) break; -/* +/* dprintf("acpi: MADT TABLE:\n"); AcpiDmDumpDataTable( madt ); entry = madt + 44; @@ -212,7 +212,7 @@ parameter.Count = 1; parameter.Pointer = &arg; - + AcpiEvaluateObject(NULL, "\\_PIC", ¶meter, NULL); flags = acpiAvoidFullInit ? @@ -618,6 +618,14 @@ status_t +get_possible_resources(acpi_handle busDeviceHandle, acpi_data *retBuffer) +{ + return AcpiGetPossibleResources(busDeviceHandle, (ACPI_BUFFER*)retBuffer) + == AE_OK ? B_OK : B_ERROR; +} + + +status_t prepare_sleep_state(uint8 state, void (*wakeFunc)(void), size_t size) { ACPI_STATUS acpiStatus; @@ -732,6 +740,7 @@ evaluate_method, get_irq_routing_table, get_current_resources, + get_possible_resources, prepare_sleep_state, enter_sleep_state, reboot Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_module.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_module.c 2011-05-04 23:12:25 UTC (rev 41319) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_module.c 2011-05-05 17:29:37 UTC (rev 41320) @@ -216,6 +216,7 @@ evaluate_method, get_irq_routing_table, get_current_resources, + get_possible_resources, prepare_sleep_state, enter_sleep_state, reboot Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h 2011-05-04 23:12:25 UTC (rev 41319) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h 2011-05-05 17:29:37 UTC (rev 41320) @@ -123,6 +123,8 @@ acpi_data *retBuffer); status_t (*get_current_resources)(acpi_handle busDeviceHandle, acpi_data *retBuffer); + status_t (*get_possible_resources)(acpi_handle busDeviceHandle, + acpi_data *retBuffer); /* Power state setting */ @@ -196,6 +198,8 @@ acpi_data* returnValue); status_t get_current_resources(acpi_handle busDeviceHandle, acpi_data* returnValue); +status_t get_possible_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);