From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Beleswar Padhi <b-padhi@ti.com>
Cc: andersson@kernel.org, afd@ti.com, hnagalla@ti.com,
u-kumar1@ti.com, jm@ti.com, jan.kiszka@siemens.com,
christophe.jaillet@wanadoo.fr, jkangas@redhat.com,
eballetbo@redhat.com, linux-remoteproc@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v11 10/35] remoteproc: k3-m4: Use k3_rproc_mem_data structure for memory info
Date: Wed, 7 May 2025 10:48:08 -0600 [thread overview]
Message-ID: <aBuOyKWV-EsFXU3N@p14s> (raw)
In-Reply-To: <20250425104135.830255-11-b-padhi@ti.com>
On Fri, Apr 25, 2025 at 04:11:10PM +0530, Beleswar Padhi wrote:
> The ti_k3_m4_remoteproc.c driver previously hardcoded device memory
> region addresses and names. Change this to use the k3_rproc_mem_data
> structure to store memory information. This aligns with DSP and R5
> drivers, and can be refactored out later.
>
> Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
> Tested-by: Judith Mendez <jm@ti.com>
> ---
> v11: Changelog:
> 1. Carried T/B tag.
>
> Link to v10:
> https://lore.kernel.org/all/20250417182001.3903905-11-b-padhi@ti.com/
>
> v10: Changelog:
> None
>
> Link to v9:
> https://lore.kernel.org/all/20250317120622.1746415-6-b-padhi@ti.com/
>
> drivers/remoteproc/ti_k3_m4_remoteproc.c | 60 ++++++++++++++++++------
> 1 file changed, 45 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/remoteproc/ti_k3_m4_remoteproc.c b/drivers/remoteproc/ti_k3_m4_remoteproc.c
> index d0ee7a8d460d4..e83bef7cfddfd 100644
> --- a/drivers/remoteproc/ti_k3_m4_remoteproc.c
> +++ b/drivers/remoteproc/ti_k3_m4_remoteproc.c
> @@ -20,9 +20,6 @@
> #include "remoteproc_internal.h"
> #include "ti_sci_proc.h"
>
> -#define K3_M4_IRAM_DEV_ADDR 0x00000
> -#define K3_M4_DRAM_DEV_ADDR 0x30000
> -
> /**
> * struct k3_m4_rproc_mem - internal memory structure
> * @cpu_addr: MPU virtual address of the memory region
> @@ -38,15 +35,29 @@ struct k3_m4_rproc_mem {
> };
>
> /**
> - * struct k3_m4_rproc_mem_data - memory definitions for a remote processor
> + * struct k3_m4_mem_data - memory definitions for a remote processor
> * @name: name for this memory entry
> * @dev_addr: device address for the memory entry
> */
> -struct k3_m4_rproc_mem_data {
> +struct k3_m4_mem_data {
> const char *name;
> const u32 dev_addr;
> };
>
> +/**
> + * struct k3_m4_dev_data - device data structure for a M4 core
> + * @mems: pointer to memory definitions for a M4 core
> + * @num_mems: number of memory regions in @mems
> + * @boot_align_addr: boot vector address alignment granularity
> + * @uses_lreset: flag to denote the need for local reset management
> + */
> +struct k3_m4_dev_data {
> + const struct k3_m4_mem_data *mems;
> + u32 num_mems;
> + u32 boot_align_addr;
> + bool uses_lreset;
> +};
> +
> /**
> * struct k3_m4_rproc - k3 remote processor driver structure
> * @dev: cached device pointer
> @@ -56,6 +67,7 @@ struct k3_m4_rproc_mem_data {
> * @rmem: reserved memory regions data
> * @num_rmems: number of reserved memory regions
> * @reset: reset control handle
> + * @data: pointer to M4-specific device data
> * @tsp: TI-SCI processor control handle
> * @ti_sci: TI-SCI handle
> * @ti_sci_id: TI-SCI device identifier
> @@ -71,6 +83,7 @@ struct k3_m4_rproc {
> struct k3_m4_rproc_mem *rmem;
> int num_rmems;
> struct reset_control *reset;
> + const struct k3_m4_dev_data *data;
> struct ti_sci_proc *tsp;
> const struct ti_sci_handle *ti_sci;
> u32 ti_sci_id;
> @@ -336,14 +349,13 @@ static void *k3_m4_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool
> static int k3_m4_rproc_of_get_memories(struct platform_device *pdev,
> struct k3_m4_rproc *kproc)
> {
> - static const char * const mem_names[] = { "iram", "dram" };
> - static const u32 mem_addrs[] = { K3_M4_IRAM_DEV_ADDR, K3_M4_DRAM_DEV_ADDR };
> + const struct k3_m4_dev_data *data = kproc->data;
> struct device *dev = &pdev->dev;
> struct resource *res;
> int num_mems;
> int i;
>
> - num_mems = ARRAY_SIZE(mem_names);
> + num_mems = kproc->data->num_mems;
Same a previous comment.
> kproc->mem = devm_kcalloc(kproc->dev, num_mems,
> sizeof(*kproc->mem), GFP_KERNEL);
> if (!kproc->mem)
> @@ -351,17 +363,17 @@ static int k3_m4_rproc_of_get_memories(struct platform_device *pdev,
>
> for (i = 0; i < num_mems; i++) {
> res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
> - mem_names[i]);
> + data->mems[i].name);
> if (!res) {
> dev_err(dev, "found no memory resource for %s\n",
> - mem_names[i]);
> + data->mems[i].name);
> return -EINVAL;
> }
> if (!devm_request_mem_region(dev, res->start,
> resource_size(res),
> dev_name(dev))) {
> dev_err(dev, "could not request %s region for resource\n",
> - mem_names[i]);
> + data->mems[i].name);
> return -EBUSY;
> }
>
> @@ -369,15 +381,15 @@ static int k3_m4_rproc_of_get_memories(struct platform_device *pdev,
> resource_size(res));
> if (!kproc->mem[i].cpu_addr) {
> dev_err(dev, "failed to map %s memory\n",
> - mem_names[i]);
> + data->mems[i].name);
> return -ENOMEM;
> }
> kproc->mem[i].bus_addr = res->start;
> - kproc->mem[i].dev_addr = mem_addrs[i];
> + kproc->mem[i].dev_addr = data->mems[i].dev_addr;
> kproc->mem[i].size = resource_size(res);
>
> dev_dbg(dev, "memory %8s: bus addr %pa size 0x%zx va %pK da 0x%x\n",
> - mem_names[i], &kproc->mem[i].bus_addr,
> + data->mems[i].name, &kproc->mem[i].bus_addr,
> kproc->mem[i].size, kproc->mem[i].cpu_addr,
> kproc->mem[i].dev_addr);
> }
> @@ -563,12 +575,17 @@ static int k3_m4_rproc_probe(struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> struct k3_m4_rproc *kproc;
> + const struct k3_m4_dev_data *data;
> struct rproc *rproc;
> const char *fw_name;
> bool r_state = false;
> bool p_state = false;
> int ret;
>
> + data = of_device_get_match_data(dev);
> + if (!data)
> + return -ENODEV;
> +
> ret = rproc_of_parse_firmware(dev, 0, &fw_name);
> if (ret)
> return dev_err_probe(dev, ret, "failed to parse firmware-name property\n");
> @@ -583,6 +600,7 @@ static int k3_m4_rproc_probe(struct platform_device *pdev)
> kproc = rproc->priv;
> kproc->dev = dev;
> kproc->rproc = rproc;
> + kproc->data = data;
> platform_set_drvdata(pdev, rproc);
>
> kproc->ti_sci = devm_ti_sci_get_by_phandle(dev, "ti,sci");
> @@ -650,8 +668,20 @@ static int k3_m4_rproc_probe(struct platform_device *pdev)
> return 0;
> }
>
> +static const struct k3_m4_mem_data am64_m4_mems[] = {
> + { .name = "iram", .dev_addr = 0x0 },
> + { .name = "dram", .dev_addr = 0x30000 },
> +};
> +
> +static const struct k3_m4_dev_data am64_m4_data = {
> + .mems = am64_m4_mems,
> + .num_mems = ARRAY_SIZE(am64_m4_mems),
> + .boot_align_addr = SZ_1K,
> + .uses_lreset = true,
> +};
> +
> static const struct of_device_id k3_m4_of_match[] = {
> - { .compatible = "ti,am64-m4fss", },
> + { .compatible = "ti,am64-m4fss", .data = &am64_m4_data, },
> { /* sentinel */ },
> };
> MODULE_DEVICE_TABLE(of, k3_m4_of_match);
> --
> 2.34.1
>
next prev parent reply other threads:[~2025-05-07 16:48 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-25 10:41 [PATCH v11 00/35] Refactor TI K3 R5, DSP and M4 Remoteproc Drivers Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 01/35] remoteproc: k3-r5: Drop check performed in k3_r5_rproc_{mbox_callback/kick} Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 02/35] remoteproc: k3-dsp: Drop check performed in k3_dsp_rproc_{mbox_callback/kick} Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 03/35] remoteproc: k3-r5: Refactor sequential core power up/down operations Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 04/35] remoteproc: k3-r5: Re-order internal memory initialization functions Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 05/35] remoteproc: k3-r5: Re-order k3_r5_release_tsp() function Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 06/35] remoteproc: k3-r5: Refactor Data Structures to Align with DSP and M4 Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 07/35] remoteproc: k3-r5: Use k3_r5_rproc_mem_data structure for memory info Beleswar Padhi
2025-05-07 16:30 ` Mathieu Poirier
2025-04-25 10:41 ` [PATCH v11 08/35] remoteproc: k3-{m4/dsp}: Add a void ptr member in rproc internal struct Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 09/35] remoteproc: k3-m4: Add pointer to rproc struct within k3_m4_rproc Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 10/35] remoteproc: k3-m4: Use k3_rproc_mem_data structure for memory info Beleswar Padhi
2025-05-07 16:48 ` Mathieu Poirier [this message]
2025-05-07 16:57 ` Mathieu Poirier
2025-04-25 10:41 ` [PATCH v11 11/35] remoteproc: k3: Refactor shared data structures Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 12/35] remoteproc: k3: Refactor mailbox rx_callback functions into common driver Beleswar Padhi
2025-05-08 15:46 ` Mathieu Poirier
2025-05-09 4:08 ` Beleswar Prasad Padhi
2025-04-25 10:41 ` [PATCH v11 13/35] remoteproc: k3: Refactor .kick rproc ops " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 14/35] remoteproc: k3-dsp: Correct Reset logic for devices without lresets Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 15/35] remoteproc: k3-m4: Introduce central function to put rproc into reset Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 16/35] remoteproc: k3: Refactor rproc_reset() implementation into common driver Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 17/35] remoteproc: k3-dsp: Correct Reset deassert logic for devices w/o lresets Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 18/35] remoteproc: k3-m4: Introduce central function to release rproc from reset Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 19/35] remoteproc: k3: Refactor rproc_release() implementation into common driver Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 20/35] remoteproc: k3-m4: Ping the mbox while acquiring the channel Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 21/35] remoteproc: k3: Refactor rproc_request_mbox() implementations into common driver Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 22/35] remoteproc: k3-dsp: Don't override rproc ops in IPC-only mode Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 23/35] remoteproc: k3-dsp: Assert local reset during .prepare callback Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 24/35] remoteproc: k3: Refactor .prepare rproc ops into common driver Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 25/35] remoteproc: k3: Refactor .unprepare " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 26/35] remoteproc: k3: Refactor .start " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 27/35] remoteproc: k3: Refactor .stop " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 28/35] remoteproc: k3: Refactor .attach " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 29/35] remoteproc: k3: Refactor .detach " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 30/35] remoteproc: k3: Refactor .get_loaded_rsc_table " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 31/35] remoteproc: k3: Refactor .da_to_va rproc " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 32/35] remoteproc: k3: Refactor of_get_memories() functions " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 33/35] remoteproc: k3: Refactor mem_release() " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 34/35] remoteproc: k3: Refactor reserved_mem_init() " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 35/35] remoteproc: k3: Refactor release_tsp() " Beleswar Padhi
2025-04-25 22:42 ` [PATCH v11 00/35] Refactor TI K3 R5, DSP and M4 Remoteproc Drivers Andrew Davis
2025-05-02 15:16 ` Mathieu Poirier
2025-05-09 17:09 ` Mathieu Poirier
2025-05-12 4:08 ` Beleswar Prasad Padhi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aBuOyKWV-EsFXU3N@p14s \
--to=mathieu.poirier@linaro.org \
--cc=afd@ti.com \
--cc=andersson@kernel.org \
--cc=b-padhi@ti.com \
--cc=christophe.jaillet@wanadoo.fr \
--cc=eballetbo@redhat.com \
--cc=hnagalla@ti.com \
--cc=jan.kiszka@siemens.com \
--cc=jkangas@redhat.com \
--cc=jm@ti.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=u-kumar1@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.