ENGR00156850 gpu-viv: add gpu-viv driver source
[wandboard.git] / drivers / mxc / gpu-viv / hal / os / linux / kernel / gc_hal_kernel_device.h
blob08c5e82696ba2aa5314d1890967f17f75bf10560
1 /****************************************************************************
3 * Copyright (C) 2005 - 2011 by Vivante Corp.
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the license, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 *****************************************************************************/
24 #ifndef __gc_hal_kernel_device_h_
25 #define __gc_hal_kernel_device_h_
27 #ifdef ANDROID
28 #define gcdkREPORT_VIDMEM_LEAK 0
29 #else
30 #define gcdkREPORT_VIDMEM_LEAK 1
31 #endif
33 /******************************************************************************\
34 ******************************* gckGALDEVICE Structure *******************************
35 \******************************************************************************/
37 typedef struct _gckGALDEVICE
39 /* Objects. */
40 gckOS os;
41 gckKERNEL kernels[gcdCORE_COUNT];
43 /* Attributes. */
44 gctSIZE_T internalSize;
45 gctPHYS_ADDR internalPhysical;
46 gctPOINTER internalLogical;
47 gckVIDMEM internalVidMem;
48 gctSIZE_T externalSize;
49 gctPHYS_ADDR externalPhysical;
50 gctPOINTER externalLogical;
51 gckVIDMEM externalVidMem;
52 gckVIDMEM contiguousVidMem;
53 gctPOINTER contiguousBase;
54 gctPHYS_ADDR contiguousPhysical;
55 gctSIZE_T contiguousSize;
56 gctBOOL contiguousMapped;
57 gctPOINTER contiguousMappedUser;
58 gctSIZE_T systemMemorySize;
59 gctUINT32 systemMemoryBaseAddress;
60 gctPOINTER registerBases[gcdCORE_COUNT];
61 gctSIZE_T registerSizes[gcdCORE_COUNT];
62 gctUINT32 baseAddress;
63 gctUINT32 requestedRegisterMemBases[gcdCORE_COUNT];
64 gctSIZE_T requestedRegisterMemSizes[gcdCORE_COUNT];
65 gctUINT32 requestedContiguousBase;
66 gctSIZE_T requestedContiguousSize;
68 /* IRQ management. */
69 gctINT irqLines[gcdCORE_COUNT];
70 gctBOOL isrInitializeds[gcdCORE_COUNT];
71 gctBOOL dataReadys[gcdCORE_COUNT];
73 /* Thread management. */
74 struct task_struct *threadCtxts[gcdCORE_COUNT];
75 struct semaphore semas[gcdCORE_COUNT];
76 gctBOOL threadInitializeds[gcdCORE_COUNT];
77 gctBOOL killThread;
79 /* Signal management. */
80 gctINT signal;
82 /* Core mapping */
83 gceCORE coreMapping[8];
85 #if gcdPOWEROFF_TIMEOUT
86 struct task_struct *pmThreadCtxts;
87 gctBOOL pmThreadInitializeds;
88 #endif
90 * gckGALDEVICE;
92 typedef struct _gcsHAL_PRIVATE_DATA
94 gckGALDEVICE device;
95 gctPOINTER mappedMemory;
96 gctPOINTER contiguousLogical;
97 /* The process opening the device may not be the same as the one that closes it. */
98 gctUINT32 pidOpen;
100 gcsHAL_PRIVATE_DATA, * gcsHAL_PRIVATE_DATA_PTR;
102 gceSTATUS gckGALDEVICE_Setup_ISR(
103 IN gckGALDEVICE Device
106 gceSTATUS gckGALDEVICE_Setup_ISR_2D(
107 IN gckGALDEVICE Device
110 gceSTATUS gckGALDEVICE_Setup_ISR_VG(
111 IN gckGALDEVICE Device
114 gceSTATUS gckGALDEVICE_Release_ISR(
115 IN gckGALDEVICE Device
118 gceSTATUS gckGALDEVICE_Release_ISR_2D(
119 IN gckGALDEVICE Device
122 gceSTATUS gckGALDEVICE_Release_ISR_VG(
123 IN gckGALDEVICE Device
126 gceSTATUS gckGALDEVICE_Start_Threads(
127 IN gckGALDEVICE Device
130 gceSTATUS gckGALDEVICE_Stop_Threads(
131 gckGALDEVICE Device
134 gceSTATUS gckGALDEVICE_Start(
135 IN gckGALDEVICE Device
138 gceSTATUS gckGALDEVICE_Stop(
139 gckGALDEVICE Device
142 gceSTATUS gckGALDEVICE_Construct(
143 IN gctINT IrqLine,
144 IN gctUINT32 RegisterMemBase,
145 IN gctSIZE_T RegisterMemSize,
146 IN gctINT IrqLine2D,
147 IN gctUINT32 RegisterMemBase2D,
148 IN gctSIZE_T RegisterMemSize2D,
149 IN gctINT IrqLineVG,
150 IN gctUINT32 RegisterMemBaseVG,
151 IN gctSIZE_T RegisterMemSizeVG,
152 IN gctUINT32 ContiguousBase,
153 IN gctSIZE_T ContiguousSize,
154 IN gctSIZE_T BankSize,
155 IN gctINT FastClear,
156 IN gctINT Compression,
157 IN gctUINT32 PhysBaseAddr,
158 IN gctUINT32 PhysSize,
159 IN gctINT Signal,
160 OUT gckGALDEVICE *Device
163 gceSTATUS gckGALDEVICE_Destroy(
164 IN gckGALDEVICE Device
167 #endif /* __gc_hal_kernel_device_h_ */