1 /* SPDX-License-Identifier: BSD-3-Clause */ 2 3 #ifndef __DRIVERS_TPM_CR50_H__ 4 #define __DRIVERS_TPM_CR50_H__ 5 6 #include <types.h> 7 8 /* Structure describing the elements of GSC firmware version. */ 9 struct cr50_firmware_version { 10 int epoch; 11 int major; 12 int minor; 13 }; 14 15 /* Indicates whether Cr50 ready pulses are guaranteed to be at least 100us. */ 16 bool cr50_is_long_interrupt_pulse_enabled(void); 17 18 /* Get the GSC firmware version information. */ 19 enum cb_err cr50_get_firmware_version(struct cr50_firmware_version *version); 20 21 /* Set the BOARD_CFG register depending on Cr50 Kconfigs */ 22 enum cb_err cr50_set_board_cfg(void); 23 24 /* Wait for IRQ to indicate the TPM is ready */ 25 enum cb_err cr50_wait_tpm_ready(void); 26 27 /* Check TPM IRQ and clear it, returns 1 when IRQ pending or 0 when not */ 28 int cr50_plat_irq_status(void); 29 30 #endif /* __DRIVERS_TPM_CR50_H__ */ 31