1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#ifndef __LINUX_TPM_H__
23#define __LINUX_TPM_H__
24
25#define TPM_DIGEST_SIZE 20
26
27
28
29
30#define TPM_ANY_NUM 0xFFFF
31
32struct tpm_chip;
33
34struct tpm_class_ops {
35 const u8 req_complete_mask;
36 const u8 req_complete_val;
37 bool (*req_canceled)(struct tpm_chip *chip, u8 status);
38 int (*recv) (struct tpm_chip *chip, u8 *buf, size_t len);
39 int (*send) (struct tpm_chip *chip, u8 *buf, size_t len);
40 void (*cancel) (struct tpm_chip *chip);
41 u8 (*status) (struct tpm_chip *chip);
42};
43
44#if defined(CONFIG_TCG_TPM) || defined(CONFIG_TCG_TPM_MODULE)
45
46extern int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf);
47extern int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash);
48extern int tpm_send(u32 chip_num, void *cmd, size_t buflen);
49extern int tpm_get_random(u32 chip_num, u8 *data, size_t max);
50#else
51static inline int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) {
52 return -ENODEV;
53}
54static inline int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash) {
55 return -ENODEV;
56}
57static inline int tpm_send(u32 chip_num, void *cmd, size_t buflen) {
58 return -ENODEV;
59}
60static inline int tpm_get_random(u32 chip_num, u8 *data, size_t max) {
61 return -ENODEV;
62}
63#endif
64#endif
65