summaryrefslogtreecommitdiff
path: root/drivers/media/video/tegra/nvavp/nvavp_dev.c
diff options
context:
space:
mode:
authorGajanan Bhat <gbhat@nvidia.com>2011-08-29 14:25:10 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:48:47 -0800
commite06d79129a87936fc074afc1f3da3c9e5c4cf194 (patch)
tree3f0a445a3f0804f6d5f621de5a3046ff9e3cca1e /drivers/media/video/tegra/nvavp/nvavp_dev.c
parent0ea0418cc2a093bd87a681ccf44b7b7ceccbc53e (diff)
media: video: nvavp: Add AVP syncpoint ID query
Add support to query syncpoint ID assigned to the AVP by nvhost driver. Original-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> Rebase-Id: R2735f76ea5d9f9ec186df3c17cef96b3584f3dfe
Diffstat (limited to 'drivers/media/video/tegra/nvavp/nvavp_dev.c')
-rw-r--r--drivers/media/video/tegra/nvavp/nvavp_dev.c21
1 files changed, 21 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;