# -*- 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
#
# 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
#
# 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:
#
# Since: 1.5
##
{ 'struct': 'TPMPassthroughOptionsWrapper',
  'data': { 'data': 'TPMPassthroughOptions' },
  'if': 'CONFIG_TPM' }

##
# @TPMEmulatorOptionsWrapper:
#
# 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
#
# Returns: @TPMInfo on success
#
# Since: 1.5
#
# 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' }
