diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index a0768d6dffc28aaee9c130d35e889d9c5fd7fb7d..cf830915713b387a0b9f4037b6d6fbeffbe2f889 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -629,8 +629,10 @@ static int i2c_device_probe(struct device *dev)
 	if (!client->irq && dev->of_node) {
 		int irq = of_irq_get(dev->of_node, 0);
 
-		if (irq < 0)
+		if (irq == -EPROBE_DEFER)
 			return irq;
+		if (irq < 0)
+			irq = 0;
 
 		client->irq = irq;
 	}