Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
[qemu.git] / qapi / tpm.json
1 # -*- Mode: Python -*-
2 # vim: filetype=python
3 #
4
5 ##
6 # = TPM (trusted platform module) devices
7 ##
8
9 ##
10 # @TpmModel:
11 #
12 # An enumeration of TPM models
13 #
14 # @tpm-tis: TPM TIS model
15 # @tpm-crb: TPM CRB model (since 2.12)
16 # @tpm-spapr: TPM SPAPR model (since 5.0)
17 #
18 # Since: 1.5
19 ##
20 { 'enum': 'TpmModel', 'data': [ 'tpm-tis', 'tpm-crb', 'tpm-spapr' ],
21   'if': 'defined(CONFIG_TPM)' }
22
23 ##
24 # @query-tpm-models:
25 #
26 # Return a list of supported TPM models
27 #
28 # Returns: a list of TpmModel
29 #
30 # Since: 1.5
31 #
32 # Example:
33 #
34 # -> { "execute": "query-tpm-models" }
35 # <- { "return": [ "tpm-tis", "tpm-crb", "tpm-spapr" ] }
36 #
37 ##
38 { 'command': 'query-tpm-models', 'returns': ['TpmModel'],
39   'if': 'defined(CONFIG_TPM)' }
40
41 ##
42 # @TpmType:
43 #
44 # An enumeration of TPM types
45 #
46 # @passthrough: TPM passthrough type
47 # @emulator: Software Emulator TPM type
48 #            Since: 2.11
49 #
50 # Since: 1.5
51 ##
52 { 'enum': 'TpmType', 'data': [ 'passthrough', 'emulator' ],
53   'if': 'defined(CONFIG_TPM)' }
54
55 ##
56 # @query-tpm-types:
57 #
58 # Return a list of supported TPM types
59 #
60 # Returns: a list of TpmType
61 #
62 # Since: 1.5
63 #
64 # Example:
65 #
66 # -> { "execute": "query-tpm-types" }
67 # <- { "return": [ "passthrough", "emulator" ] }
68 #
69 ##
70 { 'command': 'query-tpm-types', 'returns': ['TpmType'],
71   'if': 'defined(CONFIG_TPM)' }
72
73 ##
74 # @TPMPassthroughOptions:
75 #
76 # Information about the TPM passthrough type
77 #
78 # @path: string describing the path used for accessing the TPM device
79 #
80 # @cancel-path: string showing the TPM's sysfs cancel file
81 #               for cancellation of TPM commands while they are executing
82 #
83 # Since: 1.5
84 ##
85 { 'struct': 'TPMPassthroughOptions',
86   'data': { '*path': 'str',
87             '*cancel-path': 'str' },
88   'if': 'defined(CONFIG_TPM)' }
89
90 ##
91 # @TPMEmulatorOptions:
92 #
93 # Information about the TPM emulator type
94 #
95 # @chardev: Name of a unix socket chardev
96 #
97 # Since: 2.11
98 ##
99 { 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' },
100   'if': 'defined(CONFIG_TPM)' }
101
102 ##
103 # @TpmTypeOptions:
104 #
105 # A union referencing different TPM backend types' configuration options
106 #
107 # @type: - 'passthrough' The configuration options for the TPM passthrough type
108 #        - 'emulator' The configuration options for TPM emulator backend type
109 #
110 # Since: 1.5
111 ##
112 { 'union': 'TpmTypeOptions',
113    'data': { 'passthrough' : 'TPMPassthroughOptions',
114              'emulator': 'TPMEmulatorOptions' },
115   'if': 'defined(CONFIG_TPM)' }
116
117 ##
118 # @TPMInfo:
119 #
120 # Information about the TPM
121 #
122 # @id: The Id of the TPM
123 #
124 # @model: The TPM frontend model
125 #
126 # @options: The TPM (backend) type configuration options
127 #
128 # Since: 1.5
129 ##
130 { 'struct': 'TPMInfo',
131   'data': {'id': 'str',
132            'model': 'TpmModel',
133            'options': 'TpmTypeOptions' },
134   'if': 'defined(CONFIG_TPM)' }
135
136 ##
137 # @query-tpm:
138 #
139 # Return information about the TPM device
140 #
141 # Returns: @TPMInfo on success
142 #
143 # Since: 1.5
144 #
145 # Example:
146 #
147 # -> { "execute": "query-tpm" }
148 # <- { "return":
149 #      [
150 #        { "model": "tpm-tis",
151 #          "options":
152 #            { "type": "passthrough",
153 #              "data":
154 #                { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
155 #                  "path": "/dev/tpm0"
156 #                }
157 #            },
158 #          "id": "tpm0"
159 #        }
160 #      ]
161 #    }
162 #
163 ##
164 { 'command': 'query-tpm', 'returns': ['TPMInfo'],
165   'if': 'defined(CONFIG_TPM)' }