From 238bad671c9265b71db2f104d85c84bd74303605 Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Mon, 1 Sep 2014 09:25:46 +0300 Subject: beaglebone: Add cape support for beaglebone black Linux kernel version 3.8 from meta-beagleboard adds support for the cape manager. Using powervr driver version 4.10.00.01, SGX is also supported. Patches for the kernel and SGX are taken from TI support pages. Kernel args need 'quiet' for HDMI to work, otherwise you only get black screen. Double buffering (libpvrPVR2D_FLIPWSEGL.so) does not work, need to use FRONT buffering which can cause screen tearing. Task-number: QTEE-312 Change-Id: I160e7e954ce9d060b0cb1bdaca70b24de9ccd697 Reviewed-by: Eirik Aavitsland Reviewed-by: Andy Nichols --- .../libgles-omap3/0001-Add-GLchar-typedef.patch | 24 --- recipes/libgles/libgles-omap3/rc.pvr | 117 ++++++++++++ recipes/libgles/libgles-omap3_4.10.00.01.bb | 48 +++++ .../0001-AM335x-Adding-SGX-DT-node.patch | 34 ++++ ...ke-hwmod-deassert-for-SGX-graphics-device.patch | 121 +++++++++++++ ...-fb-Add-API-to-register-wait-for-vsync-ca.patch | 97 ++++++++++ .../customer/0001-AM335x-Adding-SGX-DT-node.patch | 34 ++++ .../0002-Changes-accordingtoTIforSGXsupport.patch | 196 +++++++++++++++++++++ recipes/linux/linux-mainline_3.8.bbappend | 8 + ...ics-SDK-04.10.00.01-AM335x-sgx-irq-change.patch | 32 ++++ .../Change-for-interfacing-with-SGX-DT-node.patch | 51 ++++++ .../omap3-sgx-modules/linux-3.8.patch | 63 +++++++ .../omap3-sgx-modules_4.10.00.01.bb | 66 +++++++ recipes/u-boot/u-boot-uenv-script/uEnv.txt | 4 +- 14 files changed, 868 insertions(+), 27 deletions(-) delete mode 100644 recipes/libgles/libgles-omap3/0001-Add-GLchar-typedef.patch create mode 100755 recipes/libgles/libgles-omap3/rc.pvr create mode 100644 recipes/libgles/libgles-omap3_4.10.00.01.bb create mode 100755 recipes/linux/linux-mainline/0001-AM335x-Adding-SGX-DT-node.patch create mode 100755 recipes/linux/linux-mainline/0002-AM33XX-Invoke-hwmod-deassert-for-SGX-graphics-device.patch create mode 100755 recipes/linux/linux-mainline/0003-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch create mode 100644 recipes/linux/linux-mainline/customer/0001-AM335x-Adding-SGX-DT-node.patch create mode 100644 recipes/linux/linux-mainline/customer/0002-Changes-accordingtoTIforSGXsupport.patch create mode 100644 recipes/linux/linux-mainline_3.8.bbappend create mode 100644 recipes/powervr-drivers/omap3-sgx-modules/0001-Graphics-SDK-04.10.00.01-AM335x-sgx-irq-change.patch create mode 100644 recipes/powervr-drivers/omap3-sgx-modules/Change-for-interfacing-with-SGX-DT-node.patch create mode 100644 recipes/powervr-drivers/omap3-sgx-modules/linux-3.8.patch create mode 100644 recipes/powervr-drivers/omap3-sgx-modules_4.10.00.01.bb (limited to 'recipes') diff --git a/recipes/libgles/libgles-omap3/0001-Add-GLchar-typedef.patch b/recipes/libgles/libgles-omap3/0001-Add-GLchar-typedef.patch deleted file mode 100644 index 15c85cc..0000000 --- a/recipes/libgles/libgles-omap3/0001-Add-GLchar-typedef.patch +++ /dev/null @@ -1,24 +0,0 @@ -From a5fdf434b402d4c90390bf5db08ab6bc8bf0a5a3 Mon Sep 17 00:00:00 2001 -From: Samuli Piippo -Date: Thu, 6 Sep 2012 15:18:20 +0300 -Subject: [PATCH] Add GLchar typedef - ---- - .../SDKPackage/Builds/OGLES2/Include/GLES2/gl2.h | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -diff --git a/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/GLES2/gl2.h b/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/GLES2/gl2.h -index d9ae403..225f2f1 100644 ---- a/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/GLES2/gl2.h -+++ b/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/GLES2/gl2.h -@@ -17,6 +17,7 @@ extern "C" { - *-----------------------------------------------------------------------*/ - - typedef void GLvoid; -+typedef char GLchar; - typedef unsigned int GLenum; - typedef unsigned char GLboolean; - typedef unsigned int GLbitfield; --- -1.7.4.1 - diff --git a/recipes/libgles/libgles-omap3/rc.pvr b/recipes/libgles/libgles-omap3/rc.pvr new file mode 100755 index 0000000..d6f6c82 --- /dev/null +++ b/recipes/libgles/libgles-omap3/rc.pvr @@ -0,0 +1,117 @@ +#!/bin/sh +PATH=$PATH:/usr/sbin + +# Check if an fb device is available. If not then just go ahead and +# exit because we have no display. +fbset > /dev/null 2>&1 +if [ "$?" == "1" ] +then + # looks like there is no display, so let's exit + exit 0 +fi + +BITSPERPIXEL="$(fbset | grep geom | awk '{print $6}')" +YRES="$(fbset | grep geom | awk '{print $3}')" + +CPUTYPE="$(cputype)" + +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 2>/dev/null + rmmod pvrsrvkm 2>/dev/null +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) + +sgxprepare () { + echo Starting PVR + + 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 + + touch /etc/powervr-esrev + + SAVED_ESREVISION="$(cat /etc/powervr-esrev)" +} + +sgxfinish () { + # Fix up a bug in opkg + if [ $(readlink /usr/lib/libsrv_um.so) != $(readlink /usr/lib/libsrv_um.so.1) ] ; then + cd /usr/lib + ln -sf $(readlink /usr/lib/libsrv_um.so.1) libsrv_um.so + fi + + if [ "${ES_REVISION}" != "${SAVED_ESREVISION}" ] ; then + echo -n "Starting SGX fixup for" + echo " ES${ES_REVISION}.x" + cp -a /usr/lib/ES${ES_REVISION}.0/* /usr/lib + cp -a /usr/bin/ES${ES_REVISION}.0/* /usr/bin + echo "${ES_REVISION}" > /etc/powervr-esrev + fi + + /usr/bin/pvrsrvctl --start --no-module +} + +case $CPUTYPE in +"OMAP3530") + sgxprepare + + devmem2 0x48004B48 w 0x2 > /dev/null + devmem2 0x48004B10 w 0x1 > /dev/null + devmem2 0x48004B00 w 0x2 > /dev/null + + ES_REVISION="$(devmem2 0x50000014 | sed -e s:0x00010205:5: -e s:0x00010201:3: -e s:0x00010003:2: | tail -n1 | awk -F': ' '{print $2}')" + + sgxfinish + ;; +"TI33XX") + sgxprepare + + devmem2 0x44e01104 w 0x0 > /dev/null + devmem2 0x44e00904 w 0x2 > /dev/null + + ES_REVISION="$(devmem2 0x56000014 | sed -e s:0x00010205:8: | tail -n1 | awk -F': ' '{print $2}')" + + sgxfinish + ;; +"TI816x") + sgxprepare + + devmem2 0x48180F04 w 0x0 > /dev/null + devmem2 0x48180900 w 0x2 > /dev/null + devmem2 0x48180920 w 0x2 > /dev/null + + ES_REVISION="$(devmem2 0x56000014 | sed -e s:0x00010205:6: -e s:0x00010201:3: -e s:0x00010003:2: | tail -n1 | awk -F': ' '{print $2}')" + + sgxfinish + ;; +*) + echo No SGX hardware, not starting PVR + ;; +esac diff --git a/recipes/libgles/libgles-omap3_4.10.00.01.bb b/recipes/libgles/libgles-omap3_4.10.00.01.bb new file mode 100644 index 0000000..6a8c1ba --- /dev/null +++ b/recipes/libgles/libgles-omap3_4.10.00.01.bb @@ -0,0 +1,48 @@ +require recipes-graphics/libgles/libgles-omap3-no-x.inc + +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:${COREBASE}/meta-ti/recipes-graphics/libgles/${PN}" + +LICENSE = "TI-TSPA" + +PR = "${INC_PR}.3" + +BINLOCATION_omap3 = "${S}/gfx_rel_es3.x" +BINLOCATION_ti816x = "${S}/gfx_rel_es6.x" +BINLOCATION_ti814x = "${S}/gfx_rel_es6.x" +BINLOCATION_ti33x = "${S}/gfx_rel_es8.x" + +PLATFORM = "LinuxARMV7" +PVR_INIT = "pvrsrvctl" + +# download required binary distribution from: +# http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/gfxsdk/latest/index_FDS.html +# see libgles-omap3.inc for detailed installation instructions + +SGXPV = "4_10_00_01" +IMGPV = "1.9.2188537" + +TI_BIN_UNPK_WDEXT := "/Graphics_SDK_${SGXPV}" + +# Select the corresponding hardfp/softfp filename and checksums based on tune flags +BINFILE_SOFTFP = "Graphics_SDK_setuplinux_${SGXPV}_minimal_demos.bin" +MD5SUM_SOFTFP = "bd35e9d8843aff3a2aca9d41e7db1c7d" +SHA256SUM_SOFTFP = "eb37f75ddde4640b09e760fa86e689beb394330ecdf68786188c34f249247647" + +BINFILE_HARDFP = "Graphics_SDK_setuplinux_${SGXPV}_hardfp_minimal_demos.bin" +MD5SUM_HARDFP = "15a3ccb66e98580e474fc112565f66b6" +SHA256SUM_HARDFP = "4d94d5a1869b228ce12027783fc5425c92e9b66685c501247889f1f167e66c9d" + +BINFILE = "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${BINFILE_HARDFP}', '${BINFILE_SOFTFP}', d)}" + +SRC_URI = "http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/gfxsdk/${SGXPV}/exports/${BINFILE} \ + file://cputype \ + file://rc.pvr \ + file://99-bufferclass.rules \ +" + +SRC_URI[md5sum] := "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${MD5SUM_HARDFP}', '${MD5SUM_SOFTFP}', d)}" +SRC_URI[sha256sum] := "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${SHA256SUM_HARDFP}', '${SHA256SUM_SOFTFP}', d)}" + +S = "${WORKDIR}/Graphics_SDK_${SGXPV}" + +LIBGLESWINDOWSYSTEM = "libpvrPVR2D_FRONTWSEGL.so.1" diff --git a/recipes/linux/linux-mainline/0001-AM335x-Adding-SGX-DT-node.patch b/recipes/linux/linux-mainline/0001-AM335x-Adding-SGX-DT-node.patch new file mode 100755 index 0000000..97ce000 --- /dev/null +++ b/recipes/linux/linux-mainline/0001-AM335x-Adding-SGX-DT-node.patch @@ -0,0 +1,34 @@ +From 1400fbf3e8e02eb1efd210a892a0d602061c7ca8 Mon Sep 17 00:00:00 2001 +From: Prathap M S +Date: Mon, 2 Sep 2013 11:42:13 +0530 +Subject: [PATCH 1/3] AM335x : Adding SGX DT node + +This adds the SGX DT node for AM335x. + +Signed-off-by: Prathap M S +--- + arch/arm/boot/dts/am33xx.dtsi | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi +index 17e0da8..74c6e41 100644 +--- a/arch/arm/boot/dts/am33xx.dtsi ++++ b/arch/arm/boot/dts/am33xx.dtsi +@@ -96,6 +96,14 @@ + reg = <0x48200000 0x1000>; + }; + ++ sgx@0x56000000 { ++ compatible = "ti,sgx"; ++ ti,hwmods = "gfx"; ++ clock-frequency = <200000000>; ++ reg = <0x56000000 0x1000000>; ++ interrupts = <37>; ++ }; ++ + edma: edma@49000000 { + compatible = "ti,edma3"; + ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2"; +-- +1.7.1 + diff --git a/recipes/linux/linux-mainline/0002-AM33XX-Invoke-hwmod-deassert-for-SGX-graphics-device.patch b/recipes/linux/linux-mainline/0002-AM33XX-Invoke-hwmod-deassert-for-SGX-graphics-device.patch new file mode 100755 index 0000000..05672d3 --- /dev/null +++ b/recipes/linux/linux-mainline/0002-AM33XX-Invoke-hwmod-deassert-for-SGX-graphics-device.patch @@ -0,0 +1,121 @@ +From 4179cd27a2caa23688646e043e2872e89c9a7bc7 Mon Sep 17 00:00:00 2001 +From: Prathap M S +Date: Mon, 2 Sep 2013 11:52:03 +0530 +Subject: [PATCH 2/3] AM33XX : Invoke hwmod deassert for SGX(graphics device) + +By default reset is asserted for SGX. +Adding gpu.c file introducing omap_sgx_init_of() for deasserting SGX reset. +This calls omap_device_deassert_hardreset() for deasserting the reset for SGX. + +Signed-off-by: Prathap M S +--- + arch/arm/mach-omap2/Makefile | 2 +- + arch/arm/mach-omap2/board-generic.c | 4 +++ + arch/arm/mach-omap2/common.h | 1 + + arch/arm/mach-omap2/gpu.c | 48 +++++++++++++++++++++++++++++++++++ + 4 files changed, 54 insertions(+), 1 deletions(-) + create mode 100644 arch/arm/mach-omap2/gpu.c + +diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile +index d4f6715..b65cc56 100644 +--- a/arch/arm/mach-omap2/Makefile ++++ b/arch/arm/mach-omap2/Makefile +@@ -8,7 +8,7 @@ ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ + # Common support + obj-y := id.o io.o control.o mux.o devices.o fb.o serial.o gpmc.o timer.o pm.o \ + common.o gpio.o dma.o wd_timer.o display.o i2c.o hdq1w.o omap_hwmod.o \ +- omap_device.o sram.o ++ omap_device.o sram.o gpu.o + + omap-2-3-common = irq.o + hwmod-common = omap_hwmod.o omap_hwmod_reset.o \ +diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c +index be5d005..e2b3981 100644 +--- a/arch/arm/mach-omap2/board-generic.c ++++ b/arch/arm/mach-omap2/board-generic.c +@@ -22,6 +22,7 @@ + #include "common.h" + #include "common-board-devices.h" + #include "dss-common.h" ++#include "soc.h" + + #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)) + #define intc_of_init NULL +@@ -50,6 +50,8 @@ static void __init omap_generic_init(void) + omap4_panda_display_init_of(); + else if (of_machine_is_compatible("ti,omap4-sdp")) + omap_4430sdp_display_init_of(); ++ if (omap3_has_sgx()) ++ omap_sgx_init_of(); + } + + #ifdef CONFIG_SOC_OMAP2420 +diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h +index dfcc182..7d2f04e 100644 +--- a/arch/arm/mach-omap2/common.h ++++ b/arch/arm/mach-omap2/common.h +@@ -296,6 +296,7 @@ extern void omap_reserve(void); + + struct omap_hwmod; + extern int omap_dss_reset(struct omap_hwmod *); ++void __init omap_sgx_init_of(void); + + /* SoC specific clock initializer */ + extern int (*omap_clk_init)(void); +diff --git a/arch/arm/mach-omap2/gpu.c b/arch/arm/mach-omap2/gpu.c +new file mode 100644 +index 0000000..98a66cf +--- /dev/null ++++ b/arch/arm/mach-omap2/gpu.c +@@ -0,0 +1,48 @@ ++/* ++ * Deassert reset for AM33xx graphics device(SGX) hwmod ++ * ++ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ ++ * Prathap MS ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++#include ++#include "omap_device.h" ++ ++void __init omap_sgx_init_of(void) ++{ ++ struct device_node *node; ++ struct platform_device *pdev; ++ int ret = 0; ++ node = of_find_compatible_node(NULL, NULL, "ti,sgx"); ++ if (!node) ++ return; ++ pdev = of_find_device_by_node(node); ++ if (!pdev) { ++ pr_warn("of_find_device_by_node() failed for sgx\n"); ++ return; ++ } ++ ret = omap_device_deassert_hardreset(pdev, "gfx"); ++ if (ret != 0) ++ pr_warn("omap_device_deassert_hardreset() failed for sgx(gfx hwmod)\n"); ++ ++ node = of_find_compatible_node(NULL, NULL, "ti,am335x-timer"); ++ if (!node) ++ return; ++ pdev = of_find_device_by_node(node); ++ if (!pdev) { ++ pr_warn("of_find_device_by_node() failed for sgx\n"); ++ return; ++ } ++ ret = omap_device_deassert_hardreset(pdev, "timer7"); ++ if (ret != 0) ++ pr_warn("omap_device_deassert_hardreset() failed for sgx(gfx hwmod)\n"); ++} ++ +-- +1.7.1 + diff --git a/recipes/linux/linux-mainline/0003-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch b/recipes/linux/linux-mainline/0003-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch new file mode 100755 index 0000000..c425982 --- /dev/null +++ b/recipes/linux/linux-mainline/0003-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch @@ -0,0 +1,97 @@ +From 0f4e7d4b7d7314b38a9fd3497d7d4e0c36d19bff Mon Sep 17 00:00:00 2001 +From: Prathap M S +Date: Mon, 2 Sep 2013 12:05:23 +0530 +Subject: [PATCH 3/3] video: da8xx-fb: Add API to register wait for vsync callback + +This patch adds APIs to register and unregister wait for vsync callback. +This is derived from commit id 2d44302545da24fd22912d964102bc31a7489e97 +This commit id was part of 3.2 kernel sources. + +Signed-off-by: Prathap M S +--- + drivers/video/da8xx-fb.c | 33 +++++++++++++++++++++++++++++++++ + include/video/da8xx-fb.h | 4 ++++ + 2 files changed, 37 insertions(+), 0 deletions(-) + +diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c +index 131cf4c..ef06b85 100644 +--- a/drivers/video/da8xx-fb.c ++++ b/drivers/video/da8xx-fb.c +@@ -199,6 +199,9 @@ static struct fb_fix_screeninfo da8xx_fb_fix = { + .accel = FB_ACCEL_NONE + }; + ++static vsync_callback_t vsync_cb_handler; ++static void *vsync_cb_arg; ++ + static struct fb_videomode known_lcd_panels[] = { + /* Sharp LCD035Q3DG01 */ + [0] = { +@@ -806,6 +809,32 @@ static int lcd_init(struct da8xx_fb_par *par, const struct lcd_ctrl_config *cfg, + return 0; + } + ++int register_vsync_cb(vsync_callback_t handler, void *arg, int idx) ++{ ++ if ((vsync_cb_handler == NULL) && (vsync_cb_arg == NULL)) { ++ vsync_cb_arg = arg; ++ vsync_cb_handler = handler; ++ } else { ++ return -EEXIST; ++ } ++ ++ return 0; ++} ++EXPORT_SYMBOL(register_vsync_cb); ++ ++int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx) ++{ ++ if ((vsync_cb_handler == handler) && (vsync_cb_arg == arg)) { ++ vsync_cb_handler = NULL; ++ vsync_cb_arg = NULL; ++ } else { ++ return -ENXIO; ++ } ++ ++ return 0; ++} ++EXPORT_SYMBOL(unregister_vsync_cb); ++ + /* IRQ handler for version 2 of LCDC */ + static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg) + { +@@ -843,6 +872,8 @@ static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg) + LCD_DMA_FRM_BUF_CEILING_ADDR_0_REG); + par->vsync_flag = 1; + wake_up_interruptible(&par->vsync_wait); ++ if (vsync_cb_handler) ++ vsync_cb_handler(vsync_cb_arg); + } + + if (stat & LCD_END_OF_FRAME1) { +@@ -918,6 +949,8 @@ static irqreturn_t lcdc_irq_handler_rev01(int irq, void *arg) + LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG); + par->vsync_flag = 1; + wake_up_interruptible(&par->vsync_wait); ++ if (vsync_cb_handler) ++ vsync_cb_handler(vsync_cb_arg); + } + } + +diff --git a/include/video/da8xx-fb.h b/include/video/da8xx-fb.h +index efed3c3..a6cc484 100644 +--- a/include/video/da8xx-fb.h ++++ b/include/video/da8xx-fb.h +@@ -91,5 +91,9 @@ struct lcd_sync_arg { + /* Proprietary FB_SYNC_ flags */ + #define FB_SYNC_CLK_INVERT 0x40000000 + ++typedef void (*vsync_callback_t)(void *arg); ++int register_vsync_cb(vsync_callback_t handler, void *arg, int idx); ++int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx); ++ + #endif /* ifndef DA8XX_FB_H */ + +-- +1.7.1 + diff --git a/recipes/linux/linux-mainline/customer/0001-AM335x-Adding-SGX-DT-node.patch b/recipes/linux/linux-mainline/customer/0001-AM335x-Adding-SGX-DT-node.patch new file mode 100644 index 0000000..97ce000 --- /dev/null +++ b/recipes/linux/linux-mainline/customer/0001-AM335x-Adding-SGX-DT-node.patch @@ -0,0 +1,34 @@ +From 1400fbf3e8e02eb1efd210a892a0d602061c7ca8 Mon Sep 17 00:00:00 2001 +From: Prathap M S +Date: Mon, 2 Sep 2013 11:42:13 +0530 +Subject: [PATCH 1/3] AM335x : Adding SGX DT node + +This adds the SGX DT node for AM335x. + +Signed-off-by: Prathap M S +--- + arch/arm/boot/dts/am33xx.dtsi | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi +index 17e0da8..74c6e41 100644 +--- a/arch/arm/boot/dts/am33xx.dtsi ++++ b/arch/arm/boot/dts/am33xx.dtsi +@@ -96,6 +96,14 @@ + reg = <0x48200000 0x1000>; + }; + ++ sgx@0x56000000 { ++ compatible = "ti,sgx"; ++ ti,hwmods = "gfx"; ++ clock-frequency = <200000000>; ++ reg = <0x56000000 0x1000000>; ++ interrupts = <37>; ++ }; ++ + edma: edma@49000000 { + compatible = "ti,edma3"; + ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2"; +-- +1.7.1 + diff --git a/recipes/linux/linux-mainline/customer/0002-Changes-accordingtoTIforSGXsupport.patch b/recipes/linux/linux-mainline/customer/0002-Changes-accordingtoTIforSGXsupport.patch new file mode 100644 index 0000000..3287851 --- /dev/null +++ b/recipes/linux/linux-mainline/customer/0002-Changes-accordingtoTIforSGXsupport.patch @@ -0,0 +1,196 @@ +From 9de290880400c31b727ebc0014da7ccd67867359 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= +Date: Fri, 1 Nov 2013 15:35:26 +0100 +Subject: [PATCH] Changes according to TI for SGX support + +--- + arch/arm/mach-omap2/Makefile | 2 +- + arch/arm/mach-omap2/board-generic.c | 3 +++ + arch/arm/mach-omap2/common.h | 1 + + arch/arm/mach-omap2/gpu.c | 47 +++++++++++++++++++++++++++++++++++++ + drivers/video/da8xx-fb.c | 33 ++++++++++++++++++++++++++ + include/video/da8xx-fb.h | 4 ++++ + 6 files changed, 89 insertions(+), 1 deletion(-) + create mode 100644 arch/arm/mach-omap2/gpu.c + +diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile +index afecbbc..6c253bd 100644 +--- a/arch/arm/mach-omap2/Makefile ++++ b/arch/arm/mach-omap2/Makefile +@@ -5,7 +5,7 @@ + # Common support + obj-y := id.o io.o control.o mux.o devices.o fb.o serial.o gpmc.o timer.o pm.o \ + common.o gpio.o dma.o wd_timer.o display.o i2c.o hdq1w.o omap_hwmod.o \ +- omap_device.o sram.o ++ omap_device.o sram.o gpu.o + + omap-2-3-common = irq.o + hwmod-common = omap_hwmod.o \ +diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c +index fac00f0..24bdc10 100644 +--- a/arch/arm/mach-omap2/board-generic.c ++++ b/arch/arm/mach-omap2/board-generic.c +@@ -22,6 +22,7 @@ + #include "common.h" + #include "common-board-devices.h" + #include "dss-common.h" ++#include "soc.h" + + #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)) + #define intc_of_init NULL +@@ -50,6 +51,8 @@ static void __init omap_generic_init(void) + omap4_panda_display_init_of(); + else if (of_machine_is_compatible("ti,omap4-sdp")) + omap_4430sdp_display_init_of(); ++ if (omap3_has_sgx()) ++ omap_sgx_init_of(); + } + + #ifdef CONFIG_SOC_OMAP2420 +diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h +index f077fbd..dca5aca 100644 +--- a/arch/arm/mach-omap2/common.h ++++ b/arch/arm/mach-omap2/common.h +@@ -293,6 +293,7 @@ extern void omap_reserve(void); + + struct omap_hwmod; + extern int omap_dss_reset(struct omap_hwmod *); ++void __init omap_sgx_init_of(void); + + /* SoC specific clock initializer */ + extern int (*omap_clk_init)(void); +diff --git a/arch/arm/mach-omap2/gpu.c b/arch/arm/mach-omap2/gpu.c +new file mode 100644 +index 0000000..eebb1bd +--- /dev/null ++++ b/arch/arm/mach-omap2/gpu.c +@@ -0,0 +1,47 @@ ++/* ++ * Deassert reset for AM33xx graphics device(SGX) hwmod ++ * ++ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ ++ * Prathap MS ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++#include ++#include "omap_device.h" ++ ++void __init omap_sgx_init_of(void) ++{ ++ struct device_node *node; ++ struct platform_device *pdev; ++ int ret = 0; ++ node = of_find_compatible_node(NULL, NULL, "ti,sgx"); ++ if (!node) ++ return; ++ pdev = of_find_device_by_node(node); ++ if (!pdev) { ++ pr_warn("of_find_device_by_node() failed for sgx\n"); ++ return; ++ } ++ ret = omap_device_deassert_hardreset(pdev, "gfx"); ++ if (ret != 0) ++ pr_warn("omap_device_deassert_hardreset() failed for sgx(gfx hwmod)\n"); ++ ++ node = of_find_compatible_node(NULL, NULL, "ti,am335x-timer"); ++ if (!node) ++ return; ++ pdev = of_find_device_by_node(node); ++ if (!pdev) { ++ pr_warn("of_find_device_by_node() failed for sgx\n"); ++ return; ++ } ++ ret = omap_device_deassert_hardreset(pdev, "timer7"); ++ if (ret != 0) ++ pr_warn("omap_device_deassert_hardreset() failed for sgx(gfx hwmod)\n"); ++} +diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c +index 6723683..6b9720c 100644 +--- a/drivers/video/da8xx-fb.c ++++ b/drivers/video/da8xx-fb.c +@@ -204,6 +204,9 @@ static struct fb_fix_screeninfo da8xx_fb_fix = { + .accel = FB_ACCEL_NONE + }; + ++static vsync_callback_t vsync_cb_handler; ++static void *vsync_cb_arg; ++ + static struct fb_videomode known_lcd_panels[] = { + /* Sharp LCD035Q3DG01 */ + [0] = { +@@ -814,6 +817,32 @@ static int lcd_init(struct da8xx_fb_par *par, const struct lcd_ctrl_config *cfg, + return 0; + } + ++int register_vsync_cb(vsync_callback_t handler, void *arg, int idx) ++{ ++ if ((vsync_cb_handler == NULL) && (vsync_cb_arg == NULL)) { ++ vsync_cb_arg = arg; ++ vsync_cb_handler = handler; ++ } else { ++ return -EEXIST; ++ } ++ ++ return 0; ++} ++EXPORT_SYMBOL(register_vsync_cb); ++ ++int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx) ++{ ++ if ((vsync_cb_handler == handler) && (vsync_cb_arg == arg)) { ++ vsync_cb_handler = NULL; ++ vsync_cb_arg = NULL; ++ } else { ++ return -ENXIO; ++ } ++ ++ return 0; ++} ++EXPORT_SYMBOL(unregister_vsync_cb); ++ + /* IRQ handler for version 2 of LCDC */ + static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg) + { +@@ -851,6 +880,8 @@ static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg) + LCD_DMA_FRM_BUF_CEILING_ADDR_0_REG); + par->vsync_flag = 1; + wake_up_interruptible(&par->vsync_wait); ++ if (vsync_cb_handler) ++ vsync_cb_handler(vsync_cb_arg); + } + + if (stat & LCD_END_OF_FRAME1) { +@@ -926,6 +957,8 @@ static irqreturn_t lcdc_irq_handler_rev01(int irq, void *arg) + LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG); + par->vsync_flag = 1; + wake_up_interruptible(&par->vsync_wait); ++ if (vsync_cb_handler) ++ vsync_cb_handler(vsync_cb_arg); + } + } + +diff --git a/include/video/da8xx-fb.h b/include/video/da8xx-fb.h +index f888259..6b1abfd 100644 +--- a/include/video/da8xx-fb.h ++++ b/include/video/da8xx-fb.h +@@ -86,5 +86,9 @@ struct lcd_sync_arg { + /* Proprietary FB_SYNC_ flags */ + #define FB_SYNC_CLK_INVERT 0x40000000 + ++typedef void (*vsync_callback_t)(void *arg); ++int register_vsync_cb(vsync_callback_t handler, void *arg, int idx); ++int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx); ++ + #endif /* ifndef DA8XX_FB_H */ + +-- +1.8.4.2 + diff --git a/recipes/linux/linux-mainline_3.8.bbappend b/recipes/linux/linux-mainline_3.8.bbappend new file mode 100644 index 0000000..e5518bc --- /dev/null +++ b/recipes/linux/linux-mainline_3.8.bbappend @@ -0,0 +1,8 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +SRC_URI += "\ + file://0001-AM335x-Adding-SGX-DT-node.patch \ + file://0002-AM33XX-Invoke-hwmod-deassert-for-SGX-graphics-device.patch \ + file://0003-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch \ + " + +INSANE_SKIP_${PN} = "installed-vs-shipped" diff --git a/recipes/powervr-drivers/omap3-sgx-modules/0001-Graphics-SDK-04.10.00.01-AM335x-sgx-irq-change.patch b/recipes/powervr-drivers/omap3-sgx-modules/0001-Graphics-SDK-04.10.00.01-AM335x-sgx-irq-change.patch new file mode 100644 index 0000000..ce50479 --- /dev/null +++ b/recipes/powervr-drivers/omap3-sgx-modules/0001-Graphics-SDK-04.10.00.01-AM335x-sgx-irq-change.patch @@ -0,0 +1,32 @@ +From e55f63a07e5266095da89b7f94122fcba9bdef04 Mon Sep 17 00:00:00 2001 +From: Prathap M S +Date: Tue, 19 Nov 2013 16:33:24 +0530 +Subject: [PATCH 1/1] Graphics SDK 04.10.00.01 : AM335x sgx irq change + +This patch enables PVR_LINUX_DYNAMIC_SGX_RESOURCE_INFO for AM335x. +This is required with 3.8 kernel onwards which uses DT. +This will enable the path of getting sgx irq number dynamically. + +Signed-off-by: Prathap M S +--- + services4/system/ti335x/syslocal.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/services4/system/ti335x/syslocal.h b/services4/system/ti335x/syslocal.h +index 090b38d..222d52d 100644 +--- a/services4/system/ti335x/syslocal.h ++++ b/services4/system/ti335x/syslocal.h +@@ -69,8 +69,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + #if !defined(LDM_PLATFORM) + #error "LDM_PLATFORM must be set" + #endif +-//#define PVR_LINUX_DYNAMIC_SGX_RESOURCE_INFO +-//#include ++#define PVR_LINUX_DYNAMIC_SGX_RESOURCE_INFO ++#include + #endif + + #if ((defined(DEBUG) || defined(TIMING)) && \ +-- +1.7.9.5 + diff --git a/recipes/powervr-drivers/omap3-sgx-modules/Change-for-interfacing-with-SGX-DT-node.patch b/recipes/powervr-drivers/omap3-sgx-modules/Change-for-interfacing-with-SGX-DT-node.patch new file mode 100644 index 0000000..c553354 --- /dev/null +++ b/recipes/powervr-drivers/omap3-sgx-modules/Change-for-interfacing-with-SGX-DT-node.patch @@ -0,0 +1,51 @@ +diff --git a/services4/srvkm/env/linux/module.c b/services4/srvkm/env/linux/module.c +index 668dc2d..2247aad 100644 +--- a/services4/srvkm/env/linux/module.c ++++ b/services4/srvkm/env/linux/module.c +@@ -84,6 +84,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + #include + #include + #include ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) ++#include ++#endif + + #if defined(SUPPORT_DRI_DRM) + #include +@@ -296,10 +299,24 @@ static struct platform_device_id powervr_id_table[] __devinitdata = { + }; + #endif + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) ++static const struct of_device_id omap_sgx_of_match[] = { ++ { ++ .compatible = "ti,sgx", ++ }, ++ {}, ++}; ++MODULE_DEVICE_TABLE(of, omap_sgx_of_match); ++#endif ++ ++ + static LDM_DRV powervr_driver = { + #if defined(PVR_LDM_PLATFORM_MODULE) + .driver = { + .name = DRVNAME, ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) ++ .of_match_table = of_match_ptr(omap_sgx_of_match), ++#endif + }, + #endif + #if defined(PVR_LDM_PCI_MODULE) +@@ -362,7 +379,7 @@ static int __devinit PVRSRVDriverProbe(LDM_DEV *pDevice, const struct pci_device + #endif + { + SYS_DATA *psSysData; +- ++ + PVR_TRACE(("PVRSRVDriverProbe(pDevice=%p)", pDevice)); + + #if 0 /* INTEGRATION_POINT */ +-- +1.7.9.5 + diff --git a/recipes/powervr-drivers/omap3-sgx-modules/linux-3.8.patch b/recipes/powervr-drivers/omap3-sgx-modules/linux-3.8.patch new file mode 100644 index 0000000..acef54b --- /dev/null +++ b/recipes/powervr-drivers/omap3-sgx-modules/linux-3.8.patch @@ -0,0 +1,63 @@ +diff --git a/services4/3rdparty/linux_drm/Kbuild b/services4/3rdparty/linux_drm/Kbuild +index d01ef39..ccca3cd 100755 +--- a/services4/3rdparty/linux_drm/Kbuild ++++ b/services4/3rdparty/linux_drm/Kbuild +@@ -26,38 +26,38 @@ endif + endif + + obj-m := drm.o +-ifeq ($(TI_PLATFORM),omap4) +-drm-y := pvr_drm_stubs.o drm_auth.o drm_bufs.o drm_cache.o drm_context.o drm_dma.o drm_drawable.o drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \ +- drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \ +- drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \ +- drm_sysfs.o drm_hashtab.o drm_sman.o drm_mm.o \ +- drm_crtc.o drm_modes.o drm_edid.o \ +- drm_info.o drm_debugfs.o drm_encoder_slave.o +-else ++#ifeq ($(TI_PLATFORM),omap4) ++#drm-y := pvr_drm_stubs.o drm_auth.o drm_bufs.o drm_cache.o drm_context.o drm_dma.o drm_drawable.o drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \ ++# drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \ ++# drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \ ++# drm_sysfs.o drm_hashtab.o drm_sman.o drm_mm.o \ ++# drm_crtc.o drm_modes.o drm_edid.o \ ++# drm_info.o drm_debugfs.o drm_encoder_slave.o ++#else + # Works for 2.6.37 till 3.2 kernel +-drm-y := pvr_drm_stubs.o drm_auth.o drm_bufs.o drm_cache.o drm_context.o drm_dma.o drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \ +- drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \ +- drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \ +- drm_sysfs.o drm_hashtab.o drm_sman.o drm_mm.o \ +- drm_crtc.o drm_modes.o drm_edid.o \ +- drm_info.o drm_debugfs.o drm_encoder_slave.o drm_global.o drm_platform.o drm_trace_points.o +-endif +- +-# For 3.3 kernel only + #drm-y := pvr_drm_stubs.o drm_auth.o drm_bufs.o drm_cache.o drm_context.o drm_dma.o drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \ + # drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \ + # drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \ +-# drm_sysfs.o drm_hashtab.o drm_mm.o \ ++# drm_sysfs.o drm_hashtab.o drm_sman.o drm_mm.o \ + # drm_crtc.o drm_modes.o drm_edid.o \ + # drm_info.o drm_debugfs.o drm_encoder_slave.o drm_global.o drm_platform.o drm_trace_points.o ++#endif + +-# For greater than/equal to 3.4 till 3.8 kernel ++# For 3.3 kernel only + #drm-y := pvr_drm_stubs.o drm_auth.o drm_bufs.o drm_cache.o drm_context.o drm_dma.o drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \ + # drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \ + # drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \ + # drm_sysfs.o drm_hashtab.o drm_mm.o \ + # drm_crtc.o drm_modes.o drm_edid.o \ +-# drm_info.o drm_debugfs.o drm_encoder_slave.o drm_global.o drm_platform.o drm_trace_points.o drm_prime.o ++# drm_info.o drm_debugfs.o drm_encoder_slave.o drm_global.o drm_platform.o drm_trace_points.o ++ ++# For greater than/equal to 3.4 till 3.8 kernel ++drm-y := pvr_drm_stubs.o drm_auth.o drm_bufs.o drm_cache.o drm_context.o drm_dma.o drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \ ++ drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \ ++ drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \ ++ drm_sysfs.o drm_hashtab.o drm_mm.o \ ++ drm_crtc.o drm_modes.o drm_edid.o \ ++ drm_info.o drm_debugfs.o drm_encoder_slave.o drm_global.o drm_platform.o drm_trace_points.o drm_prime.o + + # less than 2.6.32 kernel + diff --git a/recipes/powervr-drivers/omap3-sgx-modules_4.10.00.01.bb b/recipes/powervr-drivers/omap3-sgx-modules_4.10.00.01.bb new file mode 100644 index 0000000..b83e1ee --- /dev/null +++ b/recipes/powervr-drivers/omap3-sgx-modules_4.10.00.01.bb @@ -0,0 +1,66 @@ +DESCRIPTION = "Kernel drivers for the PowerVR SGX chipset found in the omap3 SoCs" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=ea5743acf520dd81ca172e69f818a3d4" + +TI_BIN_UNPK_CMDS="Y: qY:workdir:Y" +require recipes-ti/includes/ti-eula-unpack.inc + +SGXPV = "4_10_00_01" +IMGPV = "1.9.2188537" + +inherit module + +MACHINE_KERNEL_PR_append = "c" +PR = "${MACHINE_KERNEL_PR}" + +DEFAULT_PREFERENCE = "-1" + +# Select the corresponding hardfp/softfp filename and checksums based on tune flags +BINFILE_SOFTFP = "Graphics_SDK_setuplinux_${SGXPV}_minimal_demos.bin" +MD5SUM_SOFTFP = "bd35e9d8843aff3a2aca9d41e7db1c7d" +SHA256SUM_SOFTFP = "eb37f75ddde4640b09e760fa86e689beb394330ecdf68786188c34f249247647" + +BINFILE_HARDFP = "Graphics_SDK_setuplinux_${SGXPV}_hardfp_minimal_demos.bin" +MD5SUM_HARDFP = "15a3ccb66e98580e474fc112565f66b6" +SHA256SUM_HARDFP = "4d94d5a1869b228ce12027783fc5425c92e9b66685c501247889f1f167e66c9d" + +BINFILE = "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${BINFILE_HARDFP}', '${BINFILE_SOFTFP}', d)}" + +SRC_URI = "http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/gfxsdk/${SGXPV}/exports/${BINFILE} \ + file://Change-for-interfacing-with-SGX-DT-node.patch \ + file://linux-3.8.patch \ + file://0001-Graphics-SDK-04.10.00.01-AM335x-sgx-irq-change.patch \ + " + +SRC_URI[md5sum] := "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${MD5SUM_HARDFP}', '${MD5SUM_SOFTFP}', d)}" +SRC_URI[sha256sum] := "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${SHA256SUM_HARDFP}', '${SHA256SUM_SOFTFP}', d)}" + +TI_BIN_UNPK_WDEXT="/Graphics_SDK_${SGXPV}" +S = "${WORKDIR}${TI_BIN_UNPK_WDEXT}/GFX_Linux_KM" + +PVRBUILD = "release" +export KERNELDIR = "${STAGING_KERNEL_DIR}" + +INHIBIT_PACKAGE_STRIP = "1" + +TI_PLATFORM_omap3 = "omap3630" +TI_PLATFORM_ti814x = "ti81xx" +TI_PLATFORM_ti816x = "ti81xx" +TI_PLATFORM_ti33x = "ti335x" + +MODULESLOCATION_omap3 = "dc_omapfb3_linux" +MODULESLOCATION_ti814x = "dc_ti81xx_linux" +MODULESLOCATION_ti816x = "dc_ti81xx_linux" +MODULESLOCATION_ti33x = "dc_ti335x_linux" + +MAKE_TARGETS = " BUILD=${PVRBUILD} TI_PLATFORM=${TI_PLATFORM} SUPPORT_XORG=0" + +MAKE_TARGETS_append_ti33x = " PM_RUNTIME=1" + +do_install() { + mkdir -p ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/gpu/pvr + cp ${S}/pvrsrvkm.ko \ + ${S}/services4/3rdparty/${MODULESLOCATION}/omaplfb.ko \ + ${S}/services4/3rdparty/bufferclass_ti/bufferclass_ti.ko \ + ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/gpu/pvr +} diff --git a/recipes/u-boot/u-boot-uenv-script/uEnv.txt b/recipes/u-boot/u-boot-uenv-script/uEnv.txt index f8385a4..6b23df1 100644 --- a/recipes/u-boot/u-boot-uenv-script/uEnv.txt +++ b/recipes/u-boot/u-boot-uenv-script/uEnv.txt @@ -1,3 +1 @@ -bootfile=zImage -optargs=consoleblank=0 vt.global_cursor_default=0 -mmcboot=echo Booting from mmc ...; run mmcargs; bootz ${kloadaddr} - ${fdtaddr} +optargs=consoleblank=0 vt.global_cursor_default=0 quiet -- cgit v1.2.3-54-g00ecf