1 /**********************************************************************
2 Copyright (c) Imagination Technologies Ltd.
4 Permission is hereby granted, free of charge, to any person obtaining a copy
5 of this software and associated documentation files (the "Software"), to deal
6 in the Software without restriction, including without limitation the rights
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 copies of the Software, and to permit persons to whom the Software is
9 furnished to do so, subject to the following conditions:
11 The above copyright notice and this permission notice shall be included in
12 all copies or substantial portions of the Software.
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 THE
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 ******************************************************************************/
29 #define DEBUG_CAPMODE_FRAMED 0x00000001UL
30 #define DEBUG_CAPMODE_CONTINUOUS 0x00000002UL
31 #define DEBUG_CAPMODE_HOTKEY 0x00000004UL
33 #define DEBUG_OUTMODE_STANDARDDBG 0x00000001UL
34 #define DEBUG_OUTMODE_MONO 0x00000002UL
35 #define DEBUG_OUTMODE_STREAMENABLE 0x00000004UL
36 #define DEBUG_OUTMODE_ASYNC 0x00000008UL
37 #define DEBUG_OUTMODE_SGXVGA 0x00000010UL
39 #define DEBUG_FLAGS_USE_NONPAGED_MEM 0x00000001UL
40 #define DEBUG_FLAGS_NO_BUF_EXPANDSION 0x00000002UL
41 #define DEBUG_FLAGS_ENABLESAMPLE 0x00000004UL
43 #define DEBUG_FLAGS_TEXTSTREAM 0x80000000UL
45 #define DEBUG_LEVEL_0 0x00000001UL
46 #define DEBUG_LEVEL_1 0x00000003UL
47 #define DEBUG_LEVEL_2 0x00000007UL
48 #define DEBUG_LEVEL_3 0x0000000FUL
49 #define DEBUG_LEVEL_4 0x0000001FUL
50 #define DEBUG_LEVEL_5 0x0000003FUL
51 #define DEBUG_LEVEL_6 0x0000007FUL
52 #define DEBUG_LEVEL_7 0x000000FFUL
53 #define DEBUG_LEVEL_8 0x000001FFUL
54 #define DEBUG_LEVEL_9 0x000003FFUL
55 #define DEBUG_LEVEL_10 0x000007FFUL
56 #define DEBUG_LEVEL_11 0x00000FFFUL
58 #define DEBUG_LEVEL_SEL0 0x00000001UL
59 #define DEBUG_LEVEL_SEL1 0x00000002UL
60 #define DEBUG_LEVEL_SEL2 0x00000004UL
61 #define DEBUG_LEVEL_SEL3 0x00000008UL
62 #define DEBUG_LEVEL_SEL4 0x00000010UL
63 #define DEBUG_LEVEL_SEL5 0x00000020UL
64 #define DEBUG_LEVEL_SEL6 0x00000040UL
65 #define DEBUG_LEVEL_SEL7 0x00000080UL
66 #define DEBUG_LEVEL_SEL8 0x00000100UL
67 #define DEBUG_LEVEL_SEL9 0x00000200UL
68 #define DEBUG_LEVEL_SEL10 0x00000400UL
69 #define DEBUG_LEVEL_SEL11 0x00000800UL
71 #define DEBUG_SERVICE_IOCTL_BASE 0x800UL
72 #define DEBUG_SERVICE_CREATESTREAM CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
73 #define DEBUG_SERVICE_DESTROYSTREAM CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
74 #define DEBUG_SERVICE_GETSTREAM CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x03, METHOD_BUFFERED, FILE_ANY_ACCESS)
75 #define DEBUG_SERVICE_WRITESTRING CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x04, METHOD_BUFFERED, FILE_ANY_ACCESS)
76 #define DEBUG_SERVICE_READSTRING CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x05, METHOD_BUFFERED, FILE_ANY_ACCESS)
77 #define DEBUG_SERVICE_WRITE CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x06, METHOD_BUFFERED, FILE_ANY_ACCESS)
78 #define DEBUG_SERVICE_READ CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x07, METHOD_BUFFERED, FILE_ANY_ACCESS)
79 #define DEBUG_SERVICE_SETDEBUGMODE CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS)
80 #define DEBUG_SERVICE_SETDEBUGOUTMODE CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x09, METHOD_BUFFERED, FILE_ANY_ACCESS)
81 #define DEBUG_SERVICE_SETDEBUGLEVEL CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x0A, METHOD_BUFFERED, FILE_ANY_ACCESS)
82 #define DEBUG_SERVICE_SETFRAME CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x0B, METHOD_BUFFERED, FILE_ANY_ACCESS)
83 #define DEBUG_SERVICE_GETFRAME CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x0C, METHOD_BUFFERED, FILE_ANY_ACCESS)
84 #define DEBUG_SERVICE_OVERRIDEMODE CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x0D, METHOD_BUFFERED, FILE_ANY_ACCESS)
85 #define DEBUG_SERVICE_DEFAULTMODE CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x0E, METHOD_BUFFERED, FILE_ANY_ACCESS)
86 #define DEBUG_SERVICE_GETSERVICETABLE CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x0F, METHOD_BUFFERED, FILE_ANY_ACCESS)
87 #define DEBUG_SERVICE_WRITE2 CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x10, METHOD_BUFFERED, FILE_ANY_ACCESS)
88 #define DEBUG_SERVICE_WRITESTRINGCM CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x11, METHOD_BUFFERED, FILE_ANY_ACCESS)
89 #define DEBUG_SERVICE_WRITECM CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS)
90 #define DEBUG_SERVICE_SETMARKER CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x13, METHOD_BUFFERED, FILE_ANY_ACCESS)
91 #define DEBUG_SERVICE_GETMARKER CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x14, METHOD_BUFFERED, FILE_ANY_ACCESS)
92 #define DEBUG_SERVICE_ISCAPTUREFRAME CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x15, METHOD_BUFFERED, FILE_ANY_ACCESS)
93 #define DEBUG_SERVICE_WRITELF CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x16, METHOD_BUFFERED, FILE_ANY_ACCESS)
94 #define DEBUG_SERVICE_READLF CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x17, METHOD_BUFFERED, FILE_ANY_ACCESS)
95 #define DEBUG_SERVICE_WAITFOREVENT CTL_CODE(FILE_DEVICE_UNKNOWN, DEBUG_SERVICE_IOCTL_BASE + 0x18, METHOD_BUFFERED, FILE_ANY_ACCESS)
98 typedef enum _DBG_EVENT_
100 DBG_EVENT_STREAM_DATA = 1
103 typedef struct _DBG_IN_CREATESTREAM_
105 IMG_UINT32 ui32Pages;
106 IMG_UINT32 ui32CapMode;
107 IMG_UINT32 ui32OutMode;
109 }DBG_IN_CREATESTREAM, *PDBG_IN_CREATESTREAM;
111 typedef struct _DBG_IN_FINDSTREAM_
113 IMG_BOOL bResetStream;
115 }DBG_IN_FINDSTREAM, *PDBG_IN_FINDSTREAM;
117 typedef struct _DBG_IN_WRITESTRING_
120 IMG_UINT32 ui32Level;
122 }DBG_IN_WRITESTRING, *PDBG_IN_WRITESTRING;
124 typedef struct _DBG_IN_READSTRING_
127 IMG_UINT32 ui32StringLen;
129 } DBG_IN_READSTRING, *PDBG_IN_READSTRING;
131 typedef struct _DBG_IN_SETDEBUGMODE_
135 IMG_UINT32 ui32Start;
137 IMG_UINT32 ui32SampleRate;
138 } DBG_IN_SETDEBUGMODE, *PDBG_IN_SETDEBUGMODE;
140 typedef struct _DBG_IN_SETDEBUGOUTMODE_
144 } DBG_IN_SETDEBUGOUTMODE, *PDBG_IN_SETDEBUGOUTMODE;
146 typedef struct _DBG_IN_SETDEBUGLEVEL_
149 IMG_UINT32 ui32Level;
150 } DBG_IN_SETDEBUGLEVEL, *PDBG_IN_SETDEBUGLEVEL;
152 typedef struct _DBG_IN_SETFRAME_
155 IMG_UINT32 ui32Frame;
156 } DBG_IN_SETFRAME, *PDBG_IN_SETFRAME;
158 typedef struct _DBG_IN_WRITE_
161 IMG_UINT32 ui32Level;
162 IMG_UINT32 ui32TransferSize;
163 IMG_UINT8 *pui8InBuffer;
164 } DBG_IN_WRITE, *PDBG_IN_WRITE;
166 typedef struct _DBG_IN_READ_
169 IMG_BOOL bReadInitBuffer;
170 IMG_UINT32 ui32OutBufferSize;
171 IMG_UINT8 *pui8OutBuffer;
172 } DBG_IN_READ, *PDBG_IN_READ;
174 typedef struct _DBG_IN_OVERRIDEMODE_
178 } DBG_IN_OVERRIDEMODE, *PDBG_IN_OVERRIDEMODE;
180 typedef struct _DBG_IN_ISCAPTUREFRAME_
183 IMG_BOOL bCheckPreviousFrame;
184 } DBG_IN_ISCAPTUREFRAME, *PDBG_IN_ISCAPTUREFRAME;
186 typedef struct _DBG_IN_SETMARKER_
189 IMG_UINT32 ui32Marker;
190 } DBG_IN_SETMARKER, *PDBG_IN_SETMARKER;
192 typedef struct _DBG_IN_WRITE_LF_
194 IMG_UINT32 ui32Flags;
196 IMG_UINT32 ui32Level;
197 IMG_UINT32 ui32BufferSize;
198 IMG_UINT8 *pui8InBuffer;
199 } DBG_IN_WRITE_LF, *PDBG_IN_WRITE_LF;
201 #define WRITELF_FLAGS_RESETBUF 0x00000001UL
203 typedef struct _DBG_STREAM_
205 struct _DBG_STREAM_ *psNext;
206 struct _DBG_STREAM_ *psInitStream;
207 IMG_BOOL bInitPhaseComplete;
208 IMG_UINT32 ui32Flags;
213 IMG_UINT32 ui32DataWritten;
214 IMG_UINT32 ui32CapMode;
215 IMG_UINT32 ui32OutMode;
216 IMG_UINT32 ui32DebugLevel;
217 IMG_UINT32 ui32DefaultMode;
218 IMG_UINT32 ui32Start;
220 IMG_UINT32 ui32Current;
221 IMG_UINT32 ui32Access;
222 IMG_UINT32 ui32SampleRate;
223 IMG_UINT32 ui32Reserved;
224 IMG_UINT32 ui32Timeout;
225 IMG_UINT32 ui32Marker;
227 } DBG_STREAM,*PDBG_STREAM;
229 typedef struct _DBGKM_SERVICE_TABLE_
232 IMG_VOID * (IMG_CALLCONV *pfnCreateStream) (IMG_CHAR * pszName,IMG_UINT32 ui32CapMode,IMG_UINT32 ui32OutMode,IMG_UINT32 ui32Flags,IMG_UINT32 ui32Pages);
233 IMG_VOID (IMG_CALLCONV *pfnDestroyStream) (PDBG_STREAM psStream);
234 IMG_VOID * (IMG_CALLCONV *pfnFindStream) (IMG_CHAR * pszName, IMG_BOOL bResetInitBuffer);
235 IMG_UINT32 (IMG_CALLCONV *pfnWriteString) (PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level);
236 IMG_UINT32 (IMG_CALLCONV *pfnReadString) (PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Limit);
237 IMG_UINT32 (IMG_CALLCONV *pfnWriteBIN) (PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level);
238 IMG_UINT32 (IMG_CALLCONV *pfnReadBIN) (PDBG_STREAM psStream,IMG_BOOL bReadInitBuffer, IMG_UINT32 ui32OutBufferSize,IMG_UINT8 *pui8OutBuf);
239 IMG_VOID (IMG_CALLCONV *pfnSetCaptureMode) (PDBG_STREAM psStream,IMG_UINT32 ui32CapMode,IMG_UINT32 ui32Start,IMG_UINT32 ui32Stop,IMG_UINT32 ui32SampleRate);
240 IMG_VOID (IMG_CALLCONV *pfnSetOutputMode) (PDBG_STREAM psStream,IMG_UINT32 ui32OutMode);
241 IMG_VOID (IMG_CALLCONV *pfnSetDebugLevel) (PDBG_STREAM psStream,IMG_UINT32 ui32DebugLevel);
242 IMG_VOID (IMG_CALLCONV *pfnSetFrame) (PDBG_STREAM psStream,IMG_UINT32 ui32Frame);
243 IMG_UINT32 (IMG_CALLCONV *pfnGetFrame) (PDBG_STREAM psStream);
244 IMG_VOID (IMG_CALLCONV *pfnOverrideMode) (PDBG_STREAM psStream,IMG_UINT32 ui32Mode);
245 IMG_VOID (IMG_CALLCONV *pfnDefaultMode) (PDBG_STREAM psStream);
246 IMG_UINT32 (IMG_CALLCONV *pfnDBGDrivWrite2) (PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level);
247 IMG_UINT32 (IMG_CALLCONV *pfnWriteStringCM) (PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level);
248 IMG_UINT32 (IMG_CALLCONV *pfnWriteBINCM) (PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level);
249 IMG_VOID (IMG_CALLCONV *pfnSetMarker) (PDBG_STREAM psStream,IMG_UINT32 ui32Marker);
250 IMG_UINT32 (IMG_CALLCONV *pfnGetMarker) (PDBG_STREAM psStream);
251 IMG_VOID (IMG_CALLCONV *pfnStartInitPhase) (PDBG_STREAM psStream);
252 IMG_VOID (IMG_CALLCONV *pfnStopInitPhase) (PDBG_STREAM psStream);
253 IMG_BOOL (IMG_CALLCONV *pfnIsCaptureFrame) (PDBG_STREAM psStream, IMG_BOOL bCheckPreviousFrame);
254 IMG_UINT32 (IMG_CALLCONV *pfnWriteLF) (PDBG_STREAM psStream, IMG_UINT8 *pui8InBuf, IMG_UINT32 ui32InBuffSize, IMG_UINT32 ui32Level, IMG_UINT32 ui32Flags);
255 IMG_UINT32 (IMG_CALLCONV *pfnReadLF) (PDBG_STREAM psStream, IMG_UINT32 ui32OutBuffSize, IMG_UINT8 *pui8OutBuf);
256 IMG_UINT32 (IMG_CALLCONV *pfnGetStreamOffset) (PDBG_STREAM psStream);
257 IMG_VOID (IMG_CALLCONV *pfnSetStreamOffset) (PDBG_STREAM psStream, IMG_UINT32 ui32StreamOffset);
258 IMG_BOOL (IMG_CALLCONV *pfnIsLastCaptureFrame) (PDBG_STREAM psStream);
259 IMG_VOID (IMG_CALLCONV *pfnWaitForEvent) (DBG_EVENT eEvent);
260 } DBGKM_SERVICE_TABLE, *PDBGKM_SERVICE_TABLE;