summaryrefslogtreecommitdiffstats
path: root/MdePkg/Library/MipiSysTLib/Platform.h
blob: ac77edf33d71862fa50d98d54facf0208a2bfbf4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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_