]> git.proxmox.com Git - mirror_edk2.git/blame - QuarkSocPkg/QuarkNorthCluster/Include/Library/QNCAccessLib.h
QuarkSocPkg: Add new package for Quark SoC X1000
[mirror_edk2.git] / QuarkSocPkg / QuarkNorthCluster / Include / Library / QNCAccessLib.h
CommitLineData
9b6bbcdb
MK
1/** @file\r
2Library functions for Setting QNC internal network port\r
3\r
4Copyright (c) 2013-2015 Intel Corporation.\r
5\r
6This program and the accompanying materials\r
7are licensed and made available under the terms and conditions of the BSD License\r
8which accompanies this distribution. The full text of the license may be found at\r
9http://opensource.org/licenses/bsd-license.php\r
10\r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#ifndef __QNC_ACCESS_LIB_H__\r
17#define __QNC_ACCESS_LIB_H__\r
18\r
19#include <IntelQNCRegs.h>\r
20\r
21#define MESSAGE_READ_DW(Port, Reg) \\r
22 (UINT32)((QUARK_OPCODE_READ << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)\r
23\r
24#define MESSAGE_WRITE_DW(Port, Reg) \\r
25 (UINT32)((QUARK_OPCODE_WRITE << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)\r
26\r
27#define ALT_MESSAGE_READ_DW(Port, Reg) \\r
28 (UINT32)((QUARK_ALT_OPCODE_READ << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)\r
29\r
30#define ALT_MESSAGE_WRITE_DW(Port, Reg) \\r
31 (UINT32)((QUARK_ALT_OPCODE_WRITE << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)\r
32\r
33#define MESSAGE_IO_READ_DW(Port, Reg) \\r
34 (UINT32)((QUARK_OPCODE_IO_READ << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)\r
35\r
36#define MESSAGE_IO_WRITE_DW(Port, Reg) \\r
37 (UINT32)((QUARK_OPCODE_IO_WRITE << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)\r
38\r
39#define MESSAGE_SHADOW_DW(Port, Reg) \\r
40 (UINT32)((QUARK_DRAM_BASE_ADDR_READY << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)\r
41\r
42\r
43/**\r
44 Read required data from QNC internal message network\r
45**/\r
46UINT32\r
47EFIAPI\r
48QNCPortRead(\r
49 UINT8 Port,\r
50 UINT32 RegAddress\r
51 );\r
52\r
53/**\r
54 Write prepared data into QNC internal message network.\r
55\r
56**/\r
57VOID\r
58EFIAPI\r
59QNCPortWrite (\r
60 UINT8 Port,\r
61 UINT32 RegAddress,\r
62 UINT32 WriteValue\r
63 );\r
64\r
65/**\r
66 Read required data from QNC internal message network\r
67**/\r
68UINT32\r
69EFIAPI\r
70QNCAltPortRead(\r
71 UINT8 Port,\r
72 UINT32 RegAddress\r
73 );\r
74\r
75/**\r
76 Write prepared data into QNC internal message network.\r
77\r
78**/\r
79VOID\r
80EFIAPI\r
81QNCAltPortWrite (\r
82 UINT8 Port,\r
83 UINT32 RegAddress,\r
84 UINT32 WriteValue\r
85 );\r
86\r
87/**\r
88 Read required data from QNC internal message network\r
89**/\r
90UINT32\r
91EFIAPI\r
92QNCPortIORead(\r
93 UINT8 Port,\r
94 UINT32 RegAddress\r
95 );\r
96\r
97/**\r
98 Write prepared data into QNC internal message network.\r
99\r
100**/\r
101VOID\r
102EFIAPI\r
103QNCPortIOWrite (\r
104 UINT8 Port,\r
105 UINT32 RegAddress,\r
106 UINT32 WriteValue\r
107 );\r
108\r
109/**\r
110 This is for the special consideration for QNC MMIO write, as required by FWG,\r
111 a reading must be performed after MMIO writing to ensure the expected write\r
112 is processed and data is flushed into chipset\r
113\r
114**/\r
115RETURN_STATUS\r
116EFIAPI\r
117QNCMmIoWrite (\r
118 UINT32 MmIoAddress,\r
119 QNC_MEM_IO_WIDTH Width,\r
120 UINT32 DataNumber,\r
121 VOID *pData\r
122 );\r
123\r
124UINT32\r
125EFIAPI\r
126QncHsmmcRead (\r
127 VOID\r
128 );\r
129\r
130VOID\r
131EFIAPI\r
132QncHsmmcWrite (\r
133 UINT32 WriteValue\r
134 );\r
135\r
136VOID\r
137EFIAPI\r
138QncImrWrite (\r
139 UINT32 ImrBaseOffset,\r
140 UINT32 ImrLow,\r
141 UINT32 ImrHigh,\r
142 UINT32 ImrReadMask,\r
143 UINT32 ImrWriteMask\r
144 );\r
145\r
146VOID\r
147EFIAPI\r
148QncIClkAndThenOr (\r
149 UINT32 RegAddress,\r
150 UINT32 AndValue,\r
151 UINT32 OrValue\r
152 );\r
153\r
154VOID\r
155EFIAPI\r
156QncIClkOr (\r
157 UINT32 RegAddress,\r
158 UINT32 OrValue\r
159 );\r
160\r
161UINTN\r
162EFIAPI\r
163QncGetPciExpressBaseAddress (\r
164 VOID\r
165 );\r
166\r
167#endif\r