<html><body><p>
<pre>
On Fri, 2025-04-25 at 17:28 +0800, Jason-JH Lin wrote:
> Add the cmdq_mbox_priv structure to store the private data of GCE,
> such as the shift bits of the physical address. Then, include the
> cmdq_mbox_priv structure within the cmdq_pkt structure.
>
> This allows CMDQ users to utilize the private data in cmdq_pkt to
> generate GCE instructions when needed. Additionally, having
> cmdq_mbox_priv makes it easier to expand and reference other GCE
> private data in the future.
>
> Add cmdq_get_mbox_priv() for CMDQ users to get all the private data
> into the cmdq_mbox_priv of the cmdq_pkt.
>
> Fixes: 0858fde496f8 ("mailbox: cmdq: variablize address shift in
> platform")
> Signed-off-by: Jason-JH Lin <jason-jh.lin@mediatek.com>
> ---
> drivers/mailbox/mtk-cmdq-mailbox.c | 6 +++---
> include/linux/mailbox/mtk-cmdq-mailbox.h | 18 ++++++++++++------
> 2 files changed, 15 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/mailbox/mtk-cmdq-mailbox.c
> b/drivers/mailbox/mtk-cmdq-mailbox.c
> index a3d94f1eb1a3..b18808855680 100644
> --- a/drivers/mailbox/mtk-cmdq-mailbox.c
> +++ b/drivers/mailbox/mtk-cmdq-mailbox.c
> @@ -102,13 +102,13 @@ static inline dma_addr_t
> cmdq_reg_revert_addr(u32 addr, const struct gce_plat *p
> return ((dma_addr_t)addr << pdata->shift);
> }
>
> -u8 cmdq_get_shift_pa(struct mbox_chan *chan)
> +void cmdq_get_mbox_priv(struct mbox_chan *chan, struct
> cmdq_mbox_priv *priv)
> {
> struct cmdq *cmdq = container_of(chan->mbox, struct cmdq,
> mbox);
>
> -return cmdq->pdata->shift;
> +priv->shift_pa = cmdq->pdata->shift;
> }
> -EXPORT_SYMBOL(cmdq_get_shift_pa);
> +EXPORT_SYMBOL(cmdq_get_mbox_priv);
>
> static void cmdq_gctl_value_toggle(struct cmdq *cmdq, bool
> ddr_enable)
> {
> diff --git a/include/linux/mailbox/mtk-cmdq-mailbox.h
> b/include/linux/mailbox/mtk-cmdq-mailbox.h
> index e1555e06e7e5..822958f92135 100644
> --- a/include/linux/mailbox/mtk-cmdq-mailbox.h
> +++ b/include/linux/mailbox/mtk-cmdq-mailbox.h
> @@ -70,23 +70,29 @@ struct cmdq_cb_data {
> struct cmdq_pkt*pkt;
> };
>
> +struct cmdq_mbox_priv {
> +u8 shift_pa;
> +};
> +
> struct cmdq_pkt {
> void*va_base;
> dma_addr_tpa_base;
> size_tcmd_buf_size; /* command occupied
> size */
> size_tbuf_size; /* real buffer size */
> +struct cmdq_mbox_privpriv; /* for generating instruction
> */
> };
>
> /**
> - * cmdq_get_shift_pa() - get the shift bits of physical address
> + * cmdq_get_mbox_priv() - get the private data of mailbox channel
> * @chan: mailbox channel
> + * @priv: pointer to store the private data of mailbox channel
> *
> - * GCE can only fetch the command buffer address from a 32-bit
> register.
> - * Some SOCs support more than 32-bit command buffer address for
> GCE, which
> - * requires some shift bits to make the address fit into the 32-bit
> register.
> + * While generating the GCE instruction to command buffer, the
> private data
> + * of GCE hardware may need to be referenced, such as the shift bits
> of
> + * physical address.
> *
> - * Return: the shift bits of physical address
> + * This function should be called before generating the GCE
> instruction.
> */
> -u8 cmdq_get_shift_pa(struct mbox_chan *chan);
Sorry, I realize that I cannot remove this API directly.
I need to remove it after no one using it, which means [PATCH v5 8/19].
I'll fix this in the next version.
Regards,
Jason-JH Lin
> +void cmdq_get_mbox_priv(struct mbox_chan *chan, struct
> cmdq_mbox_priv *priv);
>
> #endif /* __MTK_CMDQ_MAILBOX_H__ */
</pre>
</p></body></html><!--type:text--><!--{--><pre>************* MEDIATEK Confidentiality Notice
********************
The information contained in this e-mail message (including any
attachments) may be confidential, proprietary, privileged, or otherwise
exempt from disclosure under applicable laws. It is intended to be
conveyed only to the designated recipient(s). Any use, dissemination,
distribution, printing, retaining or copying of this e-mail (including its
attachments) by unintended recipient(s) is strictly prohibited and may
be unlawful. If you are not an intended recipient of this e-mail, or believe
that you have received this e-mail in error, please notify the sender
immediately (by replying to this e-mail), delete any and all copies of
this e-mail (including any attachments) from your system, and do not
disclose the content of this e-mail to any other person. Thank you!
</pre><!--}-->