gpio: mlxbf3: revert device name logic
Subsystems (2)
cover gpio: mlxbf3: revert device name logic
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.
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(-)
Signature · 1 line
2.43.2
PATCH 1/2 Revert "gpio: mlxbf3: only get IRQ for device instance 0"
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.
--- drivers/gpio/gpio-mlxbf3.c | 54 ++++++++++++++------------------------ 1 file changed, 19 insertions(+), 35 deletions(-)
drivers/gpio/gpio-mlxbf3.c +19 -35
@@ -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);
Signature · 1 line
2.43.2
Re: [PATCH v1 1/2] Revert "gpio: mlxbf3: only get IRQ for device instance 0"
Quoted 8 lines · David Thompson
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.
Quoted 4 lines
Fixes 10af0273a35a ("gpio: mlxbf3: only get IRQ for device instance 0")Signed-off-by David Thompson <[email protected]>---
Ah, yes, it slipped through the crack, I should have paid more attention like with the other one you mentioned.
Thanks!
Bart
PATCH 2/2 gpio: mlxbf3: use platform_get_irq_optional()
In reply to David ThompsonThe 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
--- drivers/gpio/gpio-mlxbf3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpio/gpio-mlxbf3.c +1 -1
@@ -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);
Signature · 1 line
2.43.2
Re: [PATCH v1 2/2] gpio: mlxbf3: use platform_get_irq_optional()
Quoted 6 lines · David Thompson
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_gpioMLNXBF33:01: error-ENXIO: IRQ index 0 not found
Missed Cc to stable@.
Signature · 2 lines
With Best Regards, Andy Shevchenko
Re: [PATCH v1 2/2] gpio: mlxbf3: use platform_get_irq_optional()
Quoted 9 lines · Andy Shevchenko
Quoted 6 lines · David Thompson
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_gpioMLNXBF33:01: error-ENXIO: IRQ index 0 not found
Quoted 7 lines
Missed Cc to stable@.
--
With Best Regards,
Andy Shevchenko
I added it when applying.
Bart
Quoted 4 lines · 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.
Signature · 2 lines
With Best Regards, Andy Shevchenko
Bartosz Golaszewski
AppliedFrom: Bartosz Golaszewski <[email protected]>
Quoted 10 lines · 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.David Thompson (2):
Revert "gpio: mlxbf3: only get IRQ for device instance 0"
gpio: mlxbf3: useplatform_get_irq_optional()[...]
Applied, thanks!
[1/2] Revert "gpio: mlxbf3: only get IRQ for device instance 0"
https://git.kernel.org/brgl/linux/c/56bdf7270ff4f870e2d4bfacdc00161e766dba2d [2/2] gpio: mlxbf3: use platform_get_irq_optional() https://git.kernel.org/brgl/linux/c/810bd9066fb1871b8a9528f31f2fdbf2a8b73bf2
Best regards,
Signature · 1 line
Bartosz Golaszewski <[email protected]>