summaryrefslogtreecommitdiff
authorpengcheng chen <pengcheng.chen@amlogic.com>2018-03-14 06:30:30 (GMT)
committer jie.yuan <jie.yuan@amlogic.com>2018-03-19 10:30:31 (GMT)
commitc76f512c04bac726017f33c78ee021ad7b48c38d (patch)
tree46d8b069922d86c49a31a2c75ea2c34b6e1bfc05
parent4aa7c08a2f4888cc7f912b751cd59fd633177ea2 (diff)
downloadcommon-c76f512c04bac726017f33c78ee021ad7b48c38d.zip
common-c76f512c04bac726017f33c78ee021ad7b48c38d.tar.gz
common-c76f512c04bac726017f33c78ee021ad7b48c38d.tar.bz2
osd: adjust mutex lock, decrease lock time[1/1]
PD#161984: osd: adjust mutex lock, decrease lock time Change-Id: Id024de2ff070882c28ac991b98cd8c7d5ac627eb Signed-off-by: pengcheng chen <pengcheng.chen@amlogic.com>
Diffstat
-rw-r--r--drivers/amlogic/media/osd/osd_hw.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/amlogic/media/osd/osd_hw.c b/drivers/amlogic/media/osd/osd_hw.c
index 0e76e33..de9e326 100644
--- a/drivers/amlogic/media/osd/osd_hw.c
+++ b/drivers/amlogic/media/osd/osd_hw.c
@@ -419,7 +419,6 @@ int osd_sync_request(u32 index, u32 yres, u32 xoffset, u32 yoffset,
osd_log_err("could not allocate osd_fence_map\n");
return -ENOMEM;
}
- mutex_lock(&post_fence_list_lock);
fence_map->op = 0xffffffff;
fence_map->fb_index = index;
fence_map->buf_num = buf_num;
@@ -431,6 +430,7 @@ int osd_sync_request(u32 index, u32 yres, u32 xoffset, u32 yoffset,
fence_map->in_fence = osd_get_fenceobj(in_fence_fd);
fence_map->out_fd =
out_fence_create(&out_fence_fd, &val, buf_num);
+ mutex_lock(&post_fence_list_lock);
list_add_tail(&fence_map->list, &post_fence_list);
mutex_unlock(&post_fence_list_lock);
kthread_queue_work(&buffer_toggle_worker, &buffer_toggle_work);
@@ -458,7 +458,6 @@ int osd_sync_request_render(u32 index, u32 yres,
osd_log_err("could not allocate osd_fence_map\n");
return -ENOMEM;
}
- mutex_lock(&post_fence_list_lock);
fence_map->op = 0xffffffff;
fence_map->fb_index = index;
fence_map->buf_num = buf_num;
@@ -485,6 +484,8 @@ int osd_sync_request_render(u32 index, u32 yres,
fence_map->in_fence = osd_get_fenceobj(in_fence_fd);
fence_map->out_fd =
out_fence_create(&out_fence_fd, &val, buf_num);
+ /* Todo: */
+ mutex_lock(&post_fence_list_lock);
list_add_tail(&fence_map->list, &post_fence_list);
mutex_unlock(&post_fence_list_lock);
kthread_queue_work(&buffer_toggle_worker, &buffer_toggle_work);