xref: /rk3399_ARM-atf/include/drivers/tpm/tpm2_interface.h (revision 7e848540159ba8fbb0577c76e4dc0c5bbc542489)
1*36e3d877SAbhi.Singh /*
2*36e3d877SAbhi.Singh  * Copyright (c) 2025, Arm Limited. All rights reserved.
3*36e3d877SAbhi.Singh  *
4*36e3d877SAbhi.Singh  * SPDX-License-Identifier: BSD-3-Clause
5*36e3d877SAbhi.Singh  */
6*36e3d877SAbhi.Singh 
7*36e3d877SAbhi.Singh #ifndef TPM2_INTERFACE_H
8*36e3d877SAbhi.Singh #define TPM2_INTERFACE_H
9*36e3d877SAbhi.Singh 
10*36e3d877SAbhi.Singh #include "tpm2_chip.h"
11*36e3d877SAbhi.Singh 
12*36e3d877SAbhi.Singh typedef struct interface_ops {
13*36e3d877SAbhi.Singh 	int (*get_info)(struct tpm_chip_data *chip_data, uint8_t locality);
14*36e3d877SAbhi.Singh 	int (*send)(struct tpm_chip_data *chip_data, const tpm_cmd *buf);
15*36e3d877SAbhi.Singh 	int (*receive)(struct tpm_chip_data *chip_data, tpm_cmd *buf);
16*36e3d877SAbhi.Singh 	int (*request_access)(struct tpm_chip_data *chip_data, uint8_t locality);
17*36e3d877SAbhi.Singh 	int (*release_locality)(struct tpm_chip_data *chip_data, uint8_t locality);
18*36e3d877SAbhi.Singh } interface_ops_t;
19*36e3d877SAbhi.Singh 
20*36e3d877SAbhi.Singh struct interface_ops *tpm_interface_getops(struct tpm_chip_data *chip_data, uint8_t locality);
21*36e3d877SAbhi.Singh 
22*36e3d877SAbhi.Singh int tpm2_fifo_write_byte(uint16_t tpm_reg, uint8_t val);
23*36e3d877SAbhi.Singh 
24*36e3d877SAbhi.Singh int tpm2_fifo_read_byte(uint16_t tpm_reg, uint8_t *val);
25*36e3d877SAbhi.Singh 
26*36e3d877SAbhi.Singh int tpm2_fifo_read_chunk(uint16_t tpm_reg, uint8_t len, void *val);
27*36e3d877SAbhi.Singh 
28*36e3d877SAbhi.Singh #endif /* TPM2_INTERFACE_H */
29