summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorBogdan Chircu <bogdan-petru.chircu-mare@nxp.com>2018-11-27 13:13:19 -0800
committerJason Liu <jason.hui.liu@nxp.com>2019-02-12 10:36:01 +0800
commitbcaea8983ca3864bc5df5dc90b49ffe2d0fadf29 (patch)
tree38f8ab73ecbf0b65a828aac6334cd29d793a5ffa /drivers/video
parent92a7e53664802a729b647516d9e578fa5897aa63 (diff)
MLK-20223 video: epdc: Increase the time available for LUT cleanup
The problem is that the kthread from submit workqueue aquires the queue_mutex and blocks the kthread from interrupt workqueue. But the kthread from interrupt workqueue is the one that should update the used_luts variable (on which the kthread from submit workqueue keeps polling), but it doesn't have a chance to do it (because it is blocked by mutex), even if the LUT complete interrupts are triggered. So the fix is, after the polling to release the mutex so that the kthread from interrupt workqueue can process the LUT complete interrupts and update the used_luts variable accordingly. Signed-off-by: Bogdan Chircu <bogdan-petru.chircu-mare@nxp.com> Signed-off-by: Robby Cai <robby.cai@nxp.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c
index d3849c36509c..cd8d49adbf14 100644
--- a/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c
+++ b/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c
@@ -1055,6 +1055,9 @@ static int epdc_choose_next_lut(struct mxc_epdc_fb_data *fb_data, int *next_lut)
pxp_clear_wb_work_func(fb_data);
used_luts &= ~luts_complete;
fb_data->luts_complete &= ~luts_complete;
+ mutex_unlock(&fb_data->queue_mutex);
+ msleep(10);
+ mutex_lock(&fb_data->queue_mutex);
}
used_luts |= 0x1;