summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/host/dev.c
diff options
context:
space:
mode:
authorKrishna Reddy <vdumpa@nvidia.com>2011-12-28 15:20:58 -0800
committerVarun Wadekar <vwadekar@nvidia.com>2011-12-28 22:15:48 -0800
commita23faeea394e35796333d3e9596cabed354aeed3 (patch)
tree9c6266e62b949172c918eed7a2fcb30dba997b33 /drivers/video/tegra/host/dev.c
parenta8717590e3d7fb0e1de6f482c2b6577a8f48d068 (diff)
video: tegra: host: Use nvmap handle conversion macro.
Use nvmap user space to kernel handle conversion macro. Change-Id: I65ce6cee77e46ab2d3a7ac49a1b210fae7a85810 Signed-off-by: Krishna Reddy <vdumpa@nvidia.com> Reviewed-on: http://git-master/r/71029 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Scott Williams <scwilliams@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
Diffstat (limited to 'drivers/video/tegra/host/dev.c')
-rw-r--r--drivers/video/tegra/host/dev.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/drivers/video/tegra/host/dev.c b/drivers/video/tegra/host/dev.c
index fe5fb22add92..b0a4c20ba32b 100644
--- a/drivers/video/tegra/host/dev.c
+++ b/drivers/video/tegra/host/dev.c
@@ -252,35 +252,38 @@ static ssize_t nvhost_channelwrite(struct file *filp, const char __user *buf,
cmdbuf.mem, cmdbuf.words, cmdbuf.offset);
hdr->num_cmdbufs--;
} else if (hdr->num_relocs) {
+ struct nvmap_pinarray_elem *elem =
+ &job->pinarray[job->num_pins];
consumed = sizeof(struct nvhost_reloc);
if (remaining < consumed)
break;
- if (copy_from_user(&job->pinarray[job->num_pins],
- buf, consumed)) {
+ if (copy_from_user(elem, buf, consumed)) {
err = -EFAULT;
break;
}
+ elem->patch_mem =
+ nvmap_convert_handle_u2k(elem->patch_mem);
+ elem->pin_mem =
+ nvmap_convert_handle_u2k(elem->pin_mem);
trace_nvhost_channel_write_reloc(chname);
job->num_pins++;
hdr->num_relocs--;
} else if (hdr->num_waitchks) {
- int numwaitchks =
- (remaining / sizeof(struct nvhost_waitchk));
- if (!numwaitchks)
+ struct nvhost_waitchk *waitchk =
+ &job->waitchk[job->num_waitchk];
+ consumed = sizeof(struct nvhost_waitchk);
+ if (remaining < consumed)
break;
- numwaitchks = min_t(int,
- numwaitchks, hdr->num_waitchks);
- consumed = numwaitchks * sizeof(struct nvhost_waitchk);
- if (copy_from_user(&job->waitchk[job->num_waitchk],
- buf, consumed)) {
+ if (copy_from_user(waitchk, buf, consumed)) {
err = -EFAULT;
break;
}
+ waitchk->mem = nvmap_convert_handle_u2k(waitchk->mem);
trace_nvhost_channel_write_waitchks(
- chname, numwaitchks,
+ chname, 1,
hdr->waitchk_mask);
- job->num_waitchk += numwaitchks;
- hdr->num_waitchks -= numwaitchks;
+ job->num_waitchk++;
+ hdr->num_waitchks--;
} else if (priv->num_relocshifts) {
int next_shift =
job->num_pins - priv->num_relocshifts;