video: rockchip: mpp: fix dma_buf_vmap/vunmap adapt to kernel 6.1

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I9c6767ccf2711432c10674815139b9109d62af4e
This commit is contained in:
Herman Chen
2023-05-25 16:34:04 +08:00
committed by Tao Huang
parent aebba681da
commit e520884467
2 changed files with 18 additions and 18 deletions

View File

@@ -272,14 +272,14 @@ fail:
int mpp_dma_unmap_kernel(struct mpp_dma_session *dma,
struct mpp_dma_buffer *buffer)
{
void *vaddr = buffer->vaddr;
struct iosys_map map = IOSYS_MAP_INIT_VADDR(buffer->vaddr);
struct dma_buf *dmabuf = buffer->dmabuf;
if (IS_ERR_OR_NULL(vaddr) ||
if (IS_ERR_OR_NULL(map.vaddr) ||
IS_ERR_OR_NULL(dmabuf))
return -EINVAL;
dma_buf_vunmap(dmabuf, vaddr);
dma_buf_vunmap(dmabuf, &map);
buffer->vaddr = NULL;
dma_buf_end_cpu_access(dmabuf, DMA_FROM_DEVICE);
@@ -291,7 +291,7 @@ int mpp_dma_map_kernel(struct mpp_dma_session *dma,
struct mpp_dma_buffer *buffer)
{
int ret;
void *vaddr;
struct iosys_map map;
struct dma_buf *dmabuf = buffer->dmabuf;
if (IS_ERR_OR_NULL(dmabuf))
@@ -303,14 +303,13 @@ int mpp_dma_map_kernel(struct mpp_dma_session *dma,
goto failed_access;
}
vaddr = dma_buf_vmap(dmabuf);
if (!vaddr) {
ret = dma_buf_vmap(dmabuf, &map);
if (ret) {
dev_dbg(dma->dev, "can't vmap the dma buffer\n");
ret = -EIO;
goto failed_vmap;
}
buffer->vaddr = vaddr;
buffer->vaddr = map.vaddr;
return 0;

View File

@@ -558,7 +558,7 @@ static int fill_scaling_list_pps(struct rkvdec_task *task,
int pps_info_size, int sub_addr_offset)
{
struct dma_buf *dmabuf = NULL;
void *vaddr = NULL;
struct iosys_map map;
u8 *pps = NULL;
u32 scaling_fd = 0;
int ret = 0;
@@ -573,16 +573,15 @@ static int fill_scaling_list_pps(struct rkvdec_task *task,
ret = dma_buf_begin_cpu_access(dmabuf, DMA_FROM_DEVICE);
if (ret) {
mpp_err("can't access the pps buffer\n");
goto done;
goto access_failed;
}
vaddr = dma_buf_vmap(dmabuf);
if (!vaddr) {
ret = dma_buf_vmap(dmabuf, &map);
if (ret) {
mpp_err("can't access the pps buffer\n");
ret = -EIO;
goto done;
goto vmap_failed;
}
pps = vaddr + offset;
pps = map.vaddr + offset;
/* NOTE: scaling buffer in pps, have no offset */
memcpy(&scaling_fd, pps + base, sizeof(scaling_fd));
scaling_fd = le32_to_cpu(scaling_fd);
@@ -596,7 +595,7 @@ static int fill_scaling_list_pps(struct rkvdec_task *task,
if (IS_ERR(mem_region)) {
mpp_err("scaling list fd %d attach failed\n", scaling_fd);
ret = PTR_ERR(mem_region);
goto done;
goto task_fd_failed;
}
tmp = mem_region->iova & 0xffffffff;
@@ -610,9 +609,11 @@ static int fill_scaling_list_pps(struct rkvdec_task *task,
memcpy(pps + base, &tmp, sizeof(tmp));
}
done:
dma_buf_vunmap(dmabuf, vaddr);
task_fd_failed:
dma_buf_vunmap(dmabuf, &map);
vmap_failed:
dma_buf_end_cpu_access(dmabuf, DMA_FROM_DEVICE);
access_failed:
dma_buf_put(dmabuf);
return ret;