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