diff options
author | Gajanan Bhat <gbhat@nvidia.com> | 2011-08-29 14:25:10 -0700 |
---|---|---|
committer | Varun Colbert <vcolbert@nvidia.com> | 2011-09-01 19:48:48 -0700 |
commit | 3c296e6a706a2c00e262a985e0279277cb91acd5 (patch) | |
tree | 5b2babbeaac5ec6e3daf43cfaca0b308e4ae34c3 | |
parent | df90cc25a7ba438b3785aed1b6af4a67ccec7101 (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.c | 21 | ||||
-rw-r--r-- | include/linux/tegra_nvavp.h | 3 |
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) |