* [PATCH v2 0/2] gpio: mlxbf3: revert device name logic
@ 2025-08-12 13:39 David Thompson
2025-08-12 13:39 ` [PATCH v2 1/2] Revert "gpio: mlxbf3: only get IRQ for device instance 0" David Thompson
2025-08-12 13:39 ` [PATCH v2 2/2] gpio: mlxbf3: use platform_get_irq_optional() David Thompson
0 siblings, 2 replies; 3+ messages in thread
From: David Thompson @ 2025-08-12 13:39 UTC (permalink / raw)
To: linus.walleij, brgl, andriy.shevchenko, mika.westerberg
Cc: linux-gpio, linux-kernel, David Thompson
This series reverts the use of device name processing
in the BlueField-3 GPIO driver "probe()". Instead, the
kernel API "platform_get_irq_optional()" should be used
to prevent errors being logged.
v2:
- Added "Cc: stable@vger.kernel.org" tag to patch 2
- Added "Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>"
David Thompson (2):
Revert "gpio: mlxbf3: only get IRQ for device instance 0"
gpio: mlxbf3: use platform_get_irq_optional()
drivers/gpio/gpio-mlxbf3.c | 54 ++++++++++++++------------------------
1 file changed, 19 insertions(+), 35 deletions(-)
--
2.43.2
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v2 1/2] Revert "gpio: mlxbf3: only get IRQ for device instance 0"
2025-08-12 13:39 [PATCH v2 0/2] gpio: mlxbf3: revert device name logic David Thompson
@ 2025-08-12 13:39 ` David Thompson
2025-08-12 13:39 ` [PATCH v2 2/2] gpio: mlxbf3: use platform_get_irq_optional() David Thompson
1 sibling, 0 replies; 3+ messages in thread
From: David Thompson @ 2025-08-12 13:39 UTC (permalink / raw)
To: linus.walleij, brgl, andriy.shevchenko, mika.westerberg
Cc: linux-gpio, linux-kernel, David Thompson, stable
This reverts commit 10af0273a35ab4513ca1546644b8c853044da134.
While this change was merged, it is not the preferred solution.
During review of a similar change to the gpio-mlxbf2 driver, the
use of "platform_get_irq_optional" was identified as the preferred
solution, so let's use it for gpio-mlxbf3 driver as well.
Cc: stable@vger.kernel.org
Fixes: 10af0273a35a ("gpio: mlxbf3: only get IRQ for device instance 0")
Signed-off-by: David Thompson <davthompson@nvidia.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/gpio/gpio-mlxbf3.c | 54 ++++++++++++++------------------------
1 file changed, 19 insertions(+), 35 deletions(-)
diff --git a/drivers/gpio/gpio-mlxbf3.c b/drivers/gpio/gpio-mlxbf3.c
index 9875e34bde72..10ea71273c89 100644
--- a/drivers/gpio/gpio-mlxbf3.c
+++ b/drivers/gpio/gpio-mlxbf3.c
@@ -190,9 +190,7 @@ static int mlxbf3_gpio_probe(struct platform_device *pdev)
struct mlxbf3_gpio_context *gs;
struct gpio_irq_chip *girq;
struct gpio_chip *gc;
- char *colon_ptr;
int ret, irq;
- long num;
gs = devm_kzalloc(dev, sizeof(*gs), GFP_KERNEL);
if (!gs)
@@ -229,39 +227,25 @@ static int mlxbf3_gpio_probe(struct platform_device *pdev)
gc->owner = THIS_MODULE;
gc->add_pin_ranges = mlxbf3_gpio_add_pin_ranges;
- colon_ptr = strchr(dev_name(dev), ':');
- if (!colon_ptr) {
- dev_err(dev, "invalid device name format\n");
- return -EINVAL;
- }
-
- ret = kstrtol(++colon_ptr, 16, &num);
- if (ret) {
- dev_err(dev, "invalid device instance\n");
- return ret;
- }
-
- if (!num) {
- irq = platform_get_irq(pdev, 0);
- if (irq >= 0) {
- girq = &gs->gc.irq;
- gpio_irq_chip_set_chip(girq, &gpio_mlxbf3_irqchip);
- girq->default_type = IRQ_TYPE_NONE;
- /* This will let us handle the parent IRQ in the driver */
- girq->num_parents = 0;
- girq->parents = NULL;
- girq->parent_handler = NULL;
- girq->handler = handle_bad_irq;
-
- /*
- * Directly request the irq here instead of passing
- * a flow-handler because the irq is shared.
- */
- ret = devm_request_irq(dev, irq, mlxbf3_gpio_irq_handler,
- IRQF_SHARED, dev_name(dev), gs);
- if (ret)
- return dev_err_probe(dev, ret, "failed to request IRQ");
- }
+ irq = platform_get_irq(pdev, 0);
+ if (irq >= 0) {
+ girq = &gs->gc.irq;
+ gpio_irq_chip_set_chip(girq, &gpio_mlxbf3_irqchip);
+ girq->default_type = IRQ_TYPE_NONE;
+ /* This will let us handle the parent IRQ in the driver */
+ girq->num_parents = 0;
+ girq->parents = NULL;
+ girq->parent_handler = NULL;
+ girq->handler = handle_bad_irq;
+
+ /*
+ * Directly request the irq here instead of passing
+ * a flow-handler because the irq is shared.
+ */
+ ret = devm_request_irq(dev, irq, mlxbf3_gpio_irq_handler,
+ IRQF_SHARED, dev_name(dev), gs);
+ if (ret)
+ return dev_err_probe(dev, ret, "failed to request IRQ");
}
platform_set_drvdata(pdev, gs);
--
2.43.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v2 2/2] gpio: mlxbf3: use platform_get_irq_optional()
2025-08-12 13:39 [PATCH v2 0/2] gpio: mlxbf3: revert device name logic David Thompson
2025-08-12 13:39 ` [PATCH v2 1/2] Revert "gpio: mlxbf3: only get IRQ for device instance 0" David Thompson
@ 2025-08-12 13:39 ` David Thompson
1 sibling, 0 replies; 3+ messages in thread
From: David Thompson @ 2025-08-12 13:39 UTC (permalink / raw)
To: linus.walleij, brgl, andriy.shevchenko, mika.westerberg
Cc: linux-gpio, linux-kernel, David Thompson, stable
The gpio-mlxbf3 driver interfaces with two GPIO controllers,
device instance 0 and 1. There is a single IRQ resource shared
between the two controllers, and it is found in the ACPI table for
device instance 0. The driver should not use platform_get_irq(),
otherwise this error is logged when probing instance 1:
mlxbf3_gpio MLNXBF33:01: error -ENXIO: IRQ index 0 not found
Cc: stable@vger.kernel.org
Fixes: cd33f216d241 ("gpio: mlxbf3: Add gpio driver support")
Signed-off-by: David Thompson <davthompson@nvidia.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/gpio/gpio-mlxbf3.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpio/gpio-mlxbf3.c b/drivers/gpio/gpio-mlxbf3.c
index 10ea71273c89..ed29b07d16c1 100644
--- a/drivers/gpio/gpio-mlxbf3.c
+++ b/drivers/gpio/gpio-mlxbf3.c
@@ -227,7 +227,7 @@ static int mlxbf3_gpio_probe(struct platform_device *pdev)
gc->owner = THIS_MODULE;
gc->add_pin_ranges = mlxbf3_gpio_add_pin_ranges;
- irq = platform_get_irq(pdev, 0);
+ irq = platform_get_irq_optional(pdev, 0);
if (irq >= 0) {
girq = &gs->gc.irq;
gpio_irq_chip_set_chip(girq, &gpio_mlxbf3_irqchip);
--
2.43.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-08-12 13:40 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-12 13:39 [PATCH v2 0/2] gpio: mlxbf3: revert device name logic David Thompson
2025-08-12 13:39 ` [PATCH v2 1/2] Revert "gpio: mlxbf3: only get IRQ for device instance 0" David Thompson
2025-08-12 13:39 ` [PATCH v2 2/2] gpio: mlxbf3: use platform_get_irq_optional() David Thompson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).