aboutsummaryrefslogtreecommitdiff
path: root/drivers/mxc/ipu3/ipu_disp.c
diff options
context:
space:
mode:
authorJason Chen <b02280@freescale.com>2011-09-09 17:53:24 +0800
committerFrank Li <Frank.Li@freescale.com>2011-09-15 14:05:14 +0800
commit45158d76fd07fa566e0b65883fea8fa71f886507 (patch)
tree59dd3487c72141ce719f51031878019d68dbd6b9 /drivers/mxc/ipu3/ipu_disp.c
parentc449fac279d116a425f87952defb466c5fc289cd (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.c18
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 {