summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGowtham Tammana2014-08-07 14:28:10 -0500
committerGowtham Tammana2014-08-07 14:28:10 -0500
commit0de316f6e53cb060f331f53caf5863e1950abed6 (patch)
tree8425330d9c71a7d012a7a60197c11d79e7a64548
parent20f5811e841baa7be0ec10b121f3d2c562bd02f9 (diff)
downloaddevice-ti-proprietary-open-0de316f6e53cb060f331f53caf5863e1950abed6.tar.gz
device-ti-proprietary-open-0de316f6e53cb060f331f53caf5863e1950abed6.tar.xz
device-ti-proprietary-open-0de316f6e53cb060f331f53caf5863e1950abed6.zip
jacinto6:sgx_src: updating ddk1.12@2917986 sources.
sgx_src is updated to DDK1.12@2917986 sources. Change-Id: I3a5230100ea2d619a0626b9cd5dbb44458c15b85 Signed-off-by: Gowtham Tammana <g-tammana@ti.com>
-rw-r--r--jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/android/extra_config.mk2
-rw-r--r--jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/android/features.mk10
-rw-r--r--jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/ion.mk65
-rw-r--r--jacinto6/sgx_src/eurasia_km/include4/pvrversion.h6
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/common/deviceclass.c8
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/common/pvrsrv.c4
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxinit.c10
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/ion.c29
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/ion.h2
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/module.c25
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mutils.h2
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/osfunc.c118
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/osperproc.c8
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/pvr_drm.c2
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/hwdefs/sgxerrata.h5
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/system/omap/sysconfig.c11
16 files changed, 215 insertions, 92 deletions
diff --git a/jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/android/extra_config.mk b/jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/android/extra_config.mk
index b5dd754..bb47c8d 100644
--- a/jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/android/extra_config.mk
+++ b/jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/android/extra_config.mk
@@ -50,3 +50,5 @@ $(eval $(call TunableBothConfigMake,SUPPORT_PVRSRV_ANDROID_SYSTRACE,))
50 50
51$(eval $(call TunableBothConfigMake,PVR_ANDROID_NATIVE_WINDOW_HAS_SYNC,)) 51$(eval $(call TunableBothConfigMake,PVR_ANDROID_NATIVE_WINDOW_HAS_SYNC,))
52$(eval $(call TunableBothConfigC,PVR_ANDROID_NATIVE_WINDOW_HAS_SYNC,)) 52$(eval $(call TunableBothConfigC,PVR_ANDROID_NATIVE_WINDOW_HAS_SYNC,))
53
54include ../common/ion.mk
diff --git a/jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/android/features.mk b/jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/android/features.mk
index 51370ef..088d47f 100644
--- a/jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/android/features.mk
+++ b/jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/android/features.mk
@@ -186,8 +186,9 @@ endif
186# We also need to support IMPLEMENTATION_DEFINED so gralloc allocates 186# We also need to support IMPLEMENTATION_DEFINED so gralloc allocates
187# framebuffers and GPU buffers in a 'preferred' format. 187# framebuffers and GPU buffers in a 'preferred' format.
188# 188#
189ifeq ($(is_at_least_jellybean_mr1),0) 189# FB HAL is still being used in TI post JB MR1 releases.
190SUPPORT_ANDROID_FRAMEBUFFER_HAL := 1 190SUPPORT_ANDROID_FRAMEBUFFER_HAL := 1
191ifeq ($(is_at_least_jellybean_mr1),0)
191else 192else
192PVR_ANDROID_HAS_HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED := 1 193PVR_ANDROID_HAS_HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED := 1
193endif 194endif
@@ -249,13 +250,6 @@ PVR_ANDROID_REMAP_HW_ONLY_PIXEL_FORMATS := 1
249endif 250endif
250 251
251############################################################################## 252##############################################################################
252# Workaround for texture atlas "double registerBuffer" issue in KK
253#
254ifeq ($(is_at_least_kitkat),1)
255PVR_ANDROID_DONT_ENFORCE_SINGLE_REGISTER := 1
256endif
257
258##############################################################################
259# Support newer HWC features in KK 253# Support newer HWC features in KK
260# 254#
261ifeq ($(is_at_least_kitkat),1) 255ifeq ($(is_at_least_kitkat),1)
diff --git a/jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/ion.mk b/jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/ion.mk
new file mode 100644
index 0000000..f3f3c46
--- /dev/null
+++ b/jacinto6/sgx_src/eurasia_km/eurasiacon/build/linux2/common/ion.mk
@@ -0,0 +1,65 @@
1########################################################################### ###
2#@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved
3#@License Dual MIT/GPLv2
4#
5# The contents of this file are subject to the MIT license as set out below.
6#
7# Permission is hereby granted, free of charge, to any person obtaining a copy
8# of this software and associated documentation files (the "Software"), to deal
9# in the Software without restriction, including without limitation the rights
10# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11# copies of the Software, and to permit persons to whom the Software is
12# furnished to do so, subject to the following conditions:
13#
14# The above copyright notice and this permission notice shall be included in
15# all copies or substantial portions of the Software.
16#
17# Alternatively, the contents of this file may be used under the terms of
18# the GNU General Public License Version 2 ("GPL") in which case the provisions
19# of GPL are applicable instead of those above.
20#
21# If you wish to allow use of your version of this file only under the terms of
22# GPL, and not to allow others to use your version of this file under the terms
23# of the MIT license, indicate your decision by deleting the provisions above
24# and replace them with the notice and other provisions required by GPL as set
25# out in the file called "GPL-COPYING" included in this distribution. If you do
26# not delete the provisions above, a recipient may use your version of this file
27# under the terms of either the MIT license or GPL.
28#
29# This License is also included in this distribution in the file called
30# "MIT-COPYING".
31#
32# EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
33# PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
34# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
35# PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
36# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
37# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
38# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
39### ###########################################################################
40
41ifneq ($(KERNELDIR),)
42ifneq ($(SUPPORT_ION),)
43
44# Support kernels built out-of-tree with O=/other/path
45# In those cases, KERNELDIR will be O, not the source tree.
46ifneq ($(wildcard $(KERNELDIR)/source),)
47KSRCDIR := $(KERNELDIR)/source
48else
49KSRCDIR := $(KERNELDIR)
50endif
51
52ifneq ($(wildcard $(KSRCDIR)/drivers/staging/android/ion/ion.h),)
53# The kernel has a more recent version of ion, located in drivers/staging.
54# Change the default header paths and the behaviour wrt sg_dma_len.
55SUPPORT_ION_HEADER := \"../drivers/staging/android/ion/ion.h\"
56SUPPORT_ION_PRIV_HEADER := \"../drivers/staging/android/ion/ion_priv.h\"
57SUPPORT_ION_USE_SG_LENGTH := 1
58endif
59
60$(eval $(call TunableKernelConfigC,SUPPORT_ION_HEADER,\"linux/ion.h\"))
61$(eval $(call TunableKernelConfigC,SUPPORT_ION_PRIV_HEADER,\"../drivers/gpu/ion/ion_priv.h\"))
62$(eval $(call TunableKernelConfigC,SUPPORT_ION_USE_SG_LENGTH,))
63
64endif
65endif
diff --git a/jacinto6/sgx_src/eurasia_km/include4/pvrversion.h b/jacinto6/sgx_src/eurasia_km/include4/pvrversion.h
index ed4025f..a8dbd13 100644
--- a/jacinto6/sgx_src/eurasia_km/include4/pvrversion.h
+++ b/jacinto6/sgx_src/eurasia_km/include4/pvrversion.h
@@ -53,7 +53,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
53 53
54#define PVRVERSION_FAMILY "sgxddk" 54#define PVRVERSION_FAMILY "sgxddk"
55#define PVRVERSION_BRANCHNAME "1.12" 55#define PVRVERSION_BRANCHNAME "1.12"
56#define PVRVERSION_BUILD 2701748 56#define PVRVERSION_BUILD 2917986
57#define PVRVERSION_BSCONTROL "SGX_DDK" 57#define PVRVERSION_BSCONTROL "SGX_DDK"
58 58
59#define PVRVERSION_STRING "SGX_DDK sgxddk 1.12@" PVR_STR2(PVRVERSION_BUILD) 59#define PVRVERSION_STRING "SGX_DDK sgxddk 1.12@" PVR_STR2(PVRVERSION_BUILD)
@@ -61,8 +61,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
61 61
62#define COPYRIGHT_TXT "Copyright (c) Imagination Technologies Ltd. All Rights Reserved." 62#define COPYRIGHT_TXT "Copyright (c) Imagination Technologies Ltd. All Rights Reserved."
63 63
64#define PVRVERSION_BUILD_HI 270 64#define PVRVERSION_BUILD_HI 291
65#define PVRVERSION_BUILD_LO 1748 65#define PVRVERSION_BUILD_LO 7986
66#define PVRVERSION_STRING_NUMERIC PVR_STR2(PVRVERSION_MAJ) "." PVR_STR2(PVRVERSION_MIN) "." PVR_STR2(PVRVERSION_BUILD_HI) "." PVR_STR2(PVRVERSION_BUILD_LO) 66#define PVRVERSION_STRING_NUMERIC PVR_STR2(PVRVERSION_MAJ) "." PVR_STR2(PVRVERSION_MIN) "." PVR_STR2(PVRVERSION_BUILD_HI) "." PVR_STR2(PVRVERSION_BUILD_LO)
67 67
68#endif /* _PVRVERSION_H_ */ 68#endif /* _PVRVERSION_H_ */
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/common/deviceclass.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/common/deviceclass.c
index 7a96e0e..6ae3618 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/common/deviceclass.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/common/deviceclass.c
@@ -1777,8 +1777,12 @@ static IMG_VOID FreePrivateData(IMG_HANDLE hCallbackData)
1777{ 1777{
1778 CALLBACK_DATA *psCallbackData = hCallbackData; 1778 CALLBACK_DATA *psCallbackData = hCallbackData;
1779 1779
1780 OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, psCallbackData->ui32PrivDataLength, 1780 if(psCallbackData->ui32PrivDataLength)
1781 psCallbackData->pvPrivData, IMG_NULL); 1781 {
1782 OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, psCallbackData->ui32PrivDataLength,
1783 psCallbackData->pvPrivData, IMG_NULL);
1784 }
1785
1782 OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, 1786 OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP,
1783 sizeof(IMG_VOID *) * psCallbackData->ui32NumMemInfos, 1787 sizeof(IMG_VOID *) * psCallbackData->ui32NumMemInfos,
1784 psCallbackData->ppvMemInfos, IMG_NULL); 1788 psCallbackData->ppvMemInfos, IMG_NULL);
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/common/pvrsrv.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/common/pvrsrv.c
index ea1fcaf..ac8e1e3 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/common/pvrsrv.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/common/pvrsrv.c
@@ -177,13 +177,13 @@ IMG_VOID IMG_CALLCONV PVRSRVCompatCheckKM(PVRSRV_BRIDGE_IN_COMPAT_CHECK *psUserM
177 || (psUserModeDDKDetails->ui32DDKBuild != PVRVERSION_BUILD)) 177 || (psUserModeDDKDetails->ui32DDKBuild != PVRVERSION_BUILD))
178 { 178 {
179 psRetOUT->eError = PVRSRV_ERROR_DDK_VERSION_MISMATCH; 179 psRetOUT->eError = PVRSRV_ERROR_DDK_VERSION_MISMATCH;
180 PVR_DPF((PVR_DBG_ERROR, "(FAIL) UM-KM DDK Mismatch UM-(%d) KM-(%d).", 180 PVR_LOG(("(FAIL) UM-KM DDK Mismatch UM-(%d) KM-(%d).",
181 psUserModeDDKDetails->ui32DDKBuild, PVRVERSION_BUILD)); 181 psUserModeDDKDetails->ui32DDKBuild, PVRVERSION_BUILD));
182 } 182 }
183 else 183 else
184 { 184 {
185 psRetOUT->eError = PVRSRV_OK; 185 psRetOUT->eError = PVRSRV_OK;
186 PVR_DPF((PVR_DBG_MESSAGE, "UM DDK-(%d) and KM DDK-(%d) match. [ OK ]", 186 PVR_LOG(("UM DDK-(%d) and KM DDK-(%d) match. [ OK ]",
187 psUserModeDDKDetails->ui32DDKBuild ,PVRVERSION_BUILD)); 187 psUserModeDDKDetails->ui32DDKBuild ,PVRVERSION_BUILD));
188 } 188 }
189} 189}
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxinit.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxinit.c
index 04b1748..8614c45 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxinit.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxinit.c
@@ -2710,7 +2710,7 @@ PVRSRV_ERROR SGXDevInitCompatCheck(PVRSRV_DEVICE_NODE *psDeviceNode)
2710 2710
2711 /* Clear state (not strictly necessary since this is the first call) */ 2711 /* Clear state (not strictly necessary since this is the first call) */
2712 psSGXMiscInfoInt = psMemInfo->pvLinAddrKM; 2712 psSGXMiscInfoInt = psMemInfo->pvLinAddrKM;
2713 psSGXMiscInfoInt->ui32MiscInfoFlags = 0; 2713 psSGXMiscInfoInt->ui32MiscInfoFlags &= ~PVRSRV_USSE_MISCINFO_GET_STRUCT_SIZES;
2714 psSGXMiscInfoInt->ui32MiscInfoFlags |= PVRSRV_USSE_MISCINFO_GET_STRUCT_SIZES; 2714 psSGXMiscInfoInt->ui32MiscInfoFlags |= PVRSRV_USSE_MISCINFO_GET_STRUCT_SIZES;
2715 eError = SGXGetMiscInfoUkernel(psDevInfo, psDeviceNode, IMG_NULL); 2715 eError = SGXGetMiscInfoUkernel(psDevInfo, psDeviceNode, IMG_NULL);
2716 2716
@@ -2951,10 +2951,8 @@ PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO *psDevInfo,
2951{ 2951{
2952 PVRSRV_ERROR eError; 2952 PVRSRV_ERROR eError;
2953 PPVRSRV_KERNEL_MEM_INFO psMemInfo = psDevInfo->psKernelSGXMiscMemInfo; 2953 PPVRSRV_KERNEL_MEM_INFO psMemInfo = psDevInfo->psKernelSGXMiscMemInfo;
2954 IMG_UINT32 *pui32MiscInfoFlags = &((PVRSRV_SGX_MISCINFO_INFO*)(psMemInfo->pvLinAddrKM))->ui32MiscInfoFlags; 2954 IMG_UINT32 *pui32MiscInfoFlags;
2955 2955 pui32MiscInfoFlags = &((PVRSRV_SGX_MISCINFO_INFO*)(psMemInfo->pvLinAddrKM))->ui32MiscInfoFlags;
2956 /* Reset the misc info state flags */
2957 *pui32MiscInfoFlags = 0;
2958 2956
2959#if !defined(SUPPORT_SGX_EDM_MEMORY_DEBUG) 2957#if !defined(SUPPORT_SGX_EDM_MEMORY_DEBUG)
2960 PVR_UNREFERENCED_PARAMETER(hDevMemContext); 2958 PVR_UNREFERENCED_PARAMETER(hDevMemContext);
@@ -3363,6 +3361,7 @@ PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO *psDevInfo,
3363 PVRSRV_SGX_MISCINFO_MEMACCESS *psSGXMemDest; /* user-defined mem write */ 3361 PVRSRV_SGX_MISCINFO_MEMACCESS *psSGXMemDest; /* user-defined mem write */
3364 3362
3365 { 3363 {
3364 *pui32MiscInfoFlags &= ~PVRSRV_USSE_MISCINFO_MEMREAD;
3366 /* Set the mem read flag; src is user-defined */ 3365 /* Set the mem read flag; src is user-defined */
3367 *pui32MiscInfoFlags |= PVRSRV_USSE_MISCINFO_MEMREAD; 3366 *pui32MiscInfoFlags |= PVRSRV_USSE_MISCINFO_MEMREAD;
3368 psSGXMemSrc = &((PVRSRV_SGX_MISCINFO_INFO*)(psMemInfo->pvLinAddrKM))->sSGXMemAccessSrc; 3367 psSGXMemSrc = &((PVRSRV_SGX_MISCINFO_INFO*)(psMemInfo->pvLinAddrKM))->sSGXMemAccessSrc;
@@ -3379,6 +3378,7 @@ PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO *psDevInfo,
3379 3378
3380 if( psMiscInfo->eRequest == SGX_MISC_INFO_REQUEST_MEMCOPY) 3379 if( psMiscInfo->eRequest == SGX_MISC_INFO_REQUEST_MEMCOPY)
3381 { 3380 {
3381 *pui32MiscInfoFlags &= ~PVRSRV_USSE_MISCINFO_MEMWRITE;
3382 /* Set the mem write flag; dest is user-defined */ 3382 /* Set the mem write flag; dest is user-defined */
3383 *pui32MiscInfoFlags |= PVRSRV_USSE_MISCINFO_MEMWRITE; 3383 *pui32MiscInfoFlags |= PVRSRV_USSE_MISCINFO_MEMWRITE;
3384 psSGXMemDest = &((PVRSRV_SGX_MISCINFO_INFO*)(psMemInfo->pvLinAddrKM))->sSGXMemAccessDest; 3384 psSGXMemDest = &((PVRSRV_SGX_MISCINFO_INFO*)(psMemInfo->pvLinAddrKM))->sSGXMemAccessDest;
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/ion.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/ion.c
index 036f1bd..3bd6659 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/ion.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/ion.c
@@ -119,9 +119,31 @@ IMG_VOID IonDeinit(IMG_VOID)
119 119
120#else /* defined(CONFIG_ION_SUNXI) */ 120#else /* defined(CONFIG_ION_SUNXI) */
121 121
122#if defined(CONFIG_ION_INCDHAD1)
123
124/* Real ion with sharing (incdhad1) */
125
126extern struct ion_device *incdhad1_ion_device;
127struct ion_device *gpsIonDev;
128
129PVRSRV_ERROR IonInit(IMG_VOID)
130{
131 gpsIonDev = incdhad1_ion_device;
132 return PVRSRV_OK;
133}
134
135
136IMG_VOID IonDeinit(IMG_VOID)
137{
138 gpsIonDev = IMG_NULL;
139}
140
141#else /* defined(CONFIG_ION_INCDHAD1) */
142
122/* "Reference" ion implementation */ 143/* "Reference" ion implementation */
123 144
124#include "../drivers/gpu/ion/ion_priv.h" 145#include SUPPORT_ION_PRIV_HEADER
146#include <linux/version.h>
125 147
126static struct ion_heap **gapsIonHeaps; 148static struct ion_heap **gapsIonHeaps;
127struct ion_device *gpsIonDev; 149struct ion_device *gpsIonDev;
@@ -138,6 +160,9 @@ static struct ion_platform_data gsGenericConfig =
138{ 160{
139 .nr = 3, 161 .nr = 3,
140 .heaps = 162 .heaps =
163#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,39))
164 (struct ion_platform_heap [])
165#endif
141 { 166 {
142 { 167 {
143 .type = ION_HEAP_TYPE_SYSTEM_CONTIG, 168 .type = ION_HEAP_TYPE_SYSTEM_CONTIG,
@@ -216,6 +241,8 @@ IMG_VOID IonDeinit(IMG_VOID)
216 ion_device_destroy(gpsIonDev); 241 ion_device_destroy(gpsIonDev);
217} 242}
218 243
244#endif /* defined(CONFIG_ION_INCDHAD1) */
245
219#endif /* defined(CONFIG_ION_SUNXI) */ 246#endif /* defined(CONFIG_ION_SUNXI) */
220 247
221#endif /* defined(CONFIG_ION_S5P) */ 248#endif /* defined(CONFIG_ION_S5P) */
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/ion.h b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/ion.h
index 042d3c4..b71ecd7 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/ion.h
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/ion.h
@@ -44,7 +44,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
44 44
45#if defined(SUPPORT_ION) 45#if defined(SUPPORT_ION)
46 46
47#include <linux/ion.h> 47#include SUPPORT_ION_HEADER
48 48
49#include "img_types.h" 49#include "img_types.h"
50#include "servicesext.h" 50#include "servicesext.h"
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/module.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/module.c
index a86de68..4c9cf9e 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/module.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/module.c
@@ -476,13 +476,14 @@ PVR_MOD_STATIC void PVRSRVDriverShutdown(LDM_DEV *pDevice)
476 476
477 if (!bDriverIsShutdown && !bDriverIsSuspended) 477 if (!bDriverIsShutdown && !bDriverIsSuspended)
478 { 478 {
479#if defined(ANDROID)
479 /* 480 /*
480 * Take the bridge mutex, and never release it, to stop 481 * Take the bridge mutex, and never release it, to stop
481 * processes trying to use the driver after it has been 482 * processes trying to use the driver after it has been
482 * shutdown. 483 * shutdown.
483 */ 484 */
484 LinuxLockMutexNested(&gPVRSRVLock, PVRSRV_LOCK_CLASS_BRIDGE); 485 LinuxLockMutexNested(&gPVRSRVLock, PVRSRV_LOCK_CLASS_BRIDGE);
485 486#endif
486 (void) PVRSRVSetPowerStateKM(PVRSRV_SYS_POWER_STATE_D3); 487 (void) PVRSRVSetPowerStateKM(PVRSRV_SYS_POWER_STATE_D3);
487 } 488 }
488 489
@@ -542,16 +543,30 @@ PVR_MOD_STATIC int PVRSRVDriverSuspend(LDM_DEV *pDevice, pm_message_t state)
542 543
543 if (!bDriverIsSuspended && !bDriverIsShutdown) 544 if (!bDriverIsSuspended && !bDriverIsShutdown)
544 { 545 {
546#if defined(ANDROID)
547 /*
548 * The bridge mutex will be held until we resume.
549 * The lock doesn't need to be taken on (non-Android)
550 * Linux systems, as all user processes will have been
551 * suspended at this point. In any case, taking the mutex
552 * may result in possible lock ordering problems being
553 * flagged up by the kernel, as the Linux console lock may
554 * have already been taken at this point. If the 3rd party
555 * display driver is Linux Framebuffer based, the previous
556 * locking order may have been bridge mutex first, followed
557 * by the console lock.
558 */
545 LinuxLockMutexNested(&gPVRSRVLock, PVRSRV_LOCK_CLASS_BRIDGE); 559 LinuxLockMutexNested(&gPVRSRVLock, PVRSRV_LOCK_CLASS_BRIDGE);
546 560#endif
547 if (PVRSRVSetPowerStateKM(PVRSRV_SYS_POWER_STATE_D3) == PVRSRV_OK) 561 if (PVRSRVSetPowerStateKM(PVRSRV_SYS_POWER_STATE_D3) == PVRSRV_OK)
548 { 562 {
549 /* The bridge mutex will be held until we resume */
550 bDriverIsSuspended = IMG_TRUE; 563 bDriverIsSuspended = IMG_TRUE;
551 } 564 }
552 else 565 else
553 { 566 {
567#if defined(ANDROID)
554 LinuxUnLockMutex(&gPVRSRVLock); 568 LinuxUnLockMutex(&gPVRSRVLock);
569#endif
555 res = -EINVAL; 570 res = -EINVAL;
556 } 571 }
557 } 572 }
@@ -602,11 +617,15 @@ PVR_MOD_STATIC int PVRSRVDriverResume(LDM_DEV *pDevice)
602 if (PVRSRVSetPowerStateKM(PVRSRV_SYS_POWER_STATE_D0) == PVRSRV_OK) 617 if (PVRSRVSetPowerStateKM(PVRSRV_SYS_POWER_STATE_D0) == PVRSRV_OK)
603 { 618 {
604 bDriverIsSuspended = IMG_FALSE; 619 bDriverIsSuspended = IMG_FALSE;
620#if defined(ANDROID)
605 LinuxUnLockMutex(&gPVRSRVLock); 621 LinuxUnLockMutex(&gPVRSRVLock);
622#endif
606 } 623 }
607 else 624 else
608 { 625 {
626#if defined(ANDROID)
609 /* The bridge mutex is not released on failure */ 627 /* The bridge mutex is not released on failure */
628#endif
610 res = -EINVAL; 629 res = -EINVAL;
611 } 630 }
612 } 631 }
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mutils.h b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mutils.h
index 6bcee26..a66e927 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mutils.h
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mutils.h
@@ -64,7 +64,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
64 #if defined(__arm__) || defined(__sh__) 64 #if defined(__arm__) || defined(__sh__)
65 #define PGPROT_WC(pv) pgprot_writecombine(pv) 65 #define PGPROT_WC(pv) pgprot_writecombine(pv)
66 #elif defined(__mips__) 66 #elif defined(__mips__)
67 #define PGPROT_WC(pv) pgprot_noncached_wa(pv) 67 #define PGPROT_WC(pv) pgprot_writecombine(pv)
68 #elif defined(__i386__) || defined(__x86_64) 68 #elif defined(__i386__) || defined(__x86_64)
69 /* PAT support supersedes this */ 69 /* PAT support supersedes this */
70 #define PGPROT_WC(pv) pgprot_noncached(pv) 70 #define PGPROT_WC(pv) pgprot_noncached(pv)
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/osfunc.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/osfunc.c
index f2803ab..c9b577e 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/osfunc.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/osfunc.c
@@ -859,29 +859,25 @@ static irqreturn_t DeviceISRWrapper(int irq, void *dev_id
859#endif 859#endif
860 ) 860 )
861{ 861{
862 PVRSRV_DEVICE_NODE *psDeviceNode; 862 PVRSRV_DEVICE_NODE *psDeviceNode = (PVRSRV_DEVICE_NODE*)dev_id;
863 SYS_DATA *psSysData = psDeviceNode->psSysData;
864 ENV_DATA *psEnvData = (ENV_DATA *)psSysData->pvEnvSpecificData;
863 IMG_BOOL bStatus = IMG_FALSE; 865 IMG_BOOL bStatus = IMG_FALSE;
864 866
865 PVR_UNREFERENCED_PARAMETER(irq); 867 PVR_UNREFERENCED_PARAMETER(irq);
866
867#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) 868#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19))
868 PVR_UNREFERENCED_PARAMETER(regs); 869 PVR_UNREFERENCED_PARAMETER(regs);
869#endif 870#endif
870 psDeviceNode = (PVRSRV_DEVICE_NODE*)dev_id;
871 if(!psDeviceNode)
872 {
873 PVR_DPF((PVR_DBG_ERROR, "DeviceISRWrapper: invalid params\n"));
874 goto out;
875 }
876 871
877 bStatus = PVRSRVDeviceLISR(psDeviceNode); 872 if (psEnvData->bLISRInstalled)
878
879 if (bStatus)
880 { 873 {
881 OSScheduleMISR((IMG_VOID *)psDeviceNode->psSysData); 874 bStatus = PVRSRVDeviceLISR(psDeviceNode);
875 if (bStatus)
876 {
877 OSScheduleMISR((IMG_VOID *)psSysData);
878 }
882 } 879 }
883 880
884out:
885#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) 881#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
886 return bStatus ? IRQ_HANDLED : IRQ_NONE; 882 return bStatus ? IRQ_HANDLED : IRQ_NONE;
887#endif 883#endif
@@ -908,7 +904,8 @@ static irqreturn_t SystemISRWrapper(int irq, void *dev_id
908#endif 904#endif
909 ) 905 )
910{ 906{
911 SYS_DATA *psSysData; 907 SYS_DATA *psSysData = (SYS_DATA *)dev_id;
908 ENV_DATA *psEnvData = (ENV_DATA *)psSysData->pvEnvSpecificData;
912 IMG_BOOL bStatus = IMG_FALSE; 909 IMG_BOOL bStatus = IMG_FALSE;
913 910
914 PVR_UNREFERENCED_PARAMETER(irq); 911 PVR_UNREFERENCED_PARAMETER(irq);
@@ -916,21 +913,16 @@ static irqreturn_t SystemISRWrapper(int irq, void *dev_id
916#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) 913#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19))
917 PVR_UNREFERENCED_PARAMETER(regs); 914 PVR_UNREFERENCED_PARAMETER(regs);
918#endif 915#endif
919 psSysData = (SYS_DATA *)dev_id;
920 if(!psSysData)
921 {
922 PVR_DPF((PVR_DBG_ERROR, "SystemISRWrapper: invalid params\n"));
923 goto out;
924 }
925 916
926 bStatus = PVRSRVSystemLISR(psSysData); 917 if (psEnvData->bLISRInstalled)
927
928 if (bStatus)
929 { 918 {
930 OSScheduleMISR((IMG_VOID *)psSysData); 919 bStatus = PVRSRVSystemLISR(psSysData);
920 if (bStatus)
921 {
922 OSScheduleMISR((IMG_VOID *)psSysData);
923 }
931 } 924 }
932 925
933out:
934#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) 926#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
935 return bStatus ? IRQ_HANDLED : IRQ_NONE; 927 return bStatus ? IRQ_HANDLED : IRQ_NONE;
936#endif 928#endif
@@ -1011,10 +1003,10 @@ PVRSRV_ERROR OSUninstallDeviceLISR(IMG_VOID *pvSysData)
1011 1003
1012 PVR_TRACE(("Uninstalling device LISR on IRQ %d with cookie %p", psEnvData->ui32IRQ, psEnvData->pvISRCookie)); 1004 PVR_TRACE(("Uninstalling device LISR on IRQ %d with cookie %p", psEnvData->ui32IRQ, psEnvData->pvISRCookie));
1013 1005
1014 free_irq(psEnvData->ui32IRQ, psEnvData->pvISRCookie);
1015
1016 psEnvData->bLISRInstalled = IMG_FALSE; 1006 psEnvData->bLISRInstalled = IMG_FALSE;
1017 1007
1008 free_irq(psEnvData->ui32IRQ, psEnvData->pvISRCookie);
1009
1018 return PVRSRV_OK; 1010 return PVRSRV_OK;
1019} 1011}
1020 1012
@@ -1091,10 +1083,10 @@ PVRSRV_ERROR OSUninstallSystemLISR(IMG_VOID *pvSysData)
1091 1083
1092 PVR_TRACE(("Uninstalling system LISR on IRQ %d with cookie %p", psEnvData->ui32IRQ, psEnvData->pvISRCookie)); 1084 PVR_TRACE(("Uninstalling system LISR on IRQ %d with cookie %p", psEnvData->ui32IRQ, psEnvData->pvISRCookie));
1093 1085
1094 free_irq(psEnvData->ui32IRQ, psEnvData->pvISRCookie);
1095
1096 psEnvData->bLISRInstalled = IMG_FALSE; 1086 psEnvData->bLISRInstalled = IMG_FALSE;
1097 1087
1088 free_irq(psEnvData->ui32IRQ, psEnvData->pvISRCookie);
1089
1098 return PVRSRV_OK; 1090 return PVRSRV_OK;
1099} 1091}
1100 1092
@@ -4406,6 +4398,7 @@ IMG_BOOL OSInvalidateCPUCacheRangeKM(IMG_HANDLE hOSMemHandle,
4406} 4398}
4407 4399
4408#elif defined(__mips__) 4400#elif defined(__mips__)
4401
4409/* 4402/*
4410 * dmac cache functions are supposed to be used for dma 4403 * dmac cache functions are supposed to be used for dma
4411 * memory which comes from dma-able memory. However examining 4404 * memory which comes from dma-able memory. However examining
@@ -4415,50 +4408,65 @@ IMG_BOOL OSInvalidateCPUCacheRangeKM(IMG_HANDLE hOSMemHandle,
4415 * 4408 *
4416 */ 4409 */
4417 4410
4411static inline size_t pvr_dma_range_len(const void *pvStart, const void *pvEnd)
4412{
4413 return (size_t)((char *)pvEnd - (char *)pvStart);
4414}
4415
4416static void pvr_dma_cache_wback_inv(const void *pvStart, const void *pvEnd)
4417{
4418 size_t uLength = pvr_dma_range_len(pvStart, pvEnd);
4419#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)
4420 dma_cache_sync(NULL, (void *)pvStart, uLength, DMA_BIDIRECTIONAL);
4421#else
4422 dma_cache_wback_inv((unsigned long)pvStart, uLength);
4423#endif
4424}
4425
4426static void pvr_dma_cache_wback(const void *pvStart, const void *pvEnd)
4427{
4428 size_t uLength = pvr_dma_range_len(pvStart, pvEnd);
4429#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)
4430 dma_cache_sync(NULL, (void *)pvStart, uLength, DMA_TO_DEVICE);
4431#else
4432 dma_cache_wback((unsigned long)pvStart, uLength);
4433#endif
4434}
4435
4436static void pvr_dma_cache_inv(const void *pvStart, const void *pvEnd)
4437{
4438 size_t uLength = pvr_dma_range_len(pvStart, pvEnd);
4439#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)
4440 dma_cache_sync(NULL, (void *)pvStart, uLength, DMA_FROM_DEVICE);
4441#else
4442 dma_cache_inv((unsigned long)pvStart, uLength);
4443#endif
4444}
4445
4418IMG_VOID OSCleanCPUCacheKM(IMG_VOID) 4446IMG_VOID OSCleanCPUCacheKM(IMG_VOID)
4419{ 4447{
4420 /* dmac functions flush full cache if size is larger than 4448 /* dmac functions flush full cache if size is larger than
4421 * p-cache size. This is a workaround for the fact that 4449 * {s,d}-cache size. This is a workaround for the fact that
4422 * __flush_cache_all is not an exported symbol. Please 4450 * __flush_cache_all is not an exported symbol. Please
4423 * replace with custom function if available in latest 4451 * replace with custom function if available in latest
4424 * version of linux being used. 4452 * version of linux being used.
4425 * Arbitrary large number (1MB) which should be larger than 4453 * Arbitrary large number (1MB) which should be larger than
4426 * mips p-cache sizes for some time in future. 4454 * mips {s,d}-cache sizes for some time in future.
4427 * */ 4455 * */
4428 dma_cache_wback(0, 0x100000); 4456 pvr_dma_cache_wback(0, (const void *)0x200000);
4429} 4457}
4430 4458
4431IMG_VOID OSFlushCPUCacheKM(IMG_VOID) 4459IMG_VOID OSFlushCPUCacheKM(IMG_VOID)
4432{ 4460{
4433 /* dmac functions flush full cache if size is larger than 4461 /* dmac functions flush full cache if size is larger than
4434 * p-cache size. This is a workaround for the fact that 4462 * {s,d}-cache size. This is a workaround for the fact that
4435 * __flush_cache_all is not an exported symbol. Please 4463 * __flush_cache_all is not an exported symbol. Please
4436 * replace with custom function if available in latest 4464 * replace with custom function if available in latest
4437 * version of linux being used. 4465 * version of linux being used.
4438 * Arbitrary large number (1MB) which should be larger than 4466 * Arbitrary large number (1MB) which should be larger than
4439 * mips p-cache sizes for some time in future. 4467 * mips {s,d}-cache sizes for some time in future.
4440 * */ 4468 * */
4441 dma_cache_wback_inv(0, 0x100000); 4469 pvr_dma_cache_wback_inv(0, (const void *)0x200000);
4442}
4443
4444static inline IMG_UINT32 pvr_dma_range_len(const void *pvStart, const void *pvEnd)
4445{
4446 return (IMG_UINT32)((char *)pvEnd - (char *)pvStart);
4447}
4448
4449static void pvr_dma_cache_wback_inv(const void *pvStart, const void *pvEnd)
4450{
4451 dma_cache_wback_inv((IMG_UINTPTR_T)pvStart, pvr_dma_range_len(pvStart, pvEnd));
4452}
4453
4454static void pvr_dma_cache_wback(const void *pvStart, const void *pvEnd)
4455{
4456 dma_cache_wback((IMG_UINTPTR_T)pvStart, pvr_dma_range_len(pvStart, pvEnd));
4457}
4458
4459static void pvr_dma_cache_inv(const void *pvStart, const void *pvEnd)
4460{
4461 dma_cache_inv((IMG_UINTPTR_T)pvStart, pvr_dma_range_len(pvStart, pvEnd));
4462} 4470}
4463 4471
4464IMG_BOOL OSFlushCPUCacheRangeKM(IMG_HANDLE hOSMemHandle, 4472IMG_BOOL OSFlushCPUCacheRangeKM(IMG_HANDLE hOSMemHandle,
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/osperproc.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/osperproc.c
index 3485d8a..9b014dc 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/osperproc.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/osperproc.c
@@ -114,6 +114,14 @@ PVRSRV_ERROR OSPerProcessPrivateDataDeInit(IMG_HANDLE hOsPrivateData)
114 114
115 psEnvPerProc = (PVRSRV_ENV_PER_PROCESS_DATA *)hOsPrivateData; 115 psEnvPerProc = (PVRSRV_ENV_PER_PROCESS_DATA *)hOsPrivateData;
116 116
117#if defined(SUPPORT_ION)
118 if (psEnvPerProc->psIONClient)
119 {
120 ion_client_destroy(psEnvPerProc->psIONClient);
121 psEnvPerProc->psIONClient = IMG_NULL;
122 }
123#endif /* defined(SUPPORT_ION) */
124
117 /* Linux specific mmap processing */ 125 /* Linux specific mmap processing */
118 LinuxMMapPerProcessDisconnect(psEnvPerProc); 126 LinuxMMapPerProcessDisconnect(psEnvPerProc);
119 127
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/pvr_drm.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/pvr_drm.c
index 3aae69e..3a925ad 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/pvr_drm.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/pvr_drm.c
@@ -480,7 +480,9 @@ static const struct file_operations sPVRFileOps =
480 PVR_DRM_FOPS_IOCTL = drm_ioctl, 480 PVR_DRM_FOPS_IOCTL = drm_ioctl,
481 .mmap = PVRMMap, 481 .mmap = PVRMMap,
482 .poll = drm_poll, 482 .poll = drm_poll,
483#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0))
483 .fasync = drm_fasync, 484 .fasync = drm_fasync,
485#endif
484}; 486};
485#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)) */ 487#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)) */
486 488
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/hwdefs/sgxerrata.h b/jacinto6/sgx_src/eurasia_km/services4/srvkm/hwdefs/sgxerrata.h
index 52b13bb..42c1f18 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/hwdefs/sgxerrata.h
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/hwdefs/sgxerrata.h
@@ -350,6 +350,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
350 #define FIX_HW_BRN_36513 /* workaround in uKernel and Services */ 350 #define FIX_HW_BRN_36513 /* workaround in uKernel and Services */
351 #else 351 #else
352 #if SGX_CORE_REV == 116 352 #if SGX_CORE_REV == 116
353 #if defined(SGX_FEATURE_MP)
354 #if SGX_FEATURE_MP_CORE_COUNT == 1
355 #define FIX_HW_BRN_33809/* workaround in kernel (enable burst combiner) */
356 #endif
357 #endif
353 #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) && defined(SGX_FEATURE_MP) 358 #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) && defined(SGX_FEATURE_MP)
354 #define FIX_HW_BRN_33657/* workaround in ukernel */ 359 #define FIX_HW_BRN_33657/* workaround in ukernel */
355 #endif 360 #endif
diff --git a/jacinto6/sgx_src/eurasia_km/services4/system/omap/sysconfig.c b/jacinto6/sgx_src/eurasia_km/services4/system/omap/sysconfig.c
index 36384bc..3ebb7c8 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/system/omap/sysconfig.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/system/omap/sysconfig.c
@@ -533,9 +533,6 @@ PVRSRV_ERROR SysInitialise(IMG_VOID)
533 return PVRSRV_OK; 533 return PVRSRV_OK;
534} 534}
535 535
536#if defined(CONFIG_OMAPLFB)
537int OMAPLFBRegisterPVRDriver(void * pfnFuncTable);
538#endif
539 536
540/*! 537/*!
541****************************************************************************** 538******************************************************************************
@@ -599,14 +596,6 @@ PVRSRV_ERROR SysFinalise(IMG_VOID)
599 DisableSGXClocks(gpsSysData); 596 DisableSGXClocks(gpsSysData);
600#endif /* SUPPORT_ACTIVE_POWER_MANAGEMENT */ 597#endif /* SUPPORT_ACTIVE_POWER_MANAGEMENT */
601 598
602#if defined(CONFIG_OMAPLFB)
603 if (OMAPLFBRegisterPVRDriver((void *)&PVRGetDisplayClassJTable) != 0)
604 {
605 PVR_DPF((PVR_DBG_ERROR,"SysFinalise: Failed to register PVR driver with omaplfb"));
606 return PVRSRV_ERROR_INIT_FAILURE;
607 }
608#endif
609
610 gpsSysSpecificData->bSGXInitComplete = IMG_TRUE; 599 gpsSysSpecificData->bSGXInitComplete = IMG_TRUE;
611 600
612 return eError; 601 return eError;