1 The U-Boot Driver Model Project
2 ===============================
5 Marek Vasut <marek.vasut@gmail.com>
11 There is currently only one TPM chip driver available and therefore the API
12 controlling it is very much based on this. The API is very simple:
16 int tis_sendrecv(const u8 *sendbuf, size_t send_size,
17 u8 *recvbuf, size_t *recv_len);
19 The command operating the TPM chip only provides operations to send and receive
25 The API can't be generalised too much considering there's only one TPM chip
26 supported. But it's a good idea to split the tis_sendrecv() function in two
27 functions. Therefore the new API will use register the TPM chip by calling:
29 tpm_device_register(struct instance *i, const struct tpm_ops *ops);
31 And the struct tpm_ops will contain the following members:
34 int (*tpm_open)(struct instance *i);
35 int (*tpm_close)(struct instance *i);
36 int (*tpm_send)(const uint8_t *buf, const size_t size);
37 int (*tpm_recv)(uint8_t *buf, size_t *size);
40 The behaviour of "tpm_open()" and "tpm_close()" will basically copy the
41 behaviour of "tis_open()" and "tis_close()". The "tpm_send()" will be based on
42 the "tis_senddata()" and "tis_recv()" will be based on "tis_readresponse()".
44 III) Analysis of in-tree drivers
45 --------------------------------
47 There is only one in-tree driver present, the "drivers/tpm/generic_lpc_tpm.c",
48 which will be simply converted as outlined in previous chapter.