summaryrefslogtreecommitdiffstats
path: root/recipes
diff options
context:
space:
mode:
authorSamuli Piippo <samuli.piippo@digia.com>2014-09-01 09:25:46 +0300
committerSamuli Piippo <samuli.piippo@digia.com>2014-09-23 16:38:41 +0300
commit238bad671c9265b71db2f104d85c84bd74303605 (patch)
tree5e09edc1fed4aa8dbd3280125b208c6f8de72f26 /recipes
parent4c99bd2137f422a8b89ee6eeb0c516e60d15f137 (diff)
downloadmeta-boot2qt-238bad671c9265b71db2f104d85c84bd74303605.tar.gz
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 <eirik.aavitsland@digia.com> Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'recipes')
-rw-r--r--recipes/libgles/libgles-omap3/0001-Add-GLchar-typedef.patch24
-rwxr-xr-xrecipes/libgles/libgles-omap3/rc.pvr117
-rw-r--r--recipes/libgles/libgles-omap3_4.10.00.01.bb48
-rwxr-xr-xrecipes/linux/linux-mainline/0001-AM335x-Adding-SGX-DT-node.patch34
-rwxr-xr-xrecipes/linux/linux-mainline/0002-AM33XX-Invoke-hwmod-deassert-for-SGX-graphics-device.patch121
-rwxr-xr-xrecipes/linux/linux-mainline/0003-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch97
-rw-r--r--recipes/linux/linux-mainline/customer/0001-AM335x-Adding-SGX-DT-node.patch34
-rw-r--r--recipes/linux/linux-mainline/customer/0002-Changes-accordingtoTIforSGXsupport.patch196
-rw-r--r--recipes/linux/linux-mainline_3.8.bbappend8
-rw-r--r--recipes/powervr-drivers/omap3-sgx-modules/0001-Graphics-SDK-04.10.00.01-AM335x-sgx-irq-change.patch32
-rw-r--r--recipes/powervr-drivers/omap3-sgx-modules/Change-for-interfacing-with-SGX-DT-node.patch51
-rw-r--r--recipes/powervr-drivers/omap3-sgx-modules/linux-3.8.patch63
-rw-r--r--recipes/powervr-drivers/omap3-sgx-modules_4.10.00.01.bb66
-rw-r--r--recipes/u-boot/u-boot-uenv-script/uEnv.txt4
14 files changed, 868 insertions, 27 deletions
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 @@
1From a5fdf434b402d4c90390bf5db08ab6bc8bf0a5a3 Mon Sep 17 00:00:00 2001
2From: Samuli Piippo <samuli.piippo@digia.com>
3Date: Thu, 6 Sep 2012 15:18:20 +0300
4Subject: [PATCH] Add GLchar typedef
5
6---
7 .../SDKPackage/Builds/OGLES2/Include/GLES2/gl2.h | 1 +
8 1 files changed, 1 insertions(+), 0 deletions(-)
9
10diff --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
11index d9ae403..225f2f1 100644
12--- a/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/GLES2/gl2.h
13+++ b/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/GLES2/gl2.h
14@@ -17,6 +17,7 @@ extern "C" {
15 *-----------------------------------------------------------------------*/
16
17 typedef void GLvoid;
18+typedef char GLchar;
19 typedef unsigned int GLenum;
20 typedef unsigned char GLboolean;
21 typedef unsigned int GLbitfield;
22--
231.7.4.1
24
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 @@
1#!/bin/sh
2PATH=$PATH:/usr/sbin
3
4# Check if an fb device is available. If not then just go ahead and
5# exit because we have no display.
6fbset > /dev/null 2>&1
7if [ "$?" == "1" ]
8then
9 # looks like there is no display, so let's exit
10 exit 0
11fi
12
13BITSPERPIXEL="$(fbset | grep geom | awk '{print $6}')"
14YRES="$(fbset | grep geom | awk '{print $3}')"
15
16CPUTYPE="$(cputype)"
17
18if [ "$1" = "" ]; then
19 echo PVR-INIT: Please use start, stop, or restart.
20 exit 1
21fi
22
23if [ "$1" = "stop" -o "$1" = "restart" ]; then
24 echo Stopping PVR
25 rmmod bufferclass_ti
26 rmmod omaplfb 2>/dev/null
27 rmmod pvrsrvkm 2>/dev/null
28fi
29
30if [ "$1" = "stop" ]; then
31 exit 0
32fi
33
34# Set RGBA ordering to something the drivers like
35if [ "$BITSPERPIXEL" = "32" ] ; then
36 fbset -rgba 8/16,8/8,8/0,8/24
37fi
38
39# Try to enable triple buffering when there's enough VRAM
40fbset -vyres $(expr $YRES \* 3)
41
42sgxprepare () {
43 echo Starting PVR
44
45 modprobe omaplfb
46 modprobe bufferclass_ti
47
48 pvr_maj=`grep "pvrsrvkm$" /proc/devices | cut -b1,2,3`
49 bc_maj=`grep "bc" /proc/devices | cut -b1,2,3`
50
51 if [ -e /dev/pvrsrvkm ] ; then
52 rm -f /dev/pvrsrvkm
53 fi
54
55 mknod /dev/pvrsrvkm c $pvr_maj 0
56 chmod 666 /dev/pvrsrvkm
57
58 touch /etc/powervr-esrev
59
60 SAVED_ESREVISION="$(cat /etc/powervr-esrev)"
61}
62
63sgxfinish () {
64 # Fix up a bug in opkg
65 if [ $(readlink /usr/lib/libsrv_um.so) != $(readlink /usr/lib/libsrv_um.so.1) ] ; then
66 cd /usr/lib
67 ln -sf $(readlink /usr/lib/libsrv_um.so.1) libsrv_um.so
68 fi
69
70 if [ "${ES_REVISION}" != "${SAVED_ESREVISION}" ] ; then
71 echo -n "Starting SGX fixup for"
72 echo " ES${ES_REVISION}.x"
73 cp -a /usr/lib/ES${ES_REVISION}.0/* /usr/lib
74 cp -a /usr/bin/ES${ES_REVISION}.0/* /usr/bin
75 echo "${ES_REVISION}" > /etc/powervr-esrev
76 fi
77
78 /usr/bin/pvrsrvctl --start --no-module
79}
80
81case $CPUTYPE in
82"OMAP3530")
83 sgxprepare
84
85 devmem2 0x48004B48 w 0x2 > /dev/null
86 devmem2 0x48004B10 w 0x1 > /dev/null
87 devmem2 0x48004B00 w 0x2 > /dev/null
88
89 ES_REVISION="$(devmem2 0x50000014 | sed -e s:0x00010205:5: -e s:0x00010201:3: -e s:0x00010003:2: | tail -n1 | awk -F': ' '{print $2}')"
90
91 sgxfinish
92 ;;
93"TI33XX")
94 sgxprepare
95
96 devmem2 0x44e01104 w 0x0 > /dev/null
97 devmem2 0x44e00904 w 0x2 > /dev/null
98
99 ES_REVISION="$(devmem2 0x56000014 | sed -e s:0x00010205:8: | tail -n1 | awk -F': ' '{print $2}')"
100
101 sgxfinish
102 ;;
103"TI816x")
104 sgxprepare
105
106 devmem2 0x48180F04 w 0x0 > /dev/null
107 devmem2 0x48180900 w 0x2 > /dev/null
108 devmem2 0x48180920 w 0x2 > /dev/null
109
110 ES_REVISION="$(devmem2 0x56000014 | sed -e s:0x00010205:6: -e s:0x00010201:3: -e s:0x00010003:2: | tail -n1 | awk -F': ' '{print $2}')"
111
112 sgxfinish
113 ;;
114*)
115 echo No SGX hardware, not starting PVR
116 ;;
117esac
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 @@
1require recipes-graphics/libgles/libgles-omap3-no-x.inc
2
3FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:${COREBASE}/meta-ti/recipes-graphics/libgles/${PN}"
4
5LICENSE = "TI-TSPA"
6
7PR = "${INC_PR}.3"
8
9BINLOCATION_omap3 = "${S}/gfx_rel_es3.x"
10BINLOCATION_ti816x = "${S}/gfx_rel_es6.x"
11BINLOCATION_ti814x = "${S}/gfx_rel_es6.x"
12BINLOCATION_ti33x = "${S}/gfx_rel_es8.x"
13
14PLATFORM = "LinuxARMV7"
15PVR_INIT = "pvrsrvctl"
16
17# download required binary distribution from:
18# http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/gfxsdk/latest/index_FDS.html
19# see libgles-omap3.inc for detailed installation instructions
20
21SGXPV = "4_10_00_01"
22IMGPV = "1.9.2188537"
23
24TI_BIN_UNPK_WDEXT := "/Graphics_SDK_${SGXPV}"
25
26# Select the corresponding hardfp/softfp filename and checksums based on tune flags
27BINFILE_SOFTFP = "Graphics_SDK_setuplinux_${SGXPV}_minimal_demos.bin"
28MD5SUM_SOFTFP = "bd35e9d8843aff3a2aca9d41e7db1c7d"
29SHA256SUM_SOFTFP = "eb37f75ddde4640b09e760fa86e689beb394330ecdf68786188c34f249247647"
30
31BINFILE_HARDFP = "Graphics_SDK_setuplinux_${SGXPV}_hardfp_minimal_demos.bin"
32MD5SUM_HARDFP = "15a3ccb66e98580e474fc112565f66b6"
33SHA256SUM_HARDFP = "4d94d5a1869b228ce12027783fc5425c92e9b66685c501247889f1f167e66c9d"
34
35BINFILE = "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${BINFILE_HARDFP}', '${BINFILE_SOFTFP}', d)}"
36
37SRC_URI = "http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/gfxsdk/${SGXPV}/exports/${BINFILE} \
38 file://cputype \
39 file://rc.pvr \
40 file://99-bufferclass.rules \
41"
42
43SRC_URI[md5sum] := "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${MD5SUM_HARDFP}', '${MD5SUM_SOFTFP}', d)}"
44SRC_URI[sha256sum] := "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${SHA256SUM_HARDFP}', '${SHA256SUM_SOFTFP}', d)}"
45
46S = "${WORKDIR}/Graphics_SDK_${SGXPV}"
47
48LIBGLESWINDOWSYSTEM = "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 @@
1From 1400fbf3e8e02eb1efd210a892a0d602061c7ca8 Mon Sep 17 00:00:00 2001
2From: Prathap M S <msprathap@ti.com>
3Date: Mon, 2 Sep 2013 11:42:13 +0530
4Subject: [PATCH 1/3] AM335x : Adding SGX DT node
5
6This adds the SGX DT node for AM335x.
7
8Signed-off-by: Prathap M S <msprathap@ti.com>
9---
10 arch/arm/boot/dts/am33xx.dtsi | 8 ++++++++
11 1 files changed, 8 insertions(+), 0 deletions(-)
12
13diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
14index 17e0da8..74c6e41 100644
15--- a/arch/arm/boot/dts/am33xx.dtsi
16+++ b/arch/arm/boot/dts/am33xx.dtsi
17@@ -96,6 +96,14 @@
18 reg = <0x48200000 0x1000>;
19 };
20
21+ sgx@0x56000000 {
22+ compatible = "ti,sgx";
23+ ti,hwmods = "gfx";
24+ clock-frequency = <200000000>;
25+ reg = <0x56000000 0x1000000>;
26+ interrupts = <37>;
27+ };
28+
29 edma: edma@49000000 {
30 compatible = "ti,edma3";
31 ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
32--
331.7.1
34
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 @@
1From 4179cd27a2caa23688646e043e2872e89c9a7bc7 Mon Sep 17 00:00:00 2001
2From: Prathap M S <msprathap@ti.com>
3Date: Mon, 2 Sep 2013 11:52:03 +0530
4Subject: [PATCH 2/3] AM33XX : Invoke hwmod deassert for SGX(graphics device)
5
6By default reset is asserted for SGX.
7Adding gpu.c file introducing omap_sgx_init_of() for deasserting SGX reset.
8This calls omap_device_deassert_hardreset() for deasserting the reset for SGX.
9
10Signed-off-by: Prathap M S <msprathap@ti.com>
11---
12 arch/arm/mach-omap2/Makefile | 2 +-
13 arch/arm/mach-omap2/board-generic.c | 4 +++
14 arch/arm/mach-omap2/common.h | 1 +
15 arch/arm/mach-omap2/gpu.c | 48 +++++++++++++++++++++++++++++++++++
16 4 files changed, 54 insertions(+), 1 deletions(-)
17 create mode 100644 arch/arm/mach-omap2/gpu.c
18
19diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
20index d4f6715..b65cc56 100644
21--- a/arch/arm/mach-omap2/Makefile
22+++ b/arch/arm/mach-omap2/Makefile
23@@ -8,7 +8,7 @@ ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \
24 # Common support
25 obj-y := id.o io.o control.o mux.o devices.o fb.o serial.o gpmc.o timer.o pm.o \
26 common.o gpio.o dma.o wd_timer.o display.o i2c.o hdq1w.o omap_hwmod.o \
27- omap_device.o sram.o
28+ omap_device.o sram.o gpu.o
29
30 omap-2-3-common = irq.o
31 hwmod-common = omap_hwmod.o omap_hwmod_reset.o \
32diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
33index be5d005..e2b3981 100644
34--- a/arch/arm/mach-omap2/board-generic.c
35+++ b/arch/arm/mach-omap2/board-generic.c
36@@ -22,6 +22,7 @@
37 #include "common.h"
38 #include "common-board-devices.h"
39 #include "dss-common.h"
40+#include "soc.h"
41
42 #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
43 #define intc_of_init NULL
44@@ -50,6 +50,8 @@ static void __init omap_generic_init(void)
45 omap4_panda_display_init_of();
46 else if (of_machine_is_compatible("ti,omap4-sdp"))
47 omap_4430sdp_display_init_of();
48+ if (omap3_has_sgx())
49+ omap_sgx_init_of();
50 }
51
52 #ifdef CONFIG_SOC_OMAP2420
53diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
54index dfcc182..7d2f04e 100644
55--- a/arch/arm/mach-omap2/common.h
56+++ b/arch/arm/mach-omap2/common.h
57@@ -296,6 +296,7 @@ extern void omap_reserve(void);
58
59 struct omap_hwmod;
60 extern int omap_dss_reset(struct omap_hwmod *);
61+void __init omap_sgx_init_of(void);
62
63 /* SoC specific clock initializer */
64 extern int (*omap_clk_init)(void);
65diff --git a/arch/arm/mach-omap2/gpu.c b/arch/arm/mach-omap2/gpu.c
66new file mode 100644
67index 0000000..98a66cf
68--- /dev/null
69+++ b/arch/arm/mach-omap2/gpu.c
70@@ -0,0 +1,48 @@
71+/*
72+ * Deassert reset for AM33xx graphics device(SGX) hwmod
73+ *
74+ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
75+ * Prathap MS <msprathap@ti.com>
76+ *
77+ * This program is free software; you can redistribute it and/or
78+ * modify it under the terms of the GNU General Public License as
79+ * published by the Free Software Foundation version 2.
80+ *
81+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
82+ * kind, whether express or implied; without even the implied warranty
83+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
84+ * GNU General Public License for more details.
85+ */
86+#include <linux/of_platform.h>
87+#include "omap_device.h"
88+
89+void __init omap_sgx_init_of(void)
90+{
91+ struct device_node *node;
92+ struct platform_device *pdev;
93+ int ret = 0;
94+ node = of_find_compatible_node(NULL, NULL, "ti,sgx");
95+ if (!node)
96+ return;
97+ pdev = of_find_device_by_node(node);
98+ if (!pdev) {
99+ pr_warn("of_find_device_by_node() failed for sgx\n");
100+ return;
101+ }
102+ ret = omap_device_deassert_hardreset(pdev, "gfx");
103+ if (ret != 0)
104+ pr_warn("omap_device_deassert_hardreset() failed for sgx(gfx hwmod)\n");
105+
106+ node = of_find_compatible_node(NULL, NULL, "ti,am335x-timer");
107+ if (!node)
108+ return;
109+ pdev = of_find_device_by_node(node);
110+ if (!pdev) {
111+ pr_warn("of_find_device_by_node() failed for sgx\n");
112+ return;
113+ }
114+ ret = omap_device_deassert_hardreset(pdev, "timer7");
115+ if (ret != 0)
116+ pr_warn("omap_device_deassert_hardreset() failed for sgx(gfx hwmod)\n");
117+}
118+
119--
1201.7.1
121
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 @@
1From 0f4e7d4b7d7314b38a9fd3497d7d4e0c36d19bff Mon Sep 17 00:00:00 2001
2From: Prathap M S <msprathap@ti.com>
3Date: Mon, 2 Sep 2013 12:05:23 +0530
4Subject: [PATCH 3/3] video: da8xx-fb: Add API to register wait for vsync callback
5
6This patch adds APIs to register and unregister wait for vsync callback.
7This is derived from commit id 2d44302545da24fd22912d964102bc31a7489e97
8This commit id was part of 3.2 kernel sources.
9
10Signed-off-by: Prathap M S <msprathap@ti.com>
11---
12 drivers/video/da8xx-fb.c | 33 +++++++++++++++++++++++++++++++++
13 include/video/da8xx-fb.h | 4 ++++
14 2 files changed, 37 insertions(+), 0 deletions(-)
15
16diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
17index 131cf4c..ef06b85 100644
18--- a/drivers/video/da8xx-fb.c
19+++ b/drivers/video/da8xx-fb.c
20@@ -199,6 +199,9 @@ static struct fb_fix_screeninfo da8xx_fb_fix = {
21 .accel = FB_ACCEL_NONE
22 };
23
24+static vsync_callback_t vsync_cb_handler;
25+static void *vsync_cb_arg;
26+
27 static struct fb_videomode known_lcd_panels[] = {
28 /* Sharp LCD035Q3DG01 */
29 [0] = {
30@@ -806,6 +809,32 @@ static int lcd_init(struct da8xx_fb_par *par, const struct lcd_ctrl_config *cfg,
31 return 0;
32 }
33
34+int register_vsync_cb(vsync_callback_t handler, void *arg, int idx)
35+{
36+ if ((vsync_cb_handler == NULL) && (vsync_cb_arg == NULL)) {
37+ vsync_cb_arg = arg;
38+ vsync_cb_handler = handler;
39+ } else {
40+ return -EEXIST;
41+ }
42+
43+ return 0;
44+}
45+EXPORT_SYMBOL(register_vsync_cb);
46+
47+int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx)
48+{
49+ if ((vsync_cb_handler == handler) && (vsync_cb_arg == arg)) {
50+ vsync_cb_handler = NULL;
51+ vsync_cb_arg = NULL;
52+ } else {
53+ return -ENXIO;
54+ }
55+
56+ return 0;
57+}
58+EXPORT_SYMBOL(unregister_vsync_cb);
59+
60 /* IRQ handler for version 2 of LCDC */
61 static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg)
62 {
63@@ -843,6 +872,8 @@ static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg)
64 LCD_DMA_FRM_BUF_CEILING_ADDR_0_REG);
65 par->vsync_flag = 1;
66 wake_up_interruptible(&par->vsync_wait);
67+ if (vsync_cb_handler)
68+ vsync_cb_handler(vsync_cb_arg);
69 }
70
71 if (stat & LCD_END_OF_FRAME1) {
72@@ -918,6 +949,8 @@ static irqreturn_t lcdc_irq_handler_rev01(int irq, void *arg)
73 LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG);
74 par->vsync_flag = 1;
75 wake_up_interruptible(&par->vsync_wait);
76+ if (vsync_cb_handler)
77+ vsync_cb_handler(vsync_cb_arg);
78 }
79 }
80
81diff --git a/include/video/da8xx-fb.h b/include/video/da8xx-fb.h
82index efed3c3..a6cc484 100644
83--- a/include/video/da8xx-fb.h
84+++ b/include/video/da8xx-fb.h
85@@ -91,5 +91,9 @@ struct lcd_sync_arg {
86 /* Proprietary FB_SYNC_ flags */
87 #define FB_SYNC_CLK_INVERT 0x40000000
88
89+typedef void (*vsync_callback_t)(void *arg);
90+int register_vsync_cb(vsync_callback_t handler, void *arg, int idx);
91+int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx);
92+
93 #endif /* ifndef DA8XX_FB_H */
94
95--
961.7.1
97
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 @@
1From 1400fbf3e8e02eb1efd210a892a0d602061c7ca8 Mon Sep 17 00:00:00 2001
2From: Prathap M S <msprathap@ti.com>
3Date: Mon, 2 Sep 2013 11:42:13 +0530
4Subject: [PATCH 1/3] AM335x : Adding SGX DT node
5
6This adds the SGX DT node for AM335x.
7
8Signed-off-by: Prathap M S <msprathap@ti.com>
9---
10 arch/arm/boot/dts/am33xx.dtsi | 8 ++++++++
11 1 files changed, 8 insertions(+), 0 deletions(-)
12
13diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
14index 17e0da8..74c6e41 100644
15--- a/arch/arm/boot/dts/am33xx.dtsi
16+++ b/arch/arm/boot/dts/am33xx.dtsi
17@@ -96,6 +96,14 @@
18 reg = <0x48200000 0x1000>;
19 };
20
21+ sgx@0x56000000 {
22+ compatible = "ti,sgx";
23+ ti,hwmods = "gfx";
24+ clock-frequency = <200000000>;
25+ reg = <0x56000000 0x1000000>;
26+ interrupts = <37>;
27+ };
28+
29 edma: edma@49000000 {
30 compatible = "ti,edma3";
31 ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
32--
331.7.1
34
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 @@
1From 9de290880400c31b727ebc0014da7ccd67867359 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= <mail.aroessler@gmail.com>
3Date: Fri, 1 Nov 2013 15:35:26 +0100
4Subject: [PATCH] Changes according to TI for SGX support
5
6---
7 arch/arm/mach-omap2/Makefile | 2 +-
8 arch/arm/mach-omap2/board-generic.c | 3 +++
9 arch/arm/mach-omap2/common.h | 1 +
10 arch/arm/mach-omap2/gpu.c | 47 +++++++++++++++++++++++++++++++++++++
11 drivers/video/da8xx-fb.c | 33 ++++++++++++++++++++++++++
12 include/video/da8xx-fb.h | 4 ++++
13 6 files changed, 89 insertions(+), 1 deletion(-)
14 create mode 100644 arch/arm/mach-omap2/gpu.c
15
16diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
17index afecbbc..6c253bd 100644
18--- a/arch/arm/mach-omap2/Makefile
19+++ b/arch/arm/mach-omap2/Makefile
20@@ -5,7 +5,7 @@
21 # Common support
22 obj-y := id.o io.o control.o mux.o devices.o fb.o serial.o gpmc.o timer.o pm.o \
23 common.o gpio.o dma.o wd_timer.o display.o i2c.o hdq1w.o omap_hwmod.o \
24- omap_device.o sram.o
25+ omap_device.o sram.o gpu.o
26
27 omap-2-3-common = irq.o
28 hwmod-common = omap_hwmod.o \
29diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
30index fac00f0..24bdc10 100644
31--- a/arch/arm/mach-omap2/board-generic.c
32+++ b/arch/arm/mach-omap2/board-generic.c
33@@ -22,6 +22,7 @@
34 #include "common.h"
35 #include "common-board-devices.h"
36 #include "dss-common.h"
37+#include "soc.h"
38
39 #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
40 #define intc_of_init NULL
41@@ -50,6 +51,8 @@ static void __init omap_generic_init(void)
42 omap4_panda_display_init_of();
43 else if (of_machine_is_compatible("ti,omap4-sdp"))
44 omap_4430sdp_display_init_of();
45+ if (omap3_has_sgx())
46+ omap_sgx_init_of();
47 }
48
49 #ifdef CONFIG_SOC_OMAP2420
50diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
51index f077fbd..dca5aca 100644
52--- a/arch/arm/mach-omap2/common.h
53+++ b/arch/arm/mach-omap2/common.h
54@@ -293,6 +293,7 @@ extern void omap_reserve(void);
55
56 struct omap_hwmod;
57 extern int omap_dss_reset(struct omap_hwmod *);
58+void __init omap_sgx_init_of(void);
59
60 /* SoC specific clock initializer */
61 extern int (*omap_clk_init)(void);
62diff --git a/arch/arm/mach-omap2/gpu.c b/arch/arm/mach-omap2/gpu.c
63new file mode 100644
64index 0000000..eebb1bd
65--- /dev/null
66+++ b/arch/arm/mach-omap2/gpu.c
67@@ -0,0 +1,47 @@
68+/*
69+ * Deassert reset for AM33xx graphics device(SGX) hwmod
70+ *
71+ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
72+ * Prathap MS <msprathap@ti.com>
73+ *
74+ * This program is free software; you can redistribute it and/or
75+ * modify it under the terms of the GNU General Public License as
76+ * published by the Free Software Foundation version 2.
77+ *
78+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
79+ * kind, whether express or implied; without even the implied warranty
80+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
81+ * GNU General Public License for more details.
82+ */
83+#include <linux/of_platform.h>
84+#include "omap_device.h"
85+
86+void __init omap_sgx_init_of(void)
87+{
88+ struct device_node *node;
89+ struct platform_device *pdev;
90+ int ret = 0;
91+ node = of_find_compatible_node(NULL, NULL, "ti,sgx");
92+ if (!node)
93+ return;
94+ pdev = of_find_device_by_node(node);
95+ if (!pdev) {
96+ pr_warn("of_find_device_by_node() failed for sgx\n");
97+ return;
98+ }
99+ ret = omap_device_deassert_hardreset(pdev, "gfx");
100+ if (ret != 0)
101+ pr_warn("omap_device_deassert_hardreset() failed for sgx(gfx hwmod)\n");
102+
103+ node = of_find_compatible_node(NULL, NULL, "ti,am335x-timer");
104+ if (!node)
105+ return;
106+ pdev = of_find_device_by_node(node);
107+ if (!pdev) {
108+ pr_warn("of_find_device_by_node() failed for sgx\n");
109+ return;
110+ }
111+ ret = omap_device_deassert_hardreset(pdev, "timer7");
112+ if (ret != 0)
113+ pr_warn("omap_device_deassert_hardreset() failed for sgx(gfx hwmod)\n");
114+}
115diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
116index 6723683..6b9720c 100644
117--- a/drivers/video/da8xx-fb.c
118+++ b/drivers/video/da8xx-fb.c
119@@ -204,6 +204,9 @@ static struct fb_fix_screeninfo da8xx_fb_fix = {
120 .accel = FB_ACCEL_NONE
121 };
122
123+static vsync_callback_t vsync_cb_handler;
124+static void *vsync_cb_arg;
125+
126 static struct fb_videomode known_lcd_panels[] = {
127 /* Sharp LCD035Q3DG01 */
128 [0] = {
129@@ -814,6 +817,32 @@ static int lcd_init(struct da8xx_fb_par *par, const struct lcd_ctrl_config *cfg,
130 return 0;
131 }
132
133+int register_vsync_cb(vsync_callback_t handler, void *arg, int idx)
134+{
135+ if ((vsync_cb_handler == NULL) && (vsync_cb_arg == NULL)) {
136+ vsync_cb_arg = arg;
137+ vsync_cb_handler = handler;
138+ } else {
139+ return -EEXIST;
140+ }
141+
142+ return 0;
143+}
144+EXPORT_SYMBOL(register_vsync_cb);
145+
146+int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx)
147+{
148+ if ((vsync_cb_handler == handler) && (vsync_cb_arg == arg)) {
149+ vsync_cb_handler = NULL;
150+ vsync_cb_arg = NULL;
151+ } else {
152+ return -ENXIO;
153+ }
154+
155+ return 0;
156+}
157+EXPORT_SYMBOL(unregister_vsync_cb);
158+
159 /* IRQ handler for version 2 of LCDC */
160 static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg)
161 {
162@@ -851,6 +880,8 @@ static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg)
163 LCD_DMA_FRM_BUF_CEILING_ADDR_0_REG);
164 par->vsync_flag = 1;
165 wake_up_interruptible(&par->vsync_wait);
166+ if (vsync_cb_handler)
167+ vsync_cb_handler(vsync_cb_arg);
168 }
169
170 if (stat & LCD_END_OF_FRAME1) {
171@@ -926,6 +957,8 @@ static irqreturn_t lcdc_irq_handler_rev01(int irq, void *arg)
172 LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG);
173 par->vsync_flag = 1;
174 wake_up_interruptible(&par->vsync_wait);
175+ if (vsync_cb_handler)
176+ vsync_cb_handler(vsync_cb_arg);
177 }
178 }
179
180diff --git a/include/video/da8xx-fb.h b/include/video/da8xx-fb.h
181index f888259..6b1abfd 100644
182--- a/include/video/da8xx-fb.h
183+++ b/include/video/da8xx-fb.h
184@@ -86,5 +86,9 @@ struct lcd_sync_arg {
185 /* Proprietary FB_SYNC_ flags */
186 #define FB_SYNC_CLK_INVERT 0x40000000
187
188+typedef void (*vsync_callback_t)(void *arg);
189+int register_vsync_cb(vsync_callback_t handler, void *arg, int idx);
190+int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx);
191+
192 #endif /* ifndef DA8XX_FB_H */
193
194--
1951.8.4.2
196
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 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
2SRC_URI += "\
3 file://0001-AM335x-Adding-SGX-DT-node.patch \
4 file://0002-AM33XX-Invoke-hwmod-deassert-for-SGX-graphics-device.patch \
5 file://0003-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch \
6 "
7
8INSANE_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 @@
1From e55f63a07e5266095da89b7f94122fcba9bdef04 Mon Sep 17 00:00:00 2001
2From: Prathap M S <msprathap@ti.com>
3Date: Tue, 19 Nov 2013 16:33:24 +0530
4Subject: [PATCH 1/1] Graphics SDK 04.10.00.01 : AM335x sgx irq change
5
6This patch enables PVR_LINUX_DYNAMIC_SGX_RESOURCE_INFO for AM335x.
7This is required with 3.8 kernel onwards which uses DT.
8This will enable the path of getting sgx irq number dynamically.
9
10Signed-off-by: Prathap M S <msprathap@ti.com>
11---
12 services4/system/ti335x/syslocal.h | 4 ++--
13 1 file changed, 2 insertions(+), 2 deletions(-)
14
15diff --git a/services4/system/ti335x/syslocal.h b/services4/system/ti335x/syslocal.h
16index 090b38d..222d52d 100644
17--- a/services4/system/ti335x/syslocal.h
18+++ b/services4/system/ti335x/syslocal.h
19@@ -69,8 +69,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 #if !defined(LDM_PLATFORM)
21 #error "LDM_PLATFORM must be set"
22 #endif
23-//#define PVR_LINUX_DYNAMIC_SGX_RESOURCE_INFO
24-//#include <linux/platform_device.h>
25+#define PVR_LINUX_DYNAMIC_SGX_RESOURCE_INFO
26+#include <linux/platform_device.h>
27 #endif
28
29 #if ((defined(DEBUG) || defined(TIMING)) && \
30--
311.7.9.5
32
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 @@
1diff --git a/services4/srvkm/env/linux/module.c b/services4/srvkm/env/linux/module.c
2index 668dc2d..2247aad 100644
3--- a/services4/srvkm/env/linux/module.c
4+++ b/services4/srvkm/env/linux/module.c
5@@ -84,6 +84,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
6 #include <linux/module.h>
7 #include <linux/fs.h>
8 #include <linux/proc_fs.h>
9+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
10+#include <linux/of.h>
11+#endif
12
13 #if defined(SUPPORT_DRI_DRM)
14 #include <drm/drmP.h>
15@@ -296,10 +299,24 @@ static struct platform_device_id powervr_id_table[] __devinitdata = {
16 };
17 #endif
18
19+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
20+static const struct of_device_id omap_sgx_of_match[] = {
21+ {
22+ .compatible = "ti,sgx",
23+ },
24+ {},
25+};
26+MODULE_DEVICE_TABLE(of, omap_sgx_of_match);
27+#endif
28+
29+
30 static LDM_DRV powervr_driver = {
31 #if defined(PVR_LDM_PLATFORM_MODULE)
32 .driver = {
33 .name = DRVNAME,
34+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
35+ .of_match_table = of_match_ptr(omap_sgx_of_match),
36+#endif
37 },
38 #endif
39 #if defined(PVR_LDM_PCI_MODULE)
40@@ -362,7 +379,7 @@ static int __devinit PVRSRVDriverProbe(LDM_DEV *pDevice, const struct pci_device
41 #endif
42 {
43 SYS_DATA *psSysData;
44-
45+
46 PVR_TRACE(("PVRSRVDriverProbe(pDevice=%p)", pDevice));
47
48 #if 0 /* INTEGRATION_POINT */
49--
501.7.9.5
51
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 @@
1diff --git a/services4/3rdparty/linux_drm/Kbuild b/services4/3rdparty/linux_drm/Kbuild
2index d01ef39..ccca3cd 100755
3--- a/services4/3rdparty/linux_drm/Kbuild
4+++ b/services4/3rdparty/linux_drm/Kbuild
5@@ -26,38 +26,38 @@ endif
6 endif
7
8 obj-m := drm.o
9-ifeq ($(TI_PLATFORM),omap4)
10-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 \
11- drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
12- drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \
13- drm_sysfs.o drm_hashtab.o drm_sman.o drm_mm.o \
14- drm_crtc.o drm_modes.o drm_edid.o \
15- drm_info.o drm_debugfs.o drm_encoder_slave.o
16-else
17+#ifeq ($(TI_PLATFORM),omap4)
18+#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 \
19+# drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
20+# drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \
21+# drm_sysfs.o drm_hashtab.o drm_sman.o drm_mm.o \
22+# drm_crtc.o drm_modes.o drm_edid.o \
23+# drm_info.o drm_debugfs.o drm_encoder_slave.o
24+#else
25 # Works for 2.6.37 till 3.2 kernel
26-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 \
27- drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
28- drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \
29- drm_sysfs.o drm_hashtab.o drm_sman.o drm_mm.o \
30- drm_crtc.o drm_modes.o drm_edid.o \
31- drm_info.o drm_debugfs.o drm_encoder_slave.o drm_global.o drm_platform.o drm_trace_points.o
32-endif
33-
34-# For 3.3 kernel only
35 #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 \
36 # drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
37 # drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \
38-# drm_sysfs.o drm_hashtab.o drm_mm.o \
39+# drm_sysfs.o drm_hashtab.o drm_sman.o drm_mm.o \
40 # drm_crtc.o drm_modes.o drm_edid.o \
41 # drm_info.o drm_debugfs.o drm_encoder_slave.o drm_global.o drm_platform.o drm_trace_points.o
42+#endif
43
44-# For greater than/equal to 3.4 till 3.8 kernel
45+# For 3.3 kernel only
46 #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 \
47 # drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
48 # drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \
49 # drm_sysfs.o drm_hashtab.o drm_mm.o \
50 # drm_crtc.o drm_modes.o drm_edid.o \
51-# drm_info.o drm_debugfs.o drm_encoder_slave.o drm_global.o drm_platform.o drm_trace_points.o drm_prime.o
52+# drm_info.o drm_debugfs.o drm_encoder_slave.o drm_global.o drm_platform.o drm_trace_points.o
53+
54+# For greater than/equal to 3.4 till 3.8 kernel
55+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 \
56+ drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
57+ drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \
58+ drm_sysfs.o drm_hashtab.o drm_mm.o \
59+ drm_crtc.o drm_modes.o drm_edid.o \
60+ drm_info.o drm_debugfs.o drm_encoder_slave.o drm_global.o drm_platform.o drm_trace_points.o drm_prime.o
61
62 # less than 2.6.32 kernel
63
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 @@
1DESCRIPTION = "Kernel drivers for the PowerVR SGX chipset found in the omap3 SoCs"
2LICENSE = "GPLv2"
3LIC_FILES_CHKSUM = "file://COPYING;md5=ea5743acf520dd81ca172e69f818a3d4"
4
5TI_BIN_UNPK_CMDS="Y: qY:workdir:Y"
6require recipes-ti/includes/ti-eula-unpack.inc
7
8SGXPV = "4_10_00_01"
9IMGPV = "1.9.2188537"
10
11inherit module
12
13MACHINE_KERNEL_PR_append = "c"
14PR = "${MACHINE_KERNEL_PR}"
15
16DEFAULT_PREFERENCE = "-1"
17
18# Select the corresponding hardfp/softfp filename and checksums based on tune flags
19BINFILE_SOFTFP = "Graphics_SDK_setuplinux_${SGXPV}_minimal_demos.bin"
20MD5SUM_SOFTFP = "bd35e9d8843aff3a2aca9d41e7db1c7d"
21SHA256SUM_SOFTFP = "eb37f75ddde4640b09e760fa86e689beb394330ecdf68786188c34f249247647"
22
23BINFILE_HARDFP = "Graphics_SDK_setuplinux_${SGXPV}_hardfp_minimal_demos.bin"
24MD5SUM_HARDFP = "15a3ccb66e98580e474fc112565f66b6"
25SHA256SUM_HARDFP = "4d94d5a1869b228ce12027783fc5425c92e9b66685c501247889f1f167e66c9d"
26
27BINFILE = "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${BINFILE_HARDFP}', '${BINFILE_SOFTFP}', d)}"
28
29SRC_URI = "http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/gfxsdk/${SGXPV}/exports/${BINFILE} \
30 file://Change-for-interfacing-with-SGX-DT-node.patch \
31 file://linux-3.8.patch \
32 file://0001-Graphics-SDK-04.10.00.01-AM335x-sgx-irq-change.patch \
33 "
34
35SRC_URI[md5sum] := "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${MD5SUM_HARDFP}', '${MD5SUM_SOFTFP}', d)}"
36SRC_URI[sha256sum] := "${@base_contains('TUNE_FEATURES', 'callconvention-hard', '${SHA256SUM_HARDFP}', '${SHA256SUM_SOFTFP}', d)}"
37
38TI_BIN_UNPK_WDEXT="/Graphics_SDK_${SGXPV}"
39S = "${WORKDIR}${TI_BIN_UNPK_WDEXT}/GFX_Linux_KM"
40
41PVRBUILD = "release"
42export KERNELDIR = "${STAGING_KERNEL_DIR}"
43
44INHIBIT_PACKAGE_STRIP = "1"
45
46TI_PLATFORM_omap3 = "omap3630"
47TI_PLATFORM_ti814x = "ti81xx"
48TI_PLATFORM_ti816x = "ti81xx"
49TI_PLATFORM_ti33x = "ti335x"
50
51MODULESLOCATION_omap3 = "dc_omapfb3_linux"
52MODULESLOCATION_ti814x = "dc_ti81xx_linux"
53MODULESLOCATION_ti816x = "dc_ti81xx_linux"
54MODULESLOCATION_ti33x = "dc_ti335x_linux"
55
56MAKE_TARGETS = " BUILD=${PVRBUILD} TI_PLATFORM=${TI_PLATFORM} SUPPORT_XORG=0"
57
58MAKE_TARGETS_append_ti33x = " PM_RUNTIME=1"
59
60do_install() {
61 mkdir -p ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/gpu/pvr
62 cp ${S}/pvrsrvkm.ko \
63 ${S}/services4/3rdparty/${MODULESLOCATION}/omaplfb.ko \
64 ${S}/services4/3rdparty/bufferclass_ti/bufferclass_ti.ko \
65 ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/gpu/pvr
66}
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 @@
1bootfile=zImage optargs=consoleblank=0 vt.global_cursor_default=0 quiet
2optargs=consoleblank=0 vt.global_cursor_default=0
3mmcboot=echo Booting from mmc ...; run mmcargs; bootz ${kloadaddr} - ${fdtaddr}