Messages in this thread Patch in this message |  | | From | Rosen Penev <> | | Subject | [PATCH 3/3] memory: fsl_ifc: Use devm_request_irq and simplify remove | | Date | Wed, 3 Jun 2026 21:28:56 -0700 |
| |
Switch from request_irq to devm_request_irq, eliminating the error path labels and free_irq calls in remove(). Since both IRQs are now devm-managed, the remove function only needs of_platform_depopulate to tear down child devices before devm cleanup fires.
Assisted-by: opencode:big-pickle Signed-off-by: Rosen Penev <rosenp@gmail.com> --- drivers/memory/fsl_ifc.c | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-)
diff --git a/drivers/memory/fsl_ifc.c b/drivers/memory/fsl_ifc.c index effeae0bdacc..6be09a902443 100644 --- a/drivers/memory/fsl_ifc.c +++ b/drivers/memory/fsl_ifc.c @@ -86,12 +86,7 @@ static int fsl_ifc_ctrl_init(struct fsl_ifc_ctrl *ctrl) static void fsl_ifc_ctrl_remove(struct platform_device *dev) { - struct fsl_ifc_ctrl *ctrl = dev_get_drvdata(&dev->dev); - of_platform_depopulate(&dev->dev); - if (ctrl->nand_irq > 0) - free_irq(ctrl->nand_irq, ctrl); - free_irq(ctrl->irq, ctrl); } /* @@ -253,39 +248,31 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev) init_waitqueue_head(&fsl_ifc_ctrl_dev->nand_wait); - ret = request_irq(fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_irq, IRQF_SHARED, - "fsl-ifc", fsl_ifc_ctrl_dev); + ret = devm_request_irq(&dev->dev, fsl_ifc_ctrl_dev->irq, + fsl_ifc_ctrl_irq, IRQF_SHARED, + "fsl-ifc", fsl_ifc_ctrl_dev); if (ret != 0) { dev_err(&dev->dev, "failed to install irq (%d)\n", fsl_ifc_ctrl_dev->irq); - goto err_free_irq; + return ret; } /* get the nand machine irq */ fsl_ifc_ctrl_dev->nand_irq = platform_get_irq_optional(dev, 1); if (fsl_ifc_ctrl_dev->nand_irq > 0) { - ret = request_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_nand_irq, - 0, "fsl-ifc-nand", fsl_ifc_ctrl_dev); + ret = devm_request_irq(&dev->dev, + fsl_ifc_ctrl_dev->nand_irq, + fsl_ifc_nand_irq, 0, + "fsl-ifc-nand", fsl_ifc_ctrl_dev); if (ret != 0) { dev_err(&dev->dev, "failed to install irq (%d)\n", fsl_ifc_ctrl_dev->nand_irq); - goto err_free_irq; + return ret; } } /* legacy dts may still use "simple-bus" compatible */ - ret = of_platform_default_populate(dev->dev.of_node, NULL, &dev->dev); - if (ret) - goto err_free_nandirq; - - return 0; - -err_free_nandirq: - if (fsl_ifc_ctrl_dev->nand_irq > 0) - free_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_ctrl_dev); -err_free_irq: - free_irq(fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_dev); - return ret; + return of_platform_default_populate(dev->dev.of_node, NULL, &dev->dev); } static const struct of_device_id fsl_ifc_match[] = { -- 2.54.0
|  |