Rotator getting stuck leading to fence timeout
Even though cancel_delayed_work should cancel the worker thread in some race condition it can fail and get scheduled. To avoid this situation use cancel_delayed_work_sync. Also rotator_lock mutex need not be unlocked while waiting for isr as isr does not aquire this mutex for doing its operations. It is after this unlock of mutex sometimes in race condition rotator clock is getting disabled via the msm_rotator_rot_clk_work_f Change-Id: I574aec489fe51ec0e5f7c215c9aba9bb0ec66ffa Signed-off-by: Justin Philip <jphili@codeaurora.org>
This commit is contained in:
parent
6b02eeacda
commit
f35a335e0b
|
@ -1347,12 +1347,10 @@ static int msm_rotator_ycxcx_h2v2_2pass(struct msm_rotator_img_info *info,
|
|||
|
||||
msm_rotator_dev->processing = 1;
|
||||
iowrite32(0x1, MSM_ROTATOR_START);
|
||||
mutex_unlock(&msm_rotator_dev->rotator_lock);
|
||||
/* End of Pass-1 */
|
||||
wait_event(msm_rotator_dev->wq,
|
||||
(msm_rotator_dev->processing == 0));
|
||||
/* Beginning of Pass-2 */
|
||||
mutex_lock(&msm_rotator_dev->rotator_lock);
|
||||
status = (unsigned char)ioread32(MSM_ROTATOR_INTR_STATUS);
|
||||
if ((status & 0x03) != 0x01) {
|
||||
pr_err("%s(): AXI Bus Error, issuing SW_RESET\n",
|
||||
|
|
Loading…
Reference in New Issue