aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/remoteproc
diff options
context:
space:
mode:
authorMiguel Vadillo <vadillo@ti.com>2011-06-30 18:51:21 -0500
committerIliyan Malchev <malchev@google.com>2011-07-20 17:34:33 -0700
commit736da552bc7e22e6233d20459c120b82738d080b (patch)
tree7c2a90de0cfa93d5b763ae5f0127835e3d9d1ce0 /drivers/remoteproc
parentdbf3f62c5761f298cce9991b30a60dd08f76656f (diff)
downloadkernel_samsung_tuna-736da552bc7e22e6233d20459c120b82738d080b.zip
kernel_samsung_tuna-736da552bc7e22e6233d20459c120b82738d080b.tar.gz
kernel_samsung_tuna-736da552bc7e22e6233d20459c120b82738d080b.tar.bz2
omap4: remoteproc: specific constraints apis
Omap4 specific implementation of constraints apis supporting: - Latency - Frequency - Bandwidth Change-Id: I7c001a54702156ed5e628867268279be3f2cc2ed Signed-off-by: Miguel Vadillo <vadillo@ti.com> Signed-off-by: Fernando Guzman Lugo <fernando.lugo@ti.com> Signed-off-by: Suman Anna <s-anna@ti.com>
Diffstat (limited to 'drivers/remoteproc')
-rw-r--r--drivers/remoteproc/omap_remoteproc.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/remoteproc/omap_remoteproc.c b/drivers/remoteproc/omap_remoteproc.c
index f47b447..9c2ea38 100644
--- a/drivers/remoteproc/omap_remoteproc.c
+++ b/drivers/remoteproc/omap_remoteproc.c
@@ -27,6 +27,9 @@
#include <plat/omap_device.h>
#include <plat/remoteproc.h>
#include <plat/mailbox.h>
+#include <plat/common.h>
+#include <plat/omap-pm.h>
+#include "../../arch/arm/mach-omap2/dvfs.h"
#define PM_SUSPEND_MBOX 0xffffff07
#define PM_SUSPEND_TIMEOUT 300
@@ -309,6 +312,22 @@ static inline int omap_rproc_stop(struct rproc *rproc)
return omap_device_idle(pdev);
}
+static int omap_rproc_set_lat(struct rproc *rproc, long val)
+{
+ pm_qos_update_request(rproc->qos_request, val);
+ return 0;
+}
+
+static int omap_rproc_set_l3_bw(struct rproc *rproc, long val)
+{
+ return omap_pm_set_min_bus_tput(rproc->dev, OCP_INITIATOR_AGENT, val);
+}
+
+static int omap_rproc_scale(struct rproc *rproc, long val)
+{
+ return omap_device_scale(rproc->dev, rproc->dev, val);
+}
+
static struct rproc_ops omap_rproc_ops = {
.start = omap_rproc_start,
.stop = omap_rproc_stop,
@@ -317,6 +336,9 @@ static struct rproc_ops omap_rproc_ops = {
#endif
.iommu_init = omap_rproc_iommu_init,
.iommu_exit = omap_rproc_iommu_exit,
+ .set_lat = omap_rproc_set_lat,
+ .set_bw = omap_rproc_set_l3_bw,
+ .scale = omap_rproc_scale,
};
static int omap_rproc_probe(struct platform_device *pdev)