# -*- Mode: Python -*-
# vim: filetype=python
#

##
# = TPM (trusted platform module) devices
##

##
# @TpmModel:
#
# An enumeration of TPM models
#
# @tpm-tis: TPM TIS model
#
# @tpm-crb: TPM CRB model (since 2.12)
#
# @tpm-spapr: TPM SPAPR model (since 5.0)
#
# Since: 1.5
##
{ 'enum': 'TpmModel', 'data': [ 'tpm-tis', 'tpm-crb', 'tpm-spapr' ],
  'if': 'CONFIG_TPM' }

##
# @query-tpm-models:
#
# Return a list of supported TPM models
#
# Returns: a list of TpmModel
#
# Since: 1.5
#
# .. qmp-example::
#
#     -> { "execute": "query-tpm-models" }
#     <- { "return": [ "tpm-tis", "tpm-crb", "tpm-spapr" ] }
##
{ 'command': 'query-tpm-models', 'returns': ['TpmModel'],
  'if': 'CONFIG_TPM' }

##
# @TpmType:
#
# An enumeration of TPM types
#
# @passthrough: TPM passthrough type
#
# @emulator: Software Emulator TPM type (since 2.11)
#
# Since: 1.5
##
{ 'enum': 'TpmType', 'data': [ 'passthrough', 'emulator' ],
  'if': 'CONFIG_TPM' }

##
# @query-tpm-types:
#
# Return a list of supported TPM types
#
# Returns: a list of TpmType
#
# Since: 1.5
#
# .. qmp-example::
#
#     -> { "execute": "query-tpm-types" }
#     <- { "return": [ "passthrough", "emulator" ] }
##
{ 'command': 'query-tpm-types', 'returns': ['TpmType'],
  'if': 'CONFIG_TPM' }

##
# @TPMPassthroughOptions:
#
# Information about the TPM passthrough type
#
# @path: string describing the path used for accessing the TPM device
#
# @cancel-path: string showing the TPM's sysfs cancel file for
#     cancellation of TPM commands while they are executing
#
# Since: 1.5
##
{ 'struct': 'TPMPassthroughOptions',
  'data': { '*path': 'str',
            '*cancel-path': 'str' },
  'if': 'CONFIG_TPM' }

##
# @TPMEmulatorOptions:
#
# Information about the TPM emulator type
#
# @chardev: Name of a unix socket chardev
#
# Since: 2.11
##
{ 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' },
  'if': 'CONFIG_TPM' }

##
# @TPMPassthroughOptionsWrapper:
#
# @data: Information about the TPM passthrough type
#
# Since: 1.5
##
{ 'struct': 'TPMPassthroughOptionsWrapper',
  'data': { 'data': 'TPMPassthroughOptions' },
  'if': 'CONFIG_TPM' }

##
# @TPMEmulatorOptionsWrapper:
#
# @data: Information about the TPM emulator type
#
# Since: 2.11
##
{ 'struct': 'TPMEmulatorOptionsWrapper',
  'data': { 'data': 'TPMEmulatorOptions' },
  'if': 'CONFIG_TPM' }

##
# @TpmTypeOptions:
#
# A union referencing different TPM backend types' configuration
# options
#
# @type:
#     - 'passthrough' The configuration options for the TPM
#       passthrough type
#     - 'emulator' The configuration options for TPM emulator backend
#       type
#
# Since: 1.5
##
{ 'union': 'TpmTypeOptions',
  'base': { 'type': 'TpmType' },
  'discriminator': 'type',
  'data': { 'passthrough' : 'TPMPassthroughOptionsWrapper',
            'emulator': 'TPMEmulatorOptionsWrapper' },
  'if': 'CONFIG_TPM' }

##
# @TPMInfo:
#
# Information about the TPM
#
# @id: The Id of the TPM
#
# @model: The TPM frontend model
#
# @options: The TPM (backend) type configuration options
#
# Since: 1.5
##
{ 'struct': 'TPMInfo',
  'data': {'id': 'str',
           'model': 'TpmModel',
           'options': 'TpmTypeOptions' },
  'if': 'CONFIG_TPM' }

##
# @query-tpm:
#
# Return information about the TPM device
#
# Since: 1.5
#
# .. qmp-example::
#
#     -> { "execute": "query-tpm" }
#     <- { "return":
#          [
#            { "model": "tpm-tis",
#              "options":
#                { "type": "passthrough",
#                  "data":
#                    { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
#                      "path": "/dev/tpm0"
#                    }
#                },
#              "id": "tpm0"
#            }
#          ]
#        }
##
{ 'command': 'query-tpm', 'returns': ['TPMInfo'],
  'if': 'CONFIG_TPM' }
