diff options
| -rw-r--r-- | packages/linux/linux-omap-2.6.27/beagleboard/defconfig | 13 | ||||
| -rw-r--r-- | packages/linux/linux-omap-2.6.27/pvr/nokia-TI.diff | 8798 | ||||
| -rw-r--r-- | packages/linux/linux-omap_2.6.27.bb | 1 |
3 files changed, 8806 insertions, 6 deletions
diff --git a/packages/linux/linux-omap-2.6.27/beagleboard/defconfig b/packages/linux/linux-omap-2.6.27/beagleboard/defconfig index 8380a200bf..afcd72891d 100644 --- a/packages/linux/linux-omap-2.6.27/beagleboard/defconfig +++ b/packages/linux/linux-omap-2.6.27/beagleboard/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.27-omap1 -# Sun Jan 4 17:13:56 2009 +# Tue Jan 6 10:27:42 2009 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -630,9 +630,10 @@ CONFIG_SCSI_PROC_FS=y CONFIG_BLK_DEV_SD=y # CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_OSST is not set -# CONFIG_BLK_DEV_SR is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set CONFIG_CHR_DEV_SG=m -# CONFIG_CHR_DEV_SCH is not set +CONFIG_CHR_DEV_SCH=m # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs @@ -648,11 +649,11 @@ CONFIG_SCSI_WAIT_SCAN=m # # CONFIG_SCSI_SPI_ATTRS is not set # CONFIG_SCSI_FC_ATTRS is not set -# CONFIG_SCSI_ISCSI_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=m # CONFIG_SCSI_SAS_LIBSAS is not set # CONFIG_SCSI_SRP_ATTRS is not set CONFIG_SCSI_LOWLEVEL=y -# CONFIG_ISCSI_TCP is not set +CONFIG_ISCSI_TCP=m # CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_DH is not set # CONFIG_ATA is not set @@ -1563,7 +1564,7 @@ CONFIG_USB_LED=m # CONFIG_USB_LD is not set # CONFIG_USB_TRANCEVIBRATOR is not set # CONFIG_USB_IOWARRIOR is not set -# CONFIG_USB_TEST is not set +CONFIG_USB_TEST=m # CONFIG_USB_ISIGHTFW is not set CONFIG_USB_GADGET=y # CONFIG_USB_GADGET_DEBUG is not set diff --git a/packages/linux/linux-omap-2.6.27/pvr/nokia-TI.diff b/packages/linux/linux-omap-2.6.27/pvr/nokia-TI.diff new file mode 100644 index 0000000000..a4aca1e524 --- /dev/null +++ b/packages/linux/linux-omap-2.6.27/pvr/nokia-TI.diff @@ -0,0 +1,8798 @@ + include4/img_types.h | 5 + include4/pdumpdefs.h | 1 + include4/pvrmodule.h | 31 + include4/pvrversion.h | 8 + include4/services.h | 46 + include4/servicesext.h | 6 + include4/sgxapi_km.h | 65 + services4/3rdparty/bufferclass_example/bufferclass_example.c | 32 + services4/3rdparty/bufferclass_example/bufferclass_example.h | 25 + services4/3rdparty/bufferclass_example/bufferclass_example_linux.c | 20 + services4/3rdparty/bufferclass_example/bufferclass_example_private.c | 76 - + services4/3rdparty/bufferclass_example/kbuild/Makefile | 40 + services4/3rdparty/dc_omap3430_linux/kbuild/Makefile | 39 + services4/3rdparty/dc_omap3430_linux/omaplfb.h | 7 + services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c | 60 + services4/3rdparty/dc_omap3430_linux/omaplfb_linux.c | 52 + services4/include/pvr_bridge.h | 26 + services4/include/servicesint.h | 17 + services4/include/sgx_bridge.h | 95 + + services4/include/sgx_bridge_km.h | 139 - + services4/include/sgxinfo.h | 347 ++-- + services4/srvkm/Makefile | 68 + services4/srvkm/bridged/bridged_pvr_bridge.c | 732 ++++++++- + services4/srvkm/common/deviceclass.c | 6 + services4/srvkm/common/devicemem.c | 3 + services4/srvkm/common/handle.c | 58 + services4/srvkm/common/power.c | 15 + services4/srvkm/common/pvrsrv.c | 151 +- + services4/srvkm/common/queue.c | 4 + services4/srvkm/common/resman.c | 13 + services4/srvkm/devices/sgx/mmu.c | 2 + services4/srvkm/devices/sgx/mmu.h | 2 + services4/srvkm/devices/sgx/pb.c | 37 + services4/srvkm/devices/sgx/sgx2dcore.c | 21 + services4/srvkm/devices/sgx/sgx_bridge_km.h | 158 ++ + services4/srvkm/devices/sgx/sgxinfokm.h | 146 + + services4/srvkm/devices/sgx/sgxinit.c | 734 ++-------- + services4/srvkm/devices/sgx/sgxkick.c | 327 +++- + services4/srvkm/devices/sgx/sgxreset.c | 330 ++++ + services4/srvkm/devices/sgx/sgxtransfer.c | 312 ++++ + services4/srvkm/devices/sgx/sgxutils.c | 459 +++--- + services4/srvkm/devices/sgx/sgxutils.h | 28 + services4/srvkm/env/linux/env_data.h | 8 + services4/srvkm/env/linux/event.c | 221 +++ + services4/srvkm/env/linux/event.h | 32 + services4/srvkm/env/linux/kbuild/Makefile | 81 + + services4/srvkm/env/linux/mm.c | 8 + services4/srvkm/env/linux/module.c | 342 +++- + services4/srvkm/env/linux/osfunc.c | 347 +++- + services4/srvkm/env/linux/pdump.c | 13 + services4/srvkm/env/linux/proc.c | 17 + services4/srvkm/env/linux/pvr_debug.c | 2 + services4/srvkm/hwdefs/sgxdefs.h | 4 + services4/srvkm/hwdefs/sgxerrata.h | 9 + services4/srvkm/hwdefs/sgxfeaturedefs.h | 11 + services4/srvkm/include/device.h | 35 + services4/srvkm/include/handle.h | 10 + services4/srvkm/include/osfunc.h | 32 + services4/srvkm/include/pdump_km.h | 2 + services4/srvkm/include/resman.h | 5 + services4/srvkm/include/srvkm.h | 4 + services4/system/include/syscommon.h | 2 + services4/system/omap3430/sysconfig.c | 24 + services4/system/omap3430/sysconfig.h | 7 + services4/system/omap3430/sysutils.c | 2 + 65 files changed, 4286 insertions(+), 1675 deletions(-) + + +diff -Nurd git/drivers/gpu/pvr/include4/img_types.h git/drivers/gpu/pvr/include4/img_types.h +--- git/drivers/gpu/pvr/include4/img_types.h 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/include4/img_types.h 2008-12-18 15:47:29.000000000 +0100 +@@ -43,7 +43,10 @@ + typedef signed long IMG_INT32, *IMG_PINT32; + + #if defined(LINUX) +- ++#if !defined(USE_CODE) ++ typedef unsigned long long IMG_UINT64, *IMG_PUINT64; ++ typedef long long IMG_INT64, *IMG_PINT64; ++#endif + #else + + #error("define an OS") +diff -Nurd git/drivers/gpu/pvr/include4/pdumpdefs.h git/drivers/gpu/pvr/include4/pdumpdefs.h +--- git/drivers/gpu/pvr/include4/pdumpdefs.h 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/include4/pdumpdefs.h 2008-12-18 15:47:29.000000000 +0100 +@@ -73,6 +73,7 @@ + PVRSRV_PDUMP_MEM_FORMAT_RESERVED = 1, + PVRSRV_PDUMP_MEM_FORMAT_TILED = 8, + PVRSRV_PDUMP_MEM_FORMAT_TWIDDLED = 9, ++ PVRSRV_PDUMP_MEM_FORMAT_HYBRID = 10, + + PVRSRV_PDUMP_MEM_FORMAT_FORCE_I32 = 0x7fffffff + } PDUMP_MEM_FORMAT; +diff -Nurd git/drivers/gpu/pvr/include4/pvrmodule.h git/drivers/gpu/pvr/include4/pvrmodule.h +--- git/drivers/gpu/pvr/include4/pvrmodule.h 1970-01-01 01:00:00.000000000 +0100 ++++ git/drivers/gpu/pvr/include4/pvrmodule.h 2008-12-18 15:47:29.000000000 +0100 +@@ -0,0 +1,31 @@ ++/********************************************************************** ++ * ++ * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms and conditions of the GNU General Public License, ++ * version 2, as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope it will be useful but, except ++ * as otherwise stated in writing, without any warranty; without even the ++ * implied warranty of merchantability or fitness for a particular purpose. ++ * See the GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along with ++ * this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * The full GNU General Public License is included in this distribution in ++ * the file called "COPYING". ++ * ++ * Contact Information: ++ * Imagination Technologies Ltd. <gpl-support@imgtec.com> ++ * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK ++ * ++ ******************************************************************************/ ++ ++#ifndef _PVRMODULE_H_ ++#define _PVRMODULE_H_ ++MODULE_AUTHOR("Imagination Technologies Ltd. <gpl-support@imgtec.com>"); ++MODULE_LICENSE("GPL"); ++#endif +diff -Nurd git/drivers/gpu/pvr/include4/pvrversion.h git/drivers/gpu/pvr/include4/pvrversion.h +--- git/drivers/gpu/pvr/include4/pvrversion.h 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/include4/pvrversion.h 2008-12-18 15:47:29.000000000 +0100 +@@ -28,10 +28,10 @@ + #define _PVRVERSION_H_ + + #define PVRVERSION_MAJ 1 +-#define PVRVERSION_MIN 1 +-#define PVRVERSION_BRANCH 11 +-#define PVRVERSION_BUILD 970 +-#define PVRVERSION_STRING "1.1.11.970" ++#define PVRVERSION_MIN 2 ++#define PVRVERSION_BRANCH 12 ++#define PVRVERSION_BUILD 838 ++#define PVRVERSION_STRING "1.2.12.838" + + #endif + +diff -Nurd git/drivers/gpu/pvr/include4/servicesext.h git/drivers/gpu/pvr/include4/servicesext.h +--- git/drivers/gpu/pvr/include4/servicesext.h 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/include4/servicesext.h 2008-12-18 15:47:29.000000000 +0100 +@@ -150,6 +150,8 @@ + PVRSRV_PIXEL_FORMAT_V8U8, + PVRSRV_PIXEL_FORMAT_V16U16, + PVRSRV_PIXEL_FORMAT_QWVU8888, ++ PVRSRV_PIXEL_FORMAT_XLVU8888, ++ PVRSRV_PIXEL_FORMAT_QWVU16, + PVRSRV_PIXEL_FORMAT_D16, + PVRSRV_PIXEL_FORMAT_D24S8, + PVRSRV_PIXEL_FORMAT_D24X8, +@@ -159,7 +161,9 @@ + PVRSRV_PIXEL_FORMAT_YUY2, + PVRSRV_PIXEL_FORMAT_DXT23, + PVRSRV_PIXEL_FORMAT_DXT45, +- PVRSRV_PIXEL_FORMAT_G32R32F, ++ PVRSRV_PIXEL_FORMAT_G32R32F, ++ PVRSRV_PIXEL_FORMAT_NV11, ++ PVRSRV_PIXEL_FORMAT_NV12, + + PVRSRV_PIXEL_FORMAT_FORCE_I32 = 0x7fffffff, + } PVRSRV_PIXEL_FORMAT; +diff -Nurd git/drivers/gpu/pvr/include4/services.h git/drivers/gpu/pvr/include4/services.h +--- git/drivers/gpu/pvr/include4/services.h 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/include4/services.h 2008-12-18 15:47:29.000000000 +0100 +@@ -36,16 +36,14 @@ + #include "pdumpdefs.h" + + +-#if defined(SERVICES4) + #define IMG_CONST const +-#else +-#define IMG_CONST +-#endif + + #define PVRSRV_MAX_CMD_SIZE 1024 + + #define PVRSRV_MAX_DEVICES 16 + ++#define EVENTOBJNAME_MAXLENGTH (50) ++ + #define PVRSRV_MEM_READ (1<<0) + #define PVRSRV_MEM_WRITE (1<<1) + #define PVRSRV_MEM_CACHE_CONSISTENT (1<<2) +@@ -90,6 +88,7 @@ + #define PVRSRV_MISC_INFO_TIMER_PRESENT (1<<0) + #define PVRSRV_MISC_INFO_CLOCKGATE_PRESENT (1<<1) + #define PVRSRV_MISC_INFO_MEMSTATS_PRESENT (1<<2) ++#define PVRSRV_MISC_INFO_GLOBALEVENTOBJECT_PRESENT (1<<3) + + #define PVRSRV_PDUMP_MAX_FILENAME_SIZE 20 + #define PVRSRV_PDUMP_MAX_COMMENT_SIZE 200 +@@ -133,7 +132,8 @@ + IMG_OPENGLES2 = 0x00000003, + IMG_D3DM = 0x00000004, + IMG_SRV_UM = 0x00000005, +- IMG_OPENVG = 0x00000006 ++ IMG_OPENVG = 0x00000006, ++ IMG_SRVCLIENT = 0x00000007, + + } IMG_MODULE_ID; + +@@ -202,10 +202,8 @@ + + IMG_PVOID pvLinAddr; + +-#if defined(SERVICES4) + + IMG_PVOID pvLinAddrKM; +-#endif + + + IMG_DEV_VIRTADDR sDevVAddr; +@@ -294,6 +292,14 @@ + + } PVRSRV_DEVICE_IDENTIFIER; + ++typedef struct _PVRSRV_EVENTOBJECT_ ++{ ++ ++ IMG_CHAR szName[EVENTOBJNAME_MAXLENGTH]; ++ ++ IMG_HANDLE hOSEventKM; ++ ++} PVRSRV_EVENTOBJECT; + + typedef struct _PVRSRV_MISC_INFO_ + { +@@ -313,9 +319,14 @@ + IMG_UINT32 ui32MemoryStrLen; + + ++ PVRSRV_EVENTOBJECT sGlobalEventObject; ++ IMG_HANDLE hOSGlobalEvent; ++ ++ + + } PVRSRV_MISC_INFO; + ++ + IMG_IMPORT + PVRSRV_ERROR IMG_CALLCONV PVRSRVConnect(PVRSRV_CONNECTION *psConnection); + +@@ -335,7 +346,7 @@ + PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfo (IMG_CONST PVRSRV_CONNECTION *psConnection, PVRSRV_MISC_INFO *psMiscInfo); + + IMG_IMPORT +-PVRSRV_ERROR IMG_CALLCONV PVRSRVReleaseMiscInfo (PVRSRV_MISC_INFO *psMiscInfo); ++PVRSRV_ERROR IMG_CALLCONV PVRSRVReleaseMiscInfo (IMG_CONST PVRSRV_CONNECTION *psConnection, PVRSRV_MISC_INFO *psMiscInfo); + + #if 1 + IMG_IMPORT +@@ -348,7 +359,9 @@ + #endif + + IMG_IMPORT +-PVRSRV_ERROR PollForValue (volatile IMG_UINT32 *pui32LinMemAddr, ++PVRSRV_ERROR PollForValue ( PVRSRV_CONNECTION *psConnection, ++ IMG_HANDLE hOSEvent, ++ volatile IMG_UINT32 *pui32LinMemAddr, + IMG_UINT32 ui32Value, + IMG_UINT32 ui32Mask, + IMG_UINT32 ui32Waitus, +@@ -631,21 +644,18 @@ + IMG_UINT32 ui32RegValue, + IMG_UINT32 ui32Flags); + +-#ifdef SERVICES4 + IMG_IMPORT + PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpRegPolWithFlags(IMG_CONST PVRSRV_CONNECTION *psConnection, + IMG_UINT32 ui32RegAddr, + IMG_UINT32 ui32RegValue, + IMG_UINT32 ui32Mask, + IMG_UINT32 ui32Flags); +-#endif + IMG_IMPORT + PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpRegPol(IMG_CONST PVRSRV_CONNECTION *psConnection, + IMG_UINT32 ui32RegAddr, + IMG_UINT32 ui32RegValue, + IMG_UINT32 ui32Mask); + +-#ifdef SERVICES4 + IMG_IMPORT + PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpPDReg(IMG_CONST PVRSRV_CONNECTION *psConnection, + IMG_UINT32 ui32RegAddr, +@@ -655,7 +665,6 @@ + PVRSRV_CLIENT_MEM_INFO *psMemInfo, + IMG_UINT32 ui32Offset, + IMG_DEV_PHYADDR sPDDevPAddr); +-#endif + + IMG_IMPORT + PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMemPages(IMG_CONST PVRSRV_CONNECTION *psConnection, +@@ -676,7 +685,6 @@ + IMG_CONST IMG_CHAR *pszComment, + IMG_BOOL bContinuous); + +-#if defined(SERVICES4) + IMG_IMPORT + PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpCommentf(IMG_CONST PVRSRV_CONNECTION *psConnection, + IMG_BOOL bContinuous, +@@ -686,7 +694,6 @@ + PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpCommentWithFlagsf(IMG_CONST PVRSRV_CONNECTION *psConnection, + IMG_UINT32 ui32Flags, + IMG_CONST IMG_CHAR *pszFormat, ...); +-#endif + + IMG_IMPORT + PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpDriverInfo(IMG_CONST PVRSRV_CONNECTION *psConnection, +@@ -718,7 +725,7 @@ + IMG_UINT32 ui32Size, + IMG_UINT32 ui32PDumpFlags); + +-#ifdef SERVICES4 ++ + IMG_IMPORT + IMG_BOOL IMG_CALLCONV PVRSRVPDumpIsCapturingTest(IMG_CONST PVRSRV_CONNECTION *psConnection); + +@@ -726,7 +733,6 @@ + PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpCycleCountRegRead(IMG_CONST PVRSRV_CONNECTION *psConnection, + IMG_UINT32 ui32RegOffset, + IMG_BOOL bLastFrame); +-#endif + + IMG_IMPORT IMG_HANDLE PVRSRVLoadLibrary(IMG_CHAR *pszLibraryName); + IMG_IMPORT PVRSRV_ERROR PVRSRVUnloadLibrary(IMG_HANDLE hExtDrv); +@@ -777,9 +783,9 @@ + IMG_PVOID PVRSRVReallocUserModeMemTracking(IMG_VOID *pvMem, IMG_UINT32 ui32NewSize, IMG_CHAR *pszFileName, IMG_UINT32 ui32LineNumber); + #endif + +-PVRSRV_ERROR PVRSRVEventObjectWait(PVRSRV_CONNECTION *psConnection, +- IMG_HANDLE hOSEvent, +- IMG_UINT32 ui32MSTimeout); ++IMG_IMPORT ++PVRSRV_ERROR PVRSRVEventObjectWait(PVRSRV_CONNECTION * psConnection, ++ IMG_HANDLE hOSEvent); + + #define TIME_NOT_PASSED_UINT32(a,b,c) ((a - b) < c) + +diff -Nurd git/drivers/gpu/pvr/include4/sgxapi_km.h git/drivers/gpu/pvr/include4/sgxapi_km.h +--- git/drivers/gpu/pvr/include4/sgxapi_km.h 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/include4/sgxapi_km.h 2008-12-18 15:47:29.000000000 +0100 +@@ -32,6 +32,7 @@ + #endif + + #include "sgxdefs.h" ++ + #if defined(__linux__) && !defined(USE_CODE) + #if defined(__KERNEL__) + #include <asm/unistd.h> +@@ -64,6 +65,8 @@ + #define SGX_MAX_TA_STATUS_VALS 32 + #define SGX_MAX_3D_STATUS_VALS 2 + ++#define SGX_MAX_SRC_SYNCS 4 ++ + #define PFLAGS_POWERDOWN 0x00000001 + #define PFLAGS_POWERUP 0x00000002 + +@@ -75,11 +78,60 @@ + IMG_SYS_PHYADDR sPhysBase; + }SGX_SLAVE_PORT; + ++#ifdef SUPPORT_SGX_HWPERF ++ ++#define PVRSRV_SGX_HWPERF_CBSIZE 0x100 ++ ++#define PVRSRV_SGX_HWPERF_INVALID 1 ++#define PVRSRV_SGX_HWPERF_TRANSFER 2 ++#define PVRSRV_SGX_HWPERF_TA 3 ++#define PVRSRV_SGX_HWPERF_3D 4 ++ ++#define PVRSRV_SGX_HWPERF_ON 0x40 ++ ++ ++typedef struct _PVRSRV_SGX_HWPERF_CBDATA_ ++{ ++ IMG_UINT32 ui32FrameNo; ++ IMG_UINT32 ui32Type; ++ IMG_UINT32 ui32StartTimeWraps; ++ IMG_UINT32 ui32StartTime; ++ IMG_UINT32 ui32EndTimeWraps; ++ IMG_UINT32 ui32EndTime; ++ IMG_UINT32 ui32ClockSpeed; ++ IMG_UINT32 ui32TimeMax; ++} PVRSRV_SGX_HWPERF_CBDATA; ++ ++typedef struct _PVRSRV_SGX_HWPERF_CB_ ++{ ++ IMG_UINT32 ui32Woff; ++ IMG_UINT32 ui32Roff; ++ PVRSRV_SGX_HWPERF_CBDATA psHWPerfCBData[PVRSRV_SGX_HWPERF_CBSIZE]; ++} PVRSRV_SGX_HWPERF_CB; ++ ++ ++typedef struct _SGX_MISC_INFO_HWPERF_RETRIEVE_CB ++{ ++ PVRSRV_SGX_HWPERF_CBDATA* psHWPerfData; ++ IMG_UINT32 ui32ArraySize; ++ IMG_UINT32 ui32DataCount; ++ IMG_UINT32 ui32Time; ++} SGX_MISC_INFO_HWPERF_RETRIEVE_CB; ++#endif ++ ++ + typedef enum _SGX_MISC_INFO_REQUEST_ + { ++ SGX_MISC_INFO_REQUEST_CLOCKSPEED = 0, ++#ifdef SUPPORT_SGX_HWPERF ++ SGX_MISC_INFO_REQUEST_HWPERF_CB_ON, ++ SGX_MISC_INFO_REQUEST_HWPERF_CB_OFF, ++ SGX_MISC_INFO_REQUEST_HWPERF_RETRIEVE_CB, ++#endif + SGX_MISC_INFO_REQUEST_FORCE_I16 = 0x7fff + } SGX_MISC_INFO_REQUEST; + ++ + typedef struct _SGX_MISC_INFO_ + { + SGX_MISC_INFO_REQUEST eRequest; +@@ -87,6 +139,10 @@ + union + { + IMG_UINT32 reserved; ++ IMG_UINT32 ui32SGXClockSpeed; ++#ifdef SUPPORT_SGX_HWPERF ++ SGX_MISC_INFO_HWPERF_RETRIEVE_CB sRetrieveCB; ++#endif + } uData; + } SGX_MISC_INFO; + +@@ -162,6 +218,15 @@ + } PVR3DIF4_KICKTA_PDUMP, *PPVR3DIF4_KICKTA_PDUMP; + #endif + ++#if defined(TRANSFER_QUEUE) ++#if defined(SGX_FEATURE_2D_HARDWARE) ++#define SGX_MAX_2D_BLIT_CMD_SIZE 26 ++#define SGX_MAX_2D_SRC_SYNC_OPS 3 ++#endif ++#define SGX_MAX_TRANSFER_STATUS_VALS 64 ++#define SGX_MAX_TRANSFER_SYNC_OPS 5 ++#endif ++ + #if defined (__cplusplus) + } + #endif +diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.c git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.c +--- git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.c 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.c 2008-12-18 15:47:29.000000000 +0100 +@@ -197,11 +197,27 @@ + return PVRSRV_ERROR_OUT_OF_MEMORY; + } + ++ ++ ++ psDevInfo->sBufferInfo.pixelformat = BC_EXAMPLE_PIXELFORMAT; ++ psDevInfo->sBufferInfo.ui32Width = BC_EXAMPLE_WIDTH; ++ psDevInfo->sBufferInfo.ui32Height = BC_EXAMPLE_HEIGHT; ++ psDevInfo->sBufferInfo.ui32ByteStride = BC_EXAMPLE_STRIDE; ++ psDevInfo->sBufferInfo.ui32BufferDeviceID = BC_EXAMPLE_DEVICEID; ++ psDevInfo->sBufferInfo.ui32Flags = PVRSRV_BC_FLAGS_YUVCSC_FULL_RANGE | PVRSRV_BC_FLAGS_YUVCSC_BT601; ++ + for(i=0; i < BC_EXAMPLE_NUM_BUFFERS; i++) + { ++ IMG_UINT32 ui32Size = BC_EXAMPLE_HEIGHT * BC_EXAMPLE_STRIDE; ++ ++ if(psDevInfo->sBufferInfo.pixelformat == PVRSRV_PIXEL_FORMAT_YUV420) ++ { ++ ++ ui32Size += ((BC_EXAMPLE_STRIDE >> 1) * (BC_EXAMPLE_HEIGHT >> 1) << 1); ++ } + + +- if (AllocContigMemory(BC_EXAMPLE_HEIGHT * BC_EXAMPLE_STRIDE, ++ if (AllocContigMemory(ui32Size, + &psDevInfo->psSystemBuffer[i].hMemHandle, + &psDevInfo->psSystemBuffer[i].sCPUVAddr, + &sSystemBufferCPUPAddr) != PVRSRV_OK) +@@ -211,12 +227,14 @@ + + psDevInfo->ui32NumBuffers++; + +- psDevInfo->psSystemBuffer[i].ui32Size = BC_EXAMPLE_HEIGHT * BC_EXAMPLE_STRIDE; ++ psDevInfo->psSystemBuffer[i].ui32Size = ui32Size; + psDevInfo->psSystemBuffer[i].sSysAddr = CpuPAddrToSysPAddr(sSystemBufferCPUPAddr); + psDevInfo->psSystemBuffer[i].sPageAlignSysAddr.uiAddr = (psDevInfo->psSystemBuffer[i].sSysAddr.uiAddr & 0xFFFFF000); + psDevInfo->psSystemBuffer[i].psSyncData = IMG_NULL; + } + ++ psDevInfo->sBufferInfo.ui32BufferCount = psDevInfo->ui32NumBuffers; ++ + + + psDevInfo->sBCJTable.ui32TableSize = sizeof(PVRSRV_BC_SRV2BUFFER_KMJTABLE); +@@ -234,16 +252,6 @@ + { + return PVRSRV_ERROR_DEVICE_REGISTER_FAILED; + } +- +- +- +- psDevInfo->sBufferInfo.pixelformat = BC_EXAMPLE_PIXELFORMAT; +- psDevInfo->sBufferInfo.ui32Width = BC_EXAMPLE_WIDTH; +- psDevInfo->sBufferInfo.ui32Height = BC_EXAMPLE_HEIGHT; +- psDevInfo->sBufferInfo.ui32ByteStride = BC_EXAMPLE_STRIDE; +- psDevInfo->sBufferInfo.ui32BufferDeviceID = BC_EXAMPLE_DEVICEID; +- psDevInfo->sBufferInfo.ui32Flags = PVRSRV_BC_FLAGS_YUVCSC_FULL_RANGE | PVRSRV_BC_FLAGS_YUVCSC_BT601; +- psDevInfo->sBufferInfo.ui32BufferCount = psDevInfo->ui32NumBuffers; + } + + +diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.h git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.h +--- git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.h 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.h 2008-12-18 15:47:29.000000000 +0100 +@@ -39,11 +39,32 @@ + + #define BC_EXAMPLE_NUM_BUFFERS 3 + +-#define BC_EXAMPLE_WIDTH (160) ++#define YUV420 1 ++#ifdef YUV420 ++ ++#define BC_EXAMPLE_WIDTH (320) + #define BC_EXAMPLE_HEIGHT (160) +-#define BC_EXAMPLE_STRIDE (160*2) ++#define BC_EXAMPLE_STRIDE (320) ++#define BC_EXAMPLE_PIXELFORMAT (PVRSRV_PIXEL_FORMAT_YUV420) ++ ++#else ++#ifdef YUV422 ++ ++#define BC_EXAMPLE_WIDTH (320) ++#define BC_EXAMPLE_HEIGHT (160) ++#define BC_EXAMPLE_STRIDE (320*2) + #define BC_EXAMPLE_PIXELFORMAT (PVRSRV_PIXEL_FORMAT_YVYU) + ++#else ++ ++#define BC_EXAMPLE_WIDTH (320) ++#define BC_EXAMPLE_HEIGHT (160) ++#define BC_EXAMPLE_STRIDE (320*2) ++#define BC_EXAMPLE_PIXELFORMAT (PVRSRV_PIXEL_FORMAT_RGB565) ++ ++#endif ++#endif ++ + #define BC_EXAMPLE_DEVICEID 0 + + +diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_linux.c git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_linux.c +--- git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_linux.c 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_linux.c 2008-12-18 15:47:29.000000000 +0100 +@@ -38,11 +38,10 @@ + + #include "bufferclass_example.h" + #include "bufferclass_example_linux.h" ++#include "pvrmodule.h" + + #define DEVNAME "bc_example" + +-MODULE_AUTHOR("Imagination Technologies Ltd. <gpl-support@imgtec.com>"); +-MODULE_LICENSE("GPL"); + MODULE_SUPPORTED_DEVICE(DEVNAME); + + int BC_Example_Bridge(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg); +@@ -259,22 +258,11 @@ + { + return PVRSRV_ERROR_OUT_OF_MEMORY; + } +- else +- { +- IMG_VOID *pvPage; +- IMG_VOID *pvEnd = pvLinAddr + ui32Size; +- +- for(pvPage = pvLinAddr; pvPage < pvEnd; pvPage += PAGE_SIZE) +- { +- SetPageReserved(virt_to_page(pvPage)); +- } + +- pPhysAddr->uiAddr = dma; +- *pLinAddr = pvLinAddr; ++ pPhysAddr->uiAddr = dma; ++ *pLinAddr = pvLinAddr; + +- return PVRSRV_OK; +- } +- return PVRSRV_ERROR_OUT_OF_MEMORY; ++ return PVRSRV_OK; + #endif + } + +diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_private.c git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_private.c +--- git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_private.c 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_private.c 2008-12-18 15:47:29.000000000 +0100 +@@ -26,6 +26,43 @@ + + #include "bufferclass_example.h" + ++void FillYUV420Image(void *pvDest, int width, int height, int bytestride) ++{ ++ static int iPhase = 0; ++ int i, j; ++ unsigned char u,v,y; ++ unsigned char *pui8y = (unsigned char *)pvDest; ++ unsigned short *pui16uv; ++ unsigned int count = 0; ++ ++ for(j=0;j<height;j++) ++ { ++ for(i=0;i<width;i++) ++ { ++ y = (((i+iPhase)>>6)%(2)==0)? 0x7f:0x00; ++ ++ pui8y[count++] = y; ++ } ++ } ++ ++ pui16uv = (unsigned short *)((unsigned char *)pvDest + (width * height)); ++ count = 0; ++ ++ for(j=0;j<height;j+=2) ++ { ++ for(i=0;i<width;i+=2) ++ { ++ u = (j<(height/2))? ((i<(width/2))? 0xFF:0x33) : ((i<(width/2))? 0x33:0xAA); ++ v = (j<(height/2))? ((i<(width/2))? 0xAC:0x0) : ((i<(width/2))? 0x03:0xEE); ++ ++ ++ pui16uv[count++] = (v << 8) | u; ++ ++ } ++ } ++ ++ iPhase++; ++} + + void FillYUV422Image(void *pvDest, int width, int height, int bytestride) + { +@@ -37,12 +74,12 @@ + + for(y=0;y<height;y++) + { +- for(x=0;x<width >> 1;x++) ++ for(x=0;x<width;x+=2) + { +- u = (y<(height/2))? ((x<(width/4))? 0xFF:0x33) : ((x<(width/4))? 0x33:0xAA); +- v = (y<(height/2))? ((x<(width/4))? 0xAA:0x0) : ((x<(width/4))? 0x03:0xEE); ++ u = (y<(height/2))? ((x<(width/2))? 0xFF:0x33) : ((x<(width/2))? 0x33:0xAA); ++ v = (y<(height/2))? ((x<(width/2))? 0xAA:0x0) : ((x<(width/2))? 0x03:0xEE); + +- y0 = y1 = (((x+iPhase)>>4)%(2)==0)? 0x7f:0x00; ++ y0 = y1 = (((x+iPhase)>>6)%(2)==0)? 0x7f:0x00; + + + pui32yuv[count++] = (y1 << 24) | (v << 16) | (y0 << 8) | u; +@@ -115,19 +152,36 @@ + + psSyncData = psBuffer->psSyncData; + +- + if(psSyncData) + { ++ ++ if(psSyncData->ui32ReadOpsPending != psSyncData->ui32ReadOpsComplete) ++ { ++ return -1; ++ } ++ ++ + psSyncData->ui32WriteOpsPending++; + } + +- if(psBufferInfo->pixelformat == PVRSRV_PIXEL_FORMAT_RGB565) +- { +- FillRGB565Image(psBuffer->sCPUVAddr, BC_EXAMPLE_WIDTH, BC_EXAMPLE_HEIGHT, BC_EXAMPLE_STRIDE); +- } +- else ++ switch(psBufferInfo->pixelformat) + { +- FillYUV422Image(psBuffer->sCPUVAddr, BC_EXAMPLE_WIDTH, BC_EXAMPLE_HEIGHT, BC_EXAMPLE_STRIDE); ++ case PVRSRV_PIXEL_FORMAT_RGB565: ++ default: ++ { ++ FillRGB565Image(psBuffer->sCPUVAddr, BC_EXAMPLE_WIDTH, BC_EXAMPLE_HEIGHT, BC_EXAMPLE_STRIDE); ++ break; ++ } ++ case PVRSRV_PIXEL_FORMAT_YVYU: ++ { ++ FillYUV422Image(psBuffer->sCPUVAddr, BC_EXAMPLE_WIDTH, BC_EXAMPLE_HEIGHT, BC_EXAMPLE_STRIDE); ++ break; ++ } ++ case PVRSRV_PIXEL_FORMAT_YUV420: ++ { ++ FillYUV420Image(psBuffer->sCPUVAddr, BC_EXAMPLE_WIDTH, BC_EXAMPLE_HEIGHT, BC_EXAMPLE_STRIDE); ++ break; ++ } + } + + +diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/kbuild/Makefile git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/kbuild/Makefile +--- git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/kbuild/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/kbuild/Makefile 2008-12-18 15:47:29.000000000 +0100 +@@ -0,0 +1,40 @@ ++# ++# Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. ++# ++# This program is free software; you can redistribute it and/or modify it ++# under the terms and conditions of the GNU General Public License, ++# version 2, as published by the Free Software Foundation. ++# ++# This program is distributed in the hope it will be useful but, except ++# as otherwise stated in writing, without any warranty; without even the ++# implied warranty of merchantability or fitness for a particular purpose. ++# See the GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along with ++# this program; if not, write to the Free Software Foundation, Inc., ++# 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. ++# ++# The full GNU General Public License is included in this distribution in ++# the file called "COPYING". ++# ++# Contact Information: ++# Imagination Technologies Ltd. <gpl-support@imgtec.com> ++# Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK ++# ++# ++# ++ ++MODULE = bc_example ++ ++INCLUDES = -I$(EURASIAROOT)/include4 \ ++ -I$(EURASIAROOT)/services4/include \ ++ -I$(EURASIAROOT)/services4/system/$(PVR_SYSTEM) \ ++ -I$(EURASIAROOT)/services4/system/include \ ++ ++SOURCES = ../bufferclass_example.c \ ++ ../bufferclass_example_linux.c \ ++ ../bufferclass_example_private.c ++ ++ ++ ++ +diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/kbuild/Makefile git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/kbuild/Makefile +--- git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/kbuild/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/kbuild/Makefile 2008-12-18 15:47:29.000000000 +0100 +@@ -0,0 +1,39 @@ ++# ++# Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. ++# ++# This program is free software; you can redistribute it and/or modify it ++# under the terms and conditions of the GNU General Public License, ++# version 2, as published by the Free Software Foundation. ++# ++# This program is distributed in the hope it will be useful but, except ++# as otherwise stated in writing, without any warranty; without even the ++# implied warranty of merchantability or fitness for a particular purpose. ++# See the GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along with ++# this program; if not, write to the Free Software Foundation, Inc., ++# 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. ++# ++# The full GNU General Public License is included in this distribution in ++# the file called "COPYING". ++# ++# Contact Information: ++# Imagination Technologies Ltd. <gpl-support@imgtec.com> ++# Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK ++# ++# ++# ++ ++MODULE = omaplfb ++ ++INCLUDES = -I$(EURASIAROOT)/include4 \ ++ -I$(EURASIAROOT)/services4/include \ ++ -I$(EURASIAROOT)/services4/system/$(PVR_SYSTEM) \ ++ -I$(EURASIAROOT)/services4/system/include \ ++ ++SOURCES = ../omaplfb_displayclass.c \ ++ ../omaplfb_linux.c ++ ++ ++ ++ +diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c +--- git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c 2008-12-18 15:47:29.000000000 +0100 +@@ -41,6 +41,7 @@ + #define DISPLAY_DEVICE_NAME "PowerVR OMAP Linux Display Driver" + + #define DRIVER_PREFIX "omaplfb" ++//extern int omap2_disp_get_output_dev(int); + + static IMG_VOID *gpvAnchor; + +@@ -57,8 +58,6 @@ + PVR_POWER_STATE eCurrentPowerState); + #endif + +-extern void omap_dispc_set_plane_base(int plane, IMG_UINT32 phys_addr); +- + static PFN_DC_GET_PVRJTABLE pfnGetPVRJTable = IMG_NULL; + + static OMAPLFB_DEVINFO * GetAnchorPtr(IMG_VOID) +@@ -124,28 +123,53 @@ + static PVRSRV_ERROR Flip(OMAPLFB_SWAPCHAIN *psSwapChain, + IMG_UINT32 aPhyAddr) + { +- if (1 /* omap2_disp_get_output_dev(OMAP2_GRAPHICS) == OMAP2_OUTPUT_LCD */) ++ IMG_UINT32 control; ++ OMAPLFB_DEVINFO *psDevInfo; ++ ++ psDevInfo = GetAnchorPtr(); ++ ++ if (1) //omap2_disp_get_output_dev(OMAP2_GRAPHICS) == OMAP2_OUTPUT_LCD) + { +- omap_dispc_set_plane_base(0, aPhyAddr); ++ OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_GFX_BA0, aPhyAddr); ++ ++ OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_GFX_BA1, aPhyAddr); ++ ++ control = OMAPLFBVSyncReadReg(psSwapChain, OMAPLCD_CONTROL); ++ control |= OMAP_CONTROL_GOLCD; ++ OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_CONTROL, control); ++ + return PVRSRV_OK; + } + else +- if (0 /*omap2_disp_get_output_dev(OMAP2_GRAPHICS) == OMAP2_OUTPUT_TV*/) ++ if (0) //omap2_disp_get_output_dev(OMAP2_GRAPHICS) == OMAP2_OUTPUT_TV) + { +- omap_dispc_set_plane_base(0, aPhyAddr); ++ OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_GFX_BA0, aPhyAddr); ++ OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_GFX_BA1, aPhyAddr + psDevInfo->sFBInfo.ui32ByteStride); ++ ++ control = OMAPLFBVSyncReadReg(psSwapChain, OMAPLCD_CONTROL); ++ control |= OMAP_CONTROL_GODIGITAL; ++ OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_CONTROL, control); ++ + return PVRSRV_OK; + } +- ++ + return PVRSRV_ERROR_INVALID_PARAMS; + } + + static IMG_VOID EnableVSyncInterrupt(OMAPLFB_SWAPCHAIN *psSwapChain) + { +- ++ ++ IMG_UINT32 ui32InterruptEnable = OMAPLFBVSyncReadReg(psSwapChain, OMAPLCD_IRQENABLE); ++ ui32InterruptEnable |= OMAPLCD_INTMASK_VSYNC; ++ OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_IRQENABLE, ui32InterruptEnable ); + } + + static IMG_VOID DisableVSyncInterrupt(OMAPLFB_SWAPCHAIN *psSwapChain) + { ++ ++ IMG_UINT32 ui32InterruptEnable = OMAPLFBVSyncReadReg(psSwapChain, OMAPLCD_IRQENABLE); ++ ui32InterruptEnable &= ~(OMAPLCD_INTMASK_VSYNC); ++ OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_IRQENABLE, ui32InterruptEnable); + } + + static PVRSRV_ERROR OpenDCDevice(IMG_UINT32 ui32DeviceID, +@@ -169,6 +193,7 @@ + #endif + ); + ++ + memset(&psDevInfo->sLINNotifBlock, 0, sizeof(psDevInfo->sLINNotifBlock)); + + psDevInfo->sLINNotifBlock.notifier_call = FrameBufferEvents; +@@ -363,6 +388,7 @@ + PVR_UNREFERENCED_PARAMETER(ui32OEMFlags); + PVR_UNREFERENCED_PARAMETER(pui32SwapChainID); + ++ + if(!hDevice + || !psDstSurfAttrib + || !psSrcSurfAttrib +@@ -399,6 +425,7 @@ + || psDstSurfAttrib->sDims.ui32Width != psDevInfo->sDisplayDim.ui32Width + || psDstSurfAttrib->sDims.ui32Height != psDevInfo->sDisplayDim.ui32Height) + { ++ + return PVRSRV_ERROR_INVALID_PARAMS; + } + +@@ -407,6 +434,7 @@ + || psDstSurfAttrib->sDims.ui32Width != psSrcSurfAttrib->sDims.ui32Width + || psDstSurfAttrib->sDims.ui32Height != psSrcSurfAttrib->sDims.ui32Height) + { ++ + return PVRSRV_ERROR_INVALID_PARAMS; + } + +@@ -467,12 +495,21 @@ + } + + ++ psSwapChain->pvRegs = ioremap(psDevInfo->psLINFBInfo->fix.mmio_start, psDevInfo->psLINFBInfo->fix.mmio_len); ++ ++ if (psSwapChain->pvRegs == IMG_NULL) ++ { ++ printk(KERN_WARNING DRIVER_PREFIX ": Couldn't map registers needed for flipping\n"); ++ goto ErrorFreeVSyncItems; ++ } ++ ++ + unblank_display(psDevInfo); + + if (OMAPLFBInstallVSyncISR(psSwapChain) != PVRSRV_OK) + { + printk(KERN_WARNING DRIVER_PREFIX ": ISR handler failed to register\n"); +- goto ErrorFreeVSyncItems; ++ goto ErrorUnmapRegisters; + } + + EnableVSyncInterrupt(psSwapChain); +@@ -485,6 +522,8 @@ + + return PVRSRV_OK; + ++ErrorUnmapRegisters: ++ iounmap(psSwapChain->pvRegs); + ErrorFreeVSyncItems: + OMAPLFBFreeKernelMem(psVSyncFlips); + ErrorFreeBuffers: +@@ -590,6 +629,9 @@ + } + + ++ iounmap(psSwapChain->pvRegs); ++ ++ + OMAPLFBFreeKernelMem(psSwapChain->psVSyncFlips); + OMAPLFBFreeKernelMem(psSwapChain->psBuffer); + OMAPLFBFreeKernelMem(psSwapChain); +diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb.h git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb.h +--- git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb.h 2009-01-05 20:00:44.000000000 +0100 ++++ git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb.h 2008-12-18 15:47:29.000000000 +0100 +@@ -121,6 +121,9 @@ + IMG_UINT32 ui32RemoveIndex; + + ++ IMG_VOID *pvRegs; ++ ++ + PVRSRV_DC_DISP2SRV_KMJTABLE *psPVRJTable; + } OMAPLFB_SWAP |
