]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android/vendor-ti-am57x.git/blob - sgx_km/eurasia_km/services4/include/pvr_bridge.h
sgx_km: Build SGX KM from source
[android/vendor-ti-am57x.git] / sgx_km / eurasia_km / services4 / include / pvr_bridge.h
1 /*************************************************************************/ /*!
2 @Title          PVR Bridge Functionality
3 @Copyright      Copyright (c) Imagination Technologies Ltd. All Rights Reserved
4 @Description    Header for the PVR Bridge code
5 @License        Dual MIT/GPLv2
7 The contents of this file are subject to the MIT license as set out below.
9 Permission is hereby granted, free of charge, to any person obtaining a copy
10 of this software and associated documentation files (the "Software"), to deal
11 in the Software without restriction, including without limitation the rights
12 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 copies of the Software, and to permit persons to whom the Software is
14 furnished to do so, subject to the following conditions:
16 The above copyright notice and this permission notice shall be included in
17 all copies or substantial portions of the Software.
19 Alternatively, the contents of this file may be used under the terms of
20 the GNU General Public License Version 2 ("GPL") in which case the provisions
21 of GPL are applicable instead of those above.
23 If you wish to allow use of your version of this file only under the terms of
24 GPL, and not to allow others to use your version of this file under the terms
25 of the MIT license, indicate your decision by deleting the provisions above
26 and replace them with the notice and other provisions required by GPL as set
27 out in the file called "GPL-COPYING" included in this distribution. If you do
28 not delete the provisions above, a recipient may use your version of this file
29 under the terms of either the MIT license or GPL.
31 This License is also included in this distribution in the file called
32 "MIT-COPYING".
34 EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
35 PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
36 BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
37 PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
38 COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
39 IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
40 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
41 */ /**************************************************************************/
43 #ifndef __PVR_BRIDGE_H__
44 #define __PVR_BRIDGE_H__
46 #if defined (__cplusplus)
47 extern "C" {
48 #endif
50 #include "servicesint.h"
52 /*
53  * Bridge Cmd Ids
54  */
57 #ifdef __linux__
59         #include <linux/ioctl.h>
60         /*!< Nov 2006: according to ioctl-number.txt 'g' wasn't in use. */
61         #define PVRSRV_IOC_GID      'g'
62         #define PVRSRV_IO(INDEX)    _IO(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE)
63         #define PVRSRV_IOW(INDEX)   _IOW(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE)
64         #define PVRSRV_IOR(INDEX)   _IOR(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE)
65         #define PVRSRV_IOWR(INDEX)  _IOWR(PVRSRV_IOC_GID, INDEX, PVRSRV_BRIDGE_PACKAGE)
67 #else /* __linux__ */
69  #if  defined(__QNXNTO__)
70                         #define PVRSRV_IOC_GID      (0x0UL)
71                 #else
72         #error Unknown platform: Cannot define ioctls
73                 #endif
75         #define PVRSRV_IO(INDEX)    (PVRSRV_IOC_GID + (INDEX))
76         #define PVRSRV_IOW(INDEX)   (PVRSRV_IOC_GID + (INDEX))
77         #define PVRSRV_IOR(INDEX)   (PVRSRV_IOC_GID + (INDEX))
78         #define PVRSRV_IOWR(INDEX)  (PVRSRV_IOC_GID + (INDEX))
80         #define PVRSRV_BRIDGE_BASE                  PVRSRV_IOC_GID
81 #endif /* __linux__ */
84 /*
85  * Note *REMEMBER* to update PVRSRV_BRIDGE_LAST_CMD (below) if you add any new
86  * bridge commands!
87  * The command number of PVRSRV_BRIDGE_UM_KM_COMPAT_CHECK needs to be maintained as 0 across previous ddks, for compatibility check command to execute successfully
88  */
90 #define PVRSRV_BRIDGE_UMKM_CMD_FIRST                    0UL
91 #define PVRSRV_BRIDGE_UM_KM_COMPAT_CHECK                PVRSRV_IOWR(0)
92 #define PVRSRV_BRIDGE_UMKM_CMD_LAST                     (0)
94 #define PVRSRV_BRIDGE_CORE_CMD_FIRST                    (PVRSRV_BRIDGE_UMKM_CMD_LAST + 1)
95 #define PVRSRV_BRIDGE_ENUM_DEVICES                              PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+0)     /*!< enumerate device bridge index */
96 #define PVRSRV_BRIDGE_ACQUIRE_DEVICEINFO                PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+1)     /*!< acquire device data bridge index */
97 #define PVRSRV_BRIDGE_RELEASE_DEVICEINFO                PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+2)     /*!< release device data bridge index */
98 #define PVRSRV_BRIDGE_CREATE_DEVMEMCONTEXT              PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+3)     /*!< create device addressable memory context */
99 #define PVRSRV_BRIDGE_DESTROY_DEVMEMCONTEXT             PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+4)     /*!< destroy device addressable memory context */
100 #define PVRSRV_BRIDGE_GET_DEVMEM_HEAPINFO               PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+5)     /*!< get device memory heap info */
101 #define PVRSRV_BRIDGE_ALLOC_DEVICEMEM                   PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+6)     /*!< alloc device memory bridge index */
102 #define PVRSRV_BRIDGE_FREE_DEVICEMEM                    PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+7)     /*!< free device memory bridge index */
103 #define PVRSRV_BRIDGE_GETFREE_DEVICEMEM                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+8)     /*!< get free device memory bridge index */
104 #define PVRSRV_BRIDGE_CREATE_COMMANDQUEUE               PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+9)     /*!< create Cmd Q bridge index */
105 #define PVRSRV_BRIDGE_DESTROY_COMMANDQUEUE              PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+10)    /*!< destroy Cmd Q bridge index */
106 #define PVRSRV_BRIDGE_MHANDLE_TO_MMAP_DATA              PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+11)   /*!< generate mmap data from a memory handle */
107 #define PVRSRV_BRIDGE_CONNECT_SERVICES                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+12)    /*!< services connect bridge index */
108 #define PVRSRV_BRIDGE_DISCONNECT_SERVICES               PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+13)    /*!< services disconnect bridge index */
109 #define PVRSRV_BRIDGE_WRAP_DEVICE_MEM                   PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+14)    /*!< wrap device memory bridge index */
110 #define PVRSRV_BRIDGE_GET_DEVICEMEMINFO                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+15)    /*!< read the kernel meminfo record */
111 #define PVRSRV_BRIDGE_RESERVE_DEV_VIRTMEM               PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+16)
112 #define PVRSRV_BRIDGE_FREE_DEV_VIRTMEM                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+17)
113 #define PVRSRV_BRIDGE_MAP_EXT_MEMORY                    PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+18)
114 #define PVRSRV_BRIDGE_UNMAP_EXT_MEMORY                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+19)
115 #define PVRSRV_BRIDGE_MAP_DEV_MEMORY                    PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+20)
116 #define PVRSRV_BRIDGE_UNMAP_DEV_MEMORY                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+21)
117 #define PVRSRV_BRIDGE_MAP_MEM_INFO_TO_USER              PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+22)
118 #define PVRSRV_BRIDGE_UNMAP_MEM_INFO_FROM_USER  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+23)
119 #define PVRSRV_BRIDGE_EXPORT_DEVICEMEM                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+24)
120 #define PVRSRV_BRIDGE_RELEASE_MMAP_DATA                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+25)
121 #define PVRSRV_BRIDGE_CHG_DEV_MEM_ATTRIBS               PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+26)
122 #define PVRSRV_BRIDGE_MAP_DEV_MEMORY_2                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+27)
123 #define PVRSRV_BRIDGE_EXPORT_DEVICEMEM_2                PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+28)
124 #if defined (SUPPORT_ION)
125 #define PVRSRV_BRIDGE_MAP_ION_HANDLE                    PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+29)
126 #define PVRSRV_BRIDGE_UNMAP_ION_HANDLE                  PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+30)
127 #define PVRSRV_BRIDGE_ION_CMD_LAST                      (PVRSRV_BRIDGE_CORE_CMD_FIRST+30)
128 #else
129 #define PVRSRV_BRIDGE_ION_CMD_LAST                      (PVRSRV_BRIDGE_CORE_CMD_FIRST+28)
130 #endif
131 #if defined (SUPPORT_DMABUF)
132 #define PVRSRV_BRIDGE_DMABUF_CMD_FIRST                  (PVRSRV_BRIDGE_ION_CMD_LAST+1)
133 #define PVRSRV_BRIDGE_MAP_DMABUF                        PVRSRV_IOWR(PVRSRV_BRIDGE_DMABUF_CMD_FIRST+0)
134 #define PVRSRV_BRIDGE_UNMAP_DMABUF                      PVRSRV_IOWR(PVRSRV_BRIDGE_DMABUF_CMD_FIRST+1)
135 #define PVRSRV_BRIDGE_DMABUF_CMD_LAST                   (PVRSRV_BRIDGE_DMABUF_CMD_FIRST+1)
136 #else
137 #define PVRSRV_BRIDGE_DMABUF_CMD_LAST                   PVRSRV_BRIDGE_ION_CMD_LAST
138 #endif
139 #define PVRSRV_BRIDGE_CORE_CMD_LAST                     PVRSRV_BRIDGE_DMABUF_CMD_LAST
140 /* SIM */
141 #define PVRSRV_BRIDGE_SIM_CMD_FIRST                             (PVRSRV_BRIDGE_CORE_CMD_LAST+1)
142 #define PVRSRV_BRIDGE_PROCESS_SIMISR_EVENT              PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+0)      /*!< RTSIM pseudo ISR */
143 #define PVRSRV_BRIDGE_REGISTER_SIM_PROCESS              PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+1)      /*!< Register RTSIM process thread */
144 #define PVRSRV_BRIDGE_UNREGISTER_SIM_PROCESS    PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+2)      /*!< Unregister RTSIM process thread */
145 #define PVRSRV_BRIDGE_SIM_CMD_LAST                              (PVRSRV_BRIDGE_SIM_CMD_FIRST+2)
147 /* User Mapping */
148 #define PVRSRV_BRIDGE_MAPPING_CMD_FIRST                 (PVRSRV_BRIDGE_SIM_CMD_LAST+1)
149 #define PVRSRV_BRIDGE_MAPPHYSTOUSERSPACE                PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+0)  /*!< map CPU phys to user space */
150 #define PVRSRV_BRIDGE_UNMAPPHYSTOUSERSPACE              PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+1)  /*!< unmap CPU phys to user space */
151 #define PVRSRV_BRIDGE_GETPHYSTOUSERSPACEMAP             PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+2)  /*!< get user copy of Phys to Lin loopup table */
152 #define PVRSRV_BRIDGE_MAPPING_CMD_LAST                  (PVRSRV_BRIDGE_MAPPING_CMD_FIRST+2)
154 #define PVRSRV_BRIDGE_STATS_CMD_FIRST                   (PVRSRV_BRIDGE_MAPPING_CMD_LAST+1)
155 #define PVRSRV_BRIDGE_GET_FB_STATS                              PVRSRV_IOWR(PVRSRV_BRIDGE_STATS_CMD_FIRST+0)    /*!< Get FB memory stats */
156 #define PVRSRV_BRIDGE_STATS_CMD_LAST                    (PVRSRV_BRIDGE_STATS_CMD_FIRST+0)
158 /* API to retrieve misc. info. from services */
159 #define PVRSRV_BRIDGE_MISC_CMD_FIRST                    (PVRSRV_BRIDGE_STATS_CMD_LAST+1)
160 #define PVRSRV_BRIDGE_GET_MISC_INFO                             PVRSRV_IOWR(PVRSRV_BRIDGE_MISC_CMD_FIRST+0)     /*!< misc. info. */
161 #define PVRSRV_BRIDGE_RELEASE_MISC_INFO                 PVRSRV_IOWR(PVRSRV_BRIDGE_MISC_CMD_FIRST+1)     /*!< misc. info. */
162 #define PVRSRV_BRIDGE_MISC_CMD_LAST                             (PVRSRV_BRIDGE_MISC_CMD_FIRST+1)
164 /* Overlay ioctls */
166 #if defined (SUPPORT_OVERLAY_ROTATE_BLIT)
167 #define PVRSRV_BRIDGE_OVERLAY_CMD_FIRST                 (PVRSRV_BRIDGE_MISC_CMD_LAST+1)
168 #define PVRSRV_BRIDGE_INIT_3D_OVL_BLT_RES               PVRSRV_IOWR(PVRSRV_BRIDGE_OVERLAY_CMD_FIRST+0)  /*!< 3D Overlay rotate blit init */
169 #define PVRSRV_BRIDGE_DEINIT_3D_OVL_BLT_RES             PVRSRV_IOWR(PVRSRV_BRIDGE_OVERLAY_CMD_FIRST+1)  /*!< 3D Overlay rotate blit deinit */
170 #define PVRSRV_BRIDGE_OVERLAY_CMD_LAST                  (PVRSRV_BRIDGE_OVERLAY_CMD_FIRST+1)
171 #else
172 #define PVRSRV_BRIDGE_OVERLAY_CMD_LAST                  PVRSRV_BRIDGE_MISC_CMD_LAST
173 #endif
175 /* PDUMP */
176 #if defined(PDUMP)
177 #define PVRSRV_BRIDGE_PDUMP_CMD_FIRST                   (PVRSRV_BRIDGE_OVERLAY_CMD_LAST+1)
178 #define PVRSRV_BRIDGE_PDUMP_INIT                        PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+0)    /*!< pdump command structure */
179 #define PVRSRV_BRIDGE_PDUMP_MEMPOL                      PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+1)    /*!< pdump command structure */
180 #define PVRSRV_BRIDGE_PDUMP_DUMPMEM                     PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+2)    /*!< pdump command structure */
181 #define PVRSRV_BRIDGE_PDUMP_REG                         PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+3)    /*!< pdump command structure */
182 #define PVRSRV_BRIDGE_PDUMP_REGPOL                      PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+4)    /*!< pdump command structure */
183 #define PVRSRV_BRIDGE_PDUMP_COMMENT                     PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+5)    /*!< pdump command structure */
184 #define PVRSRV_BRIDGE_PDUMP_SETFRAME                    PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+6)    /*!< pdump command structure */
185 #define PVRSRV_BRIDGE_PDUMP_ISCAPTURING                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+7)    /*!< pdump command structure */
186 #define PVRSRV_BRIDGE_PDUMP_DUMPBITMAP                  PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+8)    /*!< pdump command structure */
187 #define PVRSRV_BRIDGE_PDUMP_DUMPREADREG                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+9)    /*!< pdump command structure */
188 #define PVRSRV_BRIDGE_PDUMP_SYNCPOL                     PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+10)   /*!< pdump command structure */
189 #define PVRSRV_BRIDGE_PDUMP_DUMPSYNC                    PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+11)   /*!< pdump command structure */
190 #define PVRSRV_BRIDGE_PDUMP_MEMPAGES                    PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+12)   /*!< pdump command structure */
191 #define PVRSRV_BRIDGE_PDUMP_DRIVERINFO                  PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+13)   /*!< pdump command structure */
192 #define PVRSRV_BRIDGE_PDUMP_DUMPPDDEVPADDR              PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+15)   /*!< pdump command structure */
193 #define PVRSRV_BRIDGE_PDUMP_CYCLE_COUNT_REG_READ        PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+16)
194 #define PVRSRV_BRIDGE_PDUMP_STARTINITPHASE                      PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+17)
195 #define PVRSRV_BRIDGE_PDUMP_STOPINITPHASE                       PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+18)
196 #define PVRSRV_BRIDGE_PDUMP_CMD_LAST                    (PVRSRV_BRIDGE_PDUMP_CMD_FIRST+18)
197 #else
198 /* Note we are carefull here not to leave a large gap in the ioctl numbers.
199  * (Some ports may use these values to index into an array where large gaps can
200  * waste memory) */
201 #define PVRSRV_BRIDGE_PDUMP_CMD_LAST                    PVRSRV_BRIDGE_OVERLAY_CMD_LAST
202 #endif
204 /* DisplayClass APIs */
205 #define PVRSRV_BRIDGE_OEM_CMD_FIRST                             (PVRSRV_BRIDGE_PDUMP_CMD_LAST+1)
206 #define PVRSRV_BRIDGE_GET_OEMJTABLE                             PVRSRV_IOWR(PVRSRV_BRIDGE_OEM_CMD_FIRST+0)      /*!< Get OEM Jtable */
207 #define PVRSRV_BRIDGE_OEM_CMD_LAST                              (PVRSRV_BRIDGE_OEM_CMD_FIRST+0)
209 /* device class enum */
210 #define PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST                (PVRSRV_BRIDGE_OEM_CMD_LAST+1)
211 #define PVRSRV_BRIDGE_MAP_DEVICECLASS_MEMORY    PVRSRV_IOWR(PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+0)
212 #define PVRSRV_BRIDGE_UNMAP_DEVICECLASS_MEMORY  PVRSRV_IOWR(PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+1)
213 #define PVRSRV_BRIDGE_ENUM_CLASS                                PVRSRV_IOWR(PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+2)
214 #define PVRSRV_BRIDGE_DEVCLASS_CMD_LAST                 (PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+2)
216 /* display class API */
217 #define PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST               (PVRSRV_BRIDGE_DEVCLASS_CMD_LAST+1)
218 #define PVRSRV_BRIDGE_OPEN_DISPCLASS_DEVICE             PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+0)
219 #define PVRSRV_BRIDGE_CLOSE_DISPCLASS_DEVICE    PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+1)
220 #define PVRSRV_BRIDGE_ENUM_DISPCLASS_FORMATS    PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+2)
221 #define PVRSRV_BRIDGE_ENUM_DISPCLASS_DIMS               PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+3)
222 #define PVRSRV_BRIDGE_GET_DISPCLASS_SYSBUFFER   PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+4)
223 #define PVRSRV_BRIDGE_GET_DISPCLASS_INFO                PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+5)
224 #define PVRSRV_BRIDGE_CREATE_DISPCLASS_SWAPCHAIN                PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+6)
225 #define PVRSRV_BRIDGE_DESTROY_DISPCLASS_SWAPCHAIN               PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+7)
226 #define PVRSRV_BRIDGE_SET_DISPCLASS_DSTRECT             PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+8)
227 #define PVRSRV_BRIDGE_SET_DISPCLASS_SRCRECT             PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+9)
228 #define PVRSRV_BRIDGE_SET_DISPCLASS_DSTCOLOURKEY                PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+10)
229 #define PVRSRV_BRIDGE_SET_DISPCLASS_SRCCOLOURKEY                PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+11)
230 #define PVRSRV_BRIDGE_GET_DISPCLASS_BUFFERS             PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+12)
231 #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_BUFFER  PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+13)
232 #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_BUFFER2 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+14)
233 #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_SYSTEM  PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+15)
234 #define PVRSRV_BRIDGE_DISPCLASS_CMD_LAST                (PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+15)
236 /* buffer class API */
237 #define PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST                (PVRSRV_BRIDGE_DISPCLASS_CMD_LAST+1)
238 #define PVRSRV_BRIDGE_OPEN_BUFFERCLASS_DEVICE   PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+0)
239 #define PVRSRV_BRIDGE_CLOSE_BUFFERCLASS_DEVICE  PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+1)
240 #define PVRSRV_BRIDGE_GET_BUFFERCLASS_INFO              PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+2)
241 #define PVRSRV_BRIDGE_GET_BUFFERCLASS_BUFFER    PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+3)
242 #define PVRSRV_BRIDGE_BUFCLASS_CMD_LAST                 (PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+3)
244 /* Wrap/Unwrap external memory */
245 #define PVRSRV_BRIDGE_WRAP_CMD_FIRST                    (PVRSRV_BRIDGE_BUFCLASS_CMD_LAST+1)
246 #define PVRSRV_BRIDGE_WRAP_EXT_MEMORY                   PVRSRV_IOWR(PVRSRV_BRIDGE_WRAP_CMD_FIRST+0)
247 #define PVRSRV_BRIDGE_UNWRAP_EXT_MEMORY                 PVRSRV_IOWR(PVRSRV_BRIDGE_WRAP_CMD_FIRST+1)
248 #define PVRSRV_BRIDGE_WRAP_CMD_LAST                             (PVRSRV_BRIDGE_WRAP_CMD_FIRST+1)
250 /* Shared memory */
251 #define PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST               (PVRSRV_BRIDGE_WRAP_CMD_LAST+1)
252 #define PVRSRV_BRIDGE_ALLOC_SHARED_SYS_MEM              PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+0)
253 #define PVRSRV_BRIDGE_FREE_SHARED_SYS_MEM               PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+1)
254 #define PVRSRV_BRIDGE_MAP_MEMINFO_MEM                   PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+2)
255 #define PVRSRV_BRIDGE_UNMAP_MEMINFO_MEM                 PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+3)
256 #define PVRSRV_BRIDGE_SHAREDMEM_CMD_LAST                (PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+3)
258 /* Intialisation Service support */
259 #define PVRSRV_BRIDGE_INITSRV_CMD_FIRST                 (PVRSRV_BRIDGE_SHAREDMEM_CMD_LAST+1)
260 #define PVRSRV_BRIDGE_INITSRV_CONNECT                   PVRSRV_IOWR(PVRSRV_BRIDGE_INITSRV_CMD_FIRST+0)
261 #define PVRSRV_BRIDGE_INITSRV_DISCONNECT                PVRSRV_IOWR(PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1)
262 #define PVRSRV_BRIDGE_INITSRV_CMD_LAST                  (PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1)
264 /* Event Objects */
265 #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST    (PVRSRV_BRIDGE_INITSRV_CMD_LAST+1)
266 #define PVRSRV_BRIDGE_EVENT_OBJECT_WAIT                 PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+0)
267 #define PVRSRV_BRIDGE_EVENT_OBJECT_OPEN                 PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+1)
268 #define PVRSRV_BRIDGE_EVENT_OBJECT_CLOSE                PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2)
269 #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_LAST             (PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2)
271 /* Sync ops */
272 #define PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST                (PVRSRV_BRIDGE_EVENT_OBJECT_CMD_LAST+1)
273 #define PVRSRV_BRIDGE_CREATE_SYNC_INFO_MOD_OBJ  PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+0)
274 #define PVRSRV_BRIDGE_DESTROY_SYNC_INFO_MOD_OBJ PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+1)
275 #define PVRSRV_BRIDGE_MODIFY_PENDING_SYNC_OPS   PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+2)
276 #define PVRSRV_BRIDGE_MODIFY_COMPLETE_SYNC_OPS  PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+3)
277 #define PVRSRV_BRIDGE_SYNC_OPS_TAKE_TOKEN       PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+4)
278 #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_TOKEN   PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+5)
279 #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_MOD_OBJ PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+6)
280 #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_DELTA   PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+7)
281 #define PVRSRV_BRIDGE_ALLOC_SYNC_INFO           PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+8)
282 #define PVRSRV_BRIDGE_FREE_SYNC_INFO            PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+9)
283 #define PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST                 (PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+9)
285 /* For sgx_bridge.h (msvdx_bridge.h should probably use these defines too) */
286 #define PVRSRV_BRIDGE_LAST_NON_DEVICE_CMD               (PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST+1)
289 /******************************************************************************
290  * Bridge flags
291  *****************************************************************************/
292 #define PVRSRV_KERNEL_MODE_CLIENT                               1
294 /******************************************************************************
295  * Generic bridge structures
296  *****************************************************************************/
298 /******************************************************************************
299  *      bridge return structure
300  *****************************************************************************/
301 typedef struct IMG_COMPAT PVRSRV_BRIDGE_RETURN_TAG
303         PVRSRV_ERROR    eError;
304         IMG_HANDLE      hData;
305 }PVRSRV_BRIDGE_RETURN;
308 /******************************************************************************
309  *      bridge packaging structure
310  *****************************************************************************/
311 typedef struct PVRSRV_BRIDGE_PACKAGE_TAG
313         IMG_UINT32                      ui32BridgeID;                   /*!< ioctl/drvesc index */
314         IMG_UINT32                      ui32Size;                       /*!< size of structure */
315         IMG_HANDLE                      hParamIn;                       /*!< input data buffer */
316         IMG_HANDLE                      hParamOut;                      /*!< output data buffer */
317         IMG_UINT32                      ui32InBufferSize;               /*!< size of input data buffer */
318         IMG_UINT32                      ui32OutBufferSize;              /*!< size of output data buffer */
320         IMG_HANDLE                      hKernelServices;                /*!< kernel servcies handle */
321 }PVRSRV_BRIDGE_PACKAGE;
324 /******************************************************************************
325  * Input structures for IOCTL/DRVESC
326  *****************************************************************************/
329 /******************************************************************************
330  *      'bridge in' connect to services
331  *****************************************************************************/
332 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_CONNECT_SERVICES_TAG
334         IMG_UINT32      ui32Flags;
335 } PVRSRV_BRIDGE_IN_CONNECT_SERVICES;
337 /******************************************************************************
338  *      'bridge in' acquire device info
339  *****************************************************************************/
340 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_ACQUIRE_DEVICEINFO_TAG
342         IMG_UINT32              uiDevIndex;
343         PVRSRV_DEVICE_TYPE      eDeviceType;
344 } PVRSRV_BRIDGE_IN_ACQUIRE_DEVICEINFO;
347 /******************************************************************************
348  *      'bridge in' enum class
349  *****************************************************************************/
350 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_ENUMCLASS_TAG
352         PVRSRV_DEVICE_CLASS eDeviceClass;
353 } PVRSRV_BRIDGE_IN_ENUMCLASS;
356 /******************************************************************************
357  *      'bridge in' close display class device
358  *****************************************************************************/
359 typedef struct PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE_TAG
361         IMG_HANDLE                      hDeviceKM;
362 } PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE;
365 /******************************************************************************
366  *      'bridge in' enum display class formats
367  *****************************************************************************/
368 typedef struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS_TAG
370         IMG_HANDLE                      hDeviceKM;
371 } PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS;
374 /******************************************************************************
375  *      'bridge in' get display class sysbuffer
376  *****************************************************************************/
377 typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER_TAG
379         IMG_HANDLE                      hDeviceKM;
380 } PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER;
383 /******************************************************************************
384  *      'bridge in' display class info
385  *****************************************************************************/
386 typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO_TAG
388         IMG_HANDLE                      hDeviceKM;
389 } PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO;
392 /******************************************************************************
393  *      'bridge in' close buffer class device
394  *****************************************************************************/
395 typedef struct PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE_TAG
397         IMG_HANDLE                      hDeviceKM;
398 } PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE;
401 /******************************************************************************
402  *      'bridge in' close buffer class device
403  *****************************************************************************/
404 typedef struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO_TAG
406         IMG_HANDLE                      hDeviceKM;
407 } PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO;
409 /******************************************************************************
410  *      'bridge in' get device memory heap info
411  *****************************************************************************/
412 typedef struct PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO_TAG
414         IMG_HANDLE                      hDevCookie;
415         IMG_HANDLE                      hDevMemContext;
416 }PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO;
419 /******************************************************************************
420  *      'bridge in' create device memory context
421  *****************************************************************************/
422 typedef struct PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT_TAG
424         IMG_HANDLE                      hDevCookie;
425 }PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT;
428 /******************************************************************************
429  *      'bridge in' destroy device memory context
430  *****************************************************************************/
431 typedef struct PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT_TAG
433         IMG_HANDLE                      hDevCookie;
434         IMG_HANDLE                      hDevMemContext;
435 }PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT;
438 /******************************************************************************
439  *      'bridge in' alloc device memory
440  *****************************************************************************/
441 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM_TAG
443         IMG_HANDLE              hDevCookie;
444         IMG_HANDLE              hDevMemHeap;
446         IMG_HANDLE              hPrivData;
447         IMG_UINT32              ui32PrivDataLength;
448         IMG_UINT32              ui32Attribs;
450         IMG_SIZE_T              uSize;
451         IMG_SIZE_T              uAlignment;
453         IMG_UINT32              ui32ChunkSize;
454         IMG_UINT32              ui32NumVirtChunks;
455         IMG_UINT32              ui32NumPhysChunks;
456         IMG_HANDLE              hMapChunk;
457 }PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM;
459 /******************************************************************************
460  *      'bridge in' free device memory
461  *****************************************************************************/
462 typedef struct PVRSRV_BRIDGE_IN_FREEDEVICEMEM_TAG
464         IMG_HANDLE              hDevCookie;
465         IMG_HANDLE              hKernelMemInfo;
466 }PVRSRV_BRIDGE_IN_FREEDEVICEMEM;
468 /******************************************************************************
469  *      'bridge in' export device memory
470  *****************************************************************************/
471 typedef struct PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM_TAG
473         IMG_HANDLE              hDevCookie;
474         IMG_HANDLE              hKernelMemInfo;
475 }PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM;
477 /******************************************************************************
478  *      'bridge in' map ion handle
479  *****************************************************************************/
480 #define ION_IMPORT_MAX_FDS 3
481 #define ION_IMPORT_MAX_CHUNK_COUNT 3
482 typedef struct _PVRSRV_BRIDGE_IN_MAP_ION_HANDLE_
484         IMG_UINT32              ui32NumFDs;
485         IMG_INT32               ai32BufferFDs[ION_IMPORT_MAX_FDS];
486         IMG_UINT32              ui32Attribs;
487         IMG_UINT32              ui32ChunkCount;
488         IMG_SIZE_T              auiOffset[ION_IMPORT_MAX_CHUNK_COUNT];
489         IMG_SIZE_T              auiSize[ION_IMPORT_MAX_CHUNK_COUNT];
490         IMG_HANDLE              hDevCookie;
491         IMG_HANDLE              hDevMemHeap;
492 } PVRSRV_BRIDGE_IN_MAP_ION_HANDLE;
494 /******************************************************************************
495  *      'bridge in' unmap ion handle
496  *****************************************************************************/
497 typedef struct PVRSRV_BRIDGE_IN_UNMAP_ION_HANDLE_TAG
499         IMG_HANDLE      hKernelMemInfo;
500 }PVRSRV_BRIDGE_IN_UNMAP_ION_HANDLE;
502 /******************************************************************************
503  *      'bridge in' map dmabuf
504  *****************************************************************************/
505 typedef struct _PVRSRV_BRIDGE_IN_MAP_DMABUF_
507         IMG_UINT32                      ui32BridgeFlags; /* Must be first member of structure */
508         IMG_INT32                       i32FD;
509         IMG_SIZE_T                      uiOffset;
510         IMG_SIZE_T                      uiSize;
511         IMG_UINT32                      ui32Attribs;
512         IMG_HANDLE                      hDevCookie;
513         IMG_HANDLE                      hDevMemHeap;
514 } PVRSRV_BRIDGE_IN_MAP_DMABUF;
516 /******************************************************************************
517  *      'bridge in' unmap dmabuf
518  *****************************************************************************/
519 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_UNMAP_DMABUF_TAG
521         IMG_UINT32              ui32BridgeFlags; /* Must be first member of structure */
522         IMG_HANDLE              hKernelMemInfo;
523 }PVRSRV_BRIDGE_IN_UNMAP_DMABUF;
525 /******************************************************************************
526  *      'bridge in' get free device memory
527  *****************************************************************************/
528 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM_TAG
530         IMG_UINT32                      ui32Flags;
531 } PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM;
533 /******************************************************************************
534  *      'bridge in' create Cmd Q
535  *****************************************************************************/
536 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE_TAG
538         IMG_HANDLE                      hDevCookie;
539         IMG_SIZE_T                      uQueueSize;
540 }PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE;
543 /******************************************************************************
544  *      'bridge in' destroy Cmd Q
545  *****************************************************************************/
546 typedef struct PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE_TAG
548         IMG_HANDLE                      hDevCookie;
549         PVRSRV_QUEUE_INFO       *psQueueInfo;
550 }PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE;
553 /******************************************************************************
554  *      'bridge in' get full map data
555  *****************************************************************************/
556 typedef struct PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA_TAG
558         IMG_HANDLE                      hMHandle;        /* Handle associated with the memory that needs to be mapped */
559 } PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA;
562 /******************************************************************************
563  *      'bridge in' get full map data
564  *****************************************************************************/
565 typedef struct PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA_TAG
567         IMG_HANDLE                      hMHandle;        /* Handle associated with the memory that needs to be mapped */
568 } PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA;
571 /******************************************************************************
572  *      'bridge in' reserve vm
573  *****************************************************************************/
574 typedef struct PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM_TAG
576         IMG_HANDLE                      hDevMemHeap;
577         IMG_DEV_VIRTADDR        *psDevVAddr;
578         IMG_SIZE_T                      uSize;
579         IMG_SIZE_T                      uAlignment;
580 }PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM;
582 /******************************************************************************
583  *      'bridge out' connect to services
584  *****************************************************************************/
585 typedef struct PVRSRV_BRIDGE_OUT_CONNECT_SERVICES_TAG
587         PVRSRV_ERROR    eError;
588         IMG_UINT8               ui8KernelArch;
589         IMG_UINT64              hKernelServices; /* actually a IMG_HANDLE retrurnd from KM */
590 }PVRSRV_BRIDGE_OUT_CONNECT_SERVICES;
592 /******************************************************************************
593  *      'bridge out' reserve vm
594  *****************************************************************************/
595 typedef struct PVRSRV_BRIDGE_OUT_RESERVE_DEV_VIRTMEM_TAG
597         PVRSRV_ERROR            eError;
598         IMG_HANDLE              hKernelMemInfo;
599         IMG_HANDLE              hKernelSyncInfo;
600         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
601         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
603 }PVRSRV_BRIDGE_OUT_RESERVE_DEV_VIRTMEM;
606 /******************************************************************************
607  *      'bridge in' free vm
608  *****************************************************************************/
609 typedef struct PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM_TAG
611         IMG_HANDLE              hKernelMemInfo;
612         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
613         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
614 }PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM;
616 /******************************************************************************
617  *      'bridge in' map dev memory allocation to another heap
618  *****************************************************************************/
619 typedef struct PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY_TAG
621         IMG_HANDLE                              hKernelMemInfo;
622         IMG_HANDLE                              hDstDevMemHeap;
623 }PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY;
625 /******************************************************************************
626  *      'bridge out' map dev memory allocation to another heap
627  *****************************************************************************/
628 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY_TAG
630         PVRSRV_ERROR                    eError;
631         PVRSRV_CLIENT_MEM_INFO  sDstClientMemInfo;
632         PVRSRV_CLIENT_SYNC_INFO sDstClientSyncInfo;
633 }PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY;
636 /******************************************************************************
637  *      'bridge in' unmap dev memory allocation
638  *****************************************************************************/
639 typedef struct PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY_TAG
641         IMG_HANDLE              hKernelMemInfo;
642 }PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY;
645 /******************************************************************************
646  *      'bridge in' map pages
647  *****************************************************************************/
648 typedef struct PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY_TAG
650         IMG_HANDLE      hKernelMemInfo;
651         IMG_SYS_PHYADDR *psSysPAddr;
652         IMG_UINT32       ui32Flags;
653 }PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY;
655 /******************************************************************************
656  *      'bridge in' unmap pages
657  *****************************************************************************/
658 typedef struct PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY_TAG
660         IMG_UINT32                                      ui32BridgeFlags; /* Must be first member of structure */
661         PVRSRV_CLIENT_MEM_INFO          sClientMemInfo;
662         PVRSRV_CLIENT_SYNC_INFO         sClientSyncInfo;
663         IMG_UINT32                                      ui32Flags;
664 }PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY;
666 /******************************************************************************
667  *      'bridge in' map device class buffer pages
668  *****************************************************************************/
669 typedef struct PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY_TAG
671         IMG_HANDLE              hDeviceClassBuffer;
672         IMG_HANDLE              hDevMemContext;
673 }PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY;
676 /******************************************************************************
677  *      'bridge out' map device class buffer pages
678  *****************************************************************************/
679 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY_TAG
681         PVRSRV_ERROR                    eError;
682         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
683         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
684         IMG_HANDLE              hKernelMemInfo;
685         IMG_HANDLE                              hMappingInfo;
686 }PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY;
689 /******************************************************************************
690  *      'bridge in' unmap device class buffer pages
691  *****************************************************************************/
692 typedef struct PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY_TAG
694         IMG_HANDLE              hKernelMemInfo;
695 }PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY;
698 /******************************************************************************
699  *      'bridge in' pdump memory poll
700  *****************************************************************************/
701 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_MEMPOL_TAG
703         IMG_HANDLE                      hKernelMemInfo;
704         IMG_UINT32                      ui32Offset;
705         IMG_UINT32                      ui32Value;
706         IMG_UINT32                      ui32Mask;
707         PDUMP_POLL_OPERATOR     eOperator;
708         IMG_UINT32                      ui32Flags;
709 }PVRSRV_BRIDGE_IN_PDUMP_MEMPOL;
711 /******************************************************************************
712  *      'bridge in' pdump sync poll
713  *****************************************************************************/
714 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL_TAG
716         IMG_HANDLE              hKernelSyncInfo;
717         IMG_BOOL                bIsRead;
718         IMG_BOOL                bUseLastOpDumpVal;
719         IMG_UINT32              ui32Value;
720         IMG_UINT32              ui32Mask;
721 }PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL;
724 /******************************************************************************
725  *      'bridge in' pdump dump memory
726  *****************************************************************************/
727 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM_TAG
729         IMG_HANDLE              hLinAddr;
730         IMG_HANDLE              hAltLinAddr;
731         IMG_HANDLE              hKernelMemInfo;
732         IMG_UINT32              ui32Offset;
733         IMG_UINT32              ui32Bytes;
734         IMG_UINT32              ui32Flags;
735 }PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM;
738 /******************************************************************************
739  *      'bridge in' pdump dump sync
740  *****************************************************************************/
741 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC_TAG
743         IMG_HANDLE              hAltLinAddr;
744         IMG_HANDLE              hKernelSyncInfo;
745         IMG_UINT32              ui32Offset;
746         IMG_UINT32              ui32Bytes;
747 }PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC;
750 /******************************************************************************
751  *      'bridge in' pdump dump reg
752  *****************************************************************************/
753 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_DUMPREG_TAG
755         IMG_HANDLE              hDevCookie;
756         PVRSRV_HWREG    sHWReg;
757         IMG_UINT32              ui32Flags;
758         IMG_CHAR                szRegRegion[32];
759 }PVRSRV_BRIDGE_IN_PDUMP_DUMPREG;
761 /******************************************************************************
762  *      'bridge in' pdump dump reg
763  *****************************************************************************/
764 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_REGPOL_TAG
766         IMG_HANDLE              hDevCookie;
767         PVRSRV_HWREG    sHWReg;
768         IMG_UINT32              ui32Mask;
769         IMG_UINT32              ui32Flags;
770         IMG_CHAR                szRegRegion[32];
771 }PVRSRV_BRIDGE_IN_PDUMP_REGPOL;
773 /******************************************************************************
774  *      'bridge in' pdump dump PD reg
775  *****************************************************************************/
776 typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG_TAG
778         PVRSRV_HWREG    sHWReg;
779         IMG_UINT32              ui32Flags;
780 }PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG;
782 /******************************************************************************
783  *      'bridge in' pdump dump mem pages
784  *****************************************************************************/
785 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES_TAG
787         IMG_HANDLE                      hDevCookie;
788         IMG_HANDLE                      hKernelMemInfo;
789         IMG_DEV_PHYADDR         *pPages;
790         IMG_UINT32                      ui32NumPages;
791         IMG_DEV_VIRTADDR        sDevVAddr;
792         IMG_UINT32                      ui32Start;
793         IMG_UINT32                      ui32Length;
794         IMG_UINT32                      ui32Flags;
795 }PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES;
797 /******************************************************************************
798  *      'bridge in' pdump dump comment
799  *****************************************************************************/
800 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_COMMENT_TAG
802         IMG_CHAR                szComment[PVRSRV_PDUMP_MAX_COMMENT_SIZE];
803         IMG_UINT32              ui32Flags;
804 }PVRSRV_BRIDGE_IN_PDUMP_COMMENT;
807 /******************************************************************************
808  *      'bridge in' pdump set frame
809  *****************************************************************************/
810 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_SETFRAME_TAG
812         IMG_UINT32              ui32Frame;
813 }PVRSRV_BRIDGE_IN_PDUMP_SETFRAME;
816 /******************************************************************************
817  *      'bridge in' pdump dump bitmap
818  *****************************************************************************/
820 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_BITMAP_TAG
822         IMG_HANDLE                      hDevCookie;
823         IMG_CHAR                        szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE];
824         IMG_UINT32                      ui32FileOffset;
825         IMG_UINT32                      ui32Width;
826         IMG_UINT32                      ui32Height;
827         IMG_UINT32                      ui32StrideInBytes;
828         IMG_DEV_VIRTADDR        sDevBaseAddr;
829         IMG_HANDLE                      hDevMemContext;
830         IMG_UINT32                      ui32Size;
831         PDUMP_PIXEL_FORMAT      ePixelFormat;
832         PDUMP_MEM_FORMAT        eMemFormat;
833         IMG_UINT32                      ui32Flags;
834 }PVRSRV_BRIDGE_IN_PDUMP_BITMAP;
837 /******************************************************************************
838  *      'bridge in' pdump dump read reg
839  *****************************************************************************/
840 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_READREG_TAG
842         IMG_HANDLE              hDevCookie;
843         IMG_CHAR                szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE];
844         IMG_UINT32              ui32FileOffset;
845         IMG_UINT32              ui32Address;
846         IMG_UINT32              ui32Size;
847         IMG_UINT32              ui32Flags;
848         IMG_CHAR                szRegRegion[32];
849 }PVRSRV_BRIDGE_IN_PDUMP_READREG;
851 /******************************************************************************
852  *      'bridge in' pdump dump driver-info
853  *****************************************************************************/
854 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO_TAG
856         IMG_CHAR                szString[PVRSRV_PDUMP_MAX_COMMENT_SIZE];
857         IMG_BOOL                bContinuous;
858 }PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO;
860 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR_TAG
862         IMG_HANDLE              hKernelMemInfo;
863         IMG_UINT32              ui32Offset;
864         IMG_DEV_PHYADDR sPDDevPAddr;
865 }PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR;
867 /******************************************************************************
868  *      'bridge in' pdump cycle count register read
869  *****************************************************************************/
870 typedef struct IMG_COMPAT PVRSRV_BRIDGE_PDUM_IN_CYCLE_COUNT_REG_READ_TAG
872         IMG_HANDLE              hDevCookie;
873         IMG_UINT32              ui32RegOffset;
874         IMG_BOOL                bLastFrame;
875 }PVRSRV_BRIDGE_IN_PDUMP_CYCLE_COUNT_REG_READ;
877 /*****************************************************************************
878  * Output structures for BRIDGEs
879  ****************************************************************************/
881 /******************************************************************************
882  *      'bridge out' enum. devices
883  *****************************************************************************/
884 typedef struct PVRSRV_BRIDGE_OUT_ENUMDEVICE_TAG
886         PVRSRV_ERROR                            eError;
887         IMG_UINT32                                      ui32NumDevices;
888         PVRSRV_DEVICE_IDENTIFIER        asDeviceIdentifier[PVRSRV_MAX_DEVICES];
889 }PVRSRV_BRIDGE_OUT_ENUMDEVICE;
892 /******************************************************************************
893  *      'bridge out' acquire device info
894  *****************************************************************************/
895 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO_TAG
897         PVRSRV_ERROR    eError;
898         IMG_HANDLE              hDevCookie;
899 } PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO;
902 /******************************************************************************
903  *      'bridge out' enum. class devices
904  *****************************************************************************/
905 typedef struct PVRSRV_BRIDGE_OUT_ENUMCLASS_TAG
907         PVRSRV_ERROR    eError;
908         IMG_UINT32              ui32NumDevices;
909         IMG_UINT32              ui32DevID[PVRSRV_MAX_DEVICES];
910 }PVRSRV_BRIDGE_OUT_ENUMCLASS;
913 /******************************************************************************
914  *      'bridge in' open display class devices
915  *****************************************************************************/
916 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE_TAG
918         IMG_UINT32              ui32DeviceID;
919         IMG_HANDLE              hDevCookie;
920 }PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE;
922 /******************************************************************************
923  *      'bridge out' open display class devices
924  *****************************************************************************/
925 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE_TAG
927         PVRSRV_ERROR    eError;
928         IMG_HANDLE              hDeviceKM;
929 }PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE;
932 /******************************************************************************
933  *      'bridge in' wrap pages
934  *****************************************************************************/
935 typedef struct PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY_TAG
937         IMG_HANDLE                      hDevCookie;
938         IMG_HANDLE                      hDevMemContext;
939         IMG_VOID                                *pvLinAddr;
940         IMG_SIZE_T                      uByteSize;
941         IMG_SIZE_T                      uPageOffset;
942         IMG_BOOL                        bPhysContig;
943         IMG_UINT32                      ui32NumPageTableEntries;
944         IMG_SYS_PHYADDR         *psSysPAddr;
945         IMG_UINT32                      ui32Flags;
946 }PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY;
948 /******************************************************************************
949  *      'bridge out' wrap pages
950  *****************************************************************************/
951 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY_TAG
953         PVRSRV_ERROR                    eError;
954         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
955         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
956 }PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY;
958 /******************************************************************************
959  *      'bridge in' unwrap pages
960  *****************************************************************************/
961 typedef struct PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY_TAG
963         IMG_HANDLE hKernelMemInfo;
964 }PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY;
967 #define PVRSRV_MAX_DC_DISPLAY_FORMATS                   10
968 #define PVRSRV_MAX_DC_DISPLAY_DIMENSIONS                10
969 #define PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS                 4
970 #define PVRSRV_MAX_DC_CLIP_RECTS                                32
972 /******************************************************************************
973  *      'bridge out' enum display class formats
974  *****************************************************************************/
975 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS_TAG
977         PVRSRV_ERROR    eError;
978         IMG_UINT32              ui32Count;
979         DISPLAY_FORMAT  asFormat[PVRSRV_MAX_DC_DISPLAY_FORMATS];
980 }PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS;
983 /******************************************************************************
984  *      'bridge in' enum display class dims
985  *****************************************************************************/
986 typedef struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS_TAG
988         IMG_HANDLE              hDeviceKM;
989         DISPLAY_FORMAT  sFormat;
990 }PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS;
993 /******************************************************************************
994  *      'bridge out' enum display class dims
995  *****************************************************************************/
996 typedef struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS_TAG
998         PVRSRV_ERROR    eError;
999         IMG_UINT32              ui32Count;
1000         DISPLAY_DIMS    asDim[PVRSRV_MAX_DC_DISPLAY_DIMENSIONS];
1001 }PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS;
1004 /******************************************************************************
1005  *      'bridge out' enum display class dims
1006  *****************************************************************************/
1007 typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO_TAG
1009         PVRSRV_ERROR    eError;
1010         DISPLAY_INFO    sDisplayInfo;
1011 }PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO;
1014 /******************************************************************************
1015  *      'bridge out' get display class system buffer
1016  *****************************************************************************/
1017 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER_TAG
1019         PVRSRV_ERROR    eError;
1020         IMG_HANDLE              hBuffer;
1021 }PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER;
1024 /******************************************************************************
1025  *      'bridge in' create swap chain
1026  *****************************************************************************/
1027 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN_TAG
1029         IMG_HANDLE                                      hDeviceKM;
1030         DISPLAY_SURF_ATTRIBUTES         sDstSurfAttrib;
1031         DISPLAY_SURF_ATTRIBUTES         sSrcSurfAttrib;
1032         IMG_UINT32                                      ui32Flags;
1033         IMG_UINT32                                      ui32BufferCount;
1034         IMG_UINT32                                      ui32OEMFlags;
1035         IMG_UINT32                                      ui32SwapChainID;
1036 #if defined(PVR_ANDROID_NATIVE_WINDOW_HAS_FENCE)
1037         IMG_INT32                                       i32TimelineFd;
1038         IMG_INT32                                       i32Unused;
1039 #endif /* defined(PVR_ANDROID_NATIVE_WINDOW_HAS_FENCE) */
1040 } PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN;
1043 /******************************************************************************
1044  *      'bridge out' create swap chain
1045  *****************************************************************************/
1046 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN_TAG
1048         PVRSRV_ERROR    eError;
1049         IMG_UINT32              ui32SwapChainID;
1050         IMG_HANDLE              hSwapChain;
1051 } PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN;
1054 /******************************************************************************
1055  *      'bridge in' destroy swap chain
1056  *****************************************************************************/
1057 typedef struct PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN_TAG
1059         IMG_HANDLE              hDeviceKM;
1060         IMG_HANDLE              hSwapChain;
1061 } PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN;
1064 /******************************************************************************
1065  *      'bridge in' set DST/SRC rect
1066  *****************************************************************************/
1067 typedef struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT_TAG
1069         IMG_HANDLE              hDeviceKM;
1070         IMG_HANDLE              hSwapChain;
1071         IMG_RECT                sRect;
1072 } PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT;
1075 /******************************************************************************
1076  *      'bridge in' set DST/SRC colourkey
1077  *****************************************************************************/
1078 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY_TAG
1080         IMG_HANDLE              hDeviceKM;
1081         IMG_HANDLE              hSwapChain;
1082         IMG_UINT32              ui32CKColour;
1083 } PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY;
1086 /******************************************************************************
1087  *      'bridge in' get buffers (from swapchain)
1088  *****************************************************************************/
1089 typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS_TAG
1091         IMG_HANDLE              hDeviceKM;
1092         IMG_HANDLE              hSwapChain;
1093 } PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS;
1096 /******************************************************************************
1097  *      'bridge out' get buffers (from swapchain)
1098  *****************************************************************************/
1099 typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS_TAG
1101         PVRSRV_ERROR    eError;
1102         IMG_UINT32              ui32BufferCount;
1103         IMG_HANDLE              ahBuffer[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS];
1104         IMG_SYS_PHYADDR asPhyAddr[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS];
1105 } PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS;
1108 /******************************************************************************
1109  *      'bridge in' swap to buffer
1110  *****************************************************************************/
1111 typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER_TAG
1113         IMG_HANDLE              hDeviceKM;
1114         IMG_HANDLE              hBuffer;
1115         IMG_HANDLE              hPrivateTag;
1116         IMG_UINT32              ui32SwapInterval;
1117         IMG_UINT32              ui32ClipRectCount;
1118         IMG_RECT                sClipRect[PVRSRV_MAX_DC_CLIP_RECTS];
1119 } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER;
1122 /******************************************************************************
1123  *      'bridge in' swap to buffer 2
1124  *****************************************************************************/
1125 typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER2_TAG
1127         IMG_HANDLE              hDeviceKM;
1128         IMG_HANDLE              hSwapChain;
1130         IMG_UINT32              ui32SwapInterval;
1131         IMG_UINT32              ui32NumMemInfos;
1132         IMG_HANDLE              hKernelMemInfos;
1133         IMG_HANDLE              hKernelSyncInfos;
1134         IMG_UINT32              ui32PrivDataLength;
1135         IMG_HANDLE              hPrivData;
1136 } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER2;
1139 /******************************************************************************
1140  *      'bridge out' swap to buffer 2
1141  *****************************************************************************/
1142 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_SWAP_DISPCLASS_TO_BUFFER2_TAG
1144         PVRSRV_ERROR    eError;
1145         IMG_HANDLE              hFence;
1146 } PVRSRV_BRIDGE_OUT_SWAP_DISPCLASS_TO_BUFFER2;
1149 /******************************************************************************
1150  *      'bridge in' swap to system buffer (primary)
1151  *****************************************************************************/
1152 typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM_TAG
1154         IMG_HANDLE              hDeviceKM;
1155         IMG_HANDLE              hSwapChain;
1156 } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM;
1159 /******************************************************************************
1160  *      'bridge in' open buffer class device
1161  *****************************************************************************/
1162 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE_TAG
1164         IMG_UINT32              ui32DeviceID;
1165         IMG_HANDLE              hDevCookie;
1166 } PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE;
1169 /******************************************************************************
1170  *      'bridge out' open buffer class device
1171  *****************************************************************************/
1172 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE_TAG
1174         PVRSRV_ERROR    eError;
1175         IMG_HANDLE              hDeviceKM;
1176 } PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE;
1179 /******************************************************************************
1180  *      'bridge out' get buffer class info
1181  *****************************************************************************/
1182 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO_TAG
1184         PVRSRV_ERROR    eError;
1185         BUFFER_INFO             sBufferInfo;
1186 } PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO;
1189 /******************************************************************************
1190  *      'bridge in' get buffer class buffer
1191  *****************************************************************************/
1192 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER_TAG
1194         IMG_HANDLE              hDeviceKM;
1195         IMG_UINT32              ui32BufferIndex;
1196 } PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER;
1199 /******************************************************************************
1200  *      'bridge out' get buffer class buffer
1201  *****************************************************************************/
1202 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER_TAG
1204         PVRSRV_ERROR    eError;
1205         IMG_HANDLE              hBuffer;
1206 } PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER;
1209 /******************************************************************************
1210  *      'bridge out' get heap info
1211  *****************************************************************************/
1212 typedef struct PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO_TAG
1214         PVRSRV_ERROR            eError;
1215         IMG_UINT32                      ui32ClientHeapCount;
1216         PVRSRV_HEAP_INFO        sHeapInfo[PVRSRV_MAX_CLIENT_HEAPS];
1217 } PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO;
1220 /******************************************************************************
1221  *      'bridge out' create device memory context
1222  *****************************************************************************/
1223 typedef struct PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT_TAG
1225         PVRSRV_ERROR            eError;
1226         IMG_UINT32                      ui32ClientHeapCount;
1227         IMG_HANDLE                      hDevMemContext;
1228         PVRSRV_HEAP_INFO        sHeapInfo[PVRSRV_MAX_CLIENT_HEAPS];
1229 } PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT;
1232 /******************************************************************************
1233  *      'bridge out' create device memory context
1234  *****************************************************************************/
1235 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP_TAG
1237         PVRSRV_ERROR    eError;
1238         IMG_HANDLE              hDevMemHeap;
1239 } PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP;
1242 /******************************************************************************
1243  *      'bridge out' alloc device memory
1244  *****************************************************************************/
1245 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM_TAG
1247         PVRSRV_ERROR                    eError;
1248         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1249         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
1250 } PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM;
1253 /******************************************************************************
1254  *      'bridge out' free device memory
1255  *****************************************************************************/
1256 typedef struct PVRSRV_BRIDGE_OUT_FREEDEVICEMEM_TAG
1258         PVRSRV_ERROR            eError;
1259 #if defined (PVRSRV_DEVMEM_TIME_STATS)
1260         IMG_UINT32                              ui32TimeToDevUnmap;
1261 #endif
1263 } PVRSRV_BRIDGE_OUT_FREEDEVICEMEM;
1266 /******************************************************************************
1267  *      'bridge out' export device memory
1268  *****************************************************************************/
1269 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM_TAG
1271         PVRSRV_ERROR    eError;
1272         IMG_HANDLE              hMemInfo;
1273 #if defined(SUPPORT_MEMINFO_IDS)
1274         IMG_UINT64              ui64Stamp;
1275 #endif
1276 } PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM;
1279 /******************************************************************************
1280  *      'bridge out' map ion handle
1281  *****************************************************************************/
1282 typedef struct IMG_COMPAT _PVRSRV_BRIDGE_OUT_MAP_ION_HANDLE_
1284         PVRSRV_ERROR                    eError;
1285         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1286         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
1287         IMG_SIZE_T              uiIonBufferSize;
1288 } PVRSRV_BRIDGE_OUT_MAP_ION_HANDLE;
1290 /******************************************************************************
1291  *      'bridge out' map dmabuf
1292  *****************************************************************************/
1293 typedef struct IMG_COMPAT _PVRSRV_BRIDGE_OUT_MAP_DMABUF_
1295         PVRSRV_ERROR            eError;
1296         IMG_HANDLE              hKernelMemInfo;
1297         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1298         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
1299         IMG_SIZE_T              uiSize;
1300         IMG_SIZE_T              uiOffset;
1301 } PVRSRV_BRIDGE_OUT_MAP_DMABUF;
1303 /******************************************************************************
1304  *      'bridge out' map meminfo to user mode
1305  *****************************************************************************/
1306 typedef struct PVRSRV_BRIDGE_OUT_MAPMEMINFOTOUSER_TAG
1308         PVRSRV_ERROR                    eError;
1309         IMG_PVOID                               pvLinAddr;
1310         IMG_HANDLE                              hMappingInfo;
1311 }PVRSRV_BRIDGE_OUT_MAPMEMINFOTOUSER;
1314 /******************************************************************************
1315  *      'bridge out' get free device memory
1316  *****************************************************************************/
1317 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM_TAG
1319         PVRSRV_ERROR    eError;
1320         IMG_SIZE_T              uTotal;
1321         IMG_SIZE_T              uFree;
1322         IMG_SIZE_T              uLargestBlock;
1323 } PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM;
1326 //#ifdef LINUX
1327 /******************************************************************************
1328  *      'bridge out' get full map data
1329  *****************************************************************************/
1330 #include "pvrmmap.h"
1331 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA_TAG
1333     PVRSRV_ERROR        eError;
1335     /* This is a the offset you should pass to mmap(2) so that
1336      * the driver can look up the full details for the mapping
1337      * request. */
1338      IMG_UINTPTR_T      uiMMapOffset;
1340     /* This is the byte offset you should add to the mapping you
1341      * get from mmap */
1342     IMG_UINTPTR_T       uiByteOffset;
1344     /* This is the real size of the mapping that will be created
1345      * which should be passed to mmap _and_ munmap. */
1346     IMG_SIZE_T          uiRealByteSize;
1348     /* User mode address associated with mapping */
1349     IMG_UINTPTR_T       uiUserVAddr;
1351 } PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA;
1353 typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA_TAG
1355     PVRSRV_ERROR        eError;
1357     /* Flag that indicates whether the mapping should be destroyed */
1358     IMG_BOOL            bMUnmap;
1360     /* User mode address associated with mapping */
1361     IMG_UINTPTR_T       uiUserVAddr;
1363     /* Size of mapping */
1364     IMG_SIZE_T          uiRealByteSize;
1365 } PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA;
1366 //#endif
1368 typedef struct PVRSRV_BRIDGE_IN_COMPAT_CHECK
1370         IMG_UINT32              ui32DDKVersion;
1371         IMG_UINT32              ui32DDKBuild;
1372 #if defined(SUPPORT_TI_VERSION_STRING)
1373         IMG_CHAR                szTIVersion[64];
1374 #endif
1375 } PVRSRV_BRIDGE_IN_COMPAT_CHECK;
1377 /******************************************************************************
1378  *      'bridge in' get misc info
1379  *****************************************************************************/
1380 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_GET_MISC_INFO_TAG
1382         PVRSRV_MISC_INFO        sMiscInfo;
1383 }PVRSRV_BRIDGE_IN_GET_MISC_INFO;
1386 /******************************************************************************
1387  *      'bridge out' get misc info
1388  *****************************************************************************/
1389 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_GET_MISC_INFO_TAG
1391         PVRSRV_ERROR            eError;
1392         PVRSRV_MISC_INFO        sMiscInfo;
1393 }PVRSRV_BRIDGE_OUT_GET_MISC_INFO;
1396 /******************************************************************************
1397  *      'bridge in' get misc info
1398  *****************************************************************************/
1399 typedef struct PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO_TAG
1401         PVRSRV_MISC_INFO        sMiscInfo;
1402 }PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO;
1405 /******************************************************************************
1406  *      'bridge out' get misc info
1407  *****************************************************************************/
1408 typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO_TAG
1410         PVRSRV_ERROR            eError;
1411         PVRSRV_MISC_INFO        sMiscInfo;
1412 }PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO;
1415 /******************************************************************************
1416  *      'bridge out' PDUMP is capturing
1417  *****************************************************************************/
1419 typedef struct PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING_TAG
1421         PVRSRV_ERROR    eError;
1422         IMG_BOOL                bIsCapturing;
1423 } PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING;
1425 /******************************************************************************
1426  *      'bridge in' get FB mem stats
1427  *****************************************************************************/
1428 typedef struct PVRSRV_BRIDGE_IN_GET_FB_STATS_TAG
1430         IMG_SIZE_T uTotal;
1431         IMG_SIZE_T uAvailable;
1432 } PVRSRV_BRIDGE_IN_GET_FB_STATS;
1435 /******************************************************************************
1436  *      'bridge in' Map CPU Physical to User Space
1437  *****************************************************************************/
1438 typedef struct PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE_TAG
1440         IMG_HANDLE                      hDevCookie;
1441         IMG_SYS_PHYADDR         sSysPhysAddr;
1442         IMG_UINT32                      uiSizeInBytes;
1443 } PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE;
1446 /******************************************************************************
1447  *      'bridge out' Map CPU Physical to User Space
1448  *****************************************************************************/
1449 typedef struct PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE_TAG
1451         IMG_PVOID                       pvUserAddr;
1452         IMG_UINT32                      uiActualSize;
1453         IMG_PVOID                       pvProcess;
1454 } PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE;
1457 /******************************************************************************
1458  *      'bridge in' Unmap CPU Physical to User Space
1459  *****************************************************************************/
1460 typedef struct PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE_TAG
1462         IMG_HANDLE                      hDevCookie;
1463         IMG_PVOID                       pvUserAddr;
1464         IMG_PVOID                       pvProcess;
1465 } PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE;
1468 /******************************************************************************
1469  *      'bridge out' Get user space pointer to Phys to Lin lookup table
1470  *****************************************************************************/
1471 typedef struct PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP_TAG
1473         IMG_PVOID                       *ppvTbl;
1474         IMG_UINT32                      uiTblSize;
1475 } PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP;
1478 /******************************************************************************
1479  *      'bridge in' Register RTSIM process thread
1480  *****************************************************************************/
1481 typedef struct PVRSRV_BRIDGE_IN_REGISTER_SIM_PROCESS_TAG
1483         IMG_HANDLE                      hDevCookie;
1484         IMG_PVOID                       pvProcess;
1485 } PVRSRV_BRIDGE_IN_REGISTER_SIM_PROCESS;
1488 /******************************************************************************
1489  *      'bridge out' Register RTSIM process thread
1490  *****************************************************************************/
1491 typedef struct PVRSRV_BRIDGE_OUT_REGISTER_SIM_PROCESS_TAG
1493         IMG_SYS_PHYADDR         sRegsPhysBase;                  /*!< Physical address of current device register */
1494         IMG_VOID                        *pvRegsBase;                    /*!< User mode linear address of SGX device registers */
1495         IMG_PVOID                       pvProcess;
1496         IMG_UINT32                      ulNoOfEntries;
1497         IMG_PVOID                       pvTblLinAddr;
1498 } PVRSRV_BRIDGE_OUT_REGISTER_SIM_PROCESS;
1501 /******************************************************************************
1502  *      'bridge in' Unregister RTSIM process thread
1503  *****************************************************************************/
1504 typedef struct PVRSRV_BRIDGE_IN_UNREGISTER_SIM_PROCESS_TAG
1506         IMG_HANDLE                      hDevCookie;
1507         IMG_PVOID                       pvProcess;
1508         IMG_VOID                        *pvRegsBase;                    /*!< User mode linear address of SGX device registers */
1510 } PVRSRV_BRIDGE_IN_UNREGISTER_SIM_PROCESS;
1512 /******************************************************************************
1513  *      'bridge in' process simulator ISR event
1514  *****************************************************************************/
1515 typedef struct PVRSRV_BRIDGE_IN_PROCESS_SIMISR_EVENT_TAG
1517         IMG_HANDLE                      hDevCookie;
1518         IMG_UINT32                      ui32StatusAndMask;
1519         PVRSRV_ERROR            eError;
1520 } PVRSRV_BRIDGE_IN_PROCESS_SIMISR_EVENT;
1522 /******************************************************************************
1523  *      'bridge in' initialisation server disconnect
1524  *****************************************************************************/
1525 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT_TAG
1527         IMG_BOOL                bInitSuccesful;
1528 } PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT;
1531 typedef struct PVRSRV_BRIDGE_IN_ALLOC_SHARED_SYS_MEM_TAG
1533     IMG_UINT32 ui32Flags;
1534     IMG_SIZE_T uSize;
1535 }PVRSRV_BRIDGE_IN_ALLOC_SHARED_SYS_MEM;
1537 typedef struct PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM_TAG
1539         PVRSRV_ERROR            eError;
1540         IMG_HANDLE              hKernelMemInfo;
1541         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1542 }PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM;
1544 typedef struct PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM_TAG
1546         IMG_HANDLE              hKernelMemInfo;
1547         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1548 }PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM;
1550 typedef struct PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM_TAG
1552         PVRSRV_ERROR eError;
1553 }PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM;
1555 typedef struct PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM_TAG
1557         IMG_HANDLE hKernelMemInfo;
1558 }PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM;
1560 typedef struct PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM_TAG
1562         PVRSRV_CLIENT_MEM_INFO  sClientMemInfo;
1563         PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
1564         IMG_HANDLE              hKernelMemInfo;
1565         PVRSRV_ERROR eError;
1566 }PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM;
1568 typedef struct PVRSRV_BRIDGE_IN_UNMAP_MEMINFO_MEM_TAG
1570         PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
1571 }PVRSRV_BRIDGE_IN_UNMAP_MEMINFO_MEM;
1573 typedef struct PVRSRV_BRIDGE_OUT_UNMAP_MEMINFO_MEM_TAG
1575         PVRSRV_ERROR eError;
1576 }PVRSRV_BRIDGE_OUT_UNMAP_MEMINFO_MEM;
1578 typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAI_TAG
1580         IMG_HANDLE              hOSEventKM;
1581 } PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAIT;
1583 typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN_TAG
1585         PVRSRV_EVENTOBJECT      sEventObject;
1586 } PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN;
1588 typedef struct  IMG_COMPAT PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN_TAG
1590         IMG_HANDLE              hOSEvent;
1591         PVRSRV_ERROR    eError;
1592 } PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN;
1594 typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE_TAG
1596         PVRSRV_EVENTOBJECT      sEventObject;
1597         IMG_HANDLE                      hOSEventKM;
1598 } PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE;
1600 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ_TAG
1602         PVRSRV_ERROR    eError;
1603         IMG_HANDLE              hKernelSyncInfoModObj;
1604 } PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ;
1606 typedef struct PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ
1608         IMG_HANDLE              hKernelSyncInfoModObj;
1609 } PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ;
1611 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS_TAG
1613         IMG_HANDLE              hKernelSyncInfoModObj;
1614         IMG_HANDLE              hKernelSyncInfo;
1615         IMG_UINT32              ui32ModifyFlags;
1616 } PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS;
1618 typedef struct PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS_TAG
1620         IMG_HANDLE              hKernelSyncInfoModObj;
1621 } PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS;
1623 typedef struct PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS_TAG
1625         PVRSRV_ERROR    eError;
1626         /* The following variable are used to return the PRE-INCREMENTED op vals */
1627         IMG_UINT32              ui32ReadOpsPending;
1628         IMG_UINT32              ui32WriteOpsPending;
1629         IMG_UINT32              ui32ReadOps2Pending;
1630 } PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS;
1632 typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_TAKE_TOKEN_TAG
1634         IMG_HANDLE              hKernelSyncInfo;
1635 } PVRSRV_BRIDGE_IN_SYNC_OPS_TAKE_TOKEN;
1637 typedef struct PVRSRV_BRIDGE_OUT_SYNC_OPS_TAKE_TOKEN_TAG
1639         PVRSRV_ERROR    eError;
1640         IMG_UINT32              ui32ReadOpsPending;
1641         IMG_UINT32              ui32WriteOpsPending;
1642         IMG_UINT32              ui32ReadOps2Pending;
1643 } PVRSRV_BRIDGE_OUT_SYNC_OPS_TAKE_TOKEN;
1645 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_TOKEN_TAG
1647         IMG_HANDLE              hKernelSyncInfo;
1648         IMG_UINT32              ui32ReadOpsPendingSnapshot;
1649         IMG_UINT32              ui32WriteOpsPendingSnapshot;
1650         IMG_UINT32              ui32ReadOps2PendingSnapshot;
1651 } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_TOKEN;
1653 typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ_TAG
1655         IMG_HANDLE              hKernelSyncInfoModObj;
1656 } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ;
1658 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA_TAG
1660         IMG_HANDLE              hKernelSyncInfo;
1661         IMG_UINT32              ui32Delta;
1662 } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA;
1664 typedef struct PVRSRV_BRIDGE_IN_ALLOC_SYNC_INFO_TAG
1666         IMG_HANDLE              hDevCookie;
1667 } PVRSRV_BRIDGE_IN_ALLOC_SYNC_INFO;
1669 typedef struct IMG_COMPAT PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO_TAG
1671         PVRSRV_ERROR    eError;
1672         IMG_HANDLE              hKernelSyncInfo;
1673 } PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO;
1675 typedef struct PVRSRV_BRIDGE_IN_FREE_SYNC_INFO_TAG
1677         IMG_HANDLE              hKernelSyncInfo;
1678 } PVRSRV_BRIDGE_IN_FREE_SYNC_INFO;
1680 typedef struct IMG_COMPAT PVRSRV_BRIDGE_IN_CHG_DEV_MEM_ATTRIBS_TAG
1682         IMG_SID                 hKernelMemInfo;
1683         IMG_UINT32              ui32Attribs;
1684 } PVRSRV_BRIDGE_IN_CHG_DEV_MEM_ATTRIBS;
1687 #if defined (__cplusplus)
1689 #endif
1691 #endif /* __PVR_BRIDGE_H__ */
1693 /******************************************************************************
1694  End of file (pvr_bridge.h)
1695 ******************************************************************************/