diff --git a/src/hw/tpm_drivers.c b/src/hw/tpm_drivers.c
index 444eac3..b5cde00 100644
--- a/src/hw/tpm_drivers.c
+++ b/src/hw/tpm_drivers.c
@@ -8,11 +8,11 @@
 // This file may be distributed under the terms of the GNU LGPLv3 license.
 
 #include "config.h" // CONFIG_TPM_TIS_SHA1THRESHOLD
+#include "hw/tpm_drivers.h" // struct tpm_driver
+#include "std/tcg.h" // TCG_NO_RESPONSE
 #include "string.h" // memcpy
 #include "util.h" // msleep
 #include "x86.h" // readl
-#include "hw/tpm_drivers.h" // struct tpm_driver
-#include "tcgbios.h" // TCG_*
 
 static const u32 tis_default_timeouts[4] = {
     TIS_DEFAULT_TIMEOUT_A,
diff --git a/src/std/tcg.h b/src/std/tcg.h
new file mode 100644
index 0000000..ca90a10
--- /dev/null
+++ b/src/std/tcg.h
@@ -0,0 +1,346 @@
+#ifndef STD_TCG_H
+#define STD_TCG_H
+
+#include "types.h"
+
+/* Define for section 12.3 */
+#define TCG_PC_OK                       0x0
+#define TCG_PC_TPMERROR                 0x1
+#define TCG_PC_LOGOVERFLOW              0x2
+#define TCG_PC_UNSUPPORTED              0x3
+
+#define TPM_ALG_SHA                     0x4
+
+#define TCG_MAGIC                       0x41504354L
+#define TCG_VERSION_MAJOR               1
+#define TCG_VERSION_MINOR               2
+
+#define TPM_OK                          0x0
+#define TPM_RET_BASE                    0x1
+#define TCG_GENERAL_ERROR               (TPM_RET_BASE + 0x0)
+#define TCG_TPM_IS_LOCKED               (TPM_RET_BASE + 0x1)
+#define TCG_NO_RESPONSE                 (TPM_RET_BASE + 0x2)
+#define TCG_INVALID_RESPONSE            (TPM_RET_BASE + 0x3)
+#define TCG_INVALID_ACCESS_REQUEST      (TPM_RET_BASE + 0x4)
+#define TCG_FIRMWARE_ERROR              (TPM_RET_BASE + 0x5)
+#define TCG_INTEGRITY_CHECK_FAILED      (TPM_RET_BASE + 0x6)
+#define TCG_INVALID_DEVICE_ID           (TPM_RET_BASE + 0x7)
+#define TCG_INVALID_VENDOR_ID           (TPM_RET_BASE + 0x8)
+#define TCG_UNABLE_TO_OPEN              (TPM_RET_BASE + 0x9)
+#define TCG_UNABLE_TO_CLOSE             (TPM_RET_BASE + 0xa)
+#define TCG_RESPONSE_TIMEOUT            (TPM_RET_BASE + 0xb)
+#define TCG_INVALID_COM_REQUEST         (TPM_RET_BASE + 0xc)
+#define TCG_INVALID_ADR_REQUEST         (TPM_RET_BASE + 0xd)
+#define TCG_WRITE_BYTE_ERROR            (TPM_RET_BASE + 0xe)
+#define TCG_READ_BYTE_ERROR             (TPM_RET_BASE + 0xf)
+#define TCG_BLOCK_WRITE_TIMEOUT         (TPM_RET_BASE + 0x10)
+#define TCG_CHAR_WRITE_TIMEOUT          (TPM_RET_BASE + 0x11)
+#define TCG_CHAR_READ_TIMEOUT           (TPM_RET_BASE + 0x12)
+#define TCG_BLOCK_READ_TIMEOUT          (TPM_RET_BASE + 0x13)
+#define TCG_TRANSFER_ABORT              (TPM_RET_BASE + 0x14)
+#define TCG_INVALID_DRV_FUNCTION        (TPM_RET_BASE + 0x15)
+#define TCG_OUTPUT_BUFFER_TOO_SHORT     (TPM_RET_BASE + 0x16)
+#define TCG_FATAL_COM_ERROR             (TPM_RET_BASE + 0x17)
+#define TCG_INVALID_INPUT_PARA          (TPM_RET_BASE + 0x18)
+#define TCG_TCG_COMMAND_ERROR           (TPM_RET_BASE + 0x19)
+#define TCG_INTERFACE_SHUTDOWN          (TPM_RET_BASE + 0x20)
+//define TCG_PC_UNSUPPORTED             (TPM_RET_BASE + 0x21)
+#define TCG_PC_TPM_NOT_PRESENT          (TPM_RET_BASE + 0x22)
+#define TCG_PC_TPM_DEACTIVATED          (TPM_RET_BASE + 0x23)
+
+
+#define TPM_ORD_SelfTestFull             0x00000050
+#define TPM_ORD_ForceClear               0x0000005d
+#define TPM_ORD_GetCapability            0x00000065
+#define TPM_ORD_PhysicalEnable           0x0000006f
+#define TPM_ORD_PhysicalDisable          0x00000070
+#define TPM_ORD_SetOwnerInstall          0x00000071
+#define TPM_ORD_PhysicalSetDeactivated   0x00000072
+#define TPM_ORD_SetTempDeactivated       0x00000073
+#define TPM_ORD_Startup                  0x00000099
+#define TPM_ORD_PhysicalPresence         0x4000000a
+#define TPM_ORD_Extend                   0x00000014
+#define TPM_ORD_SHA1Start                0x000000a0
+#define TPM_ORD_SHA1Update               0x000000a1
+#define TPM_ORD_SHA1Complete             0x000000a2
+#define TSC_ORD_ResetEstablishmentBit    0x4000000b
+
+
+#define TPM_ST_CLEAR                     0x1
+#define TPM_ST_STATE                     0x2
+#define TPM_ST_DEACTIVATED               0x3
+
+
+/* TPM command error codes */
+#define TPM_INVALID_POSTINIT             0x26
+#define TPM_BAD_LOCALITY                 0x3d
+
+/* TPM command tags */
+#define TPM_TAG_RQU_CMD                  0x00c1
+
+/* interrupt identifiers (al register) */
+enum irq_ids {
+    TCG_StatusCheck = 0,
+    TCG_HashLogExtendEvent = 1,
+    TCG_PassThroughToTPM = 2,
+    TCG_ShutdownPreBootInterface = 3,
+    TCG_HashLogEvent = 4,
+    TCG_HashAll = 5,
+    TCG_TSS = 6,
+    TCG_CompactHashLogExtendEvent = 7,
+};
+
+/* event types: 10.4.1 / table 11 */
+#define EV_POST_CODE             1
+#define EV_SEPARATOR             4
+#define EV_ACTION                5
+#define EV_EVENT_TAG             6
+#define EV_COMPACT_HASH         12
+#define EV_IPL                  13
+#define EV_IPL_PARTITION_DATA   14
+
+#define SHA1_BUFSIZE                20
+
+/* Input and Output blocks for the TCG BIOS commands */
+
+struct hleei_short
+{
+    u16   ipblength;
+    u16   reserved;
+    const void *hashdataptr;
+    u32   hashdatalen;
+    u32   pcrindex;
+    const void *logdataptr;
+    u32   logdatalen;
+} PACKED;
+
+
+struct hleei_long
+{
+    u16   ipblength;
+    u16   reserved;
+    void *hashdataptr;
+    u32   hashdatalen;
+    u32   pcrindex;
+    u32   reserved2;
+    void *logdataptr;
+    u32   logdatalen;
+} PACKED;
+
+
+struct hleeo
+{
+    u16    opblength;
+    u16    reserved;
+    u32    eventnumber;
+    u8     digest[SHA1_BUFSIZE];
+} PACKED;
+
+
+struct pttti
+{
+    u16    ipblength;
+    u16    reserved;
+    u16    opblength;
+    u16    reserved2;
+    u8     tpmopin[0];
+} PACKED;
+
+
+struct pttto
+{
+    u16    opblength;
+    u16    reserved;
+    u8     tpmopout[0];
+};
+
+
+struct hlei
+{
+    u16    ipblength;
+    u16    reserved;
+    const void  *hashdataptr;
+    u32    hashdatalen;
+    u32    pcrindex;
+    u32    logeventtype;
+    const void  *logdataptr;
+    u32    logdatalen;
+} PACKED;
+
+
+struct hleo
+{
+    u16    opblength;
+    u16    reserved;
+    u32    eventnumber;
+} PACKED;
+
+
+struct hai
+{
+    u16    ipblength;
+    u16    reserved;
+    const void  *hashdataptr;
+    u32    hashdatalen;
+    u32    algorithmid;
+} PACKED;
+
+
+struct ti
+{
+    u16    ipblength;
+    u16    reserved;
+    u16    opblength;
+    u16    reserved2;
+    u8     tssoperandin[0];
+} PACKED;
+
+
+struct to
+{
+    u16    opblength;
+    u16    reserved;
+    u8     tssoperandout[0];
+} PACKED;
+
+
+struct pcpes
+{
+    u32    pcrindex;
+    u32    eventtype;
+    u8     digest[SHA1_BUFSIZE];
+    u32    eventdatasize;
+    u32    event;
+} PACKED;
+
+struct pcctes
+{
+    u32 eventid;
+    u32 eventdatasize;
+    u8  digest[SHA1_BUFSIZE];
+} PACKED;
+
+struct pcctes_romex
+{
+    u32 eventid;
+    u32 eventdatasize;
+    u16 reserved;
+    u16 pfa;
+    u8  digest[SHA1_BUFSIZE];
+} PACKED;
+
+
+#define TPM_REQ_HEADER \
+    u16    tag; \
+    u32    totlen; \
+    u32    ordinal;
+
+#define TPM_REQ_HEADER_SIZE  (sizeof(u16) + sizeof(u32) + sizeof(u32))
+
+#define TPM_RSP_HEADER \
+    u16    tag; \
+    u32    totlen; \
+    u32    errcode;
+
+#define TPM_RSP_HEADER_SIZE  (sizeof(u16) + sizeof(u32) + sizeof(u32))
+
+struct tpm_req_header {
+    TPM_REQ_HEADER;
+} PACKED;
+
+
+struct tpm_rsp_header {
+    TPM_RSP_HEADER;
+} PACKED;
+
+
+struct tpm_req_extend {
+    TPM_REQ_HEADER
+    u32    pcrindex;
+    u8     digest[SHA1_BUFSIZE];
+} PACKED;
+
+
+struct tpm_rsp_extend {
+    TPM_RSP_HEADER
+    u8     digest[SHA1_BUFSIZE];
+} PACKED;
+
+
+struct tpm_req_getcap_perm_flags {
+    TPM_REQ_HEADER
+    u32    capArea;
+    u32    subCapSize;
+    u32    subCap;
+} PACKED;
+
+
+struct tpm_permanent_flags {
+    u16    tag;
+    u8     flags[20];
+} PACKED;
+
+
+enum permFlagsIndex {
+    PERM_FLAG_IDX_DISABLE = 0,
+    PERM_FLAG_IDX_OWNERSHIP,
+    PERM_FLAG_IDX_DEACTIVATED,
+    PERM_FLAG_IDX_READPUBEK,
+    PERM_FLAG_IDX_DISABLEOWNERCLEAR,
+    PERM_FLAG_IDX_ALLOW_MAINTENANCE,
+    PERM_FLAG_IDX_PHYSICAL_PRESENCE_LIFETIME_LOCK,
+    PERM_FLAG_IDX_PHYSICAL_PRESENCE_HW_ENABLE,
+};
+
+
+struct tpm_res_getcap_perm_flags {
+    TPM_RSP_HEADER
+    u32    size;
+    struct tpm_permanent_flags perm_flags;
+} PACKED;
+
+
+struct tpm_res_getcap_ownerauth {
+    TPM_RSP_HEADER
+    u32    size;
+    u8     flag;
+} PACKED;
+
+
+struct tpm_res_getcap_timeouts {
+    TPM_RSP_HEADER
+    u32    size;
+    u32    timeouts[4];
+} PACKED;
+
+
+struct tpm_res_getcap_durations {
+    TPM_RSP_HEADER
+    u32    size;
+    u32    durations[3];
+} PACKED;
+
+
+struct tpm_res_sha1start {
+    TPM_RSP_HEADER
+    u32    max_num_bytes;
+} PACKED;
+
+
+struct tpm_res_sha1complete {
+    TPM_RSP_HEADER
+    u8     hash[20];
+} PACKED;
+
+struct pttti_extend {
+    struct pttti pttti;
+    struct tpm_req_extend req;
+} PACKED;
+
+
+struct pttto_extend {
+    struct pttto pttto;
+    struct tpm_rsp_extend rsp;
+} PACKED;
+
+#endif // tcg.h
diff --git a/src/tcgbios.c b/src/tcgbios.c
index c4e3b5e..9ae075a 100644
--- a/src/tcgbios.c
+++ b/src/tcgbios.c
@@ -9,22 +9,20 @@
 //
 // This file may be distributed under the terms of the GNU LGPLv3 license.
 
-
-#include "config.h"
-
-#include "types.h"
+#include "bregs.h" // struct bregs
 #include "byteorder.h" // cpu_to_*
-#include "hw/tpm_drivers.h" // tpm_drivers[]
+#include "config.h" // CONFIG_TCGBIOS
 #include "farptr.h" // MAKE_FLATPTR
+#include "fw/paravirt.h" // runningOnXen
+#include "hw/tpm_drivers.h" // tpm_drivers[]
+#include "output.h" // dprintf
+#include "sha1.h" // sha1
+#include "std/acpi.h"  // RSDP_SIGNATURE, rsdt_descriptor
+#include "std/smbios.h" // struct smbios_entry_point
+#include "std/tcg.h" // TCG_PC_LOGOVERFLOW
 #include "string.h" // checksum
 #include "tcgbios.h"// tpm_*, prototypes
 #include "util.h" // printf, get_keystroke
-#include "output.h" // dprintf
-#include "std/acpi.h"  // RSDP_SIGNATURE, rsdt_descriptor
-#include "bregs.h" // struct bregs
-#include "sha1.h" // sha1
-#include "fw/paravirt.h" // runningOnXen
-#include "std/smbios.h"
 
 static const u8 Startup_ST_CLEAR[] = { 0x00, TPM_ST_CLEAR };
 static const u8 Startup_ST_STATE[] = { 0x00, TPM_ST_STATE };
diff --git a/src/tcgbios.h b/src/tcgbios.h
index 2b0b65d..26a492c 100644
--- a/src/tcgbios.h
+++ b/src/tcgbios.h
@@ -3,365 +3,20 @@
 
 #include "types.h"
 
-/* Define for section 12.3 */
-#define TCG_PC_OK                       0x0
-#define TCG_PC_TPMERROR                 0x1
-#define TCG_PC_LOGOVERFLOW              0x2
-#define TCG_PC_UNSUPPORTED              0x3
-
-#define TPM_ALG_SHA                     0x4
-
-#define TCG_MAGIC                       0x41504354L
-#define TCG_VERSION_MAJOR               1
-#define TCG_VERSION_MINOR               2
-
-#define TPM_OK                          0x0
-#define TPM_RET_BASE                    0x1
-#define TCG_GENERAL_ERROR               (TPM_RET_BASE + 0x0)
-#define TCG_TPM_IS_LOCKED               (TPM_RET_BASE + 0x1)
-#define TCG_NO_RESPONSE                 (TPM_RET_BASE + 0x2)
-#define TCG_INVALID_RESPONSE            (TPM_RET_BASE + 0x3)
-#define TCG_INVALID_ACCESS_REQUEST      (TPM_RET_BASE + 0x4)
-#define TCG_FIRMWARE_ERROR              (TPM_RET_BASE + 0x5)
-#define TCG_INTEGRITY_CHECK_FAILED      (TPM_RET_BASE + 0x6)
-#define TCG_INVALID_DEVICE_ID           (TPM_RET_BASE + 0x7)
-#define TCG_INVALID_VENDOR_ID           (TPM_RET_BASE + 0x8)
-#define TCG_UNABLE_TO_OPEN              (TPM_RET_BASE + 0x9)
-#define TCG_UNABLE_TO_CLOSE             (TPM_RET_BASE + 0xa)
-#define TCG_RESPONSE_TIMEOUT            (TPM_RET_BASE + 0xb)
-#define TCG_INVALID_COM_REQUEST         (TPM_RET_BASE + 0xc)
-#define TCG_INVALID_ADR_REQUEST         (TPM_RET_BASE + 0xd)
-#define TCG_WRITE_BYTE_ERROR            (TPM_RET_BASE + 0xe)
-#define TCG_READ_BYTE_ERROR             (TPM_RET_BASE + 0xf)
-#define TCG_BLOCK_WRITE_TIMEOUT         (TPM_RET_BASE + 0x10)
-#define TCG_CHAR_WRITE_TIMEOUT          (TPM_RET_BASE + 0x11)
-#define TCG_CHAR_READ_TIMEOUT           (TPM_RET_BASE + 0x12)
-#define TCG_BLOCK_READ_TIMEOUT          (TPM_RET_BASE + 0x13)
-#define TCG_TRANSFER_ABORT              (TPM_RET_BASE + 0x14)
-#define TCG_INVALID_DRV_FUNCTION        (TPM_RET_BASE + 0x15)
-#define TCG_OUTPUT_BUFFER_TOO_SHORT     (TPM_RET_BASE + 0x16)
-#define TCG_FATAL_COM_ERROR             (TPM_RET_BASE + 0x17)
-#define TCG_INVALID_INPUT_PARA          (TPM_RET_BASE + 0x18)
-#define TCG_TCG_COMMAND_ERROR           (TPM_RET_BASE + 0x19)
-#define TCG_INTERFACE_SHUTDOWN          (TPM_RET_BASE + 0x20)
-//define TCG_PC_UNSUPPORTED             (TPM_RET_BASE + 0x21)
-#define TCG_PC_TPM_NOT_PRESENT          (TPM_RET_BASE + 0x22)
-#define TCG_PC_TPM_DEACTIVATED          (TPM_RET_BASE + 0x23)
-
-
-#define TPM_ORD_SelfTestFull             0x00000050
-#define TPM_ORD_ForceClear               0x0000005d
-#define TPM_ORD_GetCapability            0x00000065
-#define TPM_ORD_PhysicalEnable           0x0000006f
-#define TPM_ORD_PhysicalDisable          0x00000070
-#define TPM_ORD_SetOwnerInstall          0x00000071
-#define TPM_ORD_PhysicalSetDeactivated   0x00000072
-#define TPM_ORD_SetTempDeactivated       0x00000073
-#define TPM_ORD_Startup                  0x00000099
-#define TPM_ORD_PhysicalPresence         0x4000000a
-#define TPM_ORD_Extend                   0x00000014
-#define TPM_ORD_SHA1Start                0x000000a0
-#define TPM_ORD_SHA1Update               0x000000a1
-#define TPM_ORD_SHA1Complete             0x000000a2
-#define TSC_ORD_ResetEstablishmentBit    0x4000000b
-
-
-#define TPM_ST_CLEAR                     0x1
-#define TPM_ST_STATE                     0x2
-#define TPM_ST_DEACTIVATED               0x3
-
-
-/* TPM command error codes */
-#define TPM_INVALID_POSTINIT             0x26
-#define TPM_BAD_LOCALITY                 0x3d
-
-/* TPM command tags */
-#define TPM_TAG_RQU_CMD                  0x00c1
-
-/* interrupt identifiers (al register) */
-enum irq_ids {
-    TCG_StatusCheck = 0,
-    TCG_HashLogExtendEvent = 1,
-    TCG_PassThroughToTPM = 2,
-    TCG_ShutdownPreBootInterface = 3,
-    TCG_HashLogEvent = 4,
-    TCG_HashAll = 5,
-    TCG_TSS = 6,
-    TCG_CompactHashLogExtendEvent = 7,
-};
-
-/* event types: 10.4.1 / table 11 */
-#define EV_POST_CODE             1
-#define EV_SEPARATOR             4
-#define EV_ACTION                5
-#define EV_EVENT_TAG             6
-#define EV_COMPACT_HASH         12
-#define EV_IPL                  13
-#define EV_IPL_PARTITION_DATA   14
-
-
 #define STATUS_FLAG_SHUTDOWN        (1 << 0)
 
-#define SHA1_BUFSIZE                20
-
-
 struct iovec
 {
     size_t length;
     const void *data;
 };
 
-
-/* Input and Output blocks for the TCG BIOS commands */
-
-struct hleei_short
-{
-    u16   ipblength;
-    u16   reserved;
-    const void *hashdataptr;
-    u32   hashdatalen;
-    u32   pcrindex;
-    const void *logdataptr;
-    u32   logdatalen;
-} PACKED;
-
-
-struct hleei_long
-{
-    u16   ipblength;
-    u16   reserved;
-    void *hashdataptr;
-    u32   hashdatalen;
-    u32   pcrindex;
-    u32   reserved2;
-    void *logdataptr;
-    u32   logdatalen;
-} PACKED;
-
-
-struct hleeo
-{
-    u16    opblength;
-    u16    reserved;
-    u32    eventnumber;
-    u8     digest[SHA1_BUFSIZE];
-} PACKED;
-
-
-struct pttti
-{
-    u16    ipblength;
-    u16    reserved;
-    u16    opblength;
-    u16    reserved2;
-    u8     tpmopin[0];
-} PACKED;
-
-
-struct pttto
-{
-    u16    opblength;
-    u16    reserved;
-    u8     tpmopout[0];
-};
-
-
-struct hlei
-{
-    u16    ipblength;
-    u16    reserved;
-    const void  *hashdataptr;
-    u32    hashdatalen;
-    u32    pcrindex;
-    u32    logeventtype;
-    const void  *logdataptr;
-    u32    logdatalen;
-} PACKED;
-
-
-struct hleo
-{
-    u16    opblength;
-    u16    reserved;
-    u32    eventnumber;
-} PACKED;
-
-
-struct hai
-{
-    u16    ipblength;
-    u16    reserved;
-    const void  *hashdataptr;
-    u32    hashdatalen;
-    u32    algorithmid;
-} PACKED;
-
-
-struct ti
-{
-    u16    ipblength;
-    u16    reserved;
-    u16    opblength;
-    u16    reserved2;
-    u8     tssoperandin[0];
-} PACKED;
-
-
-struct to
-{
-    u16    opblength;
-    u16    reserved;
-    u8     tssoperandout[0];
-} PACKED;
-
-
-struct pcpes
-{
-    u32    pcrindex;
-    u32    eventtype;
-    u8     digest[SHA1_BUFSIZE];
-    u32    eventdatasize;
-    u32    event;
-} PACKED;
-
-struct pcctes
-{
-    u32 eventid;
-    u32 eventdatasize;
-    u8  digest[SHA1_BUFSIZE];
-} PACKED;
-
-struct pcctes_romex
-{
-    u32 eventid;
-    u32 eventdatasize;
-    u16 reserved;
-    u16 pfa;
-    u8  digest[SHA1_BUFSIZE];
-} PACKED;
-
-
-#define TPM_REQ_HEADER \
-    u16    tag; \
-    u32    totlen; \
-    u32    ordinal;
-
-#define TPM_REQ_HEADER_SIZE  (sizeof(u16) + sizeof(u32) + sizeof(u32))
-
-#define TPM_RSP_HEADER \
-    u16    tag; \
-    u32    totlen; \
-    u32    errcode;
-
-#define TPM_RSP_HEADER_SIZE  (sizeof(u16) + sizeof(u32) + sizeof(u32))
-
-struct tpm_req_header {
-    TPM_REQ_HEADER;
-} PACKED;
-
-
-struct tpm_rsp_header {
-    TPM_RSP_HEADER;
-} PACKED;
-
-
-struct tpm_req_extend {
-    TPM_REQ_HEADER
-    u32    pcrindex;
-    u8     digest[SHA1_BUFSIZE];
-} PACKED;
-
-
-struct tpm_rsp_extend {
-    TPM_RSP_HEADER
-    u8     digest[SHA1_BUFSIZE];
-} PACKED;
-
-
-struct tpm_req_getcap_perm_flags {
-    TPM_REQ_HEADER
-    u32    capArea;
-    u32    subCapSize;
-    u32    subCap;
-} PACKED;
-
-
-struct tpm_permanent_flags {
-    u16    tag;
-    u8     flags[20];
-} PACKED;
-
-
-enum permFlagsIndex {
-    PERM_FLAG_IDX_DISABLE = 0,
-    PERM_FLAG_IDX_OWNERSHIP,
-    PERM_FLAG_IDX_DEACTIVATED,
-    PERM_FLAG_IDX_READPUBEK,
-    PERM_FLAG_IDX_DISABLEOWNERCLEAR,
-    PERM_FLAG_IDX_ALLOW_MAINTENANCE,
-    PERM_FLAG_IDX_PHYSICAL_PRESENCE_LIFETIME_LOCK,
-    PERM_FLAG_IDX_PHYSICAL_PRESENCE_HW_ENABLE,
-};
-
-
-struct tpm_res_getcap_perm_flags {
-    TPM_RSP_HEADER
-    u32    size;
-    struct tpm_permanent_flags perm_flags;
-} PACKED;
-
-
-struct tpm_res_getcap_ownerauth {
-    TPM_RSP_HEADER
-    u32    size;
-    u8     flag;
-} PACKED;
-
-
-struct tpm_res_getcap_timeouts {
-    TPM_RSP_HEADER
-    u32    size;
-    u32    timeouts[4];
-} PACKED;
-
-
-struct tpm_res_getcap_durations {
-    TPM_RSP_HEADER
-    u32    size;
-    u32    durations[3];
-} PACKED;
-
-
-struct tpm_res_sha1start {
-    TPM_RSP_HEADER
-    u32    max_num_bytes;
-} PACKED;
-
-
-struct tpm_res_sha1complete {
-    TPM_RSP_HEADER
-    u8     hash[20];
-} PACKED;
-
-struct pttti_extend {
-    struct pttti pttti;
-    struct tpm_req_extend req;
-} PACKED;
-
-
-struct pttto_extend {
-    struct pttto pttto;
-    struct tpm_rsp_extend rsp;
-} PACKED;
-
-
 enum ipltype {
     IPL_BCV = 0,
     IPL_EL_TORITO_1,
     IPL_EL_TORITO_2
 };
 
-
 struct bregs;
 void tpm_interrupt_handler32(struct bregs *regs);
 
