]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
remoteproc: k3-r5: Add devm action to release tsp
authorBeleswar Padhi <b-padhi@ti.com>
Thu, 19 Dec 2024 11:05:45 +0000 (16:35 +0530)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Mon, 6 Jan 2025 16:52:49 +0000 (09:52 -0700)
Use a device lifecycle managed action to release tsp ti_sci_proc handle.
This helps prevent mistakes like releasing out of order in cleanup
functions and forgetting to release on error paths.

Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
Reviewed-by: Andrew Davis <afd@ti.com>
Link: https://lore.kernel.org/r/20241219110545.1898883-6-b-padhi@ti.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
drivers/remoteproc/ti_k3_r5_remoteproc.c

index 30b72bcb4d689a33ca194c8debeb5656f002ba11..dbc513c5569cbff9ce9b3ca77fe942fdfee3b0b7 100644 (file)
@@ -1487,6 +1487,13 @@ static int k3_r5_core_of_get_sram_memories(struct platform_device *pdev,
        return 0;
 }
 
+static void k3_r5_release_tsp(void *data)
+{
+       struct ti_sci_proc *tsp = data;
+
+       ti_sci_proc_release(tsp);
+}
+
 static int k3_r5_core_of_init(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
@@ -1580,6 +1587,10 @@ static int k3_r5_core_of_init(struct platform_device *pdev)
                goto err;
        }
 
+       ret = devm_add_action_or_reset(dev, k3_r5_release_tsp, core->tsp);
+       if (ret)
+               goto err;
+
        platform_set_drvdata(pdev, core);
        devres_close_group(dev, k3_r5_core_of_init);
 
@@ -1596,13 +1607,7 @@ err:
  */
 static void k3_r5_core_of_exit(struct platform_device *pdev)
 {
-       struct k3_r5_core *core = platform_get_drvdata(pdev);
        struct device *dev = &pdev->dev;
-       int ret;
-
-       ret = ti_sci_proc_release(core->tsp);
-       if (ret)
-               dev_err(dev, "failed to release proc, ret = %d\n", ret);
 
        platform_set_drvdata(pdev, NULL);
        devres_release_group(dev, k3_r5_core_of_init);