diff options
author | Bogdan Chircu <bogdan-petru.chircu-mare@nxp.com> | 2018-11-27 13:13:19 -0800 |
---|---|---|
committer | Jason Liu <jason.hui.liu@nxp.com> | 2019-02-12 10:36:01 +0800 |
commit | bcaea8983ca3864bc5df5dc90b49ffe2d0fadf29 (patch) | |
tree | 38f8ab73ecbf0b65a828aac6334cd29d793a5ffa /drivers/video | |
parent | 92a7e53664802a729b647516d9e578fa5897aa63 (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.c | 3 |
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; |