gpu: pvr: move debugfs infrastructure to its own files
[sgx.git] / pvr / pdump_km.h
1 /**********************************************************************
2  *
3  * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms and conditions of the GNU General Public License,
7  * version 2, as published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope it will be useful but, except
10  * as otherwise stated in writing, without any warranty; without even the
11  * implied warranty of merchantability or fitness for a particular purpose.
12  * See the GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License along with
15  * this program; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
17  *
18  * The full GNU General Public License is included in this distribution in
19  * the file called "COPYING".
20  *
21  * Contact Information:
22  * Imagination Technologies Ltd. <gpl-support@imgtec.com>
23  * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
24  *
25  ******************************************************************************/
26
27 #ifndef _PDUMP_KM_H_
28 #define _PDUMP_KM_H_
29
30
31 #define PDUMP_FLAGS_NEVER               0x08000000
32 #define PDUMP_FLAGS_TOOUT2MEM           0x10000000
33 #define PDUMP_FLAGS_LASTFRAME           0x20000000
34 #define PDUMP_FLAGS_RESETLFBUFFER       0x40000000
35 #define PDUMP_FLAGS_CONTINUOUS          0x80000000
36
37 #define PDUMP_PD_UNIQUETAG              ((void *)0)
38 #define PDUMP_PT_UNIQUETAG              ((void *)0)
39
40 #ifndef PDUMP
41 #define MAKEUNIQUETAG(hMemInfo) (0)
42 #endif
43
44 #ifdef PDUMP
45
46 #define MAKEUNIQUETAG(hMemInfo)                                         \
47         (((struct BM_BUF *)(((struct PVRSRV_KERNEL_MEM_INFO *)          \
48                              hMemInfo)->sMemBlk.hBuffer))->pMapping)
49
50 #define PDUMP_REG_FUNC_NAME PDumpReg
51
52 enum PVRSRV_ERROR PDumpMemPolKM(struct PVRSRV_KERNEL_MEM_INFO
53                                            *psMemInfo, u32 ui32Offset,
54                                            u32 ui32Value, u32 ui32Mask,
55                                            enum PDUMP_POLL_OPERATOR eOperator,
56                                            IMG_BOOL bLastFrame,
57                                            IMG_BOOL bOverwrite,
58                                            void *hUniqueTag);
59
60 enum PVRSRV_ERROR PDumpMemUM(struct PVRSRV_PER_PROCESS_DATA
61                                         *psProcData, void *pvAltLinAddr,
62                                         void *pvLinAddr,
63                                         struct PVRSRV_KERNEL_MEM_INFO
64                                         *psMemInfo, u32 ui32Offset,
65                                         u32 ui32Bytes, u32 ui32Flags,
66                                         void *hUniqueTag);
67
68 enum PVRSRV_ERROR PDumpMemKM(void *pvAltLinAddr,
69                 struct PVRSRV_KERNEL_MEM_INFO *psMemInfo, u32 ui32Offset,
70                 u32 ui32Bytes, u32 ui32Flags, void *hUniqueTag);
71
72 enum PVRSRV_ERROR PDumpMemPagesKM(enum PVRSRV_DEVICE_TYPE eDeviceType,
73                 struct IMG_DEV_PHYADDR *pPages, u32 ui32NumPages,
74                 struct IMG_DEV_VIRTADDR sDevAddr, u32 ui32Start,
75                 u32 ui32Length, u32 ui32Flags, void *hUniqueTag);
76
77 enum PVRSRV_ERROR PDumpMem2KM(enum PVRSRV_DEVICE_TYPE eDeviceType,
78                               void *pvLinAddr,
79                               u32 ui32Bytes,
80                               u32 ui32Flags,
81                               IMG_BOOL bInitialisePages,
82                               void *hUniqueTag1, void *hUniqueTag2);
83 void PDumpInitCommon(void);
84 void PDumpDeInitCommon(void);
85 void PDumpInit(void);
86 void PDumpDeInit(void);
87 enum PVRSRV_ERROR PDumpStartInitPhaseKM(void);
88 enum PVRSRV_ERROR PDumpStopInitPhaseKM(void);
89 enum PVRSRV_ERROR PDumpSetFrameKM(u32 ui32Frame);
90 enum PVRSRV_ERROR PDumpCommentKM(char *pszComment, u32 ui32Flags);
91 enum PVRSRV_ERROR PDumpDriverInfoKM(char *pszString, u32 ui32Flags);
92 enum PVRSRV_ERROR PDumpRegWithFlagsKM(u32 ui32RegAddr, u32 ui32RegValue,
93                 u32 ui32Flags);
94
95 enum PVRSRV_ERROR PDumpBitmapKM(char *pszFileName, u32 ui32FileOffset,
96                 u32 ui32Width, u32 ui32Height, u32 ui32StrideInBytes,
97                 struct IMG_DEV_VIRTADDR sDevBaseAddr, u32 ui32Size,
98                 enum PDUMP_PIXEL_FORMAT ePixelFormat,
99                 enum PDUMP_MEM_FORMAT eMemFormat, u32 ui32PDumpFlags);
100 void PDumpHWPerfCBKM(char *pszFileName, u32 ui32FileOffset,
101                 struct IMG_DEV_VIRTADDR sDevBaseAddr,
102                 u32 ui32Size, u32 ui32PDumpFlags);
103 enum PVRSRV_ERROR PDumpReadRegKM(char *pszFileName, u32 ui32FileOffset,
104                 u32 ui32Address, u32 ui32Size, u32 ui32PDumpFlags);
105 void PDUMP_REG_FUNC_NAME(u32 dwReg, u32 dwData);
106
107 void PDumpMsvdxRegRead(const char *const pRegRegion, const u32 dwRegOffset);
108
109 void PDumpMsvdxRegWrite(const char *const pRegRegion, const u32 dwRegOffset,
110                 const u32 dwData);
111
112 enum PVRSRV_ERROR PDumpMsvdxRegPol(const char *const pRegRegion,
113                 const u32 ui32Offset, const u32 ui32CheckFuncIdExt,
114                 const u32 ui32RequValue, const u32 ui32Enable,
115                 const u32 ui32PollCount, const u32 ui32TimeOut);
116
117 enum PVRSRV_ERROR PDumpMsvdxWriteRef(const char *const pRegRegion,
118                 const u32 ui32VLROffset, const u32 ui32Physical);
119
120 void PDumpComment(char *pszFormat, ...);
121
122 void PDumpCommentWithFlags(u32 ui32Flags, char *pszFormat, ...);
123 enum PVRSRV_ERROR PDumpRegPolKM(u32 ui32RegAddr, u32 ui32RegValue,
124                                 u32 ui32Mask);
125 enum PVRSRV_ERROR PDumpRegPolWithFlagsKM(u32 ui32RegAddr, u32 ui32RegValue,
126                                 u32 ui32Mask, u32 ui32Flags);
127
128 IMG_BOOL PDumpIsLastCaptureFrameKM(void);
129 IMG_BOOL PDumpIsCaptureFrameKM(void);
130
131 void PDumpMallocPages(enum PVRSRV_DEVICE_TYPE eDeviceType,
132                       u32 ui32DevVAddr, void *pvLinAddr, void *hOSMemHandle,
133                       u32 ui32NumBytes, u32 ui32PageSize, void *hUniqueTag);
134 void PDumpMallocPagesPhys(enum PVRSRV_DEVICE_TYPE eDeviceType,
135                 u32 ui32DevVAddr, u32 *pui32PhysPages, u32 ui32NumPages,
136                 void *hUniqueTag);
137 void PDumpMallocPageTable(enum PVRSRV_DEVICE_TYPE eDeviceType,
138                 void *pvLinAddr, u32 ui32NumBytes, void *hUniqueTag);
139 enum PVRSRV_ERROR PDumpSetMMUContext(enum PVRSRV_DEVICE_TYPE eDeviceType,
140                                      char *pszMemSpace, u32 *pui32MMUContextID,
141                                      u32 ui32MMUType, void *hUniqueTag1,
142                                      void *pvPDCPUAddr);
143 enum PVRSRV_ERROR PDumpClearMMUContext(enum PVRSRV_DEVICE_TYPE eDeviceType,
144                                        char *pszMemSpace,
145                                        u32 ui32MMUContextID, u32 ui32MMUType);
146 void PDumpFreePages(struct BM_HEAP *psBMHeap,
147                 struct IMG_DEV_VIRTADDR sDevVAddr, u32 ui32NumBytes,
148                  u32 ui32PageSize, void *hUniqueTag, IMG_BOOL bInterleaved);
149 void PDumpFreePageTable(enum PVRSRV_DEVICE_TYPE eDeviceType,
150                 void *pvLinAddr, u32 ui32NumBytes, void *hUniqueTag);
151 void PDumpPDReg(u32 ui32Reg, u32 ui32dwData, void *hUniqueTag);
152 void PDumpPDRegWithFlags(u32 ui32Reg, u32 ui32Data, u32 ui32Flags,
153                 void *hUniqueTag);
154
155 enum PVRSRV_ERROR PDumpPDDevPAddrKM(struct PVRSRV_KERNEL_MEM_INFO *psMemInfo,
156                 u32 ui32Offset, struct IMG_DEV_PHYADDR sPDDevPAddr,
157                 void *hUniqueTag1, void *hUniqueTag2);
158
159 IMG_BOOL PDumpTestNextFrame(u32 ui32CurrentFrame);
160
161 void PDumpTASignatureRegisters(u32 ui32DumpFrameNum,
162                 u32 ui32TAKickCount, IMG_BOOL bLastFrame,
163                 u32 *pui32Registers, u32 ui32NumRegisters);
164
165 void PDump3DSignatureRegisters(u32 ui32DumpFrameNum, IMG_BOOL bLastFrame,
166                 u32 *pui32Registers, u32 ui32NumRegisters);
167
168 void PDumpRegRead(const u32 dwRegOffset, u32 ui32Flags);
169
170 void PDumpCycleCountRegRead(const u32 dwRegOffset, IMG_BOOL bLastFrame);
171
172 void PDumpCounterRegisters(u32 ui32DumpFrameNum, IMG_BOOL bLastFrame,
173                 u32 *pui32Registers, u32 ui32NumRegisters);
174
175 void PDumpCBP(struct PVRSRV_KERNEL_MEM_INFO *psROffMemInfo,
176               u32 ui32ROffOffset,
177               u32 ui32WPosVal,
178               u32 ui32PacketSize,
179               u32 ui32BufferSize, u32 ui32Flags, void *hUniqueTag);
180
181 void PDumpIDLWithFlags(u32 ui32Clocks, u32 ui32Flags);
182 void PDumpIDL(u32 ui32Clocks);
183
184 void PDumpSuspendKM(void);
185 void PDumpResumeKM(void);
186
187 #define PDUMPMEMPOL                             PDumpMemPolKM
188 #define PDUMPMEM                                PDumpMemKM
189 #define PDUMPMEM2                               PDumpMem2KM
190 #define PDUMPMEMUM                              PDumpMemUM
191 #define PDUMPINIT                               PDumpInitCommon
192 #define PDUMPDEINIT                             PDumpDeInitCommon
193 #define PDUMPISLASTFRAME                        PDumpIsLastCaptureFrameKM
194 #define PDUMPTESTFRAME                          PDumpIsCaptureFrameKM
195 #define PDUMPTESTNEXTFRAME                      PDumpTestNextFrame
196 #define PDUMPREGWITHFLAGS                       PDumpRegWithFlagsKM
197 #define PDUMPREG                                PDUMP_REG_FUNC_NAME
198 #define PDUMPCOMMENT                            PDumpComment
199 #define PDUMPCOMMENTWITHFLAGS                   PDumpCommentWithFlags
200 #define PDUMPREGPOL                             PDumpRegPolKM
201 #define PDUMPREGPOLWITHFLAGS                    PDumpRegPolWithFlagsKM
202 #define PDUMPMALLOCPAGES                        PDumpMallocPages
203 #define PDUMPMALLOCPAGETABLE                    PDumpMallocPageTable
204 #define PDUMPSETMMUCONTEXT                      PDumpSetMMUContext
205 #define PDUMPCLEARMMUCONTEXT                    PDumpClearMMUContext
206 #define PDUMPFREEPAGES                          PDumpFreePages
207 #define PDUMPFREEPAGETABLE                      PDumpFreePageTable
208 #define PDUMPPDREG                              PDumpPDReg
209 #define PDUMPPDREGWITHFLAGS                     PDumpPDRegWithFlags
210 #define PDUMPCBP                                PDumpCBP
211 #define PDUMPMALLOCPAGESPHYS                    PDumpMallocPagesPhys
212 #define PDUMPENDINITPHASE                       PDumpStopInitPhaseKM
213 #define PDUMPMSVDXREGWRITE                      PDumpMsvdxRegWrite
214 #define PDUMPMSVDXREGREAD                       PDumpMsvdxRegRead
215 #define PDUMPMSVDXPOL                           PDumpMsvdxRegPol
216 #define PDUMPMSVDXWRITEREF                      PDumpMsvdxWriteRef
217 #define PDUMPBITMAPKM                           PDumpBitmapKM
218 #define PDUMPDRIVERINFO                         PDumpDriverInfoKM
219 #define PDUMPIDLWITHFLAGS                       PDumpIDLWithFlags
220 #define PDUMPIDL                                PDumpIDL
221 #define PDUMPSUSPEND                            PDumpSuspendKM
222 #define PDUMPRESUME                             PDumpResumeKM
223
224 #else
225 #define PDUMPMEMPOL(args...)
226 #define PDUMPMEM(args...)
227 #define PDUMPMEM2(args...)
228 #define PDUMPMEMUM(args...)
229 #define PDUMPINIT(args...)
230 #define PDUMPDEINIT(args...)
231 #define PDUMPISLASTFRAME(args...)
232 #define PDUMPTESTFRAME(args...)
233 #define PDUMPTESTNEXTFRAME(args...)
234 #define PDUMPREGWITHFLAGS(args...)
235 #define PDUMPREG(args...)
236 #define PDUMPCOMMENT(args...)
237 #define PDUMPREGPOL(args...)
238 #define PDUMPREGPOLWITHFLAGS(args...)
239 #define PDUMPMALLOCPAGES(args...)
240 #define PDUMPMALLOCPAGETABLE(args...)
241 #define PDUMPSETMMUCONTEXT(args...)
242 #define PDUMPCLEARMMUCONTEXT(args...)
243 #define PDUMPFREEPAGES(args...)
244 #define PDUMPFREEPAGETABLE(args...)
245 #define PDUMPPDREG(args...)
246 #define PDUMPPDREGWITHFLAGS(args...)
247 #define PDUMPSYNC(args...)
248 #define PDUMPCOPYTOMEM(args...)
249 #define PDUMPWRITE(args...)
250 #define PDUMPCBP(args...)
251 #define PDUMPCOMMENTWITHFLAGS(args...)
252 #define PDUMPMALLOCPAGESPHYS(args...)
253 #define PDUMPENDINITPHASE(args...)
254 #define PDUMPMSVDXREG(args...)
255 #define PDUMPMSVDXREGWRITE(args...)
256 #define PDUMPMSVDXREGREAD(args...)
257 #define PDUMPMSVDXPOLEQ(args...)
258 #define PDUMPMSVDXPOL(args...)
259 #define PDUMPBITMAPKM(args...)
260 #define PDUMPDRIVERINFO(args...)
261 #define PDUMPIDLWITHFLAGS(args...)
262 #define PDUMPIDL(args...)
263 #define PDUMPSUSPEND(args...)
264 #define PDUMPRESUME(args...)
265 #define PDUMPMSVDXWRITEREF(args...)
266 #endif
267
268 #endif