diff options
author | Jason Chen <b02280@freescale.com> | 2011-09-09 17:53:24 +0800 |
---|---|---|
committer | Eric Miao <eric.miao@linaro.org> | 2011-10-21 11:10:26 +0800 |
commit | 507eb9c1138f253a08bc051763dbd37b23390ca5 (patch) | |
tree | d1d66187417d9d059693f1698e1d72dc87b0080a /drivers/mxc/ipu3/ipu_disp.c | |
parent | 86abe4e0cf74f64bedc718b466bad5ba2efd97bd (diff) |
ENGR00156374 ipuv3: check channel busy while wait disable irq
there is chance channel already quit busy before wait disable
irq in ipu_disable_channel, so add check during irq wait.
this patch also comments f_calc and m_calc fix build warning.
Signed-off-by: Jason Chen <b02280@freescale.com>
Diffstat (limited to 'drivers/mxc/ipu3/ipu_disp.c')
-rw-r--r-- | drivers/mxc/ipu3/ipu_disp.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/mxc/ipu3/ipu_disp.c b/drivers/mxc/ipu3/ipu_disp.c index 25d17ca5862..498a329b099 100644 --- a/drivers/mxc/ipu3/ipu_disp.c +++ b/drivers/mxc/ipu3/ipu_disp.c @@ -935,14 +935,16 @@ void _ipu_dp_dc_disable(struct ipu_soc *ipu, ipu_channel_t channel, bool swap) reg = ipu_cm_read(ipu, IPU_SRM_PRI2) | 0x8; ipu_cm_write(ipu, reg, IPU_SRM_PRI2); - ipu_cm_write(ipu, IPUIRQ_2_MASK(IPU_IRQ_DP_SF_END), - IPUIRQ_2_STATREG(IPU_IRQ_DP_SF_END)); - while ((ipu_cm_read(ipu, IPUIRQ_2_STATREG(IPU_IRQ_DP_SF_END)) & - IPUIRQ_2_MASK(IPU_IRQ_DP_SF_END)) == 0) { - msleep(2); - timeout -= 2; - if (timeout <= 0) - break; + if (ipu_is_channel_busy(ipu, MEM_BG_SYNC)) { + ipu_cm_write(ipu, IPUIRQ_2_MASK(IPU_IRQ_DP_SF_END), + IPUIRQ_2_STATREG(IPU_IRQ_DP_SF_END)); + while ((ipu_cm_read(ipu, IPUIRQ_2_STATREG(IPU_IRQ_DP_SF_END)) & + IPUIRQ_2_MASK(IPU_IRQ_DP_SF_END)) == 0) { + msleep(2); + timeout -= 2; + if (timeout <= 0) + break; + } } return; } else { |