Commit 744270b3 authored by Beleswar Padhi's avatar Beleswar Padhi Committed by Mathieu Poirier
Browse files

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



The mem_release() implementations in the TI K3 R5, DSP and M4 remoteproc
drivers release the reserved memory of the device, which get auto
triggered upon device removal.

Refactor these functions into ti_k3_common.c driver as k3_mem_release()
and use this common function 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-35-b-padhi@ti.com


Signed-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
parent c1724028
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -461,5 +461,13 @@ int k3_rproc_of_get_memories(struct platform_device *pdev,
}
EXPORT_SYMBOL_GPL(k3_rproc_of_get_memories);

void k3_mem_release(void *data)
{
	struct device *dev = data;

	of_reserved_mem_device_release(dev);
}
EXPORT_SYMBOL_GPL(k3_mem_release);

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("TI K3 common Remoteproc code");
+1 −0
Original line number Diff line number Diff line
@@ -112,4 +112,5 @@ void *k3_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len,
			bool *is_iomem);
int k3_rproc_of_get_memories(struct platform_device *pdev,
			     struct k3_rproc *kproc);
void k3_mem_release(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_mem_release(void *data)
{
	struct device *dev = data;

	of_reserved_mem_device_release(dev);
}

static int k3_dsp_reserved_mem_init(struct k3_rproc *kproc)
{
	struct device *dev = kproc->dev;
@@ -102,7 +95,7 @@ static int k3_dsp_reserved_mem_init(struct k3_rproc *kproc)
			ERR_PTR(ret));
		return ret;
	}
	ret = devm_add_action_or_reset(dev, k3_dsp_mem_release, dev);
	ret = devm_add_action_or_reset(dev, k3_mem_release, dev);
	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_rproc_dev_mem_release(void *data)
{
	struct device *dev = data;

	of_reserved_mem_device_release(dev);
}

static int k3_m4_reserved_mem_init(struct k3_rproc *kproc)
{
	struct device *dev = kproc->dev;
@@ -56,7 +49,7 @@ static int k3_m4_reserved_mem_init(struct k3_rproc *kproc)
		dev_err(dev, "device cannot initialize DMA pool (%d)\n", ret);
		return ret;
	}
	ret = devm_add_action_or_reset(dev, k3_m4_rproc_dev_mem_release, dev);
	ret = devm_add_action_or_reset(dev, k3_mem_release, dev);
	if (ret)
		return ret;

+1 −8
Original line number Diff line number Diff line
@@ -761,13 +761,6 @@ static int k3_r5_rproc_configure(struct k3_rproc *kproc)
	return ret;
}

static void k3_r5_mem_release(void *data)
{
	struct device *dev = data;

	of_reserved_mem_device_release(dev);
}

static int k3_r5_reserved_mem_init(struct k3_rproc *kproc)
{
	struct device *dev = kproc->dev;
@@ -798,7 +791,7 @@ static int k3_r5_reserved_mem_init(struct k3_rproc *kproc)
		return ret;
	}

	ret = devm_add_action_or_reset(dev, k3_r5_mem_release, dev);
	ret = devm_add_action_or_reset(dev, k3_mem_release, dev);
	if (ret)
		return ret;