| From 8aa48c2a3fa470d348104e8f8aa558a661b724e5 Mon Sep 17 00:00:00 2001 |
| From: Dave Stevenson <dave.stevenson@raspberrypi.com> |
| Date: Tue, 31 Mar 2020 16:23:11 +0100 |
| Subject: [PATCH] i2c: brcmstb: The interrupt line is optional, so use |
| platform_get_irq_optional |
| |
| 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> |
| --- |
| drivers/i2c/busses/i2c-brcmstb.c | 20 +++++++++++--------- |
| 1 file changed, 11 insertions(+), 9 deletions(-) |
| |
| --- a/drivers/i2c/busses/i2c-brcmstb.c |
| +++ b/drivers/i2c/busses/i2c-brcmstb.c |
| @@ -647,20 +647,22 @@ static int brcmstb_i2c_probe(struct plat |
| 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 (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 (rc) { |
| + dev_dbg(dev->device, "falling back to polling mode"); |
| + dev->irq = -1; |
| + } |
| } |
| |
| if (of_property_read_u32(dev->device->of_node, |