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 */ 19struct 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 44struct tpm_req_hdr { 45 uint16_t tag; 46 uint32_t len; 47 uint32_t ordinal; 48} QEMU_PACKED; 49 50struct 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 */ 76