gpu: pvr: pdumpfs: add stream_frames debugfs entry
[sgx.git] / pvr / pvr_pdump.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 _PVR_PDUMP_H_
28 #define _PVR_PDUMP_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 #ifdef PDUMP
41
42 #define MAKEUNIQUETAG(hMemInfo)                                         \
43         (((struct BM_BUF *)(((struct PVRSRV_KERNEL_MEM_INFO *)          \
44                              hMemInfo)->sMemBlk.hBuffer))->pMapping)
45
46 void PDumpMemPolKM(struct PVRSRV_KERNEL_MEM_INFO
47                                            *psMemInfo, u32 ui32Offset,
48                                            u32 ui32Value, u32 ui32Mask,
49                                            enum PDUMP_POLL_OPERATOR eOperator,
50                                            void *hUniqueTag);
51
52 enum PVRSRV_ERROR PDumpMemUM(void *pvAltLinAddr, void *pvLinAddr,
53                              struct PVRSRV_KERNEL_MEM_INFO *psMemInfo,
54                              u32 ui32Offset, u32 ui32Bytes, u32 ui32Flags,
55                              void *hUniqueTag);
56
57 enum PVRSRV_ERROR PDumpMemKM(void *pvAltLinAddr,
58                              struct PVRSRV_KERNEL_MEM_INFO *psMemInfo,
59                              u32 ui32Offset, u32 ui32Bytes,
60                              u32 ui32Flags, void *hUniqueTag);
61
62 enum PVRSRV_ERROR PDumpPageTableKM(void *pvLinAddr, u32 ui32Bytes,
63                                    IMG_BOOL bInitialisePages,
64                                    void *hUniqueTag1, void *hUniqueTag2);
65 void PDumpInit(void);
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,
70                          u32 ui32Flags);
71
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);
81
82 void PDumpComment(char *pszFormat, ...);
83
84 void PDumpCommentWithFlags(u32 ui32Flags, char *pszFormat, ...);
85 void PDumpRegPolKM(u32 ui32RegAddr, u32 ui32RegValue,
86                    u32 ui32Mask);
87 void PDumpRegPolWithFlagsKM(u32 ui32RegAddr, u32 ui32RegValue,
88                             u32 ui32Mask, u32 ui32Flags);
89
90 IMG_BOOL PDumpIsCaptureFrameKM(void);
91
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);
101
102 void PDumpPDDevPAddrKM(struct PVRSRV_KERNEL_MEM_INFO *psMemInfo,
103                        u32 ui32Offset, struct IMG_DEV_PHYADDR sPDDevPAddr,
104                        void *hUniqueTag1, void *hUniqueTag2);
105
106 void PDumpTASignatureRegisters(u32 ui32DumpFrameNum, u32 ui32TAKickCount,
107                                u32 *pui32Registers, u32 ui32NumRegisters);
108
109 void PDump3DSignatureRegisters(u32 ui32DumpFrameNum,
110                                u32 *pui32Registers, u32 ui32NumRegisters);
111
112 void PDumpRegRead(const u32 dwRegOffset, u32 ui32Flags);
113
114 void PDumpCycleCountRegRead(const u32 dwRegOffset);
115
116 void PDumpCounterRegisters(u32 ui32DumpFrameNum,
117                            u32 *pui32Registers, u32 ui32NumRegisters);
118
119 void PDumpCBP(struct PVRSRV_KERNEL_MEM_INFO *psROffMemInfo,
120               u32 ui32ROffOffset,
121               u32 ui32WPosVal,
122               u32 ui32PacketSize,
123               u32 ui32BufferSize, void *hUniqueTag);
124
125 void PDumpIDLWithFlags(u32 ui32Clocks, u32 ui32Flags);
126
127 void PDumpSuspendKM(void);
128 void PDumpResumeKM(void);
129
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
151
152 #else
153
154 #define MAKEUNIQUETAG(hMemInfo) (0)
155
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...)
177 #endif
178
179 #endif /* _PVR_PDUMP_H_ */