Vadim Bendebury | b86371b | 2015-05-27 18:16:19 -0700 | [diff] [blame] | 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 | |
Vadim Bendebury | c9e573a | 2018-12-11 15:19:59 -0800 | [diff] [blame] | 10 | // |
| 11 | // Structure used to communicate locations and sizes of reserved objects in |
| 12 | // the NVMEM cache. |
| 13 | // |
| 14 | typedef struct { |
| 15 | UINT16 offset; |
| 16 | uint16_t size; |
| 17 | } NV_RESERVED_ITEM; |
| 18 | |
| 19 | |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 20 | TPM_RC NvAddEvictObject(TPMI_DH_OBJECT evictHandle, // IN: new evict handle |
| 21 | OBJECT *object // IN: object to be added |
Vadim Bendebury | 0d658a0 | 2015-05-29 22:55:38 -0700 | [diff] [blame] | 22 | ); |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 23 | UINT32 NvCapGetCounterAvail(void); |
| 24 | UINT32 NvCapGetCounterNumber(void); |
| 25 | UINT32 NvCapGetIndexNumber(void); |
| 26 | UINT32 NvCapGetPersistentAvail(void); |
| 27 | UINT32 NvCapGetPersistentNumber(void); |
Vadim Bendebury | da72506 | 2015-05-31 14:41:18 -0700 | [diff] [blame] | 28 | void NvCheckState(void); |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 29 | BOOL NvCommit(void); |
Vadim Bendebury | 76970b1 | 2015-05-31 18:40:37 -0700 | [diff] [blame] | 30 | TPM_RC NvDefineIndex( |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 31 | TPMS_NV_PUBLIC *publicArea, // IN: A template for an area to create. |
| 32 | TPM2B_AUTH *authValue // IN: The initial authorization value |
| 33 | ); |
| 34 | void NvDeleteEntity(TPM_HANDLE handle // IN: handle of entity to be deleted |
Vadim Bendebury | 0d658a0 | 2015-05-29 22:55:38 -0700 | [diff] [blame] | 35 | ); |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 36 | void NvEntityStartup(STARTUP_TYPE type // IN: start up type |
| 37 | ); |
Vadim Bendebury | 59727bd | 2015-05-28 14:58:08 -0700 | [diff] [blame] | 38 | void NvFlushHierarchy( |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 39 | TPMI_RH_HIERARCHY hierarchy // IN: hierarchy to be flushed. |
| 40 | ); |
| 41 | TPM_RC NvGetEvictObject(TPM_HANDLE handle, // IN: handle |
| 42 | OBJECT *object // OUT: object data |
| 43 | ); |
| 44 | void NvGetIndexData(TPMI_RH_NV_INDEX handle, // IN: handle |
| 45 | NV_INDEX *nvIndex, // IN: RAM image of index header |
| 46 | UINT32 offset, // IN: offset of NV data |
| 47 | UINT16 size, // IN: size of NV data |
| 48 | void *data // OUT: data buffer |
Vadim Bendebury | 889ec83 | 2015-05-26 17:11:06 -0700 | [diff] [blame] | 49 | ); |
Namyoon Woo | 0be7f8d | 2020-02-04 16:43:47 -0800 | [diff] [blame] | 50 | void NvReadIndexData(TPMI_RH_NV_INDEX handle, // IN: handle |
| 51 | NV_INDEX *nvIndex, // IN: RAM image of index header |
| 52 | UINT32 entityAddr, // IN: Address of NV data |
| 53 | UINT32 offset, // IN: offset of NV data |
| 54 | UINT16 size, // IN: size of NV data |
| 55 | void *data // OUT: data buffer |
| 56 | ); |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 57 | void NvGetIndexInfo(TPMI_RH_NV_INDEX handle, // IN: handle |
| 58 | NV_INDEX *nvIndex // OUT: NV index structure |
| 59 | ); |
Namyoon Woo | 0be7f8d | 2020-02-04 16:43:47 -0800 | [diff] [blame] | 60 | void NvReadIndexInfo(TPMI_RH_NV_INDEX handle, // IN: handle |
| 61 | UINT32 entityAddr, // IN: entity Address |
| 62 | NV_INDEX *nvIndex // OUT: NV index structure |
| 63 | ); |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 64 | void NvGetIntIndexData(TPMI_RH_NV_INDEX handle, // IN: handle |
| 65 | NV_INDEX *nvIndex, // IN: RAM image of NV Index header |
| 66 | UINT64 *data // IN: UINT64 pointer for counter or bit |
| 67 | ); |
| 68 | UINT16 NvGetName(TPMI_RH_NV_INDEX handle, // IN: handle of the index |
| 69 | NAME *name // OUT: name of the index |
Vadim Bendebury | 889ec83 | 2015-05-26 17:11:06 -0700 | [diff] [blame] | 70 | ); |
Vadim Bendebury | bbd7900 | 2015-05-31 14:44:07 -0700 | [diff] [blame] | 71 | TPMI_YES_NO NvCapGetIndex( |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 72 | TPMI_DH_OBJECT handle, // IN: start handle |
| 73 | UINT32 count, // IN: maximum number of returned handle |
| 74 | TPML_HANDLE *handleList // OUT: list of handle |
| 75 | ); |
Vadim Bendebury | bbd7900 | 2015-05-31 14:44:07 -0700 | [diff] [blame] | 76 | TPMI_YES_NO NvCapGetPersistent( |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 77 | TPMI_DH_OBJECT handle, // IN: start handle |
| 78 | UINT32 count, // IN: maximum number of returned handle |
| 79 | TPML_HANDLE *handleList // OUT: list of handle |
| 80 | ); |
| 81 | TPM_RC NvIndexIsAccessible(TPMI_RH_NV_INDEX handle, // IN: handle |
| 82 | TPM_CC commandCode // IN: the command |
Vadim Bendebury | 889ec83 | 2015-05-26 17:11:06 -0700 | [diff] [blame] | 83 | ); |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 84 | void NvInit(void); |
| 85 | UINT64 NvInitialCounter(void); |
| 86 | TPM_RC NvIsAvailable(void); |
| 87 | BOOL NvIsOwnerPersistentHandle(TPM_HANDLE handle // IN: handle |
Vadim Bendebury | 0d658a0 | 2015-05-29 22:55:38 -0700 | [diff] [blame] | 88 | ); |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 89 | BOOL NvIsPlatformPersistentHandle(TPM_HANDLE handle // IN: handle |
Vadim Bendebury | 0d658a0 | 2015-05-29 22:55:38 -0700 | [diff] [blame] | 90 | ); |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 91 | BOOL NvIsUndefinedIndex(TPMI_RH_NV_INDEX handle // IN: handle |
| 92 | ); |
| 93 | BOOL NvPowerOn(void); |
| 94 | void NvReadPersistent(void); |
| 95 | void NvReadReserved(NV_RESERVE type, // IN: type of reserved data |
| 96 | void *buffer // OUT: buffer receives the data. |
| 97 | ); |
| 98 | void NvSetGlobalLock(void); |
| 99 | void NvStateSave(void); |
| 100 | TPM_RC NvWriteIndexData(TPMI_RH_NV_INDEX handle, // IN: handle |
| 101 | NV_INDEX *nvIndex, // IN: RAM copy of NV Index |
| 102 | UINT32 offset, // IN: offset of NV data |
| 103 | UINT32 size, // IN: size of NV data |
| 104 | void *data // OUT: data buffer |
| 105 | ); |
| 106 | TPM_RC NvWriteIndexInfo(TPMI_RH_NV_INDEX handle, // IN: handle |
| 107 | NV_INDEX *nvIndex // IN: NV Index info to be written |
| 108 | ); |
| 109 | void NvWriteReserved(NV_RESERVE type, // IN: type of reserved data |
| 110 | void *buffer // IN: data buffer |
Vadim Bendebury | 59727bd | 2015-05-28 14:58:08 -0700 | [diff] [blame] | 111 | ); |
Namyoon Woo | 0be7f8d | 2020-02-04 16:43:47 -0800 | [diff] [blame] | 112 | UINT32 NvEarlyStageFindHandle(TPM_HANDLE handle); |
Louis Collard | ec33382 | 2018-10-05 16:04:28 +0800 | [diff] [blame] | 113 | BOOL NvIsDefinedHiddenObject(TPMI_RH_NV_INDEX handle // IN: handle |
| 114 | ); |
| 115 | TPM_RC NvAddHiddenObject(TPM_HANDLE handle, // IN: new evict handle |
| 116 | UINT16 size, |
| 117 | void *object // IN: object to be added |
| 118 | ); |
| 119 | TPM_RC NvWriteHiddenObject(TPM_HANDLE handle, // IN: new evict handle |
| 120 | UINT16 size, |
| 121 | void *object // IN: object to be added |
| 122 | ); |
| 123 | TPM_RC NvGetHiddenObject( |
| 124 | TPM_HANDLE handle, // IN: handle |
| 125 | UINT16 size, // IN: size of NV data |
| 126 | void *data // OUT: data buffer |
| 127 | ); |
Vadim Sukhomlinov | 6ab308b | 2020-07-02 18:14:15 -0700 | [diff] [blame] | 128 | TPM_RC NvGetHiddenObjectSize(TPM_HANDLE handle, // IN: handle |
| 129 | UINT16 *size // OUT: size of NV data |
| 130 | ); |
| 131 | |
Vadim Bendebury | 15260c8 | 2018-12-04 12:08:59 -0800 | [diff] [blame] | 132 | void NvSelectivelyInvalidateCache( |
| 133 | const UINT16 *keep_range // A two element array, the inclusive range of |
| 134 | // NV indices to preserve. |
| 135 | ); |
Vadim Bendebury | c9e573a | 2018-12-11 15:19:59 -0800 | [diff] [blame] | 136 | void NvGetReserved(UINT32 index, NV_RESERVED_ITEM *ri); |
Vadim Bendebury | da72506 | 2015-05-31 14:41:18 -0700 | [diff] [blame] | 137 | |
Vadim Bendebury | f788ffb | 2015-06-05 12:57:27 -0700 | [diff] [blame] | 138 | #endif // __TPM2_NV_FP_H |