rk3288: vcodec iommu support, fix unmap bug
authorljf <ljf@rock-chips.com>
Fri, 18 Apr 2014 01:56:16 +0000 (09:56 +0800)
committerljf <ljf@rock-chips.com>
Fri, 18 Apr 2014 01:56:30 +0000 (09:56 +0800)
arch/arm/mach-rockchip/vcodec_service.c

index 068029e6924cef23a6e8e677a32fa2c99e218a45..0c340d4fcb4b98d371d3f0191501493d9492bcd8 100755 (executable)
@@ -623,6 +623,8 @@ static int vcodec_bufid_to_iova(struct vpu_service_info *pservice, u8 *tbl, int
         return -1;\r
     }\r
     \r
+    vpu_service_power_on(pservice);\r
+    \r
     for (i=0; i<size; i++) {\r
 #if 0\r
         if (copy_from_user(&usr_fd, &reg->reg[addr_tbl_vpu_dec[i]], sizeof(usr_fd)))\r
@@ -663,7 +665,9 @@ static int vcodec_bufid_to_iova(struct vpu_service_info *pservice, u8 *tbl, int
                     return -1;\r
                 }\r
                 \r
-                ret = ion_map_iommu(pservice->dev, pservice->ion_client, hdl, &mem_region->iova, &mem_region->len);\r
+                mem_region->hdl = hdl;\r
+                \r
+                ret = ion_map_iommu(pservice->dev, pservice->ion_client, mem_region->hdl, &mem_region->iova, &mem_region->len);\r
                 if (ret < 0) {\r
                     dev_err(pservice->dev, "ion map iommu failed\n");\r
                     kfree(mem_region);\r