Commit 8c8df9bd authored by Beleswar Padhi's avatar Beleswar Padhi Committed by Mathieu Poirier
Browse files

remoteproc: k3-r5: Add devm action to release tsp



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: default avatarBeleswar Padhi <b-padhi@ti.com>
Reviewed-by: default avatarAndrew Davis <afd@ti.com>
Link: https://lore.kernel.org/r/20241219110545.1898883-6-b-padhi@ti.com


Signed-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
parent de182d2f
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -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 @@ static int k3_r5_core_of_init(struct platform_device *pdev)
 */
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);