blob: 35e70a4320482033eedacaa0ea72c97b9d5536b8 [file] [log] [blame]
Tim Wawrzynczak6b8599f2022-02-14 16:04:21 -07001/* 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
Jes Klinke1430b042022-03-28 14:22:24 -07008/* Structure describing the elements of GSC firmware version. */
Tim Wawrzynczak6b8599f2022-02-14 16:04:21 -07009struct 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. */
16bool cr50_is_long_interrupt_pulse_enabled(void);
17
Jes Klinke1430b042022-03-28 14:22:24 -070018/* Get the GSC firmware version information. */
Subrata Banik60b2ab82022-03-09 12:55:34 +053019enum cb_err cr50_get_firmware_version(struct cr50_firmware_version *version);
Tim Wawrzynczak6b8599f2022-02-14 16:04:21 -070020
21/* Set the BOARD_CFG register depending on Cr50 Kconfigs */
Subrata Banik60b2ab82022-03-09 12:55:34 +053022enum cb_err cr50_set_board_cfg(void);
Tim Wawrzynczak6b8599f2022-02-14 16:04:21 -070023
Yu-Ping Wuae1e7022022-05-17 09:33:18 +080024/* Wait for IRQ to indicate the TPM is ready */
25enum cb_err cr50_wait_tpm_ready(void);
26
Grzegorz Bernacki7758b472023-06-14 12:01:32 +000027/* Check TPM IRQ and clear it, returns 1 when IRQ pending or 0 when not */
28int cr50_plat_irq_status(void);
29
Tim Wawrzynczak6b8599f2022-02-14 16:04:21 -070030#endif /* __DRIVERS_TPM_CR50_H__ */