1 /**********************************************************************
3 * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
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.
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.
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.
18 * The full GNU General Public License is included in this distribution in
19 * the file called "COPYING".
21 * Contact Information:
22 * Imagination Technologies Ltd. <gpl-support@imgtec.com>
23 * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
25 ******************************************************************************/
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
37 #define PDUMP_PD_UNIQUETAG ((void *)0)
38 #define PDUMP_PT_UNIQUETAG ((void *)0)
42 #define MAKEUNIQUETAG(hMemInfo) \
43 (((struct BM_BUF *)(((struct PVRSRV_KERNEL_MEM_INFO *) \
44 hMemInfo)->sMemBlk.hBuffer))->pMapping)
46 void PDumpMemPolKM(struct PVRSRV_KERNEL_MEM_INFO
47 *psMemInfo, u32 ui32Offset,
48 u32 ui32Value, u32 ui32Mask,
49 enum PDUMP_POLL_OPERATOR eOperator,
52 enum PVRSRV_ERROR PDumpMemUM(void *pvAltLinAddr, void *pvLinAddr,
53 struct PVRSRV_KERNEL_MEM_INFO *psMemInfo,
54 u32 ui32Offset, u32 ui32Bytes, u32 ui32Flags,
57 enum PVRSRV_ERROR PDumpMemKM(void *pvAltLinAddr,
58 struct PVRSRV_KERNEL_MEM_INFO *psMemInfo,
59 u32 ui32Offset, u32 ui32Bytes,
60 u32 ui32Flags, void *hUniqueTag);
62 enum PVRSRV_ERROR PDumpPageTableKM(void *pvLinAddr, u32 ui32Bytes,
63 IMG_BOOL bInitialisePages,
64 void *hUniqueTag1, void *hUniqueTag2);
66 void PDumpDeInit(void);
67 void PDumpSetFrameKM(u32 ui32PID, u32 ui32Frame);
68 void PDumpCommentKM(char *pszComment, u32 ui32Flags);
69 void PDumpRegWithFlagsKM(u32 ui32RegAddr, u32 ui32RegValue,
72 void PDumpBitmapKM(char *pszFileName, u32 ui32FileOffset,
73 u32 ui32Width, u32 ui32Height, u32 ui32StrideInBytes,
74 struct IMG_DEV_VIRTADDR sDevBaseAddr, u32 ui32Size,
75 enum PDUMP_PIXEL_FORMAT ePixelFormat,
76 enum PDUMP_MEM_FORMAT eMemFormat, u32 ui32PDumpFlags);
77 void PDumpHWPerfCBKM(char *pszFileName, u32 ui32FileOffset,
78 struct IMG_DEV_VIRTADDR sDevBaseAddr,
79 u32 ui32Size, u32 ui32PDumpFlags);
80 void PDumpReg(u32 dwReg, u32 dwData);
82 void PDumpComment(char *pszFormat, ...);
84 void PDumpCommentWithFlags(u32 ui32Flags, char *pszFormat, ...);
85 void PDumpRegPolKM(u32 ui32RegAddr, u32 ui32RegValue,
87 void PDumpRegPolWithFlagsKM(u32 ui32RegAddr, u32 ui32RegValue,
88 u32 ui32Mask, u32 ui32Flags);
90 IMG_BOOL PDumpIsCaptureFrameKM(void);
92 void PDumpMallocPages(u32 ui32DevVAddr, void *hOSMemHandle,
93 u32 ui32NumBytes, void *hUniqueTag);
94 void PDumpMallocPageTable(void *pvLinAddr, void *hUniqueTag);
95 void PDumpFreePages(struct BM_HEAP *psBMHeap,
96 struct IMG_DEV_VIRTADDR sDevVAddr, u32 ui32NumBytes,
97 void *hUniqueTag, IMG_BOOL bInterleaved);
98 void PDumpFreePageTable(void *pvLinAddr);
99 void PDumpPDReg(u32 ui32Reg, u32 ui32dwData);
100 void PDumpPDRegWithFlags(u32 ui32Reg, u32 ui32Data, u32 ui32Flags);
102 void PDumpPDDevPAddrKM(struct PVRSRV_KERNEL_MEM_INFO *psMemInfo,
103 u32 ui32Offset, struct IMG_DEV_PHYADDR sPDDevPAddr,
104 void *hUniqueTag1, void *hUniqueTag2);
106 void PDumpTASignatureRegisters(u32 ui32DumpFrameNum, u32 ui32TAKickCount,
107 u32 *pui32Registers, u32 ui32NumRegisters);
109 void PDump3DSignatureRegisters(u32 ui32DumpFrameNum,
110 u32 *pui32Registers, u32 ui32NumRegisters);
112 void PDumpRegRead(const u32 dwRegOffset, u32 ui32Flags);
114 void PDumpCycleCountRegRead(const u32 dwRegOffset);
116 void PDumpCounterRegisters(u32 ui32DumpFrameNum,
117 u32 *pui32Registers, u32 ui32NumRegisters);
119 void PDumpCBP(struct PVRSRV_KERNEL_MEM_INFO *psROffMemInfo,
123 u32 ui32BufferSize, void *hUniqueTag);
125 void PDumpIDLWithFlags(u32 ui32Clocks, u32 ui32Flags);
127 void PDumpSuspendKM(void);
128 void PDumpResumeKM(void);
130 #define PDUMPMEMPOL PDumpMemPolKM
131 #define PDUMPMEM PDumpMemKM
132 #define PDUMPPAGETABLE PDumpPageTableKM
133 #define PDUMPMEMUM PDumpMemUM
134 #define PDUMPINIT PDumpInit
135 #define PDUMPDEINIT PDumpDeInit
136 #define PDUMPREGWITHFLAGS PDumpRegWithFlagsKM
137 #define PDUMPREG PDumpReg
138 #define PDUMPCOMMENT PDumpComment
139 #define PDUMPCOMMENTWITHFLAGS PDumpCommentWithFlags
140 #define PDUMPREGPOL PDumpRegPolKM
141 #define PDUMPREGPOLWITHFLAGS PDumpRegPolWithFlagsKM
142 #define PDUMPMALLOCPAGES PDumpMallocPages
143 #define PDUMPMALLOCPAGETABLE PDumpMallocPageTable
144 #define PDUMPFREEPAGES PDumpFreePages
145 #define PDUMPFREEPAGETABLE PDumpFreePageTable
146 #define PDUMPPDREGWITHFLAGS PDumpPDRegWithFlags
147 #define PDUMPCBP PDumpCBP
148 #define PDUMPIDLWITHFLAGS PDumpIDLWithFlags
149 #define PDUMPSUSPEND PDumpSuspendKM
150 #define PDUMPRESUME PDumpResumeKM
154 #define MAKEUNIQUETAG(hMemInfo) (0)
156 #define PDUMPMEMPOL(args...)
157 #define PDUMPMEM(args...)
158 #define PDUMPPAGETABLE(args...)
159 #define PDUMPMEMUM(args...)
160 #define PDUMPINIT(args...)
161 #define PDUMPDEINIT(args...)
162 #define PDUMPREGWITHFLAGS(args...)
163 #define PDUMPREG(args...)
164 #define PDUMPCOMMENT(args...)
165 #define PDUMPCOMMENTWITHFLAGS(args...)
166 #define PDUMPREGPOL(args...)
167 #define PDUMPREGPOLWITHFLAGS(args...)
168 #define PDUMPMALLOCPAGES(args...)
169 #define PDUMPMALLOCPAGETABLE(args...)
170 #define PDUMPFREEPAGES(args...)
171 #define PDUMPFREEPAGETABLE(args...)
172 #define PDUMPPDREGWITHFLAGS(args...)
173 #define PDUMPCBP(args...)
174 #define PDUMPIDLWITHFLAGS(args...)
175 #define PDUMPSUSPEND(args...)
176 #define PDUMPRESUME(args...)
179 #endif /* _PVR_PDUMP_H_ */