1/*
2 * TPM Physical Presence Interface
3 *
4 * Copyright (C) 2018 IBM Corporation
5 *
6 * Authors:
7 * Stefan Berger <stefanb@us.ibm.com>
8 *
9 * This work is licensed under the terms of the GNU GPL, version 2 or later.
10 * See the COPYING file in the top-level directory.
11 */
12#ifndef TPM_TPM_PPI_H
13#define TPM_TPM_PPI_H
14
15#include "hw/acpi/tpm.h"
16#include "exec/address-spaces.h"
17
18typedef struct TPMPPI {
19 MemoryRegion ram;
20 uint8_t *buf;
21} TPMPPI;
22
23/**
24 * tpm_ppi_init:
25 * @tpmppi: a TPMPPI
26 * @m: the address-space / MemoryRegion to use
27 * @addr: the address of the PPI region
28 * @obj: the owner object
29 *
30 * Register the TPM PPI memory region at @addr on the given address
31 * space for the object @obj.
32 **/
33void tpm_ppi_init(TPMPPI *tpmppi, struct MemoryRegion *m,
34 hwaddr addr, Object *obj);
35
36/**
37 * tpm_ppi_reset:
38 * @tpmppi: a TPMPPI
39 *
40 * Function to call on machine reset. It will check if the "Memory
41 * overwrite" variable is set, and perform a memory clear on volatile
42 * memory if requested.
43 **/
44void tpm_ppi_reset(TPMPPI *tpmppi);
45
46#endif /* TPM_TPM_PPI_H */
47