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