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