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