Commit 5779f6f9 authored by Beleswar Padhi's avatar Beleswar Padhi Committed by Mathieu Poirier
Browse files

remoteproc: k3: Refactor release_tsp() functions into common driver



The release_tsp() implementations in the TI K3 R5, DSP and M4 remoteproc
drivers release the TI-SCI processor control of a remote processor,
which is auto triggered upon device removal.

Refactor these functions into ti_k3_common.c driver as k3_release_tsp()
and use this common function throughout in R5, DSP and M4 drivers.

Signed-off-by: default avatarBeleswar Padhi <b-padhi@ti.com>
Tested-by: default avatarJudith Mendez <jm@ti.com>
Reviewed-by: default avatarAndrew Davis <afd@ti.com>
Link: https://lore.kernel.org/r/20250513054510.3439842-37-b-padhi@ti.com


Signed-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
parent c52d5f1d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -539,5 +539,13 @@ int k3_reserved_mem_init(struct k3_rproc *kproc)
}
EXPORT_SYMBOL_GPL(k3_reserved_mem_init);

void k3_release_tsp(void *data)
{
	struct ti_sci_proc *tsp = data;

	ti_sci_proc_release(tsp);
}
EXPORT_SYMBOL_GPL(k3_release_tsp);

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("TI K3 common Remoteproc code");
+1 −0
Original line number Diff line number Diff line
@@ -114,4 +114,5 @@ int k3_rproc_of_get_memories(struct platform_device *pdev,
			     struct k3_rproc *kproc);
void k3_mem_release(void *data);
int k3_reserved_mem_init(struct k3_rproc *kproc);
void k3_release_tsp(void *data);
#endif /* REMOTEPROC_TI_K3_COMMON_H */
+1 −8
Original line number Diff line number Diff line
@@ -66,13 +66,6 @@ static const struct rproc_ops k3_dsp_rproc_ops = {
	.get_loaded_rsc_table	= k3_get_loaded_rsc_table,
};

static void k3_dsp_release_tsp(void *data)
{
	struct ti_sci_proc *tsp = data;

	ti_sci_proc_release(tsp);
}

static int k3_dsp_rproc_probe(struct platform_device *pdev)
{
	struct device *dev = &pdev->dev;
@@ -136,7 +129,7 @@ static int k3_dsp_rproc_probe(struct platform_device *pdev)
		dev_err_probe(dev, ret, "ti_sci_proc_request failed\n");
		return ret;
	}
	ret = devm_add_action_or_reset(dev, k3_dsp_release_tsp, kproc->tsp);
	ret = devm_add_action_or_reset(dev, k3_release_tsp, kproc->tsp);
	if (ret)
		return ret;

+1 −8
Original line number Diff line number Diff line
@@ -21,13 +21,6 @@
#include "ti_sci_proc.h"
#include "ti_k3_common.h"

static void k3_m4_release_tsp(void *data)
{
	struct ti_sci_proc *tsp = data;

	ti_sci_proc_release(tsp);
}

static const struct rproc_ops k3_m4_rproc_ops = {
	.prepare = k3_rproc_prepare,
	.unprepare = k3_rproc_unprepare,
@@ -93,7 +86,7 @@ static int k3_m4_rproc_probe(struct platform_device *pdev)
	ret = ti_sci_proc_request(kproc->tsp);
	if (ret < 0)
		return dev_err_probe(dev, ret, "ti_sci_proc_request failed\n");
	ret = devm_add_action_or_reset(dev, k3_m4_release_tsp, kproc->tsp);
	ret = devm_add_action_or_reset(dev, k3_release_tsp, kproc->tsp);
	if (ret)
		return ret;

+1 −8
Original line number Diff line number Diff line
@@ -1017,13 +1017,6 @@ 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_cluster_rproc_init(struct platform_device *pdev)
{
	struct k3_r5_cluster *cluster = platform_get_drvdata(pdev);
@@ -1109,7 +1102,7 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev)
			goto out;
		}

		ret = devm_add_action_or_reset(cdev, k3_r5_release_tsp, kproc->tsp);
		ret = devm_add_action_or_reset(cdev, k3_release_tsp, kproc->tsp);
		if (ret)
			goto out;
	}