summaryrefslogtreecommitdiffstats
path: root/MdePkg/Library/MipiSysTLib/Platform.h
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Library/MipiSysTLib/Platform.h')
-rw-r--r--MdePkg/Library/MipiSysTLib/Platform.h138
1 files changed, 138 insertions, 0 deletions
diff --git a/MdePkg/Library/MipiSysTLib/Platform.h b/MdePkg/Library/MipiSysTLib/Platform.h
new file mode 100644
index 0000000000..ac77edf33d
--- /dev/null
+++ b/MdePkg/Library/MipiSysTLib/Platform.h
@@ -0,0 +1,138 @@
+/** @file
+This header file declares functions and structures.
+
+Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
+
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef MIPI_SYST_PLATFORM_H_
+#define MIPI_SYST_PLATFORM_H_
+
+typedef struct {
+ UINT64 MmioAddr;
+} TRACE_HUB_PLATFORM_SYST_DATA;
+
+struct mipi_syst_platform_handle {
+ TRACE_HUB_PLATFORM_SYST_DATA TraceHubPlatformData;
+};
+
+/**
+ Write 4 bytes to Trace Hub MMIO addr + 0x10.
+
+ @param[in] MipiSystHandle A pointer to MIPI_SYST_HANDLE structure.
+ @param[in] Data Data to be written.
+**/
+VOID
+EFIAPI
+MipiSystWriteD32Ts (
+ IN VOID *MipiSystHandle,
+ IN UINT32 Data
+ );
+
+/**
+ Write 4 bytes to Trace Hub MMIO addr + 0x18.
+
+ @param[in] MipiSystHandle A pointer to MIPI_SYST_HANDLE structure.
+ @param[in] Data Data to be written.
+**/
+VOID
+EFIAPI
+MipiSystWriteD32Mts (
+ IN VOID *MipiSystHandle,
+ IN UINT32 Data
+ );
+
+/**
+ Write 8 bytes to Trace Hub MMIO addr + 0x18.
+
+ @param[in] MipiSystHandle A pointer to MIPI_SYST_HANDLE structure.
+ @param[in] Data Data to be written.
+**/
+VOID
+EFIAPI
+MipiSystWriteD64Mts (
+ IN VOID *MipiSystHandle,
+ IN UINT64 Data
+ );
+
+/**
+ Write 1 byte to Trace Hub MMIO addr + 0x0.
+
+ @param[in] MipiSystHandle A pointer to MIPI_SYST_HANDLE structure.
+ @param[in] Data Data to be written.
+**/
+VOID
+EFIAPI
+MipiSystWriteD8 (
+ IN VOID *MipiSystHandle,
+ IN UINT8 Data
+ );
+
+/**
+ Write 2 bytes to Trace Hub MMIO mmio addr + 0x0.
+
+ @param[in] MipiSystHandle A pointer to MIPI_SYST_HANDLE structure.
+ @param[in] Data Data to be written.
+**/
+VOID
+EFIAPI
+MipiSystWriteD16 (
+ IN VOID *MipiSystHandle,
+ IN UINT16 Data
+ );
+
+/**
+ Write 4 bytes to Trace Hub MMIO addr + 0x0.
+
+ @param[in] MipiSystHandle A pointer to MIPI_SYST_HANDLE structure.
+ @param[in] Data Data to be written.
+**/
+VOID
+EFIAPI
+MipiSystWriteD32 (
+ IN VOID *MipiSystHandle,
+ IN UINT32 Data
+ );
+
+/**
+ Write 8 bytes to Trace Hub MMIO addr + 0x0.
+
+ @param[in] MipiSystHandle A pointer to MIPI_SYST_HANDLE structure.
+ @param[in] Data Data to be written.
+**/
+VOID
+EFIAPI
+MipiSystWriteD64 (
+ IN VOID *MipiSystHandle,
+ IN UINT64 Data
+ );
+
+/**
+ Clear data in Trace Hub MMIO addr + 0x30.
+
+ @param[in] MipiSystHandle A pointer to MIPI_SYST_HANDLE structure.
+**/
+VOID
+EFIAPI
+MipiSystWriteFlag (
+ IN VOID *MipiSystHandle
+ );
+
+#define MIPI_SYST_PLATFORM_CLOCK() 1000 // (unit: MicroSecond)
+
+#ifndef MIPI_SYST_PCFG_ENABLE_PLATFORM_STATE_DATA
+#define MIPI_SYST_OUTPUT_D32TS(MipiSystHandle, Data) MipiSystWriteD32Ts ((MipiSystHandle), (Data))
+#define MIPI_SYST_OUTPUT_D32MTS(MipiSystHandle, Data) MipiSystWriteD32Mts ((MipiSystHandle), (Data))
+#define MIPI_SYST_OUTPUT_D64MTS(MipiSystHandle, Data) MipiSystWriteD64Mts ((MipiSystHandle), (Data))
+#define MIPI_SYST_OUTPUT_D8(MipiSystHandle, Data) MipiSystWriteD8 ((MipiSystHandle), (Data))
+#define MIPI_SYST_OUTPUT_D16(MipiSystHandle, Data) MipiSystWriteD16 ((MipiSystHandle), (Data))
+#define MIPI_SYST_OUTPUT_D32(MipiSystHandle, Data) MipiSystWriteD32 ((MipiSystHandle), (Data))
+ #if defined (MIPI_SYST_PCFG_ENABLE_64BIT_IO)
+#define MIPI_SYST_OUTPUT_D64(MipiSystHandle, Data) MipiSystWriteD64 ((MipiSystHandle), (Data))
+ #endif
+#define MIPI_SYST_OUTPUT_FLAG(MipiSystHandle) MipiSystWriteFlag ((MipiSystHandle))
+#endif
+
+#endif // MIPI_SYST_PLATFORM_H_