diff options
author | Dave Stevenson <dave.stevenson@raspberrypi.com> | 2020-04-25 23:38:07 +0200 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2020-04-26 10:00:29 +0200 |
commit | aef6f2e7cec184fac0ef50958b759e9605ed8128 (patch) | |
tree | b301944d1d7f60474801efbb6b7c8b7e152ad071 /drivers/i2c/busses/i2c-brcmstb.c | |
parent | i2c: regroup documentation of bindings (diff) | |
download | linux-aef6f2e7cec184fac0ef50958b759e9605ed8128.tar.xz linux-aef6f2e7cec184fac0ef50958b759e9605ed8128.zip |
i2c: brcmstb: Fix handling of optional interrupt
If there is no interrupt defined then an error is logged due
to the use of platform_get_irq. The driver handles not having
the interrupt by falling back to polling, therefore make
the appropriate call when claiming it.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to '')
-rw-r--r-- | drivers/i2c/busses/i2c-brcmstb.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/i2c/busses/i2c-brcmstb.c b/drivers/i2c/busses/i2c-brcmstb.c index 169a2836922d..d4e0a0f6732a 100644 --- a/drivers/i2c/busses/i2c-brcmstb.c +++ b/drivers/i2c/busses/i2c-brcmstb.c @@ -647,20 +647,22 @@ static int brcmstb_i2c_probe(struct platform_device *pdev) int_name = NULL; /* Get the interrupt number */ - dev->irq = platform_get_irq(pdev, 0); + dev->irq = platform_get_irq_optional(pdev, 0); /* disable the bsc interrupt line */ brcmstb_i2c_enable_disable_irq(dev, INT_DISABLE); /* register the ISR handler */ - rc = devm_request_irq(&pdev->dev, dev->irq, brcmstb_i2c_isr, - IRQF_SHARED, - int_name ? int_name : pdev->name, - dev); - - if (rc) { - dev_dbg(dev->device, "falling back to polling mode"); - dev->irq = -1; + if (dev->irq >= 0) { + rc = devm_request_irq(&pdev->dev, dev->irq, brcmstb_i2c_isr, + IRQF_SHARED, + int_name ? int_name : pdev->name, + dev); + + if (rc) { + dev_dbg(dev->device, "falling back to polling mode"); + dev->irq = -1; + } } if (of_property_read_u32(dev->device->of_node, |