summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinwuk Lee <mlee@nvidia.com>2011-01-27 12:09:19 -0800
committerNiket Sirsi <nsirsi@nvidia.com>2011-01-28 19:56:14 -0800
commitc356539f56daf35a0d82a3363a632f2d23f39337 (patch)
tree12b6cea274d994b7f49ce2275d073109479c5743
parent9c689e66aaf955a838c7477b5671021c154ab037 (diff)
[video: tegra: nvmap] perform cache maintenance for rw_handle
Need cache maintenance on rw_handle to remove display garbage issue which happens randomly. Bug 778138 Change-Id: I227913d1e49d7c28a1a776e2b946cfa0cc7e9803 Reviewed-on: http://git-master/r/17236 Reviewed-by: Niket Sirsi <nsirsi@nvidia.com> Tested-by: Niket Sirsi <nsirsi@nvidia.com>
-rwxr-xr-x[-rw-r--r--]drivers/video/tegra/nvmap/nvmap_ioctl.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/video/tegra/nvmap/nvmap_ioctl.c b/drivers/video/tegra/nvmap/nvmap_ioctl.c
index 0c772f81ffa8..5e1392e56567 100644..100755
--- a/drivers/video/tegra/nvmap/nvmap_ioctl.c
+++ b/drivers/video/tegra/nvmap/nvmap_ioctl.c
@@ -623,6 +623,9 @@ static ssize_t rw_handle(struct nvmap_client *client, struct nvmap_handle *h,
ret = -EFAULT;
break;
}
+ if(is_read)
+ cache_maint(client, h, h_offs,
+ h_offs + elem_size, NVMAP_CACHE_OP_INV);
ret = rw_handle_page(h, is_read, h_offs, sys_addr,
elem_size, (unsigned long)addr, *pte);
@@ -630,6 +633,10 @@ static ssize_t rw_handle(struct nvmap_client *client, struct nvmap_handle *h,
if (ret)
break;
+ if(!is_read)
+ cache_maint(client, h, h_offs,
+ h_offs + elem_size, NVMAP_CACHE_OP_WB);
+
copied += elem_size;
sys_addr += sys_stride;
h_offs += h_stride;