From patchwork Thu Jun 27 22:56:06 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Spenser Gilliland X-Patchwork-Id: 255241 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from hemlock.osuosl.org (hemlock.osuosl.org [140.211.166.133]) by ozlabs.org (Postfix) with ESMTP id 91C772C0299 for ; Fri, 28 Jun 2013 08:57:20 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id E18CCA02D4; Thu, 27 Jun 2013 22:57:14 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mvHX82i2mw+H; Thu, 27 Jun 2013 22:56:54 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id B6095A02C7; Thu, 27 Jun 2013 22:56:54 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 3CC1A8F7B0 for ; Thu, 27 Jun 2013 22:57:04 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 4A7DF82D15 for ; Thu, 27 Jun 2013 22:56:57 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id T3sCEC9L4hp5 for ; Thu, 27 Jun 2013 22:56:18 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail-yh0-f46.google.com (mail-yh0-f46.google.com [209.85.213.46]) by whitealder.osuosl.org (Postfix) with ESMTPS id 7A83E816DC for ; Thu, 27 Jun 2013 22:56:16 +0000 (UTC) Received: by mail-yh0-f46.google.com with SMTP id i57so748297yha.19 for ; Thu, 27 Jun 2013 15:56:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:x-gm-message-state; bh=RkIWwY43K8U7yXED9RxXbyUpA+MooznFrhkJB+cz4I0=; b=Y6ri8gfdahj1hgO+fYSv+FNZDaKbNAGD8eMJQvtn+yjQL0G2L0sAoo8OrY9NBrjXJ1 P9td1rYHrBw5nM31A6w7T8SdIr7Qs8/p5iS4vDJzF8eaR7sEhNuBgsvNepIcdMb2Zk9z wE0AU55tX9k73HMG9/jZc/YqYXX5srOHy3QYhOO4IkjTQY1TEQ6RKs5FpTjRIvO+t24w L/wnKLU/EqasCF+BAaA/tj0vLrorzLemoYO3hlbilmbEtuDwGcDR2WRRsobhrNgyRMUB nJhjzwUamqzRHAG+ACaykPoBCgcWjffyY+GmuPd/rvTX+inC98H01i3WQDf/3yN2DFTf kMfQ== X-Received: by 10.236.92.211 with SMTP id j59mr5959875yhf.204.1372373775143; Thu, 27 Jun 2013 15:56:15 -0700 (PDT) Received: from bourban.gateway.2wire.net (108-90-245-135.lightspeed.cicril.sbcglobal.net. [108.90.245.135]) by mx.google.com with ESMTPSA id v68sm7312616yhn.22.2013.06.27.15.56.13 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 27 Jun 2013 15:56:13 -0700 (PDT) From: Spenser Gilliland To: buildroot@busybox.net Date: Thu, 27 Jun 2013 17:56:06 -0500 Message-Id: <1372373766-23735-1-git-send-email-spenser@gillilanding.com> X-Mailer: git-send-email 1.8.1.2 X-Gm-Message-State: ALoCoQluRhM1fIkx+SnajiJ6+HxBijlP9T7X41f9VhURdfrFpKytR2O+3jvN/0YKPRp2lV9W39PJ Subject: [Buildroot] [RFC v3 1/1] ti-gfx: add new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net Signed-off-by: Spenser Gilliland --- This RFC is a continuation of the previous RFCs a work in progress which shows the current development of this patch. TODO: - create .pc files - testing, lots of testing. v3: - all reviews addressed - added demos - added hard float (not runtime tested) - added init script - added SGX detection script (untested) - tested on beaglexm using demos v2: - basic working with minor issues during tests. v1: - inital revision. --- package/Config.in | 1 + package/opengl/libegl/libegl.mk | 4 + package/opengl/libgles/libgles.mk | 4 + package/opengl/libopenvg/libopenvg.mk | 4 + package/ti-gfx/Config.in | 64 ++++++++++ package/ti-gfx/esrev.sh | 59 +++++++++ package/ti-gfx/powervr.ini | 2 + package/ti-gfx/ti-gfx-km_install_modules.patch | 19 +++ package/ti-gfx/ti-gfx-newclkapi.patch | 72 +++++++++++ package/ti-gfx/ti-gfx.mk | 163 +++++++++++++++++++++++++ package/ti-gfx/ti-gfx.sysv | 45 +++++++ 11 files changed, 437 insertions(+) create mode 100644 package/ti-gfx/Config.in create mode 100644 package/ti-gfx/esrev.sh create mode 100644 package/ti-gfx/powervr.ini create mode 100644 package/ti-gfx/ti-gfx-km_install_modules.patch create mode 100644 package/ti-gfx/ti-gfx-newclkapi.patch create mode 100644 package/ti-gfx/ti-gfx.mk create mode 100644 package/ti-gfx/ti-gfx.sysv diff --git a/package/Config.in b/package/Config.in index 0eb6a9c..3429c0e 100644 --- a/package/Config.in +++ b/package/Config.in @@ -291,6 +291,7 @@ source "package/snowball-hdmiservice/Config.in" source "package/sredird/Config.in" source "package/statserial/Config.in" source "package/sysstat/Config.in" +source "package/ti-gfx/Config.in" source "package/ti-utils/Config.in" source "package/uboot-tools/Config.in" source "package/udev/Config.in" diff --git a/package/opengl/libegl/libegl.mk b/package/opengl/libegl/libegl.mk index bd8040d..00e1f19 100644 --- a/package/opengl/libegl/libegl.mk +++ b/package/opengl/libegl/libegl.mk @@ -10,6 +10,10 @@ ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) LIBEGL_DEPENDENCIES += rpi-userland endif +ifeq ($(BR2_PACKAGE_TI_GFX),y) +LIBEGL_DEPENDENCIES += ti-gfx +endif + ifeq ($(LIBEGL_DEPENDENCIES),) define LIBEGL_CONFIGURE_CMDS echo "No libEGL implementation selected. Configuration error." diff --git a/package/opengl/libgles/libgles.mk b/package/opengl/libgles/libgles.mk index a0048a7..d2fe11b 100644 --- a/package/opengl/libgles/libgles.mk +++ b/package/opengl/libgles/libgles.mk @@ -10,6 +10,10 @@ ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) LIBGLES_DEPENDENCIES += rpi-userland endif +ifeq ($(BR2_PACKAGE_TI_GFX),y) +LIBGLES_DEPENDENCIES += ti-gfx +endif + ifeq ($(LIBGLES_DEPENDENCIES),) define LIBGLES_CONFIGURE_CMDS echo "No libGLES implementation selected. Configuration error." diff --git a/package/opengl/libopenvg/libopenvg.mk b/package/opengl/libopenvg/libopenvg.mk index 03f59ba..118ae7f 100644 --- a/package/opengl/libopenvg/libopenvg.mk +++ b/package/opengl/libopenvg/libopenvg.mk @@ -10,6 +10,10 @@ ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) LIBOPENVG_DEPENDENCIES += rpi-userland endif +ifeq ($(BR2_PACKAGE_TI_GFX),y) +LIBOPENVG_DEPENDENCIES += ti-gfx +endif + ifeq ($(LIBOPENVG_DEPENDENCIES),) define LIBOPENVG_CONFIGURE_CMDS echo "No libOpenVG implementation selected. Configuration error." diff --git a/package/ti-gfx/Config.in b/package/ti-gfx/Config.in new file mode 100644 index 0000000..bef8526 --- /dev/null +++ b/package/ti-gfx/Config.in @@ -0,0 +1,64 @@ +config BR2_PACKAGE_TI_GFX + bool "ti-gfx" + select BR2_PACKAGE_HAS_OPENGL_EGL + select BR2_PACKAGE_HAS_OPENGL_ES + depends on BR2_LINUX_KERNEL && (BR2_TOOLCHAIN_EXTERNAL_GLIBC || \ + BR2_TOOLCHAIN_CTNG_eglibc || BR2_TOOLCHAIN_CTNG_glibc) + help + Graphics libraries for TI boards. + + http://downloads.ti.com/dsps/dsps_public_sw/gfxsdk/ + +if BR2_PACKAGE_TI_GFX + +config BR2_PACKAGE_TI_GFX_DEBUG + bool "enable debug support" + help + Turn on debugging in kernel module and install libraries built with + debugging enabled + +config BR2_PACKAGE_TI_GFX_DEMOS + bool "install demos" + help + install the OGLES2ChameleonMan and OGLES2MagicLantern demos + +config BR2_PACKAGE_TI_GFX_HARD_FLOAT + bool "use hard float binaries" + help + Install hard float binaries (required if using a hard float toolchain) + +choice + prompt "Target" + default BR2_PACKAGE_TI_GFX_ES3 + help + Select the SOC for which you would like to install drivers. Please + use the chart at + http://processors.wiki.ti.com/index.php/OMAP35x_Graphics_SDK_Getting_Started_Guide + +config BR2_PACKAGE_TI_GFX_ES3 + bool "es3.x (OMAP35xx, AM35xx Rev 3.1+)" + help + OMAP35xx, AM35xx Rev 3.1+ + +config BR2_PACKAGE_TI_GFX_ES5 + bool "es5.x (AM37xx, DM37xx)" + help + AM37xx, DM37xx + +config BR2_PACKAGE_TI_GFX_ES6 + bool "es6.x (AM387x, C6A814x, AM389x, C6A816x)" + help + AM387x, C6A814x, AM389x, C6A816x + +config BR2_PACKAGE_TI_GFX_ES8 + bool "es8.x (AM335x)" + help + AM335x + +endchoice + +endif + +comment "requires an eglibc/glibc based toolchain and the linux kernel" + depends on !(BR2_LINUX_KERNEL && (BR2_TOOLCHAIN_EXTERNAL_GLIBC || \ + BR2_TOOLCHAIN_CTNG_eglibc || BR2_TOOLCHAIN_CTNG_glibc)) diff --git a/package/ti-gfx/esrev.sh b/package/ti-gfx/esrev.sh new file mode 100644 index 0000000..4733ea9 --- /dev/null +++ b/package/ti-gfx/esrev.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +# Debug script to determine proper ES revision for the current board. The +# pvrsrvkm module must be insmoded before attempting to get the es rev. + +machine_id() { # return the machine ID + awk 'BEGIN { FS=": " } /Hardware/ \ + { gsub(" ", "_", $2); print tolower($2) } ' +---- +Index: ti-gfx-4_09_00_01/GFX_Linux_KM/Makefile +=================================================================== +--- ti-gfx-4_09_00_01.orig/GFX_Linux_KM/Makefile 2013-03-07 11:00:11.000000000 -0600 ++++ ti-gfx-4_09_00_01/GFX_Linux_KM/Makefile 2013-05-23 01:36:29.356676281 -0500 +@@ -479,6 +479,9 @@ + all: + $(MAKE) -C $(KERNELDIR) M=`pwd` $* + ++install: ++ $(MAKE) -C $(KERNELDIR) M=`pwd` modules_install ++ + clean: + @find . -name "*.o" -exec rm -r {} \; + @find . -name "*.ko" -exec rm -r {} \; diff --git a/package/ti-gfx/ti-gfx-newclkapi.patch b/package/ti-gfx/ti-gfx-newclkapi.patch new file mode 100644 index 0000000..eb4c301 --- /dev/null +++ b/package/ti-gfx/ti-gfx-newclkapi.patch @@ -0,0 +1,72 @@ +This patch adjusts the omap3630 portion of the powervr driver to use the new +clk kernel api. + +Signed-off-by: Spenser Gilliland +---- +Index: ti-gfx-4_09_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c +=================================================================== +--- ti-gfx-4_09_00_01.orig/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2013-06-27 14:57:02.687204341 -0500 ++++ ti-gfx-4_09_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2013-06-27 15:04:44.103212764 -0500 +@@ -153,6 +153,28 @@ + psTimingInfo->ui32ActivePowManLatencyms = SYS_SGX_ACTIVE_POWER_LATENCY_MS; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) ++int clk_prepare_enable(struct clk *clk) ++{ ++ return clk_enable(clk); ++} ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) ++int clk_prepare_enable(struct clk *clk) ++{ ++ res = clk_prepare(clk); ++ if (ret < 0) ++ return res; ++ ++ res = clk_enable(clk); ++ if (res < 0) { ++ clk_unprepare(clk); ++ return res; ++ } ++ ++ return 0; ++} ++#endif ++ + PVRSRV_ERROR EnableSGXClocks(SYS_DATA *psSysData) + { + #if !defined(NO_HARDWARE) +@@ -167,14 +189,14 @@ + + PVR_DPF((PVR_DBG_MESSAGE, "EnableSGXClocks: Enabling SGX Clocks")); + +- res=clk_enable(psSysSpecData->psSGX_FCK); ++ res=clk_prepare_enable(psSysSpecData->psSGX_FCK); + if (res < 0) + { + PVR_DPF((PVR_DBG_ERROR, "EnableSGXClocks: Couldn't enable SGX functional clock (%d)", res)); + return PVRSRV_ERROR_UNABLE_TO_ENABLE_CLOCK; + } + +- res=clk_enable(psSysSpecData->psSGX_ICK); ++ res=clk_prepare_enable(psSysSpecData->psSGX_ICK); + if (res < 0) + { + PVR_DPF((PVR_DBG_ERROR, "EnableSGXClocks: Couldn't enable SGX interface clock (%d)", res)); +@@ -374,14 +396,14 @@ + rate = clk_get_rate(psSysSpecData->psGPT11_FCK); + PVR_TRACE(("GPTIMER11 clock is %dMHz", HZ_TO_MHZ(rate))); + +- res = clk_enable(psSysSpecData->psGPT11_FCK); ++ res = clk_prepare_enable(psSysSpecData->psGPT11_FCK); + if (res < 0) + { + PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 functional clock (%d)", res)); + goto ExitError; + } + +- res = clk_enable(psSysSpecData->psGPT11_ICK); ++ res = clk_prepare_enable(psSysSpecData->psGPT11_ICK); + if (res < 0) + { + PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 interface clock (%d)", res)); diff --git a/package/ti-gfx/ti-gfx.mk b/package/ti-gfx/ti-gfx.mk new file mode 100644 index 0000000..b7b8d94 --- /dev/null +++ b/package/ti-gfx/ti-gfx.mk @@ -0,0 +1,163 @@ +############################################################################### +# +# ti-gfx +# +############################################################################### + +TI_GFX_VERSION = 4_09_00_01 +TI_GFX_IMGPV = 1.9.2188537 + +ifeq ($(BR2_PACKAGE_TI_GFX_HARD_FLOAT),y) +TI_GFX_SOURCE = Graphics_SDK_setuplinux_$(TI_GFX_VERSION)_hardfp_minimal_demos.bin +else +TI_GFX_SOURCE = Graphics_SDK_setuplinux_$(TI_GFX_VERSION)_minimal_demos.bin +endif + +TI_GFX_SITE = http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/gfxsdk/$(TI_GFX_VERSION)/exports/ +TI_GFX_LICENSE = Technology / Software Publicly Available +TI_GFX_LICENSE_FILES = TSPA.txt +TI_GFX_INSTALL_STAGING = YES + +TI_GFX_DEPENDENCIES = linux + +ifeq ($(BR2_PACKAGE_TI_GFX_ES3),y) +TI_GFX_OMAPES = 3.x +TI_GFX_PLATFORM = omap3 +endif +ifeq ($(BR2_PACKAGE_TI_GFX_ES5),y) +TI_GFX_OMAPES = 5.x +TI_GFX_PLATFORM = omap3630 +endif +ifeq ($(BR2_PACKAGE_TI_GFX_ES6),y) +TI_GFX_OMPAES = 6.x +TI_GFX_PLATFORM = ti81xx +endif +ifeq ($(BR2_PACKAGE_TI_GFX_ES8),y) +TI_GFX_OMAPES = 8.x +TI_GFX_PLATFORM = ti335x +endif + +ifeq ($(BR2_PACKAGE_TI_GFX_DEBUG),y) +TI_GFX_DEBUG_LIB = dbg +TI_GFX_DEBUG_KM = debug +else +TI_GFX_DEBUG_LIB = rel +TI_GFX_DEBUG_KM = release +endif + +TI_GFX_BIN_PATH = gfx_$(TI_GFX_DEBUG_LIB)_es$(TI_GFX_OMAPES) + +TI_GFX_KM_MAKE_OPTS = \ + $(LINUX_MAKE_FLAGS) \ + BUILD=$(TI_GFX_DEBUG_KM) \ + TI_PLATFORM=$(TI_GFX_PLATFORM) \ + OMAPES=$(TI_GFX_OMAPES) \ + SUPPORT_XORG=0 \ + KERNELDIR=$(LINUX_DIR) + +TI_GFX_DEMO_MAKE_OPTS = \ + PLATFORM=LinuxARMV7 \ + Common=1 \ + X11BUILD=0 + +# The only required binary is pvrsrvctl all others are optional +TI_GFX_BIN = pvrsrvctl + +ifeq ($(BR2_PACKAGE_TI_GFX_DEBUG),y) +TI_GFX_BIN += \ + eglinfo ews_server ews_server_es2 ews_test_gles1 ews_test_gles2 \ + ews_test_swrender gles1test1 gles2test1 pvr2d_test services_test \ + sgx_blit_test sgx_clipblit_test sgx_flip_test sgx_init_test \ + sgx_render_flip_test +endif + +TI_GFX_LIB = \ + libEGL.so libews.so libGLES_CM.so libGLESv2.so libglslcompiler.so \ + libIMGegl.so libpvr2d.so libpvrEWS_WSEGL.so libpvrPVR2D_BLITWSEGL.so \ + libpvrPVR2D_FLIPWSEGL.so libpvrPVR2D_FRONTWSEGL.so \ + libpvrPVR2D_LINUXFBWSEGL.so libpvrPVRScopeServices.so \ + libsrv_init.so libsrv_um.so libusc.so + +TI_GFX_DEMOS = ChameleonMan MagicLantern +TI_GFX_DEMOS_LOC = GFX_Linux_SDK/OGLES2/SDKPackage/Demos +TI_GFX_DEMOS_MAKE_LOC = OGLES2/Build/LinuxGeneric +TI_GFX_DEMOS_BIN_LOC = OGLES2/Build/LinuxARMV7/ReleaseRaw/ + +define TI_GFX_EXTRACT_CMDS + $(RM) -rf $(TI_GFX_DIR) + chmod +x $(DL_DIR)/$(TI_GFX_SOURCE) + printf "Y\nY\n qY\n\n" | $(DL_DIR)/$(TI_GFX_SOURCE) \ + --prefix $(@D) \ + --mode console +endef + +define TI_GFX_BUILD_KM_CMDS + $(MAKE) $(TI_GFX_KM_MAKE_OPTS) -C $(@D)/GFX_Linux_KM all +endef + +define TI_GFX_BUILD_DEMO_CMDS + $(foreach demo, $(TI_GFX_DEMOS), \ + cd $(@D)/$(TI_GFX_DEMOS_LOC)/$(demo)/$(TI_GFX_DEMOS_MAKE_LOC); \ + $(TARGET_MAKE_ENV) $(MAKE) $(TI_GFX_DEMO_MAKE_OPTS);) +endef + +define TI_GFX_BUILD_CMDS + $(call TI_GFX_BUILD_KM_CMDS) + $(if $(BR2_PACKAGE_TI_GFX_DEMOS),$(call TI_GFX_BUILD_DEMO_CMDS)) +endef + +define TI_GFX_INSTALL_STAGING_CMDS + for incdir in EGL EWS GLES2 KHR; do \ + $(INSTALL) -d $(STAGING_DIR)/usr/include/$$incdir; \ + $(INSTALL) -D -m 0644 $(@D)/include/OGLES2/$$incdir/*.h \ + $(STAGING_DIR)/usr/include/$$incdir; \ + done + $(INSTALL) -D -m 0755 $(@D)/$(TI_GFX_BIN_PATH)/*.so $(STAGING_DIR)/usr/lib +endef + +define TI_GFX_INSTALL_KM_CMDS + $(MAKE) $(TI_GFX_KM_MAKE_OPTS) -C $(@D)/GFX_Linux_KM install +endef + +define TI_GFX_INSTALL_BINS_CMDS + $(foreach bin,$(TI_GFX_BIN), + $(INSTALL) -D -m 0755 $(@D)/$(TI_GFX_BIN_PATH)/$(bin) \ + $(TARGET_DIR)/usr/bin/$(bin)) +endef + +define TI_GFX_INSTALL_LIBS_CMDS + # create symlinks and install libraries. these libraries do not have a + # SONAME defined; therefore, they will not be automatically renamed and + # must be renamed manually. + $(foreach lib,$(TI_GFX_LIBS), + $(INSTALL) -D -m 0755 $(@D)/$(TI_GFX_BIN_PATH)/$(lib) \ + $(TARGET_DIR)/usr/lib/$(lib).$(TI_GFX_IMGPV); \ + ln -sf $(lib).$(TI_GFX_IMGPV) \ + $(TARGET_DIR)/usr/lib/$(lib)$$(echo $(TI_GFX_IMGPV) \ + | awk -F. '{print "." $$1} ); \ + ln -sf $(lib).$(TI_GFX_IMGPV) \ + $(TARGET_DIR)/usr/lib/$(lib)$$(echo $(TI_GFX_IMGPV) \ + | awk -F. '{print "." $$1 "." $$2} );) + # libs use the following file for configuration. + $(install) -D -m 0644 package/ti-gfx/powervr.ini $(TARGET_DIR)/etc/powervr.ini +endef + +define TI_GFX_INSTALL_DEMOS_CMDS + $(foreach demo,$(TI_GFX_DEMOS), + $(INSTALL) -D -m 0755 \ + $(@D)/$(TI_GFX_DEMOS_LOC)/$$demo/$(TI_GFX_DEMOS_BIN_LOC)/OGLES2$${demo} \ + $(TARGET_DIR)/usr/bin/OGLES2$${demo};) +endef + +define TI_GFX_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/ti-gfx/ti-gfx.sysv /etc/init.d/S80ti-gfx +endef + +define TI_GFX_INSTALL_TARGET_CMDS + $(call TI_GFX_INSTALL_KM_CMDS) + $(call TI_GFX_INSTALL_BINS_CMDS) + $(call TI_GFX_INSTALL_LIBS_CMDS) + $(if $(BR2_PACKAGE_TI_GFX_DEMOS),$(call TI_GFX_INSTALL_DEMOS_CMDS)) +endef + +$(eval $(generic-package)) diff --git a/package/ti-gfx/ti-gfx.sysv b/package/ti-gfx/ti-gfx.sysv new file mode 100644 index 0000000..372750f --- /dev/null +++ b/package/ti-gfx/ti-gfx.sysv @@ -0,0 +1,45 @@ +#!/bin/sh + +BITSPERPIXEL="$(fbset | grep geom | awk '{print $6}')" +YRES="$(fbset | grep geom | awk '{print $3}')" + +if [ "$1" = "" ]; then + echo PVR-INIT: Please use start, stop, or restart. + exit 1 +fi + +if [ "$1" = "stop" -o "$1" = "restart" ]; then + echo Stopping PVR + rmmod bufferclass_ti + rmmod omaplfb + rmmod pvrsrvkm +fi + +if [ "$1" = "stop" ]; then + exit 0 +fi + +# Set RGBA ordering to something the drivers like +if [ "$BITSPERPIXEL" = "32" ] ; then + fbset -rgba 8/16,8/8,8/0,8/24 +fi + +# Try to enable triple buffering when there's enough VRAM +fbset -vyres $(expr $YRES \* 3) + +modprobe omaplfb +modprobe bufferclass_ti + +pvr_maj=`grep "pvrsrvkm$" /proc/devices | cut -b1,2,3` +bc_maj=`grep "bc" /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 + +if ! /usr/bin/pvrsrvctl --start --no-module; then + echo "powervr: unable to start server" +fi