1/*
2 * Copyright 2015 The Chromium OS Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 */
6
7#ifndef __TPM2_NV_FP_H
8#define __TPM2_NV_FP_H
9
10TPM_RC NvAddEvictObject(TPMI_DH_OBJECT evictHandle,  // IN: new evict handle
11                        OBJECT *object               // IN: object to be added
12                        );
13UINT32 NvCapGetCounterAvail(void);
14UINT32 NvCapGetCounterNumber(void);
15UINT32 NvCapGetIndexNumber(void);
16UINT32 NvCapGetPersistentAvail(void);
17UINT32 NvCapGetPersistentNumber(void);
18void NvCheckState(void);
19BOOL NvCommit(void);
20TPM_RC NvDefineIndex(
21    TPMS_NV_PUBLIC *publicArea,  // IN: A template for an area to create.
22    TPM2B_AUTH *authValue        // IN: The initial authorization value
23    );
24void NvDeleteEntity(TPM_HANDLE handle  // IN: handle of entity to be deleted
25                    );
26void NvEntityStartup(STARTUP_TYPE type  // IN: start up type
27                     );
28void NvFlushHierarchy(
29    TPMI_RH_HIERARCHY hierarchy  // IN: hierarchy to be flushed.
30    );
31TPM_RC NvGetEvictObject(TPM_HANDLE handle,  // IN: handle
32                        OBJECT *object      // OUT: object data
33                        );
34void NvGetIndexData(TPMI_RH_NV_INDEX handle,  //   IN: handle
35                    NV_INDEX *nvIndex,        //   IN: RAM image of index header
36                    UINT32 offset,            //   IN: offset of NV data
37                    UINT16 size,              //   IN: size of NV data
38                    void *data                //   OUT: data buffer
39                    );
40void NvGetIndexInfo(TPMI_RH_NV_INDEX handle,  // IN: handle
41                    NV_INDEX *nvIndex         // OUT: NV index structure
42                    );
43void NvGetIntIndexData(TPMI_RH_NV_INDEX handle,  // IN: handle
44                       NV_INDEX *nvIndex,  // IN: RAM image of NV Index header
45                       UINT64 *data  // IN: UINT64 pointer for counter or bit
46                       );
47UINT16 NvGetName(TPMI_RH_NV_INDEX handle,  // IN: handle of the index
48                 NAME *name                // OUT: name of the index
49                 );
50TPMI_YES_NO NvCapGetIndex(
51    TPMI_DH_OBJECT handle,   // IN: start handle
52    UINT32 count,            // IN: maximum number of returned handle
53    TPML_HANDLE *handleList  // OUT: list of handle
54    );
55TPMI_YES_NO NvCapGetPersistent(
56    TPMI_DH_OBJECT handle,   // IN: start handle
57    UINT32 count,            // IN: maximum number of returned handle
58    TPML_HANDLE *handleList  // OUT: list of handle
59    );
60TPM_RC NvIndexIsAccessible(TPMI_RH_NV_INDEX handle,  // IN: handle
61                           TPM_CC commandCode        // IN: the command
62                           );
63void NvInit(void);
64UINT64 NvInitialCounter(void);
65TPM_RC NvIsAvailable(void);
66BOOL NvIsOwnerPersistentHandle(TPM_HANDLE handle  // IN: handle
67                               );
68BOOL NvIsPlatformPersistentHandle(TPM_HANDLE handle  // IN: handle
69                                  );
70BOOL NvIsUndefinedIndex(TPMI_RH_NV_INDEX handle  // IN: handle
71                        );
72BOOL NvPowerOn(void);
73void NvReadPersistent(void);
74void NvReadReserved(NV_RESERVE type,  // IN: type of reserved data
75                    void *buffer      // OUT: buffer receives the data.
76                    );
77void NvSetGlobalLock(void);
78void NvStateSave(void);
79TPM_RC NvWriteIndexData(TPMI_RH_NV_INDEX handle,  //   IN: handle
80                        NV_INDEX *nvIndex,        //   IN: RAM copy of NV Index
81                        UINT32 offset,            //   IN: offset of NV data
82                        UINT32 size,              //   IN: size of NV data
83                        void *data                //   OUT: data buffer
84                        );
85TPM_RC NvWriteIndexInfo(TPMI_RH_NV_INDEX handle,  // IN: handle
86                        NV_INDEX *nvIndex  // IN: NV Index info to be written
87                        );
88void NvWriteReserved(NV_RESERVE type,  // IN: type of reserved data
89                     void *buffer      // IN: data buffer
90                     );
91
92#endif  // __TPM2_NV_FP_H
93