mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-02 01:08:26 -04:00
mailbox: mtk-cmdq: Add cmdq private data to cmdq_pkt for generating instruction
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. Signed-off-by: Jason-JH Lin <jason-jh.lin@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
This commit is contained in:
@@ -104,6 +104,14 @@ static inline dma_addr_t cmdq_revert_gce_addr(u32 addr, const struct gce_plat *p
|
||||
return (dma_addr_t)addr << pdata->shift;
|
||||
}
|
||||
|
||||
void cmdq_get_mbox_priv(struct mbox_chan *chan, struct cmdq_mbox_priv *priv)
|
||||
{
|
||||
struct cmdq *cmdq = container_of(chan->mbox, struct cmdq, mbox);
|
||||
|
||||
priv->shift_pa = cmdq->pdata->shift;
|
||||
}
|
||||
EXPORT_SYMBOL(cmdq_get_mbox_priv);
|
||||
|
||||
u8 cmdq_get_shift_pa(struct mbox_chan *chan)
|
||||
{
|
||||
struct cmdq *cmdq = container_of(chan->mbox, struct cmdq, mbox);
|
||||
|
||||
@@ -70,13 +70,31 @@ struct cmdq_cb_data {
|
||||
struct cmdq_pkt *pkt;
|
||||
};
|
||||
|
||||
struct cmdq_mbox_priv {
|
||||
u8 shift_pa;
|
||||
};
|
||||
|
||||
struct cmdq_pkt {
|
||||
void *va_base;
|
||||
dma_addr_t pa_base;
|
||||
size_t cmd_buf_size; /* command occupied size */
|
||||
size_t buf_size; /* real buffer size */
|
||||
struct cmdq_mbox_priv priv; /* for generating instruction */
|
||||
};
|
||||
|
||||
/**
|
||||
* cmdq_get_mbox_priv() - get the private data of mailbox channel
|
||||
* @chan: mailbox channel
|
||||
* @priv: pointer to store the private data of mailbox channel
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This function should be called before generating the GCE instruction.
|
||||
*/
|
||||
void cmdq_get_mbox_priv(struct mbox_chan *chan, struct cmdq_mbox_priv *priv);
|
||||
|
||||
/**
|
||||
* cmdq_get_shift_pa() - get the shift bits of physical address
|
||||
* @chan: mailbox channel
|
||||
|
||||
Reference in New Issue
Block a user