Commit | Line | Data |
---|---|---|
132f7629 AL |
1 | /* |
2 | * Copyright (C) 2012 IBM Corporation | |
3 | * | |
1a0f1b27 | 4 | * Author: Ashley Lai <ashleydlai@gmail.com> |
132f7629 AL |
5 | * |
6 | * Maintained by: <tpmdd-devel@lists.sourceforge.net> | |
7 | * | |
8 | * Device driver for TCG/TCPA TPM (trusted platform module). | |
9 | * Specifications at www.trustedcomputinggroup.org | |
10 | * | |
11 | * This program is free software; you can redistribute it and/or | |
12 | * modify it under the terms of the GNU General Public License as | |
13 | * published by the Free Software Foundation, version 2 of the | |
14 | * License. | |
15 | * | |
16 | */ | |
17 | ||
18 | #ifndef __TPM_IBMVTPM_H__ | |
19 | #define __TPM_IBMVTPM_H__ | |
20 | ||
21 | /* vTPM Message Format 1 */ | |
22 | struct ibmvtpm_crq { | |
23 | u8 valid; | |
24 | u8 msg; | |
62dfd912 | 25 | __be16 len; |
26 | __be32 data; | |
27 | __be64 reserved; | |
132f7629 AL |
28 | } __attribute__((packed, aligned(8))); |
29 | ||
30 | struct ibmvtpm_crq_queue { | |
31 | struct ibmvtpm_crq *crq_addr; | |
32 | u32 index; | |
33 | u32 num_entry; | |
34 | }; | |
35 | ||
36 | struct ibmvtpm_dev { | |
37 | struct device *dev; | |
38 | struct vio_dev *vdev; | |
39 | struct ibmvtpm_crq_queue crq_queue; | |
40 | dma_addr_t crq_dma_handle; | |
132f7629 AL |
41 | u32 rtce_size; |
42 | void __iomem *rtce_buf; | |
43 | dma_addr_t rtce_dma_handle; | |
44 | spinlock_t rtce_lock; | |
b5666502 AL |
45 | wait_queue_head_t wq; |
46 | u16 res_len; | |
132f7629 AL |
47 | u32 vtpm_version; |
48 | }; | |
49 | ||
50 | #define CRQ_RES_BUF_SIZE PAGE_SIZE | |
51 | ||
52 | /* Initialize CRQ */ | |
53 | #define INIT_CRQ_CMD 0xC001000000000000LL /* Init cmd */ | |
54 | #define INIT_CRQ_COMP_CMD 0xC002000000000000LL /* Init complete cmd */ | |
55 | #define INIT_CRQ_RES 0x01 /* Init respond */ | |
56 | #define INIT_CRQ_COMP_RES 0x02 /* Init complete respond */ | |
57 | #define VALID_INIT_CRQ 0xC0 /* Valid command for init crq */ | |
58 | ||
59 | /* vTPM CRQ response is the message type | 0x80 */ | |
60 | #define VTPM_MSG_RES 0x80 | |
61 | #define IBMVTPM_VALID_CMD 0x80 | |
62 | ||
63 | /* vTPM CRQ message types */ | |
64 | #define VTPM_GET_VERSION 0x01 | |
65 | #define VTPM_GET_VERSION_RES (0x01 | VTPM_MSG_RES) | |
66 | ||
67 | #define VTPM_TPM_COMMAND 0x02 | |
68 | #define VTPM_TPM_COMMAND_RES (0x02 | VTPM_MSG_RES) | |
69 | ||
70 | #define VTPM_GET_RTCE_BUFFER_SIZE 0x03 | |
71 | #define VTPM_GET_RTCE_BUFFER_SIZE_RES (0x03 | VTPM_MSG_RES) | |
72 | ||
73 | #define VTPM_PREPARE_TO_SUSPEND 0x04 | |
74 | #define VTPM_PREPARE_TO_SUSPEND_RES (0x04 | VTPM_MSG_RES) | |
75 | ||
76 | #endif |