aboutsummaryrefslogtreecommitdiffstats
path: root/roms/skiboot/libstb/tss2/ibmtpm20tss/utils/Platform.h
diff options
context:
space:
mode:
authorAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
committerAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
commitaf1a266670d040d2f4083ff309d732d648afba2a (patch)
tree2fc46203448ddcc6f81546d379abfaeb323575e9 /roms/skiboot/libstb/tss2/ibmtpm20tss/utils/Platform.h
parente02cda008591317b1625707ff8e115a4841aa889 (diff)
Add submodule dependency filesHEADmaster
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'roms/skiboot/libstb/tss2/ibmtpm20tss/utils/Platform.h')
-rw-r--r--roms/skiboot/libstb/tss2/ibmtpm20tss/utils/Platform.h361
1 files changed, 361 insertions, 0 deletions
diff --git a/roms/skiboot/libstb/tss2/ibmtpm20tss/utils/Platform.h b/roms/skiboot/libstb/tss2/ibmtpm20tss/utils/Platform.h
new file mode 100644
index 000000000..9c5a594d3
--- /dev/null
+++ b/roms/skiboot/libstb/tss2/ibmtpm20tss/utils/Platform.h
@@ -0,0 +1,361 @@
+/********************************************************************************/
+/* */
+/* */
+/* Written by Ken Goldman */
+/* IBM Thomas J. Watson Research Center */
+/* $Id: Platform.h 1257 2018-06-27 20:52:08Z kgoldman $ */
+/* */
+/* Licenses and Notices */
+/* */
+/* 1. Copyright Licenses: */
+/* */
+/* - Trusted Computing Group (TCG) grants to the user of the source code in */
+/* this specification (the "Source Code") a worldwide, irrevocable, */
+/* nonexclusive, royalty free, copyright license to reproduce, create */
+/* derivative works, distribute, display and perform the Source Code and */
+/* derivative works thereof, and to grant others the rights granted herein. */
+/* */
+/* - The TCG grants to the user of the other parts of the specification */
+/* (other than the Source Code) the rights to reproduce, distribute, */
+/* display, and perform the specification solely for the purpose of */
+/* developing products based on such documents. */
+/* */
+/* 2. Source Code Distribution Conditions: */
+/* */
+/* - Redistributions of Source Code must retain the above copyright licenses, */
+/* this list of conditions and the following disclaimers. */
+/* */
+/* - Redistributions in binary form must reproduce the above copyright */
+/* licenses, this list of conditions and the following disclaimers in the */
+/* documentation and/or other materials provided with the distribution. */
+/* */
+/* 3. Disclaimers: */
+/* */
+/* - THE COPYRIGHT LICENSES SET FORTH ABOVE DO NOT REPRESENT ANY FORM OF */
+/* LICENSE OR WAIVER, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, WITH */
+/* RESPECT TO PATENT RIGHTS HELD BY TCG MEMBERS (OR OTHER THIRD PARTIES) */
+/* THAT MAY BE NECESSARY TO IMPLEMENT THIS SPECIFICATION OR OTHERWISE. */
+/* Contact TCG Administration (admin@trustedcomputinggroup.org) for */
+/* information on specification licensing rights available through TCG */
+/* membership agreements. */
+/* */
+/* - THIS SPECIFICATION IS PROVIDED "AS IS" WITH NO EXPRESS OR IMPLIED */
+/* WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY OR */
+/* FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, COMPLETENESS, OR */
+/* NONINFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS, OR ANY WARRANTY */
+/* OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. */
+/* */
+/* - Without limitation, TCG and its members and licensors disclaim all */
+/* liability, including liability for infringement of any proprietary */
+/* rights, relating to use of information in this specification and to the */
+/* implementation of this specification, and TCG disclaims all liability for */
+/* cost of procurement of substitute goods or services, lost profits, loss */
+/* of use, loss of data or any incidental, consequential, direct, indirect, */
+/* or special damages, whether under contract, tort, warranty or otherwise, */
+/* arising in any way out of use or reliance upon this specification or any */
+/* information herein. */
+/* */
+/* (c) Copyright IBM Corp. and others, 2012-2015 */
+/* */
+/********************************************************************************/
+
+/* rev 122 */
+
+// C.8 Platform.h
+
+#ifndef PLATFORM_H
+#define PLATFORM_H
+
+// C.8.1. Includes and Defines
+
+#include <ibmtss/BaseTypes.h>
+#include "stdint.h"
+#include "TpmError.h"
+#include <ibmtss/TpmBuildSwitches.h>
+
+// C.8.2. Power Functions
+// C.8.2.1. _plat__Signal_PowerOn
+// Signal power on This signal is simulate by a RPC call
+
+LIB_EXPORT int
+_plat__Signal_PowerOn(void);
+
+// C.8.2.2. _plat__Signal_Reset
+// Signal reset This signal is simulate by a RPC call
+
+LIB_EXPORT int
+_plat__Signal_Reset(void);
+
+// C.8.2.3. _plat__WasPowerLost()
+// Indicates if the power was lost before a _TPM__Init().
+
+LIB_EXPORT BOOL
+_plat__WasPowerLost(BOOL clear);
+
+// C.8.2.4. _plat__Signal_PowerOff()
+// Signal power off This signal is simulate by a RPC call
+
+LIB_EXPORT void
+_plat__Signal_PowerOff(void);
+
+// C.8.3. Physical Presence Functions
+// C.8.3.1. _plat__PhysicalPresenceAsserted()
+// Check if physical presence is signaled
+// Return Value Meaning
+// TRUE if physical presence is signaled
+// FALSE if physical presence is not signaled
+
+LIB_EXPORT BOOL
+_plat__PhysicalPresenceAsserted(void);
+
+// C.8.3.2. _plat__Signal_PhysicalPresenceOn
+// Signal physical presence on This signal is simulate by a RPC call
+
+LIB_EXPORT void
+_plat__Signal_PhysicalPresenceOn(void);
+
+// C.8.3.3. _plat__Signal_PhysicalPresenceOff()
+// Signal physical presence off This signal is simulate by a RPC call
+
+LIB_EXPORT void
+_plat__Signal_PhysicalPresenceOff(void);
+
+// C.8.4. Command Canceling Functions
+// C.8.4.1. _plat__IsCanceled()
+// Check if the cancel flag is set
+// Return Value Meaning
+// TRUE if cancel flag is set
+// FALSE if cancel flag is not set
+
+LIB_EXPORT BOOL
+_plat__IsCanceled(void);
+
+// C.8.4.2. _plat__SetCancel()
+// Set cancel flag.
+
+LIB_EXPORT void
+_plat__SetCancel(void);
+
+// C.8.4.3. _plat__ClearCancel()
+// Clear cancel flag
+
+LIB_EXPORT void
+_plat__ClearCancel( void);
+
+// C.8.5. NV memory functions
+// C.8.5.1. _plat__NvErrors()
+
+// This function is used by the simulator to set the error flags in the NV subsystem to simulate an
+// error in the NV loading process
+
+LIB_EXPORT void
+_plat__NvErrors(
+ BOOL recoverable,
+ BOOL unrecoverable
+ );
+
+// C.8.5.2. _plat__NVEnable()
+
+// Enable platform NV memory NV memory is automatically enabled at power on event. This function is
+// mostly for TPM_Manufacture() to access NV memory without a power on event
+
+// Return Value Meaning
+// 0 if success
+// non-0 if fail
+
+LIB_EXPORT int
+_plat__NVEnable(
+ void *platParameter // IN: platform specific parameters
+ );
+
+// C.8.5.3. _plat__NVDisable()
+
+// Disable platform NV memory NV memory is automatically disabled at power off event. This function
+// is mostly for TPM_Manufacture() to disable NV memory without a power off event
+
+LIB_EXPORT void
+_plat__NVDisable(void);
+
+// C.8.5.4. _plat__IsNvAvailable()
+// Check if NV is available
+// Return Value Meaning
+// 0 NV is available
+// 1 NV is not available due to write failure
+// 2 NV is not available due to rate limit
+
+LIB_EXPORT int
+_plat__IsNvAvailable(void);
+
+// C.8.5.5. _plat__NvCommit()
+// Update NV chip
+// Return Value Meaning
+// 0 NV write success
+// non-0 NV write fail
+
+LIB_EXPORT int
+_plat__NvCommit(void);
+
+// C.8.5.6. _plat__NvMemoryRead()
+// Read a chunk of NV memory
+
+LIB_EXPORT void
+_plat__NvMemoryRead(
+ unsigned int startOffset, // IN: read start
+ unsigned int size, // IN: size of bytes to read
+ void *data // OUT: data buffer
+ );
+
+// C.8.5.7. _plat__NvIsDifferent()
+
+// This function checks to see if the NV is different from the test value. This is so that NV will
+// not be written if it has not changed.
+
+// Return Value Meaning
+// TRUE the NV location is different from the test value
+// FALSE the NV location is the same as the test value
+
+LIB_EXPORT BOOL
+_plat__NvIsDifferent(
+ unsigned int startOffset, // IN: read start
+ unsigned int size, // IN: size of bytes to compare
+ void *data // IN: data buffer
+ );
+
+// C.8.5.8. _plat__NvMemoryWrite()
+
+// Write a chunk of NV memory
+
+LIB_EXPORT void
+_plat__NvMemoryWrite(
+ unsigned int startOffset, // IN: read start
+ unsigned int size, // IN: size of bytes to read
+ void *data // OUT: data buffer
+ );
+
+// C.8.5.9. _plat__NvMemoryClear()
+
+// Function is used to set a range of NV memory bytes to an implementation-dependent value. The
+// value represents the errase state of the memory.
+
+LIB_EXPORT void
+_plat__NvMemoryClear(
+ unsigned int start, // IN: clear start
+ unsigned int size // IN: number of bytes to be clear
+ );
+
+// C.8.5.10. _plat__NvMemoryMove()
+
+// Move a chunk of NV memory from source to destination This function should ensure that if there
+// overlap, the original data is copied before it is written
+
+LIB_EXPORT void
+_plat__NvMemoryMove(
+ unsigned int sourceOffset, // IN: source offset
+ unsigned int destOffset, // IN: destination offset
+ unsigned int size // IN: size of data being moved
+ );
+
+// C.8.5.11. _plat__SetNvAvail()
+
+// Set the current NV state to available. This function is for testing purposes only. It is not
+// part of the platform NV logic
+
+LIB_EXPORT void
+_plat__SetNvAvail(void);
+
+// C.8.5.12. _plat__ClearNvAvail()
+
+// Set the current NV state to unavailable. This function is for testing purposes only. It is not
+// part of the platform NV logic
+
+LIB_EXPORT void
+_plat__ClearNvAvail(void);
+
+// C.8.6. Locality Functions
+// C.8.6.1. _plat__LocalityGet()
+// Get the most recent command locality in locality value form
+
+LIB_EXPORT unsigned char
+_plat__LocalityGet(void);
+
+// C.8.6.2. _plat__LocalitySet()
+// Set the most recent command locality in locality value form
+
+LIB_EXPORT void
+_plat__LocalitySet(
+ unsigned char locality
+ );
+
+// C.8.7. Clock Constants and Functions
+// Assume that the nominal divisor is 30000
+
+#define CLOCK_NOMINAL 30000
+
+// A 1% change in rate is 300 counts
+
+#define CLOCK_ADJUST_COARSE 300
+
+// A .1 change in rate is 30 counts
+
+#define CLOCK_ADJUST_MEDIUM 30
+
+// A minimum change in rate is 1 count
+
+#define CLOCK_ADJUST_FINE 1
+
+// The clock tolerance is +/-15% (4500 counts) Allow some guard band (16.7%)
+
+#define CLOCK_ADJUST_LIMIT 5000
+
+// C.8.7.1. _plat__ClockReset()
+
+// This function sets the current clock time as initial time. This function is called at a power on
+// event to reset the clock
+
+LIB_EXPORT void
+_plat__ClockReset(void);
+
+// C.8.7.2. _plat__ClockTimeFromStart()
+
+// Function returns the compensated time from the start of the command when
+// _plat__ClockTimeFromStart() was called.
+
+LIB_EXPORT unsigned long long
+_plat__ClockTimeFromStart(void);
+
+// C.8.7.3. _plat__ClockTimeElapsed()
+
+// Get the time elapsed from current to the last time the _plat__ClockTimeElapsed() is called. For
+// the first _plat__ClockTimeElapsed() call after a power on event, this call report the elapsed
+// time from power on to the current call
+
+LIB_EXPORT unsigned long long
+_plat__ClockTimeElapsed(void);
+
+// C.8.7.4. _plat__ClockAdjustRate()
+// Adjust the clock rate
+
+LIB_EXPORT void
+_plat__ClockAdjustRate(
+ int adjust // IN: the adjust number. It could be
+ // positive or negative
+ );
+
+// C.8.8. Single Function Files
+// C.8.8.1. _plat__GetEntropy()
+
+// This function is used to get available hardware entropy. In a hardware implementation of this
+// function, there would be no call to the system to get entropy. If the caller does not ask for any
+// entropy, then this is a startup indication and firstValue should be reset.
+
+// Return Value Meaning
+// < 0 hardware failure of the entropy generator, this is sticky
+// >= 0 the returned amount of entropy (bytes)
+
+LIB_EXPORT int32_t
+_plat__GetEntropy(
+ unsigned char *entropy, // output buffer
+ uint32_t amount // amount requested
+ );
+
+#endif