Messages in this thread Patch in this message | | | From | Hsiao Chien Sung <> | Subject | [PATCH v2 02/11] soc: mediatek: Support GCE jump to absolute | Date | Mon, 18 Sep 2023 16:41:58 +0800 |
| |
Add a new API to jump to the head of cmdq packet by appending a jump command at the end of it.
Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com> --- drivers/soc/mediatek/mtk-cmdq-helper.c | 16 ++++++++++++++++ include/linux/soc/mediatek/mtk-cmdq.h | 2 ++ 2 files changed, 18 insertions(+)
diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c index b0cd071c4719..e029ce231df1 100644 --- a/drivers/soc/mediatek/mtk-cmdq-helper.c +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c @@ -441,4 +441,20 @@ int cmdq_pkt_flush_async(struct cmdq_pkt *pkt) } EXPORT_SYMBOL(cmdq_pkt_flush_async); +int cmdq_pkt_jump_absolute(struct cmdq_pkt *pkt) +{ + struct cmdq_instruction inst = { 0 }; + u8 shift_pa; + + shift_pa = cmdq_get_shift_pa(((struct cmdq_client *)pkt->cl)->chan); + + /* jump to head of the packet */ + inst.op = CMDQ_CODE_JUMP; + inst.offset = CMDQ_JUMP_RELATIVE; + inst.value = pkt->pa_base >> shift_pa; + + return cmdq_pkt_append_command(pkt, inst); +} +EXPORT_SYMBOL(cmdq_pkt_jump_absolute); + MODULE_LICENSE("GPL v2"); diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h index a253c001c861..106988cc5f01 100644 --- a/include/linux/soc/mediatek/mtk-cmdq.h +++ b/include/linux/soc/mediatek/mtk-cmdq.h @@ -276,6 +276,8 @@ int cmdq_pkt_jump(struct cmdq_pkt *pkt, dma_addr_t addr); */ int cmdq_pkt_finalize(struct cmdq_pkt *pkt); +int cmdq_pkt_jump_absolute(struct cmdq_pkt *pkt); + /** * cmdq_pkt_flush_async() - trigger CMDQ to asynchronously execute the CMDQ * packet and call back at the end of done packet -- 2.18.0
| |