The driver's probe() method chooses the polling mode if an IRQ # returned by platform_get_irq_optional() is 0 or less. We'll have to filter out -EPROBE_DEFER earlier for the deferred probing to work... Fixes: 0e8ce93bdceb ("i2c: pca-platform: add devicetree awareness") Signed-off-by: Sergey Shtylyov <s.shtylyov@xxxxxx> --- Changed in version 2: - new patch. drivers/i2c/busses/i2c-pca-platform.c | 2 ++ 1 file changed, 2 insertions(+) Index: linux/drivers/i2c/busses/i2c-pca-platform.c =================================================================== --- linux.orig/drivers/i2c/busses/i2c-pca-platform.c +++ linux/drivers/i2c/busses/i2c-pca-platform.c @@ -139,6 +139,8 @@ static int i2c_pca_pf_probe(struct platf int irq; irq = platform_get_irq_optional(pdev, 0); + if (irq == -EPROBE_DEFER) + return irq; /* If irq is 0, we do polling. */ if (irq < 0) irq = 0;