# -*- Mode: Python -*-
# vim: filetype=python
#
# SPDX-License-Identifier: GPL-2.0-or-later

##
# @GICCapability:
#
# The struct describes capability for a specific GIC (Generic
# Interrupt Controller) version.  These bits are not only decided by
# QEMU/KVM software version, but also decided by the hardware that the
# program is running upon.
#
# @version: version of GIC to be described.  Currently, only 2 and 3
#     are supported.
#
# @emulated: whether current QEMU/hardware supports emulated GIC
#     device in user space.
#
# @kernel: whether current QEMU/hardware supports hardware accelerated
#     GIC device in kernel.
#
# Since: 2.6
##
{ 'struct': 'GICCapability',
  'data': { 'version': 'int',
            'emulated': 'bool',
            'kernel': 'bool' } }

##
# @query-gic-capabilities:
#
# It will return a list of `GICCapability` objects that describe its
# capability bits.
#
# On non-ARM targets this command will report an error as the GIC
# technology is not applicable.
#
# Since: 2.6
#
# .. qmp-example::
#
#     -> { "execute": "query-gic-capabilities" }
#     <- { "return": [{ "version": 2, "emulated": true, "kernel": false },
#                     { "version": 3, "emulated": false, "kernel": true } ] }
##
{ 'command': 'query-gic-capabilities', 'returns': ['GICCapability'] }

##
# @SsidSizeMode:
#
# SMMUv3 SubstreamID size configuration mode.
#
# @auto: derive from host IOMMU capabilities
#
# Values 0-20: SSIDSIZE value in bits.  0 disables SubstreamID.
#
# Since: 11.0
##
{ 'enum': 'SsidSizeMode',
  'data': [ 'auto', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
            '10', '11', '12', '13', '14', '15', '16', '17', '18',
            '19', '20' ] } # order matters, see ssidsize_mode_to_value()

##
# @OasMode:
#
# SMMUv3 Output Address Size configuration mode.
#
# @auto: derive from host IOMMU capabilities
#
# @32: 32-bit output address size
#
# @36: 36-bit output address size
#
# @40: 40-bit output address size
#
# @42: 42-bit output address size
#
# @44: 44-bit output address size
#
# @48: 48-bit output address size
#
# @52: 52-bit output address size
#
# @56: 56-bit output address size
#
# Since: 11.0
##
{ 'enum': 'OasMode',
  'data': [ 'auto', '32', '36', '40', '42', '44', '48', '52', '56' ] }
