diff options
author | Girish S Ghongdemath <girishsg@ti.com> | 2011-06-30 13:16:50 -0500 |
---|---|---|
committer | Iliyan Malchev <malchev@google.com> | 2011-07-07 11:34:40 -0700 |
commit | 83389581850c416b184c6153c8ec61d26bd71592 (patch) | |
tree | 98034d0eb6cb787b3f63e65392535de9ad6b56c2 /drivers/rpmsg | |
parent | 550c45ebbcc51ccb332c709c02ea76a2cb1f2d7f (diff) | |
download | kernel_samsung_tuna-83389581850c416b184c6153c8ec61d26bd71592.zip kernel_samsung_tuna-83389581850c416b184c6153c8ec61d26bd71592.tar.gz kernel_samsung_tuna-83389581850c416b184c6153c8ec61d26bd71592.tar.bz2 |
(TEMP) omap4: rpmsg_omx: Request L3 bandwidth and latency on core
This is temporary fix to latency on CORE. This should
go into proper code path which will need a REVISIT.
Reported-by: Sundar Raman <sunds@ti.com>
Signed-off-by: Girish S G <girishsg@ti.com>
Signed-off-by: Iliyan Malchev <malchev@google.com>
Diffstat (limited to 'drivers/rpmsg')
-rw-r--r-- | drivers/rpmsg/rpmsg_omx.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/rpmsg/rpmsg_omx.c b/drivers/rpmsg/rpmsg_omx.c index 4e1eec7..75fd315 100644 --- a/drivers/rpmsg/rpmsg_omx.c +++ b/drivers/rpmsg/rpmsg_omx.c @@ -34,6 +34,7 @@ #include <linux/sched.h> #include <linux/rpmsg.h> #include <linux/rpmsg_omx.h> +#include <linux/pm_qos_params.h> #include <mach/tiler.h> @@ -52,6 +53,7 @@ struct rpmsg_omx_service { struct device *dev; struct rpmsg_channel *rpdev; int minor; + struct pm_qos_request_list *pm_qos; }; struct rpmsg_omx_instance { @@ -296,6 +298,9 @@ static int rpmsg_omx_open(struct inode *inode, struct file *filp) dev_info(omxserv->dev, "local addr assigned: 0x%x\n", omx->ept->addr); + /* Request for CORE latency. REVISIT: Move to proper code path */ + pm_qos_add_request(omxserv->pm_qos, PM_QOS_CPU_DMA_LATENCY, 400); + return 0; } @@ -309,6 +314,10 @@ static int rpmsg_omx_release(struct inode *inode, struct file *filp) int use, ret; /* todo: release resources here */ + if (omxserv->pm_qos) { + pm_qos_remove_request(omxserv->pm_qos); + kfree(omxserv->pm_qos); + } /* send a disconnect msg with the OMX instance addr */ hdr->type = OMX_DISCONNECT; @@ -503,6 +512,12 @@ static int rpmsg_omx_probe(struct rpmsg_channel *rpdev) goto clean_cdev; } + omxserv->pm_qos = kzalloc(sizeof(struct pm_qos_request_list), + GFP_KERNEL); + if (!omxserv->pm_qos) { + goto clean_cdev; + } + dev_set_drvdata(&rpdev->dev, omxserv); dev_info(omxserv->dev, "new OMX connection srv channel: %u -> %u!\n", |