• Geert Uytterhoeven's avatar
    i2c: core: Fix probing of i2c slaves without interrupts · 6f34be74
    Geert Uytterhoeven authored
    Since commit 2fd36c55 ("i2c: core: Map OF IRQ at probe time"),
    i2c slaves without interrupts (e.g. da9210 and at24 on r8a7791/koelsch)
    fail to probe:
    
        at24: probe of 2-0050 failed with error -22
    
        da9210: probe of 6-0068 failed with error -22
    
    This happens because the call to of_irq_get() in i2c_device_probe()
    returns -EINVAL.
    
    If a device node does not have an "interrupts" property,
    of_irq_parse_one() fails. Unlike irq_of_parse_and_map(), of_irq_get()
    does not ignore errors from of_irq_parse_one(), but forwards them.
    
    Make i2c_device_probe() ignore all errors but -EPROBE_DEFER to fix this,
    just like platform_get_irq() and platform_get_irq_byname() already do.
    
    Fixes: 2fd36c55 ("i2c: core: Map OF IRQ at probe time")
    Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    6f34be74
i2c-core.c 76.6 KB