* [PATCH 0/3] Handle optional IRQs correctly
@ 2026-08-13 8:52 phucduc.bui
2026-08-13 8:52 ` [PATCH 1/3] i2c: pca-platform: Handle errors from optional IRQ lookup phucduc.bui
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: phucduc.bui @ 2026-08-13 8:52 UTC (permalink / raw)
To: Kamal Dasu, Broadcom internal kernel review list, Andi Shyti,
Florian Fainelli, linux-i2c, linux-arm-kernel, linux-kernel
Cc: Wolfram Sang, bui duc phuc
From: bui duc phuc <phucduc.bui@gmail.com>
Hi all,
The changes were found through code inspection while reviewing optional
IRQ handling in I2C drivers.
I noticed that some drivers already handle the return value of
platform_get_irq_optional() explicitly, including i2c-designware-platdrv,
i2c-ocores, and i2c-sh_mobile.
This series updates the affected drivers to properly handle errors from
platform_get_irq_optional() and distinguish a missing optional IRQ from
other errors.
The series also fixes the handling of IRQ 0 in the brcmstb driver, since
0 is not a valid IRQ number returned by platform_get_irq_optional().
The series was only compile-tested.
Best regards,
Phuc
bui duc phuc (3):
i2c: pca-platform: Handle errors from optional IRQ lookup
i2c: brcmstb: Handle errors from optional IRQ lookup
i2c: brcmstb: Correct optional IRQ handling
drivers/i2c/busses/i2c-brcmstb.c | 6 ++++--
drivers/i2c/busses/i2c-pca-platform.c | 5 ++++-
2 files changed, 8 insertions(+), 3 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/3] i2c: pca-platform: Handle errors from optional IRQ lookup
2026-08-13 8:52 [PATCH 0/3] Handle optional IRQs correctly phucduc.bui
@ 2026-08-13 8:52 ` phucduc.bui
2026-08-13 8:52 ` [PATCH 2/3] i2c: brcmstb: " phucduc.bui
2026-08-13 8:52 ` [PATCH 3/3] i2c: brcmstb: Correct optional IRQ handling phucduc.bui
2 siblings, 0 replies; 4+ messages in thread
From: phucduc.bui @ 2026-08-13 8:52 UTC (permalink / raw)
To: Kamal Dasu, Broadcom internal kernel review list, Andi Shyti,
Florian Fainelli, linux-i2c, linux-arm-kernel, linux-kernel
Cc: Wolfram Sang, bui duc phuc
From: bui duc phuc <phucduc.bui@gmail.com>
platform_get_irq_optional() returns a positive IRQ number on success or
a negative error code on failure. For an optional IRQ, -ENXIO indicates
that no optional IRQ is available. Other errors, such as -EPROBE_DEFER
and -EINVAL, should be propagated so that the caller can handle them
appropriately.
Propagate negative errors other than -ENXIO.
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
drivers/i2c/busses/i2c-pca-platform.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/i2c/busses/i2c-pca-platform.c b/drivers/i2c/busses/i2c-pca-platform.c
index c0f35ebbe37d..63c8ca1f1870 100644
--- a/drivers/i2c/busses/i2c-pca-platform.c
+++ b/drivers/i2c/busses/i2c-pca-platform.c
@@ -139,8 +139,11 @@ static int i2c_pca_pf_probe(struct platform_device *pdev)
irq = platform_get_irq_optional(pdev, 0);
/* If irq is 0, we do polling. */
- if (irq < 0)
+ if (irq < 0) {
+ if (irq != -ENXIO)
+ return irq;
irq = 0;
+ }
i2c = devm_kzalloc(&pdev->dev, sizeof(*i2c), GFP_KERNEL);
if (!i2c)
--
2.43.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3] i2c: brcmstb: Handle errors from optional IRQ lookup
2026-08-13 8:52 [PATCH 0/3] Handle optional IRQs correctly phucduc.bui
2026-08-13 8:52 ` [PATCH 1/3] i2c: pca-platform: Handle errors from optional IRQ lookup phucduc.bui
@ 2026-08-13 8:52 ` phucduc.bui
2026-08-13 8:52 ` [PATCH 3/3] i2c: brcmstb: Correct optional IRQ handling phucduc.bui
2 siblings, 0 replies; 4+ messages in thread
From: phucduc.bui @ 2026-08-13 8:52 UTC (permalink / raw)
To: Kamal Dasu, Broadcom internal kernel review list, Andi Shyti,
Florian Fainelli, linux-i2c, linux-arm-kernel, linux-kernel
Cc: Wolfram Sang, bui duc phuc
From: bui duc phuc <phucduc.bui@gmail.com>
platform_get_irq_optional() returns a positive IRQ number on success or
a negative error code on failure. For an optional IRQ, -ENXIO indicates
that no optional IRQ is available. Other errors, such as -EPROBE_DEFER
and -EINVAL, should be propagated so that the caller can handle them
appropriately.
Propagate negative errors other than -ENXIO.
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
drivers/i2c/busses/i2c-brcmstb.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/i2c/busses/i2c-brcmstb.c b/drivers/i2c/busses/i2c-brcmstb.c
index 5fa30e8926c5..91525a36e575 100644
--- a/drivers/i2c/busses/i2c-brcmstb.c
+++ b/drivers/i2c/busses/i2c-brcmstb.c
@@ -648,6 +648,8 @@ static int brcmstb_i2c_probe(struct platform_device *pdev)
/* Get the interrupt number */
dev->irq = platform_get_irq_optional(pdev, 0);
+ if (dev->irq < 0 && dev->irq != -ENXIO)
+ return dev->irq;
/* disable the bsc interrupt line */
brcmstb_i2c_enable_disable_irq(dev, INT_DISABLE);
--
2.43.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] i2c: brcmstb: Correct optional IRQ handling
2026-08-13 8:52 [PATCH 0/3] Handle optional IRQs correctly phucduc.bui
2026-08-13 8:52 ` [PATCH 1/3] i2c: pca-platform: Handle errors from optional IRQ lookup phucduc.bui
2026-08-13 8:52 ` [PATCH 2/3] i2c: brcmstb: " phucduc.bui
@ 2026-08-13 8:52 ` phucduc.bui
2 siblings, 0 replies; 4+ messages in thread
From: phucduc.bui @ 2026-08-13 8:52 UTC (permalink / raw)
To: Kamal Dasu, Broadcom internal kernel review list, Andi Shyti,
Florian Fainelli, linux-i2c, linux-arm-kernel, linux-kernel
Cc: Wolfram Sang, bui duc phuc
From: bui duc phuc <phucduc.bui@gmail.com>
dev->irq is assigned from platform_get_irq_optional(), which returns a
non-zero interrupt number on success or a negative error number on
failure. Therefore, 0 is not a valid IRQ number.
Check for a positive IRQ number before requesting the IRQ instead of
treating 0 as a valid IRQ.
Also use a positive IRQ number when reporting the operating mode. The
driver sets dev->irq to -1 when devm_request_irq() fails, so the mode
check should only consider positive IRQ numbers as interrupt mode.
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
drivers/i2c/busses/i2c-brcmstb.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/i2c/busses/i2c-brcmstb.c b/drivers/i2c/busses/i2c-brcmstb.c
index 91525a36e575..3adc73f3d608 100644
--- a/drivers/i2c/busses/i2c-brcmstb.c
+++ b/drivers/i2c/busses/i2c-brcmstb.c
@@ -655,7 +655,7 @@ static int brcmstb_i2c_probe(struct platform_device *pdev)
brcmstb_i2c_enable_disable_irq(dev, INT_DISABLE);
/* register the ISR handler */
- if (dev->irq >= 0) {
+ if (dev->irq > 0) {
rc = devm_request_irq(&pdev->dev, dev->irq, brcmstb_i2c_isr,
IRQF_SHARED,
int_name ? int_name : pdev->name,
@@ -697,7 +697,7 @@ static int brcmstb_i2c_probe(struct platform_device *pdev)
dev_info(dev->device, "%s@%dhz registered in %s mode\n",
int_name ? int_name : " ", dev->clk_freq_hz,
- (dev->irq >= 0) ? "interrupt" : "polling");
+ (dev->irq > 0) ? "interrupt" : "polling");
return 0;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-08-13 8:52 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-13 8:52 [PATCH 0/3] Handle optional IRQs correctly phucduc.bui
2026-08-13 8:52 ` [PATCH 1/3] i2c: pca-platform: Handle errors from optional IRQ lookup phucduc.bui
2026-08-13 8:52 ` [PATCH 2/3] i2c: brcmstb: " phucduc.bui
2026-08-13 8:52 ` [PATCH 3/3] i2c: brcmstb: Correct optional IRQ handling phucduc.bui
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.