xref: /illumos-gate/usr/src/cmd/bhyve/tpm_intf.h (revision 32640292339b07090f10ce34d455f98711077343)
1*32640292SAndy Fiddaman /*-
2*32640292SAndy Fiddaman  * SPDX-License-Identifier: BSD-2-Clause
3*32640292SAndy Fiddaman  *
4*32640292SAndy Fiddaman  * Copyright (c) 2022 Beckhoff Automation GmbH & Co. KG
5*32640292SAndy Fiddaman  * Author: Corvin Köhne <c.koehne@beckhoff.com>
6*32640292SAndy Fiddaman  */
7*32640292SAndy Fiddaman 
8*32640292SAndy Fiddaman #pragma once
9*32640292SAndy Fiddaman 
10*32640292SAndy Fiddaman #include <vmmapi.h>
11*32640292SAndy Fiddaman 
12*32640292SAndy Fiddaman #include "acpi_device.h"
13*32640292SAndy Fiddaman #include "config.h"
14*32640292SAndy Fiddaman #include "tpm_device.h"
15*32640292SAndy Fiddaman #include "tpm_emul.h"
16*32640292SAndy Fiddaman 
17*32640292SAndy Fiddaman #define TPM_INTF_TYPE_FIFO_PTP 0x0
18*32640292SAndy Fiddaman #define TPM_INTF_TYPE_CRB 0x1
19*32640292SAndy Fiddaman #define TPM_INTF_TYPE_FIFO_TIS 0xF
20*32640292SAndy Fiddaman 
21*32640292SAndy Fiddaman #define TPM_INTF_VERSION_FIFO 0
22*32640292SAndy Fiddaman #define TPM_INTF_VERSION_CRB 1
23*32640292SAndy Fiddaman 
24*32640292SAndy Fiddaman #define TPM_INTF_CAP_CRB_DATA_XFER_SIZE_4 0
25*32640292SAndy Fiddaman #define TPM_INTF_CAP_CRB_DATA_XFER_SIZE_8 1
26*32640292SAndy Fiddaman #define TPM_INTF_CAP_CRB_DATA_XFER_SIZE_32 2
27*32640292SAndy Fiddaman #define TPM_INTF_CAP_CRB_DATA_XFER_SIZE_64 3
28*32640292SAndy Fiddaman 
29*32640292SAndy Fiddaman #define TPM_INTF_SELECTOR_FIFO 0
30*32640292SAndy Fiddaman #define TPM_INTF_SELECTOR_CRB 1
31*32640292SAndy Fiddaman 
32*32640292SAndy Fiddaman struct tpm_intf {
33*32640292SAndy Fiddaman 	const char *name;
34*32640292SAndy Fiddaman 
35*32640292SAndy Fiddaman 	int (*init)(void **sc, struct tpm_emul *emul, void *emul_sc,
36*32640292SAndy Fiddaman 	    struct acpi_device *acpi_dev);
37*32640292SAndy Fiddaman 	void (*deinit)(void *sc);
38*32640292SAndy Fiddaman 	int (*build_acpi_table)(void *sc, struct vmctx *vm_ctx);
39*32640292SAndy Fiddaman };
40*32640292SAndy Fiddaman #define TPM_INTF_SET(x) DATA_SET(tpm_intf_set, x)
41