Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1029 | serge | 1 | /* |
2 | * Copyright 2006-2007 Advanced Micro Devices, Inc. |
||
3 | * |
||
4 | * Permission is hereby granted, free of charge, to any person obtaining a |
||
5 | * copy of this software and associated documentation files (the "Software"), |
||
6 | * to deal in the Software without restriction, including without limitation |
||
7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
||
8 | * and/or sell copies of the Software, and to permit persons to whom the |
||
9 | * Software is furnished to do so, subject to the following conditions: |
||
10 | * |
||
11 | * The above copyright notice and this permission notice shall be included in |
||
12 | * all copies or substantial portions of the Software. |
||
13 | * |
||
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||
16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
||
17 | * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR |
||
18 | * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
||
19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
||
20 | * OTHER DEALINGS IN THE SOFTWARE. |
||
21 | */ |
||
22 | |||
23 | #ifndef _HW_SERVICES_INTERFACE_ |
||
24 | #define _HW_SERVICES_INTERFACE_ |
||
25 | |||
26 | #include "CD_Common_Types.h" |
||
27 | #include "CD_Structs.h" |
||
28 | |||
29 | |||
30 | // CD - from Command Decoder |
||
31 | typedef UINT16 CD_REG_INDEX; |
||
32 | typedef UINT8 CD_PCI_OFFSET; |
||
33 | typedef UINT16 CD_FB_OFFSET; |
||
34 | typedef UINT16 CD_SYS_IO_PORT; |
||
35 | typedef UINT8 CD_MEM_TYPE; |
||
36 | typedef UINT8 CD_MEM_SIZE; |
||
37 | |||
38 | typedef VOID * CD_VIRT_ADDR; |
||
39 | typedef UINT32 CD_PHYS_ADDR; |
||
40 | typedef UINT32 CD_IO_ADDR; |
||
41 | |||
42 | /***********************ATI Registers access routines**************************/ |
||
43 | |||
44 | VOID ReadIndReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
45 | |||
46 | VOID WriteIndReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
47 | |||
48 | UINT32 ReadReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
49 | |||
50 | VOID WriteReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
51 | |||
52 | UINT32 ReadPLL32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
53 | |||
54 | VOID WritePLL32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
55 | |||
56 | UINT32 ReadMC32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
57 | |||
58 | VOID WriteMC32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
59 | |||
60 | /************************PCI Registers access routines*************************/ |
||
61 | |||
62 | UINT8 ReadPCIReg8(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
63 | |||
64 | UINT16 ReadPCIReg16(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
65 | |||
66 | UINT32 ReadPCIReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
67 | |||
68 | VOID WritePCIReg8(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
69 | |||
70 | VOID WritePCIReg16(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
71 | |||
72 | VOID WritePCIReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
73 | |||
74 | /***************************Frame buffer access routines************************/ |
||
75 | |||
76 | UINT32 ReadFrameBuffer32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
77 | |||
78 | VOID WriteFrameBuffer32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
79 | |||
80 | /******************System IO Registers access routines********************/ |
||
81 | |||
82 | UINT8 ReadSysIOReg8(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
83 | |||
84 | UINT16 ReadSysIOReg16(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
85 | |||
86 | UINT32 ReadSysIOReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
87 | |||
88 | VOID WriteSysIOReg8(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
89 | |||
90 | VOID WriteSysIOReg16(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
91 | |||
92 | VOID WriteSysIOReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
93 | |||
94 | /****************************Delay routines****************************************/ |
||
95 | |||
96 | VOID DelayMicroseconds(PARSER_TEMP_DATA STACK_BASED * pParserTempData); // take WORKING_TABLE_DATA->SourceData32 as a delay value |
||
97 | |||
98 | VOID DelayMilliseconds(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
99 | |||
100 | VOID PostCharOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
101 | |||
102 | VOID CallerDebugFunc(PARSER_TEMP_DATA STACK_BASED * pParserTempData); |
||
103 | |||
104 | |||
105 | //************************Tracing/Debugging routines and macroses******************/ |
||
106 | #define KEYPRESSED -1 |
||
107 | |||
108 | #if (DEBUG_PARSER != 0) |
||
109 | |||
110 | #ifdef DRIVER_PARSER |
||
111 | |||
112 | VOID CD_print_string (DEVICE_DATA STACK_BASED *pDeviceData, UINT8 *str); |
||
113 | VOID CD_print_value (DEVICE_DATA STACK_BASED *pDeviceData, ULONG_PTR value, UINT16 value_type ); |
||
114 | |||
115 | // Level 1 : can use WorkingTableData or pDeviceData |
||
116 | #define CD_TRACE_DL1(string) CD_print_string(pDeviceData, string); |
||
117 | #define CD_TRACETAB_DL1(string) CD_TRACE_DL1("\n");CD_TRACE_DL1(string) |
||
118 | #define CD_TRACEDEC_DL1(value) CD_print_value( pDeviceData, (ULONG_PTR)value, PARSER_DEC); |
||
119 | #define CD_TRACEHEX_DL1(value) CD_print_value( pDeviceData, (ULONG_PTR)value, PARSER_HEX); |
||
120 | |||
121 | // Level 2:can use pWorkingTableData |
||
122 | #define CD_TRACE_DL2(string) CD_print_string( pWorkingTableData->pParserTempData->pDeviceData, string); |
||
123 | #define CD_TRACETAB_DL2(string) CD_TRACE_DL2("\n");CD_TRACE_DL2(string) |
||
124 | #define CD_TRACEDEC_DL2(value) CD_print_value( pWorkingTableData->pParserTempData->pDeviceData, (ULONG_PTR)value, PARSER_DEC); |
||
125 | #define CD_TRACEHEX_DL2(value) CD_print_value( pWorkingTableData->pParserTempData->pDeviceData, (ULONG_PTR)value, PARSER_HEX); |
||
126 | |||
127 | // Level 3:can use pWorkingTableData |
||
128 | #define CD_TRACE_DL3(string) CD_print_string( pWorkingTableData->pParserTempData->pDeviceData, string); |
||
129 | #define CD_TRACETAB_DL3(string) CD_TRACE_DL3("\n");CD_TRACE_DL3(string) |
||
130 | #define CD_TRACEDEC_DL3(value) CD_print_value( pWorkingTableData->pParserTempData->pDeviceData, value, PARSER_DEC); |
||
131 | #define CD_TRACEHEX_DL3(value) CD_print_value( pWorkingTableData->pParserTempData->pDeviceData, value, PARSER_HEX); |
||
132 | |||
133 | #define CD_TRACE(string) |
||
134 | #define CD_WAIT(what) |
||
135 | #define CD_BREAKPOINT() |
||
136 | |||
137 | #else |
||
138 | |||
139 | |||
140 | VOID CD_assert (UINT8 *file, INTN lineno); //output file/line to debug console |
||
141 | VOID CD_postcode(UINT8 value); //output post code to debug console |
||
142 | VOID CD_print (UINT8 *str); //output text to debug console |
||
143 | VOID CD_print_dec(UINTN value); //output value in decimal format to debug console |
||
144 | VOID CD_print_hex(UINT32 value, UINT8 len); //output value in hexadecimal format to debug console |
||
145 | VOID CD_print_buf(UINT8 *p, UINTN len); //output dump of memory to debug console |
||
146 | VOID CD_wait(INT32 what); //wait for KEYPRESSED=-1 or Delay value expires |
||
147 | VOID CD_breakpoint(); //insert int3 opcode or 0xF1 (for American Arium) |
||
148 | |||
149 | #define CD_ASSERT(condition) if(!(condition)) CD_assert(__FILE__, __LINE__) |
||
150 | #define CD_POSTCODE(value) CD_postcode(value) |
||
151 | #define CD_TRACE(string) CD_print(string) |
||
152 | #define CD_TRACETAB(string) CD_print(string) |
||
153 | #define CD_TRACEDEC(value) CD_print_dec( (UINTN)(value)) |
||
154 | #define CD_TRACEHEX(value) CD_print_hex( (UINT32)(value), sizeof(value) ) |
||
155 | #define CD_TRACEBUF(pointer, len) CD_print_buf( (UINT8 *)(pointer), (UINTN) len) |
||
156 | #define CD_WAIT(what) CD_wait((INT32)what) |
||
157 | #define CD_BREAKPOINT() CD_breakpoint() |
||
158 | |||
159 | #if (DEBUG_PARSER == 4) |
||
160 | #define CD_ASSERT_DL4(condition) if(!(condition)) CD_assert(__FILE__, __LINE__) |
||
161 | #define CD_POSTCODE_DL4(value) CD_postcode(value) |
||
162 | #define CD_TRACE_DL4(string) CD_print(string) |
||
163 | #define CD_TRACETAB_DL4(string) CD_print("\n\t\t");CD_print(string) |
||
164 | #define CD_TRACEDEC_DL4(value) CD_print_dec( (UINTN)(value)) |
||
165 | #define CD_TRACEHEX_DL4(value) CD_print_hex( (UINT32)(value), sizeof(value) ) |
||
166 | #define CD_TRACEBUF_DL4(pointer, len) CD_print_buf( (UINT8 *)(pointer), (UINTN) len) |
||
167 | #define CD_WAIT_DL4(what) CD_wait((INT32)what) |
||
168 | #define CD_BREAKPOINT_DL4() CD_breakpoint() |
||
169 | #else |
||
170 | #define CD_ASSERT_DL4(condition) |
||
171 | #define CD_POSTCODE_DL4(value) |
||
172 | #define CD_TRACE_DL4(string) |
||
173 | #define CD_TRACETAB_DL4(string) |
||
174 | #define CD_TRACEDEC_DL4(value) |
||
175 | #define CD_TRACEHEX_DL4(value) |
||
176 | #define CD_TRACEBUF_DL4(pointer, len) |
||
177 | #define CD_WAIT_DL4(what) |
||
178 | #define CD_BREAKPOINT_DL4() |
||
179 | #endif |
||
180 | |||
181 | #if (DEBUG_PARSER >= 3) |
||
182 | #define CD_ASSERT_DL3(condition) if(!(condition)) CD_assert(__FILE__, __LINE__) |
||
183 | #define CD_POSTCODE_DL3(value) CD_postcode(value) |
||
184 | #define CD_TRACE_DL3(string) CD_print(string) |
||
185 | #define CD_TRACETAB_DL3(string) CD_print("\n\t\t");CD_print(string) |
||
186 | #define CD_TRACEDEC_DL3(value) CD_print_dec( (UINTN)(value)) |
||
187 | #define CD_TRACEHEX_DL3(value) CD_print_hex( (UINT32)(value), sizeof(value) ) |
||
188 | #define CD_TRACEBUF_DL3(pointer, len) CD_print_buf( (UINT8 *)(pointer), (UINTN) len) |
||
189 | #define CD_WAIT_DL3(what) CD_wait((INT32)what) |
||
190 | #define CD_BREAKPOINT_DL3() CD_breakpoint() |
||
191 | #else |
||
192 | #define CD_ASSERT_DL3(condition) |
||
193 | #define CD_POSTCODE_DL3(value) |
||
194 | #define CD_TRACE_DL3(string) |
||
195 | #define CD_TRACETAB_DL3(string) |
||
196 | #define CD_TRACEDEC_DL3(value) |
||
197 | #define CD_TRACEHEX_DL3(value) |
||
198 | #define CD_TRACEBUF_DL3(pointer, len) |
||
199 | #define CD_WAIT_DL3(what) |
||
200 | #define CD_BREAKPOINT_DL3() |
||
201 | #endif |
||
202 | |||
203 | |||
204 | #if (DEBUG_PARSER >= 2) |
||
205 | #define CD_ASSERT_DL2(condition) if(!(condition)) CD_assert(__FILE__, __LINE__) |
||
206 | #define CD_POSTCODE_DL2(value) CD_postcode(value) |
||
207 | #define CD_TRACE_DL2(string) CD_print(string) |
||
208 | #define CD_TRACETAB_DL2(string) CD_print("\n\t");CD_print(string) |
||
209 | #define CD_TRACEDEC_DL2(value) CD_print_dec( (UINTN)(value)) |
||
210 | #define CD_TRACEHEX_DL2(value) CD_print_hex( (UINT32)(value), sizeof(value) ) |
||
211 | #define CD_TRACEBUF_DL2(pointer, len) CD_print_buf( (UINT8 *)(pointer), (UINTN) len) |
||
212 | #define CD_WAIT_DL2(what) CD_wait((INT32)what) |
||
213 | #define CD_BREAKPOINT_DL2() CD_breakpoint() |
||
214 | #else |
||
215 | #define CD_ASSERT_DL2(condition) |
||
216 | #define CD_POSTCODE_DL2(value) |
||
217 | #define CD_TRACE_DL2(string) |
||
218 | #define CD_TRACETAB_DL2(string) |
||
219 | #define CD_TRACEDEC_DL2(value) |
||
220 | #define CD_TRACEHEX_DL2(value) |
||
221 | #define CD_TRACEBUF_DL2(pointer, len) |
||
222 | #define CD_WAIT_DL2(what) |
||
223 | #define CD_BREAKPOINT_DL2() |
||
224 | #endif |
||
225 | |||
226 | |||
227 | #if (DEBUG_PARSER >= 1) |
||
228 | #define CD_ASSERT_DL1(condition) if(!(condition)) CD_assert(__FILE__, __LINE__) |
||
229 | #define CD_POSTCODE_DL1(value) CD_postcode(value) |
||
230 | #define CD_TRACE_DL1(string) CD_print(string) |
||
231 | #define CD_TRACETAB_DL1(string) CD_print("\n");CD_print(string) |
||
232 | #define CD_TRACEDEC_DL1(value) CD_print_dec( (UINTN)(value)) |
||
233 | #define CD_TRACEHEX_DL1(value) CD_print_hex( (UINT32)(value), sizeof(value) ) |
||
234 | #define CD_TRACEBUF_DL1(pointer, len) CD_print_buf( (UINT8 *)(pointer), (UINTN) len) |
||
235 | #define CD_WAIT_DL1(what) CD_wait((INT32)what) |
||
236 | #define CD_BREAKPOINT_DL1() CD_breakpoint() |
||
237 | #else |
||
238 | #define CD_ASSERT_DL1(condition) |
||
239 | #define CD_POSTCODE_DL1(value) |
||
240 | #define CD_TRACE_DL1(string) |
||
241 | #define CD_TRACETAB_DL1(string) |
||
242 | #define CD_TRACEDEC_DL1(value) |
||
243 | #define CD_TRACEHEX_DL1(value) |
||
244 | #define CD_TRACEBUF_DL1(pointer, len) |
||
245 | #define CD_WAIT_DL1(what) |
||
246 | #define CD_BREAKPOINT_DL1() |
||
247 | #endif |
||
248 | |||
249 | #endif //#ifdef DRIVER_PARSER |
||
250 | |||
251 | |||
252 | #else |
||
253 | |||
254 | #define CD_ASSERT(condition) |
||
255 | #define CD_POSTCODE(value) |
||
256 | #define CD_TRACE(string) |
||
257 | #define CD_TRACEDEC(value) |
||
258 | #define CD_TRACEHEX(value) |
||
259 | #define CD_TRACEBUF(pointer, len) |
||
260 | #define CD_WAIT(what) |
||
261 | #define CD_BREAKPOINT() |
||
262 | |||
263 | #define CD_ASSERT_DL4(condition) |
||
264 | #define CD_POSTCODE_DL4(value) |
||
265 | #define CD_TRACE_DL4(string) |
||
266 | #define CD_TRACETAB_DL4(string) |
||
267 | #define CD_TRACEDEC_DL4(value) |
||
268 | #define CD_TRACEHEX_DL4(value) |
||
269 | #define CD_TRACEBUF_DL4(pointer, len) |
||
270 | #define CD_WAIT_DL4(what) |
||
271 | #define CD_BREAKPOINT_DL4() |
||
272 | |||
273 | #define CD_ASSERT_DL3(condition) |
||
274 | #define CD_POSTCODE_DL3(value) |
||
275 | #define CD_TRACE_DL3(string) |
||
276 | #define CD_TRACETAB_DL3(string) |
||
277 | #define CD_TRACEDEC_DL3(value) |
||
278 | #define CD_TRACEHEX_DL3(value) |
||
279 | #define CD_TRACEBUF_DL3(pointer, len) |
||
280 | #define CD_WAIT_DL3(what) |
||
281 | #define CD_BREAKPOINT_DL3() |
||
282 | |||
283 | #define CD_ASSERT_DL2(condition) |
||
284 | #define CD_POSTCODE_DL2(value) |
||
285 | #define CD_TRACE_DL2(string) |
||
286 | #define CD_TRACETAB_DL2(string) |
||
287 | #define CD_TRACEDEC_DL2(value) |
||
288 | #define CD_TRACEHEX_DL2(value) |
||
289 | #define CD_TRACEBUF_DL2(pointer, len) |
||
290 | #define CD_WAIT_DL2(what) |
||
291 | #define CD_BREAKPOINT_DL2() |
||
292 | |||
293 | #define CD_ASSERT_DL1(condition) |
||
294 | #define CD_POSTCODE_DL1(value) |
||
295 | #define CD_TRACE_DL1(string) |
||
296 | #define CD_TRACETAB_DL1(string) |
||
297 | #define CD_TRACEDEC_DL1(value) |
||
298 | #define CD_TRACEHEX_DL1(value) |
||
299 | #define CD_TRACEBUF_DL1(pointer, len) |
||
300 | #define CD_WAIT_DL1(what) |
||
301 | #define CD_BREAKPOINT_DL1() |
||
302 | |||
303 | |||
304 | #endif //#if (DEBUG_PARSER > 0) |
||
305 | |||
306 | |||
307 | #ifdef CHECKSTACK |
||
308 | VOID CD_fillstack(UINT16 size); |
||
309 | UINT16 CD_checkstack(UINT16 size); |
||
310 | #define CD_CHECKSTACK(stacksize) CD_checkstack(stacksize) |
||
311 | #define CD_FILLSTACK(stacksize) CD_fillstack(stacksize) |
||
312 | #else |
||
313 | #define CD_CHECKSTACK(stacksize) 0 |
||
314 | #define CD_FILLSTACK(stacksize) |
||
315 | #endif |
||
316 | |||
317 | |||
318 | #endif |