From: Beleswar Prasad Padhi <b-padhi@ti.com>
To: Andrew Davis <afd@ti.com>, <andersson@kernel.org>,
<mathieu.poirier@linaro.org>
Cc: <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 v10 13/33] remoteproc: k3: Refactor .kick rproc ops into common driver
Date: Tue, 22 Apr 2025 11:25:10 +0530 [thread overview]
Message-ID: <65960138-8e54-42af-a309-89ca62c23bd9@ti.com> (raw)
In-Reply-To: <4567caaa-3cf6-47a1-beeb-53ee29562ce5@ti.com>
On 21/04/25 20:28, Andrew Davis wrote:
> On 4/17/25 1:19 PM, Beleswar Padhi wrote:
>> The .kick rproc ops implementations in TI K3 R5, DSP and M4 remoteproc
>> drivers sends a mailbox message to the remote processor in the same
>> way. Refactor the implementations into a common function
>> 'k3_rproc_kick()' in the ti_k3_common.c driver.
>>
>> Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
>> ---
>> v10: Changelog:
>> None
>>
>> Link to v9:
>> https://lore.kernel.org/all/20250317120622.1746415-12-b-padhi@ti.com/
>>
>> drivers/remoteproc/ti_k3_common.c | 25 ++++++++++++++++++++++
>> drivers/remoteproc/ti_k3_common.h | 1 +
>> drivers/remoteproc/ti_k3_dsp_remoteproc.c | 22 +------------------
>> drivers/remoteproc/ti_k3_m4_remoteproc.c | 26 +----------------------
>> drivers/remoteproc/ti_k3_r5_remoteproc.c | 17 +--------------
>> 5 files changed, 29 insertions(+), 62 deletions(-)
>>
>> diff --git a/drivers/remoteproc/ti_k3_common.c b/drivers/remoteproc/ti_k3_common.c
>> index 7b45e3b416186..aace308b49b0e 100644
>> --- a/drivers/remoteproc/ti_k3_common.c
>> +++ b/drivers/remoteproc/ti_k3_common.c
>> @@ -80,5 +80,30 @@ void k3_rproc_mbox_callback(struct mbox_client *client, void *data)
>> }
>> EXPORT_SYMBOL_GPL(k3_rproc_mbox_callback);
>> +/*
>> + * Kick the remote processor to notify about pending unprocessed messages.
>> + * The vqid usage is not used and is inconsequential, as the kick is performed
>> + * through a simulated GPIO (a bit in an IPC interrupt-triggering register),
>> + * the remote processor is expected to process both its Tx and Rx virtqueues.
>> + */
>
> This comment is wrong. Looks like this is a copy paste error that ended up
> in every ti_k3_*_remoteproc.c driver. This whole "simulated GPIO" thing
> is only true for the K2 DSP (keystone_remoteproc.c), all the K3 devices
> have proper mailbox interrupts.
>
> Anyway, no need to remove it here, this patch is just a refactor and since
> it was already in every driver you are factoring this out from I'd suggest
> fixing it in a later patch.
Sure, I can put a patch later to fix this comment.
Thanks,
Beleswar
>
> For this patch,
>
> Acked-by: Andrew Davis <afd@ti.com>
>
>> +void k3_rproc_kick(struct rproc *rproc, int vqid)
>> +{
>> + struct k3_rproc *kproc = rproc->priv;
>> + struct device *dev = kproc->dev;
>> + u32 msg = (u32)vqid;
>> + int ret;
>> +
>> + /*
>> + * Send the index of the triggered virtqueue in the mailbox payload.
>> + * NOTE: msg is cast to uintptr_t to prevent compiler warnings when
>> + * void* is 64bit. It is safely cast back to u32 in the mailbox driver.
>> + */
>> + ret = mbox_send_message(kproc->mbox, (void *)(uintptr_t)msg);
>> + if (ret < 0)
>> + dev_err(dev, "failed to send mailbox message, status = %d\n",
>> + ret);
>> +}
>> +EXPORT_SYMBOL_GPL(k3_rproc_kick);
>> +
>> MODULE_LICENSE("GPL");
>> MODULE_DESCRIPTION("TI K3 common Remoteproc code");
>> diff --git a/drivers/remoteproc/ti_k3_common.h b/drivers/remoteproc/ti_k3_common.h
>> index 785bb4b17d02f..6ae7ac4ec5696 100644
>> --- a/drivers/remoteproc/ti_k3_common.h
>> +++ b/drivers/remoteproc/ti_k3_common.h
>> @@ -89,4 +89,5 @@ struct k3_rproc {
>> };
>> void k3_rproc_mbox_callback(struct mbox_client *client, void *data);
>> +void k3_rproc_kick(struct rproc *rproc, int vqid);
>> #endif /* REMOTEPROC_TI_K3_COMMON_H */
>> diff --git a/drivers/remoteproc/ti_k3_dsp_remoteproc.c b/drivers/remoteproc/ti_k3_dsp_remoteproc.c
>> index 7bd1d5a790cb2..476f4e69d2c11 100644
>> --- a/drivers/remoteproc/ti_k3_dsp_remoteproc.c
>> +++ b/drivers/remoteproc/ti_k3_dsp_remoteproc.c
>> @@ -24,26 +24,6 @@
>> #define KEYSTONE_RPROC_LOCAL_ADDRESS_MASK (SZ_16M - 1)
>> -/*
>> - * Kick the remote processor to notify about pending unprocessed messages.
>> - * The vqid usage is not used and is inconsequential, as the kick is performed
>> - * through a simulated GPIO (a bit in an IPC interrupt-triggering register),
>> - * the remote processor is expected to process both its Tx and Rx virtqueues.
>> - */
>> -static void k3_dsp_rproc_kick(struct rproc *rproc, int vqid)
>> -{
>> - struct k3_rproc *kproc = rproc->priv;
>> - struct device *dev = rproc->dev.parent;
>> - mbox_msg_t msg = (mbox_msg_t)vqid;
>> - int ret;
>> -
>> - /* send the index of the triggered virtqueue in the mailbox payload */
>> - ret = mbox_send_message(kproc->mbox, (void *)msg);
>> - if (ret < 0)
>> - dev_err(dev, "failed to send mailbox message (%pe)\n",
>> - ERR_PTR(ret));
>> -}
>> -
>> /* Put the DSP processor into reset */
>> static int k3_dsp_rproc_reset(struct k3_rproc *kproc)
>> {
>> @@ -342,7 +322,7 @@ static void *k3_dsp_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool
>> static const struct rproc_ops k3_dsp_rproc_ops = {
>> .start = k3_dsp_rproc_start,
>> .stop = k3_dsp_rproc_stop,
>> - .kick = k3_dsp_rproc_kick,
>> + .kick = k3_rproc_kick,
>> .da_to_va = k3_dsp_rproc_da_to_va,
>> };
>> diff --git a/drivers/remoteproc/ti_k3_m4_remoteproc.c b/drivers/remoteproc/ti_k3_m4_remoteproc.c
>> index a1bcc4b265dfe..8a6917259ce60 100644
>> --- a/drivers/remoteproc/ti_k3_m4_remoteproc.c
>> +++ b/drivers/remoteproc/ti_k3_m4_remoteproc.c
>> @@ -21,30 +21,6 @@
>> #include "ti_sci_proc.h"
>> #include "ti_k3_common.h"
>> -/*
>> - * Kick the remote processor to notify about pending unprocessed messages.
>> - * The vqid usage is not used and is inconsequential, as the kick is performed
>> - * through a simulated GPIO (a bit in an IPC interrupt-triggering register),
>> - * the remote processor is expected to process both its Tx and Rx virtqueues.
>> - */
>> -static void k3_m4_rproc_kick(struct rproc *rproc, int vqid)
>> -{
>> - struct k3_rproc *kproc = rproc->priv;
>> - struct device *dev = kproc->dev;
>> - u32 msg = (u32)vqid;
>> - int ret;
>> -
>> - /*
>> - * Send the index of the triggered virtqueue in the mailbox payload.
>> - * NOTE: msg is cast to uintptr_t to prevent compiler warnings when
>> - * void* is 64bit. It is safely cast back to u32 in the mailbox driver.
>> - */
>> - ret = mbox_send_message(kproc->mbox, (void *)(uintptr_t)msg);
>> - if (ret < 0)
>> - dev_err(dev, "failed to send mailbox message, status = %d\n",
>> - ret);
>> -}
>> -
>> static int k3_m4_rproc_ping_mbox(struct k3_rproc *kproc)
>> {
>> struct device *dev = kproc->dev;
>> @@ -448,7 +424,7 @@ static const struct rproc_ops k3_m4_rproc_ops = {
>> .stop = k3_m4_rproc_stop,
>> .attach = k3_m4_rproc_attach,
>> .detach = k3_m4_rproc_detach,
>> - .kick = k3_m4_rproc_kick,
>> + .kick = k3_rproc_kick,
>> .da_to_va = k3_m4_rproc_da_to_va,
>> .get_loaded_rsc_table = k3_m4_get_loaded_rsc_table,
>> };
>> diff --git a/drivers/remoteproc/ti_k3_r5_remoteproc.c b/drivers/remoteproc/ti_k3_r5_remoteproc.c
>> index a1dfbe383c13c..dedc9456983e0 100644
>> --- a/drivers/remoteproc/ti_k3_r5_remoteproc.c
>> +++ b/drivers/remoteproc/ti_k3_r5_remoteproc.c
>> @@ -129,21 +129,6 @@ struct k3_r5_core {
>> bool released_from_reset;
>> };
>> -/* kick a virtqueue */
>> -static void k3_r5_rproc_kick(struct rproc *rproc, int vqid)
>> -{
>> - struct k3_rproc *kproc = rproc->priv;
>> - struct device *dev = rproc->dev.parent;
>> - mbox_msg_t msg = (mbox_msg_t)vqid;
>> - int ret;
>> -
>> - /* send the index of the triggered virtqueue in the mailbox payload */
>> - ret = mbox_send_message(kproc->mbox, (void *)msg);
>> - if (ret < 0)
>> - dev_err(dev, "failed to send mailbox message, status = %d\n",
>> - ret);
>> -}
>> -
>> static int k3_r5_split_reset(struct k3_rproc *kproc)
>> {
>> int ret;
>> @@ -735,7 +720,7 @@ static const struct rproc_ops k3_r5_rproc_ops = {
>> .unprepare = k3_r5_rproc_unprepare,
>> .start = k3_r5_rproc_start,
>> .stop = k3_r5_rproc_stop,
>> - .kick = k3_r5_rproc_kick,
>> + .kick = k3_rproc_kick,
>> .da_to_va = k3_r5_rproc_da_to_va,
>> };
>>
next prev parent reply other threads:[~2025-04-22 5:55 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-17 18:19 [PATCH v10 00/33] Refactor TI K3 R5, DSP and M4 Remoteproc Drivers Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 01/33] remoteproc: k3-r5: Drop check performed in k3_r5_rproc_{mbox_callback/kick} Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 02/33] remoteproc: k3-dsp: Drop check performed in k3_dsp_rproc_{mbox_callback/kick} Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 03/33] remoteproc: k3-r5: Refactor sequential core power up/down operations Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 04/33] remoteproc: k3-r5: Re-order internal memory initialization functions Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 05/33] remoteproc: k3-r5: Re-order k3_r5_release_tsp() function Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 06/33] remoteproc: k3-r5: Refactor Data Structures to Align with DSP and M4 Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 07/33] remoteproc: k3-r5: Use k3_r5_rproc_mem_data structure for memory info Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 08/33] remoteproc: k3-{m4/dsp}: Add a void ptr member in rproc internal struct Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 09/33] remoteproc: k3-m4: Add pointer to rproc struct within k3_m4_rproc Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 10/33] remoteproc: k3-m4: Use k3_rproc_mem_data structure for memory info Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 11/33] remoteproc: k3: Refactor shared data structures Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 12/33] remoteproc: k3: Refactor mailbox rx_callback functions into common driver Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 13/33] remoteproc: k3: Refactor .kick rproc ops " Beleswar Padhi
2025-04-21 14:58 ` Andrew Davis
2025-04-22 5:55 ` Beleswar Prasad Padhi [this message]
2025-04-17 18:19 ` [PATCH v10 14/33] remoteproc: k3-dsp: Correct Reset logic for devices without lresets Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 15/33] remoteproc: k3: Refactor rproc_reset() implementation into common driver Beleswar Padhi
2025-04-21 14:42 ` Andrew Davis
2025-04-22 5:53 ` Beleswar Prasad Padhi
2025-04-22 14:21 ` Andrew Davis
2025-04-23 8:24 ` Beleswar Prasad Padhi
2025-04-17 18:19 ` [PATCH v10 16/33] remoteproc: k3-dsp: Correct Reset deassert logic for devices w/o lresets Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 17/33] remoteproc: k3: Refactor rproc_release() implementation into common driver Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 18/33] remoteproc: k3-m4: Ping the mbox while acquiring the channel Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 19/33] remoteproc: k3: Refactor rproc_request_mbox() implementations into common driver Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 20/33] remoteproc: k3-dsp: Don't override rproc ops in IPC-only mode Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 21/33] remoteproc: k3-dsp: Assert local reset during .prepare callback Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 22/33] remoteproc: k3: Refactor .prepare rproc ops into common driver Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 23/33] remoteproc: k3: Refactor .unprepare " Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 24/33] remoteproc: k3: Refactor .start " Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 25/33] remoteproc: k3: Refactor .stop " Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 26/33] remoteproc: k3: Refactor .attach " Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 27/33] remoteproc: k3: Refactor .detach " Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 28/33] remoteproc: k3: Refactor .get_loaded_rsc_table " Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 29/33] remoteproc: k3: Refactor .da_to_va rproc " Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 30/33] remoteproc: k3: Refactor of_get_memories() functions " Beleswar Padhi
2025-04-17 18:19 ` [PATCH v10 31/33] remoteproc: k3: Refactor mem_release() " Beleswar Padhi
2025-04-17 18:20 ` [PATCH v10 32/33] remoteproc: k3: Refactor reserved_mem_init() " Beleswar Padhi
2025-04-17 18:20 ` [PATCH v10 33/33] remoteproc: k3: Refactor release_tsp() " Beleswar Padhi
2025-04-23 21:06 ` [PATCH v10 00/33] Refactor TI K3 R5, DSP and M4 Remoteproc Drivers Judith Mendez
2025-04-24 3:48 ` 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=65960138-8e54-42af-a309-89ca62c23bd9@ti.com \
--to=b-padhi@ti.com \
--cc=afd@ti.com \
--cc=andersson@kernel.org \
--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=mathieu.poirier@linaro.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.