summaryrefslogtreecommitdiffstats
path: root/pvr-source/services4/system
diff options
context:
space:
mode:
Diffstat (limited to 'pvr-source/services4/system')
-rw-r--r--pvr-source/services4/system/omap4/sgxfreq_userspace.c58
-rw-r--r--pvr-source/services4/system/omap4/sysconfig.c4
-rw-r--r--pvr-source/services4/system/omap4/sysutils_linux.c1
3 files changed, 6 insertions, 57 deletions
diff --git a/pvr-source/services4/system/omap4/sgxfreq_userspace.c b/pvr-source/services4/system/omap4/sgxfreq_userspace.c
index 5ff0dd0..aff6087 100644
--- a/pvr-source/services4/system/omap4/sgxfreq_userspace.c
+++ b/pvr-source/services4/system/omap4/sgxfreq_userspace.c
@@ -20,26 +20,17 @@
static int userspace_start(struct sgxfreq_sgx_data *data);
static void userspace_stop(void);
-static void userspace_sgx_clk_on(void);
-static void userspace_sgx_clk_off(void);
-static void userspace_sgx_active(void);
-static void userspace_sgx_idle(void);
static struct sgxfreq_governor userspace_gov = {
.name = "userspace",
.gov_start = userspace_start,
.gov_stop = userspace_stop,
- .sgx_clk_on = userspace_sgx_clk_on,
- .sgx_clk_off = userspace_sgx_clk_off,
- .sgx_active = userspace_sgx_active,
- .sgx_idle = userspace_sgx_idle,
};
static struct userspace_data {
- unsigned long freq_user; /* in KHz */
- struct mutex mutex;
+ unsigned long freq_user; /* in Hz */
} usd;
@@ -65,15 +56,11 @@ static ssize_t store_frequency_set(struct device *dev,
if (ret != 1)
return -EINVAL;
- mutex_lock(&odd.mutex);
-
if (freq > sgxfreq_get_freq_max())
freq = sgxfreq_get_freq_max();
usd.freq_user = sgxfreq_set_freq_request(freq);
trace_printk("USERSPACE: new freq=%luHz.\n", usd.freq_user);
- mutex_unlock(&odd.mutex);
-
return count;
}
@@ -100,8 +87,6 @@ int userspace_init(void)
{
int ret;
- mutex_init(&odd.mutex);
-
ret = sgxfreq_register_governor(&userspace_gov);
if (ret)
return ret;
@@ -133,48 +118,7 @@ static int userspace_start(struct sgxfreq_sgx_data *data)
static void userspace_stop(void)
{
- usd.freq_user = sgxfreq_set_freq_request(sgxfreq_get_freq_min());
sysfs_remove_group(sgxfreq_kobj, &userspace_attr_group);
trace_printk("USERSPACE: stopped.\n");
}
-
-
-static void userspace_sgx_clk_on(void)
-{
- mutex_lock(&ood.mutex);
-
- sgxfreq_set_freq_request(usd.freq_user);
-
- mutex_unlock(&ood.mutex);
-}
-
-
-static void userspace_sgx_clk_off(void)
-{
- mutex_lock(&ood.mutex);
-
- sgxfreq_set_freq_request(sgxfreq_get_freq_min());
-
- mutex_unlock(&ood.mutex);
-}
-
-
-static void userspace_sgx_active(void)
-{
- mutex_lock(&aid.mutex);
-
- sgxfreq_set_freq_request(usd.freq_user);
-
- mutex_unlock(&aid.mutex);
-}
-
-
-static void userspace_sgx_idle(void)
-{
- mutex_lock(&aid.mutex);
-
- sgxfreq_set_freq_request(sgxfreq_get_freq_min());
-
- mutex_unlock(&aid.mutex);
-}
diff --git a/pvr-source/services4/system/omap4/sysconfig.c b/pvr-source/services4/system/omap4/sysconfig.c
index e9fd069..175252d 100644
--- a/pvr-source/services4/system/omap4/sysconfig.c
+++ b/pvr-source/services4/system/omap4/sysconfig.c
@@ -50,7 +50,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "ocpdefs.h"
+#if (SGX_CORE_REV == 105)
#define OMAP5430_CORE_REV 0x10005
+#elif (SGX_CORE_REV == 116)
+#define OMAP5430_CORE_REV 0x10106
+#endif
/* top level system data anchor point*/
SYS_DATA* gpsSysData = (SYS_DATA*)IMG_NULL;
diff --git a/pvr-source/services4/system/omap4/sysutils_linux.c b/pvr-source/services4/system/omap4/sysutils_linux.c
index 1bef2ee..bae1048 100644
--- a/pvr-source/services4/system/omap4/sysutils_linux.c
+++ b/pvr-source/services4/system/omap4/sysutils_linux.c
@@ -738,6 +738,7 @@ IMG_VOID SysSGXIdleEntered(IMG_VOID)
IMG_VOID SysSGXCommandPending(IMG_BOOL bSGXIdle)
{
#if defined(SYS_OMAP4_HAS_DVFS_FRAMEWORK)
+ if (bSGXIdle)
sgxfreq_notif_sgx_active();
#else
PVR_UNREFERENCED_PARAMETER(bSGXIdle);