Add qemu 2.4.0
[kvmfornfv.git] / qemu / hw / tpm / tpm_int.h
1 /*
2  * TPM configuration
3  *
4  * Copyright (C) 2011-2013 IBM Corporation
5  *
6  * Authors:
7  *  Stefan Berger    <stefanb@us.ibm.com>
8  *
9  * This work is licensed under the terms of the GNU GPL, version 2 or later.
10  * See the COPYING file in the top-level directory.
11  */
12 #ifndef TPM_TPM_INT_H
13 #define TPM_TPM_INT_H
14
15 #include "exec/memory.h"
16 #include "tpm_tis.h"
17
18 /* overall state of the TPM interface */
19 struct TPMState {
20     ISADevice busdev;
21     MemoryRegion mmio;
22
23     union {
24         TPMTISEmuState tis;
25     } s;
26
27     uint8_t     locty_number;
28     TPMLocality *locty_data;
29
30     char *backend;
31     TPMBackend *be_driver;
32     TPMVersion be_tpm_version;
33 };
34
35 #define TPM(obj) OBJECT_CHECK(TPMState, (obj), TYPE_TPM_TIS)
36
37 #define TPM_STANDARD_CMDLINE_OPTS \
38     { \
39         .name = "type", \
40         .type = QEMU_OPT_STRING, \
41         .help = "Type of TPM backend", \
42     }
43
44 struct tpm_req_hdr {
45     uint16_t tag;
46     uint32_t len;
47     uint32_t ordinal;
48 } QEMU_PACKED;
49
50 struct tpm_resp_hdr {
51     uint16_t tag;
52     uint32_t len;
53     uint32_t errcode;
54 } QEMU_PACKED;
55
56 #define TPM_TAG_RQU_COMMAND       0xc1
57 #define TPM_TAG_RQU_AUTH1_COMMAND 0xc2
58 #define TPM_TAG_RQU_AUTH2_COMMAND 0xc3
59
60 #define TPM_TAG_RSP_COMMAND       0xc4
61 #define TPM_TAG_RSP_AUTH1_COMMAND 0xc5
62 #define TPM_TAG_RSP_AUTH2_COMMAND 0xc6
63
64 #define TPM_FAIL                  9
65
66 #define TPM_ORD_ContinueSelfTest  0x53
67 #define TPM_ORD_GetTicks          0xf1
68
69
70 /* TPM2 defines */
71 #define TPM2_ST_NO_SESSIONS       0x8001
72
73 #define TPM2_CC_ReadClock         0x00000181
74
75 #endif /* TPM_TPM_INT_H */