diff options
Diffstat (limited to 'recipes/powervr-drivers')
10 files changed, 572 insertions, 0 deletions
diff --git a/recipes/powervr-drivers/libgles-omap3.inc b/recipes/powervr-drivers/libgles-omap3.inc new file mode 100644 index 0000000000..7e47bbc8ae --- /dev/null +++ b/recipes/powervr-drivers/libgles-omap3.inc @@ -0,0 +1,107 @@ +DESCRIPTION = "libGLES for the omap3" +LICENCE = "proprietary-binary" + +PROVIDES += "virtual/egl" + +# some hints to get you going. as this isnt a totally "open" library, you need +# to do some work. follow the steps below. +# +# 1. if you don't already have a ti account get one here. it's free: +# http://www.ti.com/hdr_my_ti +# 2. fetch the gl-es bin from here: +# https://www-a.ti.com/downloads/sds_support/targetcontent/dvsdk/oslinux_dvsdk/v3_00_3530/OMAP35x_Graphics_SDK_setuplinux_3_00_00_06.bin +# (replace version in .bin file as appropriate) +# 3. put the OMAP35x_*.bin file in libgles-omap3/ +# mv OMAP35x_Graphics_SDK_setuplinux_3_00_00_06.bin ./libgles-omap3/ +# 4. make it executable: +# chmod a+x ./libgles-omap3/OMAP35x_Graphics_SDK_setuplinux_3_00_00_06.bin +# +# voila! + +SRC_URI = "file://OMAP35x_Graphics_SDK_setuplinux_${SGXPV}.bin \ + file://rc.pvr \ + " +S = "${WORKDIR}/OMAP35x_Graphics_SDK_${SGXPV}" + +BINLOCATION ?= "${S}/gfx_rel" + +PACKAGES += " xserver-kdrive-powervrsgx ${PN}-tests" + +FILES_${PN} = "${sysconfdir} ${libdir}/lib*.so.* ${bindir}/pvrsrvinit" +FILES_xserver-kdrive-powervrsgx = "${bindir}/Xsgx" +FILES_${PN}-tests = "${bindir}/*" + +RRECOMMENDS_${PN} = "${PN}-tests \ + omap3-sgx-modules" + +inherit update-rc.d + +INITSCRIPT_NAME = "pvr-init" +INITSCRIPT_PARAMS = "start 30 5 2 . stop 40 0 1 6 ." + +do_accept_license() { + export HOME="${WORKDIR}" + echo "Y +Y +${S}" | ${WORKDIR}/OMAP35x_Graphics_SDK_setuplinux_${SGXPV}.bin +} + +addtask accept_license after do_unpack before do_configure + +do_compile() { + for sofile in $(find ${S} -name "lib*Open*.so") $(find ${S} -name "lib*srv*.so") $(find ${S} -name "lib*gl*.so") $(find ${S} -name "libpvr*.so") $(find ${S} -name "lib*GL*.so"); do + if [ "$(readlink -n ${sofile})" = "" ] ; then + mv $sofile ${sofile}.${IMGPV} + ln -sf $(basename ${sofile}.${IMGPV}) ${sofile} + fi + done +} + +do_install () { + + install -d ${D}${libdir} + cp -pP ${BINLOCATION}/*.so* ${D}${libdir} + + install -d ${D}${bindir}/ + cp -pP ${BINLOCATION}/*_test ${D}${bindir}/ + cp -pP ${BINLOCATION}/gl2info ${D}${bindir}/ + cp -pP ${BINLOCATION}/gles1test1 ${D}${bindir}/ + cp -pP ${BINLOCATION}/gles1_texture_stream ${D}${bindir}/ + cp -pP ${BINLOCATION}/gles2test1 ${D}${bindir}/ + cp -pP ${BINLOCATION}/pvrsrvinit ${D}${bindir}/ + cp -pP ${BINLOCATION}/xgles1test1 ${D}${bindir}/ + + cp -pP ${BINLOCATION}/freedesktop/kdrive/usr/X11R6_SGX/bin/Xsgx || true + cp -pP ${BINLOCATION}/freedesktop/usr/X11R6_SGX/bin/Xsgx ${D}${bindir}/ || true + + install -d ${D}${includedir} + cp -pPR ${S}/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/* ${D}${includedir}/ + cp -pPR ${S}/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include/* ${D}${includedir}/ + cp -pPR ${S}/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/LinuxOMAP3/Include/GLES/* ${D}${includedir}/GLES/ + cp -pPr ${S}/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/LinuxOMAP3/Include/GLES/* ${D}${includedir}/GLES2/ + + install -d ${D}${sysconfdir}/init.d/ + cp -pP ${WORKDIR}/rc.pvr ${D}${sysconfdir}/init.d/pvr-init + + install -d ${D}${sysconfdir} + echo "[default]" > ${D}${sysconfdir}/powervr.ini + echo "WindowSystem=libpvrPVR2D_FRONTWSEGL.so" >> ${D}${sysconfdir}/powervr.ini +} + +do_stage () { + install -d ${STAGING_LIBDIR}/ + cp -pP ${BINLOCATION}/*.so* ${STAGING_LIBDIR} + cp -pP ${BINLOCATION}/*.a ${STAGING_LIBDIR} + + install -d ${STAGING_INCDIR} + cp -pPR ${S}/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/* ${STAGING_INCDIR}/ + cp -pPR ${S}/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include/* ${STAGING_INCDIR}/ + cp -pPR ${S}/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/LinuxOMAP3/Include/GLES/* ${STAGING_INCDIR}/GLES/ + cp -pPr ${S}/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/LinuxOMAP3/Include/GLES/* ${STAGING_INCDIR}/GLES2/ +} + +pkg_postinst() { +#!/bin/sh +ln -sf /usr/lib/libXdmcp.so.6.0.0 /usr/lib/libXdmcp.so.0 +ln -sf /usr/lib/libXau.so.6.0.0 /usr/lib/libXau.so.0 +} diff --git a/recipes/powervr-drivers/libgles-omap3/rc.pvr b/recipes/powervr-drivers/libgles-omap3/rc.pvr new file mode 100755 index 0000000000..244f480f2c --- /dev/null +++ b/recipes/powervr-drivers/libgles-omap3/rc.pvr @@ -0,0 +1,24 @@ +#!/bin/sh + +#rmmod bc_example +rmmod omaplfb +rmmod pvrsrvkm + +insmod $(busybox find /lib/modules/$(uname -r) -name "pvrsrvkm.ko") +#modprobe bc_example +modprobe omaplfb + +pvr_maj=`grep "pvrsrvkm$" /proc/devices | cut -b1,2,3` + +if [ -e /dev/pvrsrvkm ] ; then + rm -f /dev/pvrsrvkm +fi + +mknod /dev/pvrsrvkm c $pvr_maj 0 +chmod 666 /dev/pvrsrvkm + +/usr/bin/pvrsrvinit + +# Set SGX to full speed +devmem2 0x48004b40 w 0 + diff --git a/recipes/powervr-drivers/libgles-omap3_3.00.00.01.bb b/recipes/powervr-drivers/libgles-omap3_3.00.00.01.bb new file mode 100644 index 0000000000..1f7adfe980 --- /dev/null +++ b/recipes/powervr-drivers/libgles-omap3_3.00.00.01.bb @@ -0,0 +1,10 @@ +require libgles-omap3.inc + +SGXPV = "3_00_00_01" + +PR = "r7" + +# Quality control is really poor on these SDKs, so hack around the latest madness: +FILES_${PN} += "${libdir}/*.so" +FILES_${PN}-dev = "${includedir}" + diff --git a/recipes/powervr-drivers/libgles-omap3_3.00.00.05.bb b/recipes/powervr-drivers/libgles-omap3_3.00.00.05.bb new file mode 100644 index 0000000000..814ca04637 --- /dev/null +++ b/recipes/powervr-drivers/libgles-omap3_3.00.00.05.bb @@ -0,0 +1,12 @@ +require libgles-omap3.inc + +# Not released yet +DEFAULT_PREFERENCE = "-1" +PR = "r3" + +SGXPV = "3_00_00_05" +IMGPV = "1.2.12.838" + +# Quality control is really poor on these SDKs, so hack around the latest madness: +FILES_${PN} += "${libdir}/*.so" +FILES_${PN}-dev = "${includedir}" diff --git a/recipes/powervr-drivers/libgles-omap3_3.00.00.06.bb b/recipes/powervr-drivers/libgles-omap3_3.00.00.06.bb new file mode 100644 index 0000000000..cc8ddca0f5 --- /dev/null +++ b/recipes/powervr-drivers/libgles-omap3_3.00.00.06.bb @@ -0,0 +1,21 @@ +require libgles-omap3.inc + +# Not released yet +#DEFAULT_PREFERENCE = "-1" +PR = "r7" + +SGXPV = "3_00_00_06" +IMGPV = "1.3.13.1397" + +do_accept_license() { + export HOME="${WORKDIR}" + echo "Y +q +Y +${S}" | ${WORKDIR}/OMAP35x_Graphics_SDK_setuplinux_${SGXPV}.bin +} + +# Quality control is really poor on these SDKs, so hack around the latest madness: +FILES_${PN} += "${libdir}/*.so" +FILES_${PN}-dev = "${includedir}" + diff --git a/recipes/powervr-drivers/omap3-sgx-modules/0001-Compile-fixes-for-DSS2.patch b/recipes/powervr-drivers/omap3-sgx-modules/0001-Compile-fixes-for-DSS2.patch new file mode 100644 index 0000000000..7dbf4d9e6e --- /dev/null +++ b/recipes/powervr-drivers/omap3-sgx-modules/0001-Compile-fixes-for-DSS2.patch @@ -0,0 +1,96 @@ +From 8b6a6bb6702ab796ab56dbbd6caa1b271ed4485b Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen <tomi.valkeinen@nokia.com> +Date: Fri, 9 Jan 2009 12:40:28 +0200 +Subject: [PATCH] Compile fixes for DSS2 + +--- + .../dc_omap3430_linux/omaplfb_displayclass.c | 6 ++++-- + .../3rdparty/dc_omap3430_linux/omaplfb_linux.c | 14 ++++---------- + 2 files changed, 8 insertions(+), 12 deletions(-) + +diff --git a/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c b/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c +index 7b8ec37..6fde397 100755 +--- a/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c ++++ b/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c +@@ -57,8 +57,6 @@ PVRSRV_ERROR OMAPLFBPostPower (IMG_HANDLE hDevHandle, + 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,6 +122,9 @@ static void WorkHandler( + static PVRSRV_ERROR Flip(OMAPLFB_SWAPCHAIN *psSwapChain, + IMG_UINT32 aPhyAddr) + { ++ printk("no flipping\n"); ++ return PVRSRV_OK; ++#if 0 + if (1 /* omap2_disp_get_output_dev(OMAP2_GRAPHICS) == OMAP2_OUTPUT_LCD */) + { + omap_dispc_set_plane_base(0, aPhyAddr); +@@ -137,6 +138,7 @@ static PVRSRV_ERROR Flip(OMAPLFB_SWAPCHAIN *psSwapChain, + } + + return PVRSRV_ERROR_INVALID_PARAMS; ++#endif + } + + static IMG_VOID EnableVSyncInterrupt(OMAPLFB_SWAPCHAIN *psSwapChain) +diff --git a/services4/3rdparty/dc_omap3430_linux/omaplfb_linux.c b/services4/3rdparty/dc_omap3430_linux/omaplfb_linux.c +index acf1631..12f3e32 100755 +--- a/services4/3rdparty/dc_omap3430_linux/omaplfb_linux.c ++++ b/services4/3rdparty/dc_omap3430_linux/omaplfb_linux.c +@@ -37,6 +37,7 @@ + #include <linux/slab.h> + #include <linux/errno.h> + #include <linux/interrupt.h> ++#include <mach/display.h> + + #include <asm/io.h> + +@@ -52,10 +53,6 @@ MODULE_LICENSE("GPL"); + MODULE_SUPPORTED_DEVICE(DRVNAME); + + +-extern int omap_dispc_request_irq(unsigned long, void (*)(void *), void *); +-extern void omap_dispc_free_irq(unsigned long, void (*)(void *), void *); +- +- + #define unref__ __attribute__ ((unused)) + + +@@ -101,17 +98,14 @@ PVRSRV_ERROR OMAPLFBGetLibFuncAddr (IMG_CHAR *szFunctionName, PFN_DC_GET_PVRJTAB + } + + static void +-OMAPLFBVSyncISR(void *arg) ++OMAPLFBVSyncISR(void *arg, u32 mask) + { + (void) OMAPLFBVSyncIHandler((OMAPLFB_SWAPCHAIN *)arg); + } + +-#define DISPC_IRQ_VSYNC 0x0002 +- + PVRSRV_ERROR OMAPLFBInstallVSyncISR(OMAPLFB_SWAPCHAIN *psSwapChain) + { +- +- if (omap_dispc_request_irq(DISPC_IRQ_VSYNC, OMAPLFBVSyncISR, psSwapChain) != 0) ++ if (omap_dispc_register_isr(OMAPLFBVSyncISR, psSwapChain, DISPC_IRQ_VSYNC) != 0) + return PVRSRV_ERROR_OUT_OF_MEMORY; /* not worth a proper mapping */ + + return PVRSRV_OK; +@@ -120,7 +114,7 @@ PVRSRV_ERROR OMAPLFBInstallVSyncISR(OMAPLFB_SWAPCHAIN *psSwapChain) + + PVRSRV_ERROR OMAPLFBUninstallVSyncISR (OMAPLFB_SWAPCHAIN *psSwapChain) + { +- omap_dispc_free_irq(DISPC_IRQ_VSYNC, OMAPLFBVSyncISR, psSwapChain); ++ omap_dispc_unregister_isr(OMAPLFBVSyncISR); + + return PVRSRV_OK; + } +-- +1.5.6.3 + diff --git a/recipes/powervr-drivers/omap3-sgx-modules/0001-New-build-system-for-SGX.patch b/recipes/powervr-drivers/omap3-sgx-modules/0001-New-build-system-for-SGX.patch new file mode 100644 index 0000000000..9751bcd88d --- /dev/null +++ b/recipes/powervr-drivers/omap3-sgx-modules/0001-New-build-system-for-SGX.patch @@ -0,0 +1,247 @@ +From 36065340e13e6888e7399a1e5b5b11045e8474c6 Mon Sep 17 00:00:00 2001 +From: Tomba <tomba@bat.org> +Date: Sun, 1 Feb 2009 15:39:15 +0200 +Subject: [PATCH] New build system for SGX + +--- + Kbuild | 53 ++++++++++ + Makefile | 151 +++++++++++++++++++++++++++ + services4/3rdparty/dc_omap3430_linux/Kbuild | 8 ++ + 3 files changed, 212 insertions(+), 0 deletions(-) + create mode 100644 Kbuild + create mode 100644 Makefile + create mode 100644 services4/3rdparty/dc_omap3430_linux/Kbuild + +diff --git a/Kbuild b/Kbuild +new file mode 100644 +index 0000000..19f9a24 +--- /dev/null ++++ b/Kbuild +@@ -0,0 +1,53 @@ ++obj-m := pvrsrvkm.o ++ ++FILES := \ ++services4/srvkm/common/queue.c \ ++services4/srvkm/common/hash.c \ ++services4/srvkm/common/perproc.c \ ++services4/srvkm/common/mem.c \ ++services4/srvkm/common/power.c \ ++services4/srvkm/common/deviceclass.c \ ++services4/srvkm/common/metrics.c \ ++services4/srvkm/common/resman.c \ ++services4/srvkm/common/buffer_manager.c \ ++services4/srvkm/common/pvrsrv.c \ ++services4/srvkm/common/handle.c \ ++services4/srvkm/common/ra.c \ ++services4/srvkm/common/devicemem.c \ ++services4/srvkm/env/linux/pvr_debug.c \ ++services4/srvkm/env/linux/mm.c \ ++services4/srvkm/env/linux/mutex.c \ ++services4/srvkm/env/linux/mmap.c \ ++services4/srvkm/env/linux/module.c \ ++services4/srvkm/env/linux/proc.c \ ++services4/srvkm/env/linux/event.c \ ++services4/srvkm/env/linux/osfunc.c \ ++services4/srvkm/env/linux/pvr_bridge_k.c \ ++services4/srvkm/env/linux/pdump.c \ ++services4/srvkm/devices/sgx/sgxtransfer.c \ ++services4/srvkm/devices/sgx/sgxinit.c \ ++services4/srvkm/devices/sgx/sgxutils.c \ ++services4/srvkm/devices/sgx/pb.c \ ++services4/srvkm/devices/sgx/sgxkick.c \ ++services4/srvkm/devices/sgx/mmu.c \ ++services4/srvkm/devices/sgx/sgxreset.c \ ++services4/srvkm/bridged/bridged_pvr_bridge.c \ ++services4/system/omap3430/sysutils_linux.c \ ++services4/system/omap3430/sysconfig.c ++ ++EXTRA_CFLAGS += -I$(src)/include4 ++EXTRA_CFLAGS += -I$(src)/services4/include ++EXTRA_CFLAGS += -I$(src)/services4/srvkm/include ++EXTRA_CFLAGS += -I$(src)/services4/srvkm/hwdefs ++EXTRA_CFLAGS += -I$(src)/services4/srvkm/bridged ++EXTRA_CFLAGS += -I$(src)/services4/srvkm/devices/sgx ++EXTRA_CFLAGS += -I$(src)/services4/srvkm/env/linux ++EXTRA_CFLAGS += -I$(src)/services4/system/include ++EXTRA_CFLAGS += -I$(src)/services4/system/omap3430 ++ ++EXTRA_CFLAGS += $(ALL_CFLAGS) ++ ++pvrsrvkm-y := $(FILES:.c=.o) ++ ++obj-y := services4/3rdparty/dc_omap3430_linux/ ++ +diff --git a/Makefile b/Makefile +new file mode 100644 +index 0000000..74e9761 +--- /dev/null ++++ b/Makefile +@@ -0,0 +1,151 @@ ++export DISCIMAGE = /tmp/asdada ++export KERNELDIR = /home/tomba/work/linux ++ ++export BUILD = debug ++ ++export KERNELDIR = /home/tomba/work/linux ++export KBUILD_EXTRA_SYMBOLS = `pwd`/services4/srvkm/env/linux/kbuild/Module.symvers ++ ++SGXCORE = 530 ++CORE = -DSGX530 -DSUPPORT_SGX530 -DSGX_CORE_REV=103 ++ ++SUPPORT_SGX = 1 ++SUPPORT_HW_RECOVERY = 1 ++SUPPORT_SGX_HWPERF = 1 ++SYS_USING_INTERRUPTS = 1 ++ ++PVR2D_ALT_2DHW = 1 ++ ++LDM_PLATFORM ?= 1 ++ ++# Only enable active power management if passive power management is ++# enabled, as indicated by LDM_PLATFORM being set to 1. On OMAP, ++# the system can suspend in the case where active power management is ++# enabled in the SGX driver, but passive power management isn't. As ++# passive power management isn't enabled, the driver won't see the ++# system suspend/resume events, and so won't take appropriate action. ++ifeq ($(LDM_PLATFORM),1) ++SUPPORT_ACTIVE_POWER_MANAGEMENT ?= 1 ++else ++SUPPORT_ACTIVE_POWER_MANAGEMENT = 0 ++endif ++ ++export PVR_BUILD_DIR := $(shell pwd) ++ ++DATE := $(shell date "+%a %B %d %Z %Y" ) ++ ++CBUILD = -DPVR_BUILD_DIR="\"$(PVR_BUILD_DIR)\"" \ ++ -DPVR_BUILD_DATE="\"$(DATE)\"" \ ++ -DPVR_BUILD_TYPE="\"$(BUILD)\"" ++ ++# Don't support HW recovery on debug builds ++CBUILD.debug = -DDEBUG ++CBUILD.timing = -DTIMING ++CBUILD.release = -DRELEASE ++CFLAGS.debug = -g -O0 -DDLL_METRIC=1 ++CFLAGS.timing = $(OPTIM) -g -DDLL_METRIC=1 -DTIMING ++CFLAGS.release = $(OPTIM) -g ++CFLAGS = $(CFLAGS.$(BUILD)) ++ ++ ++ifeq ("$(BUILD)", "debug") ++DEBUG_LINUX_MEMORY_ALLOCATIONS ?= 1 ++DEBUG_LINUX_MEM_AREAS ?= 1 ++DEBUG_LINUX_MMAP_AREAS ?= 1 ++DEBUG_LINUX_XML_PROC_FILES ?= 0 ++DEBUG_LINUX_SLAB_ALLOCATIONS ?= 0 ++DEBUG_BRIDGE_KM ?= 1 ++DEBUG_TRACE_BRIDGE_KM ?= 0 ++DEBUG_BRIDGE_KM_DISPATCH_TABLE ?= 0 ++endif ++ ++TRANSFER_QUEUE ?= 1 ++SUPPORT_SGX_EVENT_OBJECT ?= 1 ++SUPPORT_SECURE_HANDLES ?= 1 ++SUPPORT_SRVINIT = 1 ++SUPPORT_PERCONTEXT_PB = 1 ++ ++SYS_CFLAGS += -DSERVICES4 -D_XOPEN_SOURCE=600 -DPVR2D_VALIDATE_INPUT_PARAMS ++ ++# Thread support ++USE_PTHREADS ?= 1 ++USE_GCC__thread_KEYWORD ?= 0 ++OPTIMISE_NON_NPTL_SINGLE_THREAD_TLS_LOOKUP ?= 0 ++DISABLE_THREADS ?= 0 ++ ++# Automatically define C compiler macros for features possible (or not) in use. ++ ++SYS_CFLAGS.$(SUPPORT_SRVINIT) += -DSUPPORT_SRVINIT ++ ++SYS_CFLAGS.$(SUPPORT_SGX) += -DSUPPORT_SGX ++SYS_CFLAGS.$(SUPPORT_XWS) += -DSUPPORT_XWS ++SYS_CFLAGS.$(PDUMP) += -DPDUMP ++SYS_CFLAGS.$(SUPPORT_POWER_MANAGEMENT) += -DSUPPORT_POWER_MANAGEMENT ++SYS_CFLAGS.$(SUPPORT_BUFFER_CLASS) += -DSUPPORT_BUFFER_CLASS ++ ++SYS_CFLAGS.$(SUPPORT_PERCONTEXT_PB) += -DSUPPORT_PERCONTEXT_PB ++SYS_CFLAGS.$(SUPPORT_DYNAMIC_PBRESIZE) += -DSUPPORT_DYNAMIC_PBRESIZE ++ ++SYS_CFLAGS.$(USE_FBDEV) += -DUSE_FBDEV ++SYS_CFLAGS.$(USE_FBDEV) += -DFBDEV_NAME="\"$(FBDEV_NAME)\"" ++SYS_CFLAGS.$(SUPPORT_DYNAMIC_3DCLOCKGATING) += -DSUPPORT_DYNAMIC_3DCLOCKGATING ++SYS_CFLAGS.$(REENTRANCY_PROTECTION) += -DREENTRANCY_PROTECTION ++SYS_CFLAGS.$(SCHEDULER_CONTROL_SUPPORT) += -DSCHEDULER_CONTROL_SUPPORT ++SYS_CFLAGS.$(USE_IMG_POWER_DOMAIN_FUNCTION) += -DUSE_IMG_POWER_DOMAIN_FUNCTION ++ ++SYS_CFLAGS.$(USE_DMALLOC) += -DDMALLOC ++ ++SYS_CFLAGS.$(DEBUG_LINUX_MEMORY_ALLOCATIONS) += -DDEBUG_LINUX_MEMORY_ALLOCATIONS ++SYS_CFLAGS.$(DEBUG_LINUX_MEM_AREAS) += -DDEBUG_LINUX_MEM_AREAS ++SYS_CFLAGS.$(DEBUG_LINUX_MMAP_AREAS) += -DDEBUG_LINUX_MMAP_AREAS ++SYS_CFLAGS.$(DEBUG_LINUX_XML_PROC_FILES) += -DDEBUG_LINUX_XML_PROC_FILES ++SYS_CFLAGS.$(DEBUG_LINUX_SLAB_ALLOCATIONS) += -DDEBUG_LINUX_SLAB_ALLOCATIONS ++SYS_CFLAGS.$(DEBUG_BRIDGE_KM) += -DDEBUG_BRIDGE_KM ++SYS_CFLAGS.$(DEBUG_TRACE_BRIDGE_KM) += -DDEBUG_TRACE_BRIDGE_KM ++SYS_CFLAGS.$(DEBUG_BRIDGE_KM_DISPATCH_TABLE) += -DDEBUG_BRIDGE_KM_DISPATCH_TABLE ++ ++SYS_CFLAGS.$(SUPPORT_LINUX_X86_WRITECOMBINE) += -DSUPPORT_LINUX_X86_WRITECOMBINE ++ ++SYS_CFLAGS.$(SGX_PDS_EVENTS_DISABLED) += -DSGX_PDS_EVENTS_DISABLED ++SYS_CFLAGS.$(USE_SUPPORT_NO_TA3D_OVERLAP) += -DUSE_SUPPORT_NO_TA3D_OVERLAP ++SYS_CFLAGS.$(SUPPORT_SGX_TILING) += -DSUPPORT_SGX_TILING ++SYS_CFLAGS.$(TRANSFER_QUEUE) += -DTRANSFER_QUEUE ++ ++SYS_CFLAGS.$(SUPPORT_SGX_MMU_DUMMY_PAGE) += -DSUPPORT_SGX_MMU_DUMMY_PAGE ++ ++SYS_CFLAGS.$(PVRSRV_USSE_EDM_STATUS_DEBUG) += -DPVRSRV_USSE_EDM_STATUS_DEBUG ++ ++SYS_CFLAGS.$(SUPPORT_DRI_DRM) += -DSUPPORT_DRI_DRM ++ ++SYS_CFLAGS.$(SYS_USING_INTERRUPTS) += -DSYS_USING_INTERRUPTS ++SYS_CFLAGS.$(SUPPORT_HW_RECOVERY) += -DSUPPORT_HW_RECOVERY ++SYS_CFLAGS.$(SUPPORT_ACTIVE_POWER_MANAGEMENT) += -DSUPPORT_ACTIVE_POWER_MANAGEMENT ++ ++SYS_CFLAGS.$(SUPPORT_SECURE_HANDLES) += -DPVR_SECURE_HANDLES ++ ++SYS_CFLAGS.$(USE_PTHREADS) += -DUSE_PTHREADS ++SYS_CFLAGS.$(USE_GCC__thread_KEYWORD) += -DUSE_GCC__thread_KEYWORD ++SYS_CFLAGS.$(OPTIMISE_NON_NPTL_SINGLE_THREAD_TLS_LOOKUP) += -DOPTIMISE_NON_NPTL_SINGLE_THREAD_TLS_LOOKUP ++SYS_CFLAGS.$(DISABLE_THREADS) += -DDISABLE_THREADS ++SYS_CFLAGS.$(SUPPORT_SGX_EVENT_OBJECT) += -DSUPPORT_SGX_EVENT_OBJECT ++SYS_CFLAGS.$(LDM_PLATFORM) += -DLDM_PLATFORM ++SYS_CFLAGS.$(LDM_PCI) += -DLDM_PCI ++SYS_CFLAGS.$(PVR_MANUAL_POWER_CONTROL) += -DPVR_MANUAL_POWER_CONTROL ++ ++SYS_CFLAGS.$(PVR2D_ALT_2DHW) += -DPVR2D_ALT_2DHW ++ ++SYS_CFLAGS.$(SUPPORT_SGX_HWPERF) += -DSUPPORT_SGX_HWPERF ++ ++export ALL_CFLAGS = -DLINUX \ ++ $(CBUILD) $(CBUILD.$(BUILD)) \ ++ $(SYS_CFLAGS) $(SYS_CFLAGS.1) \ ++ $(MODULE_CFLAGS) $(MODULE_CFLAGS.$(BUILD)) \ ++ $(CORE) \ ++ $(CFLAGS) ++ ++all: ++ $(MAKE) -C $(KERNELDIR) M=`pwd` $* ++ ++clean: ++ $(MAKE) -C $(KERNELDIR) M=`pwd` clean ++ +diff --git a/services4/3rdparty/dc_omap3430_linux/Kbuild b/services4/3rdparty/dc_omap3430_linux/Kbuild +new file mode 100644 +index 0000000..c08b240 +--- /dev/null ++++ b/services4/3rdparty/dc_omap3430_linux/Kbuild +@@ -0,0 +1,8 @@ ++EXTRA_CFLAGS = -DLINUX \ ++ -I$(PVR_BUILD_DIR)/include4 \ ++ -I$(PVR_BUILD_DIR)/services4/include \ ++ -I$(PVR_BUILD_DIR)/services4/system/$(PVR_SYSTEM) \ ++ -I$(PVR_BUILD_DIR)/services4/system/include \ ++ ++obj-m := omaplfb.o ++omaplfb-y := omaplfb_displayclass.o omaplfb_linux.o +-- +1.5.6.3 + diff --git a/recipes/powervr-drivers/omap3-sgx-modules/spurious-irq-fix.diff b/recipes/powervr-drivers/omap3-sgx-modules/spurious-irq-fix.diff new file mode 100644 index 0000000000..c857fe713f --- /dev/null +++ b/recipes/powervr-drivers/omap3-sgx-modules/spurious-irq-fix.diff @@ -0,0 +1,11 @@ +--- /tmp/sgxinit.c 2009-02-20 21:24:01.000000000 +0100 ++++ omap3-sgx-modules-1.3.13.1397/services4/srvkm/devices/sgx/sgxinit.c 2009-02-20 21:25:17.000000000 +0100 +@@ -1139,6 +1139,8 @@ + + + OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_HOST_CLEAR, ui32EventClear); ++ //Read back to flush posted write to fix spurious IRQ ++ OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_HOST_CLEAR); + } + } + diff --git a/recipes/powervr-drivers/omap3-sgx-modules_1.2.12.838.bb b/recipes/powervr-drivers/omap3-sgx-modules_1.2.12.838.bb new file mode 100644 index 0000000000..6f57e532f0 --- /dev/null +++ b/recipes/powervr-drivers/omap3-sgx-modules_1.2.12.838.bb @@ -0,0 +1,19 @@ +DESCRIPTION = "Kernel drivers for the PowerVR SGX chipset found in the omap3 SoCs" +LICENSE = "GPLv2" + +inherit module + +SRC_URI = "http://dominion.thruhere.net/koen/OE/omap3-sgx-modules-${PV}.tar.bz2 \ +" + +MAKE_TARGETS = "BUILD=debug" + +do_compile_prepend() { + cd ${S}/eurasiacon/build/linux/omap3430_linux/kbuild/ +} + +do_install() { + cd ${S}/eurasiacon/build/linux/omap3430_linux/kbuild/ + mkdir -p ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/gpu/pvr + cp ${WORKDIR}/${PN}-${PV}/eurasiacon/binary_omap3430_linux_debug/*.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/gpu/pvr +} diff --git a/recipes/powervr-drivers/omap3-sgx-modules_1.3.13.1397.bb b/recipes/powervr-drivers/omap3-sgx-modules_1.3.13.1397.bb new file mode 100644 index 0000000000..985a0c044b --- /dev/null +++ b/recipes/powervr-drivers/omap3-sgx-modules_1.3.13.1397.bb @@ -0,0 +1,25 @@ +DESCRIPTION = "Kernel drivers for the PowerVR SGX chipset found in the omap3 SoCs" +LICENSE = "GPLv2" + +PR = "r6" + +inherit module + +SRC_URI = "http://dominion.thruhere.net/koen/OE/omap3-sgx-modules-${PV}.tar.bz2 \ + file://0001-Compile-fixes-for-DSS2.patch;patch=1 \ + file://0001-New-build-system-for-SGX.patch;patch=1 \ + file://spurious-irq-fix.diff;patch=1 \ +" + +PVRBUILD = "release" + +MAKE_TARGETS = " BUILD=${PVRBUILD}" + +do_compile_prepend() { + find ${S} -name "*.*o" | xargs rm +} + +do_install() { + mkdir -p ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/gpu/pvr + cp ${S}/pvrsrvkm.ko ${S}/services4/3rdparty/dc_omap3430_linux/omaplfb.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/gpu/pvr +} |