1*5bd26d78SMarkus Armbruster /* 2*5bd26d78SMarkus Armbruster * QMP commands related to ACPI 3*5bd26d78SMarkus Armbruster * 4*5bd26d78SMarkus Armbruster * This work is licensed under the terms of the GNU GPL, version 2 or 5*5bd26d78SMarkus Armbruster * (at your option) any later version. 6*5bd26d78SMarkus Armbruster */ 7*5bd26d78SMarkus Armbruster 8*5bd26d78SMarkus Armbruster #include "qemu/osdep.h" 9*5bd26d78SMarkus Armbruster #include "hw/acpi/acpi_dev_interface.h" 10*5bd26d78SMarkus Armbruster #include "qapi/error.h" 11*5bd26d78SMarkus Armbruster #include "qapi/qapi-commands-acpi.h" 12*5bd26d78SMarkus Armbruster qmp_query_acpi_ospm_status(Error ** errp)13*5bd26d78SMarkus ArmbrusterACPIOSTInfoList *qmp_query_acpi_ospm_status(Error **errp) 14*5bd26d78SMarkus Armbruster { 15*5bd26d78SMarkus Armbruster bool ambig; 16*5bd26d78SMarkus Armbruster ACPIOSTInfoList *head = NULL; 17*5bd26d78SMarkus Armbruster ACPIOSTInfoList **prev = &head; 18*5bd26d78SMarkus Armbruster Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF, &ambig); 19*5bd26d78SMarkus Armbruster 20*5bd26d78SMarkus Armbruster if (obj) { 21*5bd26d78SMarkus Armbruster AcpiDeviceIfClass *adevc = ACPI_DEVICE_IF_GET_CLASS(obj); 22*5bd26d78SMarkus Armbruster AcpiDeviceIf *adev = ACPI_DEVICE_IF(obj); 23*5bd26d78SMarkus Armbruster 24*5bd26d78SMarkus Armbruster adevc->ospm_status(adev, &prev); 25*5bd26d78SMarkus Armbruster } else { 26*5bd26d78SMarkus Armbruster error_setg(errp, "command is not supported, missing ACPI device"); 27*5bd26d78SMarkus Armbruster } 28*5bd26d78SMarkus Armbruster 29*5bd26d78SMarkus Armbruster return head; 30*5bd26d78SMarkus Armbruster } 31