/** @file
TCMDXE.h -- Header for TCMDXE
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __TCMDXE_H__
#define __TCMDXE_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
TcmReportError(
VOID
);
EFI_STATUS
EFIAPI
TcmAssertFail(
VOID
);
EFI_STATUS
EFIAPI
TcmReadUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
TcmPciExpressGetAddr(
VOID
);
EFI_STATUS
EFIAPI
TcmIoWriteEnable(
VOID
);
EFI_STATUS
EFIAPI
TcmRegisterWrite(
VOID
);
EFI_STATUS
EFIAPI
TcmReadWord(
VOID
);
EFI_STATUS
EFIAPI
TcmCheckResponse(
VOID
);
EFI_STATUS
EFIAPI
TcmMicroDelay(
VOID
);
EFI_STATUS
EFIAPI
TcmFifoTransmit(
VOID
);
EFI_STATUS
EFIAPI
TcmStartup(
VOID
);
EFI_STATUS
EFIAPI
TcmContinueSelfTest(
VOID
);
EFI_STATUS
EFIAPI
TcmPhysicalEnable(
VOID
);
EFI_STATUS
EFIAPI
TcmPhysicalDisable(
VOID
);
EFI_STATUS
EFIAPI
TcmPhysicalSetDeactivated(
VOID
);
EFI_STATUS
EFIAPI
TcmForceClear(
VOID
);
EFI_STATUS
EFIAPI
TcmGetFlags(
VOID
);
EFI_STATUS
EFIAPI
TcmDxeEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
data(
VOID
);
EFI_STATUS
EFIAPI
gImageHandle = NULL;(
VOID
);
EFI_STATUS
EFIAPI
callback GUID from .rdata section(
VOID
);
EFI_STATUS
EFIAPI
EFI_GUID gTcpaCallbackGuid; // {0x6B221186, 0x7E6F, 0x4A71, ...} @ 0x18D0(
VOID
);
EFI_STATUS
EFIAPI
vendor/device ID signature(
VOID
);
EFI_STATUS
EFIAPI
FIFO interface constants(
VOID
);
EFI_STATUS
EFIAPI
response tag(
VOID
);
EFI_STATUS
EFIAPI
print wrappers(
VOID
);
EFI_STATUS
EFIAPI
CMOS register 0x4B for debug level(
VOID
);
EFI_STATUS
EFIAPI
(0x70, (IoRead8 (0x70) & 0x80) | 0x4B);(
VOID
);
EFI_STATUS
EFIAPI
equivalent(
VOID
);
EFI_STATUS
EFIAPI
Library context init(
VOID
);
EFI_STATUS
EFIAPI
list not found - assert(
VOID
);
EFI_STATUS
EFIAPI
((
VOID
);
EFI_STATUS
EFIAPI
Express / MMIO helpers(
VOID
);
EFI_STATUS
EFIAPI
- enable decode(
VOID
);
EFI_STATUS
EFIAPI
FIFO I/O primitives(
VOID
);
EFI_STATUS
EFIAPI
delay via RDTSC(
VOID
);
EFI_STATUS
EFIAPI
EFLAGS.IF before disabling interrupts(
VOID
);
EFI_STATUS
EFIAPI
= (AsmReadEflags () & 0x200) != 0;(
VOID
);
EFI_STATUS
EFIAPI
interrupts during the calibrated delay loop(
VOID
);
EFI_STATUS
EFIAPI
();(
VOID
);
EFI_STATUS
EFIAPI
FIFO command transmit/receive(
VOID
);
EFI_STATUS
EFIAPI
TCM presence: DID_VID must not be 0xFF(
VOID
);
EFI_STATUS
EFIAPI
(MmioRead8 (TcmAddr + TCM_FIFO_REG_DID_VID) == 0xFF) {(
VOID
);
EFI_STATUS
EFIAPI
locality: write active locality request(
VOID
);
EFI_STATUS
EFIAPI
(MmioRead8 (TcmAddr + TCM_FIFO_REG_ACCESS) == 0xFF) {(
VOID
);
EFI_STATUS
EFIAPI
for locality to be granted: Access register < 0xFF(
VOID
);
EFI_STATUS
EFIAPI
= TcmRegisterWrite ((
VOID
);
EFI_STATUS
EFIAPI
for command: set STS.commandReady(
VOID
);
EFI_STATUS
EFIAPI
(TcmAddr + TCM_FIFO_REG_STS, TCM_STS_CMD_READY);(
VOID
);
EFI_STATUS
EFIAPI
reg relative(
VOID
);
EFI_STATUS
EFIAPI
command bytes to FIFO(
VOID
);
EFI_STATUS
EFIAPI
= 0;(
VOID
);
EFI_STATUS
EFIAPI
for STS_EXPECT to be set(
VOID
);
EFI_STATUS
EFIAPI
burst count before writing(
VOID
);
EFI_STATUS
EFIAPI
be unused depending on TCM model(
VOID
);
EFI_STATUS
EFIAPI
data byte to FIFO(
VOID
);
EFI_STATUS
EFIAPI
= SendBuffer[Index];(
VOID
);
EFI_STATUS
EFIAPI
end of data(
VOID
);
EFI_STATUS
EFIAPI
command execution: write GO bit(
VOID
);
EFI_STATUS
EFIAPI
(TcmAddr + TCM_FIFO_REG_STS, TCM_STS_GO);(
VOID
);
EFI_STATUS
EFIAPI
for data available(
VOID
);
EFI_STATUS
EFIAPI
response data(
VOID
);
EFI_STATUS
EFIAPI
status word to get FIFO byte count(
VOID
);
EFI_STATUS
EFIAPI
(Locality, &FifoWord);(
VOID
);
EFI_STATUS
EFIAPI
too small(
VOID
);
EFI_STATUS
EFIAPI
remaining bytes(
VOID
);
EFI_STATUS
EFIAPI
(FifoWord > 0) {(
VOID
);
EFI_STATUS
EFIAPI
whether we have the full response header(
VOID
);
EFI_STATUS
EFIAPI
(RecvIdx >= 6) {(
VOID
);
EFI_STATUS
EFIAPI
release: clear access register(
VOID
);
EFI_STATUS
EFIAPI
(TcmAddr + TCM_FIFO_REG_ACCESS, 0x20);(
VOID
);
EFI_STATUS
EFIAPI
header: response is at offset 10 from raw data(
VOID
);
EFI_STATUS
EFIAPI
= RecvIdx - 10;(
VOID
);
EFI_STATUS
EFIAPI
success / status(
VOID
);
EFI_STATUS
EFIAPI
TcmCheckResponse ((UINT16 *)RecvBuffer);(
VOID
);
EFI_STATUS
EFIAPI
command wrappers(
VOID
);
EFI_STATUS
EFIAPI
buffer for response(
VOID
);
EFI_STATUS
EFIAPI
physical enable, set deactivated flag to FALSE(
VOID
);
EFI_STATUS
EFIAPI
= TcmPhysicalSetDeactivated (FALSE);(
VOID
);
EFI_STATUS
EFIAPI
set deactivated flag to TRUE, then physical disable(
VOID
);
EFI_STATUS
EFIAPI
= TcmPhysicalSetDeactivated (TRUE);(
VOID
);
EFI_STATUS
EFIAPI
volatile flags via sub-capability 273(
VOID
);
EFI_STATUS
EFIAPI
= 273;(
VOID
);
EFI_STATUS
EFIAPI
Driver Entry Point(
VOID
);
EFI_STATUS
EFIAPI
have ImageHandle(
VOID
);
EFI_STATUS
EFIAPI
(ImageHandle == NULL) {(
VOID
);
EFI_STATUS
EFIAPI
have SystemTable(
VOID
);
EFI_STATUS
EFIAPI
(SystemTable == NULL) {(
VOID
);
EFI_STATUS
EFIAPI
have BootServices(
VOID
);
EFI_STATUS
EFIAPI
(gBootServices == NULL) {(
VOID
);
EFI_STATUS
EFIAPI
have RuntimeServices(
VOID
);
EFI_STATUS
EFIAPI
(gRuntimeServices == NULL) {(
VOID
);
EFI_STATUS
EFIAPI
HOB list(
VOID
);
EFI_STATUS
EFIAPI
PCI Express MMIO base address(
VOID
);
EFI_STATUS
EFIAPI
= ((UINT64 (*)(UINTN))TcmGetPcdDb ()->GetPcd ())(5);(
VOID
);
EFI_STATUS
EFIAPI
PCI Express decoding is enabled, write the decode enable register(
VOID
);
EFI_STATUS
EFIAPI
((INT8)TcmPciExpressGetAddr (1024068) >= 0) {(
VOID
);
EFI_STATUS
EFIAPI
for TCM presence via signature word at DID_VID register(
VOID
);
EFI_STATUS
EFIAPI
= AsmReadEflags ();(
VOID
);
EFI_STATUS
EFIAPI
interrupts, check TCM signature(
VOID
);
EFI_STATUS
EFIAPI
TCM signature matches, register callback(
VOID
);
EFI_STATUS
EFIAPI
(MmioRead16 (TCM_BASE_ADDRESS + TCM_FIFO_REG_DID_VID) == TCM_SIGNATURE_WORD) {(
VOID
);
EFI_STATUS
EFIAPI
delay to ensure TCM is ready(
VOID
);
EFI_STATUS
EFIAPI
(1288);(
VOID
);
EFI_STATUS
EFIAPI
for TCM ready...(
VOID
);
EFI_STATUS
EFIAPI
((((UINT32)TcmSignature + 357 - (UINT32)IoRead32 (1288)) & 0x800000) == 0) {(
VOID
);
EFI_STATUS
EFIAPI
remaining RDTSC delta(
VOID
);
EFI_STATUS
EFIAPI
found - register the TCG callback(
VOID
);
EFI_STATUS
EFIAPI
(); // Flush(
VOID
);
EFI_STATUS
EFIAPI
callback for TCG physical presence protocol(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->RegisterProtocolNotify ((
VOID
);
EFI_STATUS
EFIAPI
function(
VOID
);
#endif /* __TCMDXE_H__ */