xref: /openbmc/qemu/hw/acpi/acpi-qmp-cmds.c (revision 5bd26d78)
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 Armbruster ACPIOSTInfoList *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