xref: /openbmc/qemu/qapi/acpi.json (revision e6485190f77e6166cde8dc799e4e52e607b6f61d)
127c9188fSPhilippe Mathieu-Daudé# -*- Mode: Python -*-
227c9188fSPhilippe Mathieu-Daudé# vim: filetype=python
327c9188fSPhilippe Mathieu-Daudé#
427c9188fSPhilippe Mathieu-Daudé# This work is licensed under the terms of the GNU GPL, version 2 or later.
527c9188fSPhilippe Mathieu-Daudé# See the COPYING file in the top-level directory.
627c9188fSPhilippe Mathieu-Daudé# SPDX-License-Identifier: GPL-2.0-or-later
727c9188fSPhilippe Mathieu-Daudé
827c9188fSPhilippe Mathieu-Daudé##
927c9188fSPhilippe Mathieu-Daudé# = ACPI
1027c9188fSPhilippe Mathieu-Daudé##
1127c9188fSPhilippe Mathieu-Daudé
1227c9188fSPhilippe Mathieu-Daudé##
1327c9188fSPhilippe Mathieu-Daudé# @AcpiTableOptions:
1427c9188fSPhilippe Mathieu-Daudé#
1527c9188fSPhilippe Mathieu-Daudé# Specify an ACPI table on the command line to load.
1627c9188fSPhilippe Mathieu-Daudé#
17a937b6aaSMarkus Armbruster# At most one of @file and @data can be specified.  The list of files
18a937b6aaSMarkus Armbruster# specified by any one of them is loaded and concatenated in order.
19a937b6aaSMarkus Armbruster# If both are omitted, @data is implied.
2027c9188fSPhilippe Mathieu-Daudé#
21a937b6aaSMarkus Armbruster# Other fields / optargs can be used to override fields of the generic
22a937b6aaSMarkus Armbruster# ACPI table header; refer to the ACPI specification 5.0, section
23a937b6aaSMarkus Armbruster# 5.2.6 System Description Table Header.  If a header field is not
24a937b6aaSMarkus Armbruster# overridden, then the corresponding value from the concatenated blob
25a937b6aaSMarkus Armbruster# is used (in case of @file), or it is filled in with a hard-coded
26a937b6aaSMarkus Armbruster# value (in case of @data).
2727c9188fSPhilippe Mathieu-Daudé#
28a937b6aaSMarkus Armbruster# String fields are copied into the matching ACPI member from lowest
29a937b6aaSMarkus Armbruster# address upwards, and silently truncated / NUL-padded to length.
3027c9188fSPhilippe Mathieu-Daudé#
3127c9188fSPhilippe Mathieu-Daudé# @sig: table signature / identifier (4 bytes)
3227c9188fSPhilippe Mathieu-Daudé#
3327c9188fSPhilippe Mathieu-Daudé# @rev: table revision number (dependent on signature, 1 byte)
3427c9188fSPhilippe Mathieu-Daudé#
3527c9188fSPhilippe Mathieu-Daudé# @oem_id: OEM identifier (6 bytes)
3627c9188fSPhilippe Mathieu-Daudé#
3727c9188fSPhilippe Mathieu-Daudé# @oem_table_id: OEM table identifier (8 bytes)
3827c9188fSPhilippe Mathieu-Daudé#
3927c9188fSPhilippe Mathieu-Daudé# @oem_rev: OEM-supplied revision number (4 bytes)
4027c9188fSPhilippe Mathieu-Daudé#
4127c9188fSPhilippe Mathieu-Daudé# @asl_compiler_id: identifier of the utility that created the table
4227c9188fSPhilippe Mathieu-Daudé#     (4 bytes)
4327c9188fSPhilippe Mathieu-Daudé#
4427c9188fSPhilippe Mathieu-Daudé# @asl_compiler_rev: revision number of the utility that created the
4527c9188fSPhilippe Mathieu-Daudé#     table (4 bytes)
4627c9188fSPhilippe Mathieu-Daudé#
47a937b6aaSMarkus Armbruster# @file: colon (:) separated list of pathnames to load and concatenate
48a937b6aaSMarkus Armbruster#     as table data.  The resultant binary blob is expected to have an
49a937b6aaSMarkus Armbruster#     ACPI table header.  At least one file is required.  This field
5027c9188fSPhilippe Mathieu-Daudé#     excludes @data.
5127c9188fSPhilippe Mathieu-Daudé#
52a937b6aaSMarkus Armbruster# @data: colon (:) separated list of pathnames to load and concatenate
53a937b6aaSMarkus Armbruster#     as table data.  The resultant binary blob must not have an ACPI
54a937b6aaSMarkus Armbruster#     table header.  At least one file is required.  This field
55a937b6aaSMarkus Armbruster#     excludes @file.
5627c9188fSPhilippe Mathieu-Daudé#
5727c9188fSPhilippe Mathieu-Daudé# Since: 1.5
5827c9188fSPhilippe Mathieu-Daudé##
5927c9188fSPhilippe Mathieu-Daudé{ 'struct': 'AcpiTableOptions',
6027c9188fSPhilippe Mathieu-Daudé  'data': {
6127c9188fSPhilippe Mathieu-Daudé    '*sig':               'str',
6227c9188fSPhilippe Mathieu-Daudé    '*rev':               'uint8',
6327c9188fSPhilippe Mathieu-Daudé    '*oem_id':            'str',
6427c9188fSPhilippe Mathieu-Daudé    '*oem_table_id':      'str',
6527c9188fSPhilippe Mathieu-Daudé    '*oem_rev':           'uint32',
6627c9188fSPhilippe Mathieu-Daudé    '*asl_compiler_id':   'str',
6727c9188fSPhilippe Mathieu-Daudé    '*asl_compiler_rev':  'uint32',
6827c9188fSPhilippe Mathieu-Daudé    '*file':              'str',
6927c9188fSPhilippe Mathieu-Daudé    '*data':              'str' }}
7027c9188fSPhilippe Mathieu-Daudé
7127c9188fSPhilippe Mathieu-Daudé##
7227c9188fSPhilippe Mathieu-Daudé# @ACPISlotType:
7327c9188fSPhilippe Mathieu-Daudé#
7427c9188fSPhilippe Mathieu-Daudé# @DIMM: memory slot
75a937b6aaSMarkus Armbruster#
7627c9188fSPhilippe Mathieu-Daudé# @CPU: logical CPU slot (since 2.7)
7727c9188fSPhilippe Mathieu-Daudé##
7827c9188fSPhilippe Mathieu-Daudé{ 'enum': 'ACPISlotType', 'data': [ 'DIMM', 'CPU' ] }
7927c9188fSPhilippe Mathieu-Daudé
8027c9188fSPhilippe Mathieu-Daudé##
8127c9188fSPhilippe Mathieu-Daudé# @ACPIOSTInfo:
8227c9188fSPhilippe Mathieu-Daudé#
83a937b6aaSMarkus Armbruster# OSPM Status Indication for a device For description of possible
84a937b6aaSMarkus Armbruster# values of @source and @status fields see "_OST (OSPM Status
85a937b6aaSMarkus Armbruster# Indication)" chapter of ACPI5.0 spec.
8627c9188fSPhilippe Mathieu-Daudé#
8727c9188fSPhilippe Mathieu-Daudé# @device: device ID associated with slot
8827c9188fSPhilippe Mathieu-Daudé#
8927c9188fSPhilippe Mathieu-Daudé# @slot: slot ID, unique per slot of a given @slot-type
9027c9188fSPhilippe Mathieu-Daudé#
9127c9188fSPhilippe Mathieu-Daudé# @slot-type: type of the slot
9227c9188fSPhilippe Mathieu-Daudé#
9327c9188fSPhilippe Mathieu-Daudé# @source: an integer containing the source event
9427c9188fSPhilippe Mathieu-Daudé#
9527c9188fSPhilippe Mathieu-Daudé# @status: an integer containing the status code
9627c9188fSPhilippe Mathieu-Daudé#
9727c9188fSPhilippe Mathieu-Daudé# Since: 2.1
9827c9188fSPhilippe Mathieu-Daudé##
9927c9188fSPhilippe Mathieu-Daudé{ 'struct': 'ACPIOSTInfo',
10027c9188fSPhilippe Mathieu-Daudé  'data'  : { '*device': 'str',
10127c9188fSPhilippe Mathieu-Daudé              'slot': 'str',
10227c9188fSPhilippe Mathieu-Daudé              'slot-type': 'ACPISlotType',
10327c9188fSPhilippe Mathieu-Daudé              'source': 'int',
10427c9188fSPhilippe Mathieu-Daudé              'status': 'int' } }
10527c9188fSPhilippe Mathieu-Daudé
10627c9188fSPhilippe Mathieu-Daudé##
10727c9188fSPhilippe Mathieu-Daudé# @query-acpi-ospm-status:
10827c9188fSPhilippe Mathieu-Daudé#
10927c9188fSPhilippe Mathieu-Daudé# Return a list of ACPIOSTInfo for devices that support status
11027c9188fSPhilippe Mathieu-Daudé# reporting via ACPI _OST method.
11127c9188fSPhilippe Mathieu-Daudé#
11227c9188fSPhilippe Mathieu-Daudé# Since: 2.1
11327c9188fSPhilippe Mathieu-Daudé#
114*14b48aaaSJohn Snow# .. qmp-example::
11527c9188fSPhilippe Mathieu-Daudé#
11627c9188fSPhilippe Mathieu-Daudé#     -> { "execute": "query-acpi-ospm-status" }
11727c9188fSPhilippe Mathieu-Daudé#     <- { "return": [ { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0},
11827c9188fSPhilippe Mathieu-Daudé#                      { "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0},
11927c9188fSPhilippe Mathieu-Daudé#                      { "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0},
12027c9188fSPhilippe Mathieu-Daudé#                      { "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0}
12127c9188fSPhilippe Mathieu-Daudé#        ]}
12227c9188fSPhilippe Mathieu-Daudé##
12327c9188fSPhilippe Mathieu-Daudé{ 'command': 'query-acpi-ospm-status', 'returns': ['ACPIOSTInfo'] }
12427c9188fSPhilippe Mathieu-Daudé
12527c9188fSPhilippe Mathieu-Daudé##
12627c9188fSPhilippe Mathieu-Daudé# @ACPI_DEVICE_OST:
12727c9188fSPhilippe Mathieu-Daudé#
12827c9188fSPhilippe Mathieu-Daudé# Emitted when guest executes ACPI _OST method.
12927c9188fSPhilippe Mathieu-Daudé#
13027c9188fSPhilippe Mathieu-Daudé# @info: OSPM Status Indication
13127c9188fSPhilippe Mathieu-Daudé#
13227c9188fSPhilippe Mathieu-Daudé# Since: 2.1
13327c9188fSPhilippe Mathieu-Daudé#
134*14b48aaaSJohn Snow# .. qmp-example::
13527c9188fSPhilippe Mathieu-Daudé#
13627c9188fSPhilippe Mathieu-Daudé#     <- { "event": "ACPI_DEVICE_OST",
13769bd6cb8SVictor Toso#          "data": { "info": { "device": "d1", "slot": "0",
13869bd6cb8SVictor Toso#                              "slot-type": "DIMM", "source": 1, "status": 0 } },
13969bd6cb8SVictor Toso#          "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
14027c9188fSPhilippe Mathieu-Daudé##
14127c9188fSPhilippe Mathieu-Daudé{ 'event': 'ACPI_DEVICE_OST',
14227c9188fSPhilippe Mathieu-Daudé     'data': { 'info': 'ACPIOSTInfo' } }
143