summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGajanan Bhat <gbhat@nvidia.com>2011-08-29 14:25:10 -0700
committerVarun Colbert <vcolbert@nvidia.com>2011-09-01 19:48:48 -0700
commit3c296e6a706a2c00e262a985e0279277cb91acd5 (patch)
tree5b2babbeaac5ec6e3daf43cfaca0b308e4ae34c3
parentdf90cc25a7ba438b3785aed1b6af4a67ccec7101 (diff)
media: video: nvavp: Add AVP syncpoint ID query
Add support to query syncpoint ID assigned to the AVP by nvhost driver. Change-Id: Id963e6c32f97e095da253de4b7d83ee8fa8d62a8 Reviewed-on: http://git-master/r/49702 Tested-by: Gajanan Bhat <gbhat@nvidia.com> Reviewed-by: Scott Williams <scwilliams@nvidia.com> Reviewed-by: Kaz Fukuoka <kfukuoka@nvidia.com> Reviewed-by: Isaac Richards <irichards@nvidia.com> Reviewed-by: Krishna Reddy <vdumpa@nvidia.com>
-rw-r--r--drivers/media/video/tegra/nvavp/nvavp_dev.c21
-rw-r--r--include/linux/tegra_nvavp.h3
2 files changed, 24 insertions, 0 deletions
diff --git a/drivers/media/video/tegra/nvavp/nvavp_dev.c b/drivers/media/video/tegra/nvavp/nvavp_dev.c
index 8205b78b9c24..a49509df459d 100644
--- a/drivers/media/video/tegra/nvavp/nvavp_dev.c
+++ b/drivers/media/video/tegra/nvavp/nvavp_dev.c
@@ -148,6 +148,8 @@ static int nvavp_service(struct nvavp_info *nvavp)
}
if (inbox & NVE276_OS_INTERRUPT_AVP_BREAKPOINT)
dev_err(&nvavp->nvhost_dev->dev, "AVP breakpoint hit\n");
+ if (inbox & NVE276_OS_INTERRUPT_TIMEOUT)
+ dev_err(&nvavp->nvhost_dev->dev, "AVP timeout\n");
return 0;
}
@@ -668,6 +670,22 @@ static void nvavp_uninit(struct nvavp_info *nvavp)
nvavp_halt_avp(nvavp);
}
+static int nvavp_get_syncpointid_ioctl(struct file *filp, unsigned int cmd,
+ unsigned long arg)
+{
+ struct nvavp_clientctx *clientctx = filp->private_data;
+ struct nvavp_info *nvavp = clientctx->nvavp;
+ u32 id = nvavp->syncpt_id;
+
+ if (_IOC_DIR(cmd) & _IOC_READ) {
+ if (copy_to_user((void __user *)arg, &id, sizeof(u32)))
+ return -EFAULT;
+ else
+ return 0;
+ }
+ return -EFAULT;
+}
+
static int nvavp_set_nvmapfd_ioctl(struct file *filp, unsigned int cmd,
unsigned long arg)
{
@@ -877,6 +895,9 @@ static long tegra_nvavp_ioctl(struct file *filp, unsigned int cmd,
case NVAVP_IOCTL_SET_NVMAP_FD:
ret = nvavp_set_nvmapfd_ioctl(filp, cmd, arg);
break;
+ case NVAVP_IOCTL_GET_SYNCPOINT_ID:
+ ret = nvavp_get_syncpointid_ioctl(filp, cmd, arg);
+ break;
case NVAVP_IOCTL_PUSH_BUFFER_SUBMIT:
ret = nvavp_pushbuffer_submit_ioctl(filp, cmd, arg);
break;
diff --git a/include/linux/tegra_nvavp.h b/include/linux/tegra_nvavp.h
index c468014a8b9f..e207f145f4ca 100644
--- a/include/linux/tegra_nvavp.h
+++ b/include/linux/tegra_nvavp.h
@@ -54,9 +54,12 @@ struct nvavp_set_nvmap_fd_args {
#define NVAVP_IOCTL_SET_NVMAP_FD _IOW(NVAVP_IOCTL_MAGIC, 0x60, \
struct nvavp_set_nvmap_fd_args)
+#define NVAVP_IOCTL_GET_SYNCPOINT_ID _IOR(NVAVP_IOCTL_MAGIC, 0x61, \
+ __u32)
#define NVAVP_IOCTL_PUSH_BUFFER_SUBMIT _IOWR(NVAVP_IOCTL_MAGIC, 0x63, \
struct nvavp_pushbuffer_submit_hdr)
+
#define NVAVP_IOCTL_MIN_NR _IOC_NR(NVAVP_IOCTL_SET_NVMAP_FD)
#define NVAVP_IOCTL_MAX_NR _IOC_NR(NVAVP_IOCTL_PUSH_BUFFER_SUBMIT)