summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Shaposhnikov2013-02-11 11:55:43 -0600
committerRoman Shaposhnikov2013-02-11 11:55:43 -0600
commit36d7e2dd788a8349f6990705761c2a0c684c7f61 (patch)
tree35da53e8c957804ef5bc1090c5c1ac35e3f48090
parentb253cbe4442eaa0d67e46b3b6a58c865a3bbad2e (diff)
parentbafb46256331fa06c5cbd92936dac13a5d5fc128 (diff)
downloaddevice-ti-proprietary-open-36d7e2dd788a8349f6990705761c2a0c684c7f61.tar.gz
device-ti-proprietary-open-36d7e2dd788a8349f6990705761c2a0c684c7f61.tar.xz
device-ti-proprietary-open-36d7e2dd788a8349f6990705761c2a0c684c7f61.zip
Merge omap-mirror/p-jb-mr1-release into omap-mirror/d-jb-mr1-release
-rw-r--r--omap5/sgx.tgzbin2371380 -> 2501156 bytes
-rw-r--r--omap5/sgx/Android.mk26
-rw-r--r--omap5/sgx_src/eurasia_km/eurasiacon/build/linux2/omap4430_android/Makefile7
-rw-r--r--omap5/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxpower.c6
-rw-r--r--omap5/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxutils.c14
-rw-r--r--omap5/sgx_src/eurasia_km/services4/srvkm/hwdefs/sgxerrata.h3
-rw-r--r--omap5/sgx_src/eurasia_km/services4/system/omap4/sgxfreq_userspace.c58
-rw-r--r--omap5/sgx_src/eurasia_km/services4/system/omap4/sysconfig.c4
-rw-r--r--omap5/sgx_src/eurasia_km/services4/system/omap4/sysutils_linux.c1
9 files changed, 41 insertions, 78 deletions
diff --git a/omap5/sgx.tgz b/omap5/sgx.tgz
index 8a9087f..aee1a04 100644
--- a/omap5/sgx.tgz
+++ b/omap5/sgx.tgz
Binary files differ
diff --git a/omap5/sgx/Android.mk b/omap5/sgx/Android.mk
index 867c3b8..3cf4f59 100644
--- a/omap5/sgx/Android.mk
+++ b/omap5/sgx/Android.mk
@@ -94,28 +94,28 @@ $$(LOCAL_BUILT_MODULE) : $$(img-sgx.untarred_timestamp) | $$(ACP)
94endef 94endef
95 95
96prebuilt_sgx_vendor_libs := \ 96prebuilt_sgx_vendor_libs := \
97 lib/libIMGegl_SGX544_105.so \ 97 lib/libIMGegl_SGX544_116.so \
98 lib/libglslcompiler_SGX544_105.so \ 98 lib/libglslcompiler_SGX544_116.so \
99 lib/libusc_SGX544_105.so \ 99 lib/libusc_SGX544_116.so \
100 lib/libPVRScopeServices_SGX544_105.so \ 100 lib/libPVRScopeServices_SGX544_116.so \
101 lib/libsrv_um_SGX544_105.so \ 101 lib/libsrv_um_SGX544_116.so \
102 lib/hw/gralloc.omap5.so \ 102 lib/hw/gralloc.omap5.so \
103 lib/libpvrANDROID_WSEGL_SGX544_105.so \ 103 lib/libpvrANDROID_WSEGL_SGX544_116.so \
104 lib/libpvr2d_SGX544_105.so \ 104 lib/libpvr2d_SGX544_116.so \
105 lib/libsrv_init_SGX544_105.so \ 105 lib/libsrv_init_SGX544_116.so \
106 lib/egl/libGLESv1_CM_POWERVR_SGX544_105.so \ 106 lib/egl/libGLESv1_CM_POWERVR_SGX544_116.so \
107 lib/egl/libGLESv2_POWERVR_SGX544_105.so \ 107 lib/egl/libGLESv2_POWERVR_SGX544_116.so \
108 lib/egl/libEGL_POWERVR_SGX544_105.so 108 lib/egl/libEGL_POWERVR_SGX544_116.so
109 109
110prebuilt_sgx_vendor_bins := \ 110prebuilt_sgx_vendor_bins := \
111 bin/pvrsrvinit \ 111 bin/pvrsrvinit \
112 bin/pvrsrvctl_SGX544_105 112 bin/pvrsrvctl_SGX544_116
113 113
114prebuilt_sgx_vendor_etc := \ 114prebuilt_sgx_vendor_etc := \
115 etc/powervr.ini 115 etc/powervr.ini
116 116
117prebuilt_sgx_vendor_km := \ 117prebuilt_sgx_vendor_km := \
118 modules/pvrsrvkm_sgx544_105.ko 118 modules/pvrsrvkm_sgx544_116.ko
119 119
120prebuilt_sgx_modules := \ 120prebuilt_sgx_modules := \
121 $(foreach _file,$(prebuilt_sgx_vendor_libs) $(prebuilt_sgx_vendor_bins) $(prebuilt_sgx_vendor_etc) $(prebuilt_sgx_vendor_km),\ 121 $(foreach _file,$(prebuilt_sgx_vendor_libs) $(prebuilt_sgx_vendor_bins) $(prebuilt_sgx_vendor_etc) $(prebuilt_sgx_vendor_km),\
diff --git a/omap5/sgx_src/eurasia_km/eurasiacon/build/linux2/omap4430_android/Makefile b/omap5/sgx_src/eurasia_km/eurasiacon/build/linux2/omap4430_android/Makefile
index b034ea0..2b37cb3 100644
--- a/omap5/sgx_src/eurasia_km/eurasiacon/build/linux2/omap4430_android/Makefile
+++ b/omap5/sgx_src/eurasia_km/eurasiacon/build/linux2/omap4430_android/Makefile
@@ -52,6 +52,13 @@ else ifeq ($(TARGET_SGX),544)
52 SGX_FEATURE_MP := 1 52 SGX_FEATURE_MP := 1
53 SGX_FEATURE_SYSTEM_CACHE := 1 53 SGX_FEATURE_SYSTEM_CACHE := 1
54 SGX_FEATURE_MP_CORE_COUNT := 2 54 SGX_FEATURE_MP_CORE_COUNT := 2
55else ifeq ($(TARGET_SGX),544es2)
56 SGXCORE := 544
57 SGX_CORE_REV := 116
58 HAL_VARIANT := omap5
59 SGX_FEATURE_MP := 1
60 SGX_FEATURE_SYSTEM_CACHE := 1
61 SGX_FEATURE_MP_CORE_COUNT := 2
55else 62else
56 #default config 63 #default config
57 SGXCORE := 540 64 SGXCORE := 540
diff --git a/omap5/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxpower.c b/omap5/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxpower.c
index 2acd28d..dae4946 100644
--- a/omap5/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxpower.c
+++ b/omap5/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxpower.c
@@ -359,7 +359,11 @@ PVRSRV_ERROR SGXPrePowerState (IMG_HANDLE hDevHandle,
359 } 359 }
360 #endif /* NO_HARDWARE */ 360 #endif /* NO_HARDWARE */
361 361
362 psDevInfo->bSGXIdle = IMG_TRUE; 362 if (psDevInfo->bSGXIdle == IMG_FALSE)
363 {
364 psDevInfo->bSGXIdle = IMG_TRUE;
365 SysSGXIdleEntered();
366 }
363 367
364 #if defined(PDUMP) 368 #if defined(PDUMP)
365 PDUMPCOMMENT("TA/3D CCB Control - Wait for power event on uKernel."); 369 PDUMPCOMMENT("TA/3D CCB Control - Wait for power event on uKernel.");
diff --git a/omap5/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxutils.c b/omap5/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxutils.c
index 227675d..d5cb3c1 100644
--- a/omap5/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxutils.c
+++ b/omap5/sgx_src/eurasia_km/services4/srvkm/devices/sgx/sgxutils.c
@@ -172,9 +172,11 @@ IMG_VOID SGXTestActivePowerEvent (PVRSRV_DEVICE_NODE *psDeviceNode,
172 ((psSGXHostCtl->ui32InterruptFlags & PVRSRV_USSE_EDM_INTERRUPT_IDLE) != 0)) 172 ((psSGXHostCtl->ui32InterruptFlags & PVRSRV_USSE_EDM_INTERRUPT_IDLE) != 0))
173 { 173 {
174 psSGXHostCtl->ui32InterruptClearFlags |= PVRSRV_USSE_EDM_INTERRUPT_IDLE; 174 psSGXHostCtl->ui32InterruptClearFlags |= PVRSRV_USSE_EDM_INTERRUPT_IDLE;
175 psDevInfo->bSGXIdle = IMG_TRUE; 175 if (psDevInfo->bSGXIdle == IMG_FALSE)
176 176 {
177 SysSGXIdleEntered(); 177 psDevInfo->bSGXIdle = IMG_TRUE;
178 SysSGXIdleEntered();
179 }
178 } 180 }
179 181
180 /* 182 /*
@@ -709,9 +711,6 @@ PVRSRV_ERROR SGXScheduleCCBCommandKM(PVRSRV_DEVICE_NODE *psDeviceNode,
709 /* Note that a power-up has been dumped in the init phase. */ 711 /* Note that a power-up has been dumped in the init phase. */
710 PDUMPSUSPEND(); 712 PDUMPSUSPEND();
711 713
712 SysSGXCommandPending(psDevInfo->bSGXIdle);
713 psDevInfo->bSGXIdle = IMG_FALSE;
714
715 /* Ensure that SGX is powered up before kicking the ukernel. */ 714 /* Ensure that SGX is powered up before kicking the ukernel. */
716 eError = PVRSRVSetDevicePowerStateKM(psDeviceNode->sDevId.ui32DeviceIndex, 715 eError = PVRSRVSetDevicePowerStateKM(psDeviceNode->sDevId.ui32DeviceIndex,
717 PVRSRV_DEV_POWER_STATE_ON); 716 PVRSRV_DEV_POWER_STATE_ON);
@@ -729,6 +728,9 @@ PVRSRV_ERROR SGXScheduleCCBCommandKM(PVRSRV_DEVICE_NODE *psDeviceNode,
729 return eError; 728 return eError;
730 } 729 }
731 730
731 SysSGXCommandPending(psDevInfo->bSGXIdle);
732 psDevInfo->bSGXIdle = IMG_FALSE;
733
732 eError = SGXScheduleCCBCommand(psDeviceNode, eCmdType, psCommandData, ui32CallerID, ui32PDumpFlags, hDevMemContext, bLastInScene); 734 eError = SGXScheduleCCBCommand(psDeviceNode, eCmdType, psCommandData, ui32CallerID, ui32PDumpFlags, hDevMemContext, bLastInScene);
733 735
734 PVRSRVPowerUnlock(ui32CallerID); 736 PVRSRVPowerUnlock(ui32CallerID);
diff --git a/omap5/sgx_src/eurasia_km/services4/srvkm/hwdefs/sgxerrata.h b/omap5/sgx_src/eurasia_km/services4/srvkm/hwdefs/sgxerrata.h
index 711e356..d8a1fb8 100644
--- a/omap5/sgx_src/eurasia_km/services4/srvkm/hwdefs/sgxerrata.h
+++ b/omap5/sgx_src/eurasia_km/services4/srvkm/hwdefs/sgxerrata.h
@@ -421,7 +421,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
421 #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) && defined(SGX_FEATURE_MP) 421 #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) && defined(SGX_FEATURE_MP)
422 #define FIX_HW_BRN_33657/* workaround in ukernel */ 422 #define FIX_HW_BRN_33657/* workaround in ukernel */
423 #endif 423 #endif
424 #define FIX_HW_BRN_33809/* workaround in kernel (enable burst combiner) */ 424 //FIXME: This causes DMM/EMIF lockup
425 //#define FIX_HW_BRN_33809/* workaround in kernel (enable burst combiner) */
425 #define FIX_HW_BRN_36513 /* workaround in uKernel and Services */ 426 #define FIX_HW_BRN_36513 /* workaround in uKernel and Services */
426 #else 427 #else
427 #if SGX_CORE_REV == SGX_CORE_REV_HEAD 428 #if SGX_CORE_REV == SGX_CORE_REV_HEAD
diff --git a/omap5/sgx_src/eurasia_km/services4/system/omap4/sgxfreq_userspace.c b/omap5/sgx_src/eurasia_km/services4/system/omap4/sgxfreq_userspace.c
index 5ff0dd0..aff6087 100644
--- a/omap5/sgx_src/eurasia_km/services4/system/omap4/sgxfreq_userspace.c
+++ b/omap5/sgx_src/eurasia_km/services4/system/omap4/sgxfreq_userspace.c
@@ -20,26 +20,17 @@
20 20
21static int userspace_start(struct sgxfreq_sgx_data *data); 21static int userspace_start(struct sgxfreq_sgx_data *data);
22static void userspace_stop(void); 22static void userspace_stop(void);
23static void userspace_sgx_clk_on(void);
24static void userspace_sgx_clk_off(void);
25static void userspace_sgx_active(void);
26static void userspace_sgx_idle(void);
27 23
28 24
29static struct sgxfreq_governor userspace_gov = { 25static struct sgxfreq_governor userspace_gov = {
30 .name = "userspace", 26 .name = "userspace",
31 .gov_start = userspace_start, 27 .gov_start = userspace_start,
32 .gov_stop = userspace_stop, 28 .gov_stop = userspace_stop,
33 .sgx_clk_on = userspace_sgx_clk_on,
34 .sgx_clk_off = userspace_sgx_clk_off,
35 .sgx_active = userspace_sgx_active,
36 .sgx_idle = userspace_sgx_idle,
37}; 29};
38 30
39 31
40static struct userspace_data { 32static struct userspace_data {
41 unsigned long freq_user; /* in KHz */ 33 unsigned long freq_user; /* in Hz */
42 struct mutex mutex;
43} usd; 34} usd;
44 35
45 36
@@ -65,15 +56,11 @@ static ssize_t store_frequency_set(struct device *dev,
65 if (ret != 1) 56 if (ret != 1)
66 return -EINVAL; 57 return -EINVAL;
67 58
68 mutex_lock(&odd.mutex);
69
70 if (freq > sgxfreq_get_freq_max()) 59 if (freq > sgxfreq_get_freq_max())
71 freq = sgxfreq_get_freq_max(); 60 freq = sgxfreq_get_freq_max();
72 usd.freq_user = sgxfreq_set_freq_request(freq); 61 usd.freq_user = sgxfreq_set_freq_request(freq);
73 trace_printk("USERSPACE: new freq=%luHz.\n", usd.freq_user); 62 trace_printk("USERSPACE: new freq=%luHz.\n", usd.freq_user);
74 63
75 mutex_unlock(&odd.mutex);
76
77 return count; 64 return count;
78} 65}
79 66
@@ -100,8 +87,6 @@ int userspace_init(void)
100{ 87{
101 int ret; 88 int ret;
102 89
103 mutex_init(&odd.mutex);
104
105 ret = sgxfreq_register_governor(&userspace_gov); 90 ret = sgxfreq_register_governor(&userspace_gov);
106 if (ret) 91 if (ret)
107 return ret; 92 return ret;
@@ -133,48 +118,7 @@ static int userspace_start(struct sgxfreq_sgx_data *data)
133 118
134static void userspace_stop(void) 119static void userspace_stop(void)
135{ 120{
136 usd.freq_user = sgxfreq_set_freq_request(sgxfreq_get_freq_min());
137 sysfs_remove_group(sgxfreq_kobj, &userspace_attr_group); 121 sysfs_remove_group(sgxfreq_kobj, &userspace_attr_group);
138 122
139 trace_printk("USERSPACE: stopped.\n"); 123 trace_printk("USERSPACE: stopped.\n");
140} 124}
141
142
143static void userspace_sgx_clk_on(void)
144{
145 mutex_lock(&ood.mutex);
146
147 sgxfreq_set_freq_request(usd.freq_user);
148
149 mutex_unlock(&ood.mutex);
150}
151
152
153static void userspace_sgx_clk_off(void)
154{
155 mutex_lock(&ood.mutex);
156
157 sgxfreq_set_freq_request(sgxfreq_get_freq_min());
158
159 mutex_unlock(&ood.mutex);
160}
161
162
163static void userspace_sgx_active(void)
164{
165 mutex_lock(&aid.mutex);
166
167 sgxfreq_set_freq_request(usd.freq_user);
168
169 mutex_unlock(&aid.mutex);
170}
171
172
173static void userspace_sgx_idle(void)
174{
175 mutex_lock(&aid.mutex);
176
177 sgxfreq_set_freq_request(sgxfreq_get_freq_min());
178
179 mutex_unlock(&aid.mutex);
180}
diff --git a/omap5/sgx_src/eurasia_km/services4/system/omap4/sysconfig.c b/omap5/sgx_src/eurasia_km/services4/system/omap4/sysconfig.c
index e9fd069..175252d 100644
--- a/omap5/sgx_src/eurasia_km/services4/system/omap4/sysconfig.c
+++ b/omap5/sgx_src/eurasia_km/services4/system/omap4/sysconfig.c
@@ -50,7 +50,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
50 50
51#include "ocpdefs.h" 51#include "ocpdefs.h"
52 52
53#if (SGX_CORE_REV == 105)
53#define OMAP5430_CORE_REV 0x10005 54#define OMAP5430_CORE_REV 0x10005
55#elif (SGX_CORE_REV == 116)
56#define OMAP5430_CORE_REV 0x10106
57#endif
54 58
55/* top level system data anchor point*/ 59/* top level system data anchor point*/
56SYS_DATA* gpsSysData = (SYS_DATA*)IMG_NULL; 60SYS_DATA* gpsSysData = (SYS_DATA*)IMG_NULL;
diff --git a/omap5/sgx_src/eurasia_km/services4/system/omap4/sysutils_linux.c b/omap5/sgx_src/eurasia_km/services4/system/omap4/sysutils_linux.c
index 1bef2ee..bae1048 100644
--- a/omap5/sgx_src/eurasia_km/services4/system/omap4/sysutils_linux.c
+++ b/omap5/sgx_src/eurasia_km/services4/system/omap4/sysutils_linux.c
@@ -738,6 +738,7 @@ IMG_VOID SysSGXIdleEntered(IMG_VOID)
738IMG_VOID SysSGXCommandPending(IMG_BOOL bSGXIdle) 738IMG_VOID SysSGXCommandPending(IMG_BOOL bSGXIdle)
739{ 739{
740#if defined(SYS_OMAP4_HAS_DVFS_FRAMEWORK) 740#if defined(SYS_OMAP4_HAS_DVFS_FRAMEWORK)
741 if (bSGXIdle)
741 sgxfreq_notif_sgx_active(); 742 sgxfreq_notif_sgx_active();
742#else 743#else
743 PVR_UNREFERENCED_PARAMETER(bSGXIdle); 744 PVR_UNREFERENCED_PARAMETER(bSGXIdle);