Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  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
  319.