diff --git a/drivers/video/ipu_disp.c b/drivers/video/ipu_disp.c
index cdbb5d5d7ac1658a0106084b750c874f11832d14..0cb1bd86ea6614ad05f936e8f330bf5c8a258483 100644
--- a/drivers/video/ipu_disp.c
+++ b/drivers/video/ipu_disp.c
@@ -723,6 +723,11 @@ void ipu_dp_dc_disable(ipu_channel_t channel, unsigned char swap)
 		/* Make sure that we leave at the irq starting edge */
 		__raw_writel(IPUIRQ_2_MASK(irq), IPUIRQ_2_STATREG(irq));
 		do {
+			udelay(2000);
+			if (--timeout <= 0) {
+				printf("%s: timeout\n", __func__);
+				break;
+			}
 			reg = __raw_readl(IPUIRQ_2_STATREG(irq));
 		} while (!(reg & IPUIRQ_2_MASK(irq)));