Subversion Repositories Kolibri OS

Rev

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