Message ID | 20240215004931.3808-5-chunkuang.hu@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Remove cl in struct cmdq_pkt | expand |
Il 15/02/24 01:49, Chun-Kuang Hu ha scritto: > cmdq_pkt_nop() append nop command to the packet. nop command ask > GCE to do no operation. > > Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> > --- > drivers/soc/mediatek/mtk-cmdq-helper.c | 11 +++++++++++ > include/linux/soc/mediatek/mtk-cmdq.h | 16 ++++++++++++++++ > 2 files changed, 27 insertions(+) > > diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c > index e982997117c2..1be950b4ec7f 100644 > --- a/drivers/soc/mediatek/mtk-cmdq-helper.c > +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c > @@ -369,6 +369,17 @@ int cmdq_pkt_eoc(struct cmdq_pkt *pkt) > } > EXPORT_SYMBOL(cmdq_pkt_eoc); > > +int cmdq_pkt_nop(struct cmdq_pkt *pkt, u8 shift_pa) > +{ > + struct cmdq_instruction inst = { {0} }; > + > + /* Jumping to next instruction is equal to no operation */ > + inst.op = CMDQ_CODE_JUMP; > + inst.value = CMDQ_INST_SIZE >> shift_pa; > + return cmdq_pkt_append_command(pkt, inst); > +} > +EXPORT_SYMBOL(cmdq_pkt_nop); > + > int cmdq_pkt_finalize(struct cmdq_pkt *pkt) > { > struct cmdq_instruction inst = { {0} }; > diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h > index a67f719dec0b..8179ba5238f9 100644 > --- a/include/linux/soc/mediatek/mtk-cmdq.h > +++ b/include/linux/soc/mediatek/mtk-cmdq.h > @@ -255,6 +255,17 @@ int cmdq_pkt_jump(struct cmdq_pkt *pkt, dma_addr_t addr, u8 shift_pa); > */ > int cmdq_pkt_eoc(struct cmdq_pkt *pkt); > > +/** > + * cmdq_pkt_nop() - Append nop command to the CMDQ packet, ask GCE > + * to do no operation. * cmdq_pkt_nop() - Append No-Operation (NOP) command to a CMDQ packet After which... Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Hi, Angelo: On Thu, 2024-02-15 at 11:40 +0100, AngeloGioacchino Del Regno wrote: > Il 15/02/24 01:49, Chun-Kuang Hu ha scritto: > > cmdq_pkt_nop() append nop command to the packet. nop command ask > > GCE to do no operation. > > > > Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> > > --- > > drivers/soc/mediatek/mtk-cmdq-helper.c | 11 +++++++++++ > > include/linux/soc/mediatek/mtk-cmdq.h | 16 ++++++++++++++++ > > 2 files changed, 27 insertions(+) > > > > diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c > > b/drivers/soc/mediatek/mtk-cmdq-helper.c > > index e982997117c2..1be950b4ec7f 100644 > > --- a/drivers/soc/mediatek/mtk-cmdq-helper.c > > +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c > > @@ -369,6 +369,17 @@ int cmdq_pkt_eoc(struct cmdq_pkt *pkt) > > } > > EXPORT_SYMBOL(cmdq_pkt_eoc); > > > > +int cmdq_pkt_nop(struct cmdq_pkt *pkt, u8 shift_pa) > > +{ > > + struct cmdq_instruction inst = { {0} }; > > + > > + /* Jumping to next instruction is equal to no operation */ > > + inst.op = CMDQ_CODE_JUMP; > > + inst.value = CMDQ_INST_SIZE >> shift_pa; > > + return cmdq_pkt_append_command(pkt, inst); > > +} > > +EXPORT_SYMBOL(cmdq_pkt_nop); > > + > > int cmdq_pkt_finalize(struct cmdq_pkt *pkt) > > { > > struct cmdq_instruction inst = { {0} }; > > diff --git a/include/linux/soc/mediatek/mtk-cmdq.h > > b/include/linux/soc/mediatek/mtk-cmdq.h > > index a67f719dec0b..8179ba5238f9 100644 > > --- a/include/linux/soc/mediatek/mtk-cmdq.h > > +++ b/include/linux/soc/mediatek/mtk-cmdq.h > > @@ -255,6 +255,17 @@ int cmdq_pkt_jump(struct cmdq_pkt *pkt, > > dma_addr_t addr, u8 shift_pa); > > */ > > int cmdq_pkt_eoc(struct cmdq_pkt *pkt); > > > > +/** > > + * cmdq_pkt_nop() - Append nop command to the CMDQ packet, ask GCE > > + * to do no operation. > > * cmdq_pkt_nop() - Append No-Operation (NOP) command to a CMDQ > packet > > After which... > Reviewed-by: AngeloGioacchino Del Regno < > angelogioacchino.delregno@collabora.com> > > Because I would create cmdq_pkt_jump_abs(), I think cmdq_pkt_nop() is a special case of cmdq_pkt_jump_rel(), so I would change cmdq_pkt_nop() to cmdq_pkt_jump_rel() for general use. Regards, CK >
diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c index e982997117c2..1be950b4ec7f 100644 --- a/drivers/soc/mediatek/mtk-cmdq-helper.c +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c @@ -369,6 +369,17 @@ int cmdq_pkt_eoc(struct cmdq_pkt *pkt) } EXPORT_SYMBOL(cmdq_pkt_eoc); +int cmdq_pkt_nop(struct cmdq_pkt *pkt, u8 shift_pa) +{ + struct cmdq_instruction inst = { {0} }; + + /* Jumping to next instruction is equal to no operation */ + inst.op = CMDQ_CODE_JUMP; + inst.value = CMDQ_INST_SIZE >> shift_pa; + return cmdq_pkt_append_command(pkt, inst); +} +EXPORT_SYMBOL(cmdq_pkt_nop); + int cmdq_pkt_finalize(struct cmdq_pkt *pkt) { struct cmdq_instruction inst = { {0} }; diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h index a67f719dec0b..8179ba5238f9 100644 --- a/include/linux/soc/mediatek/mtk-cmdq.h +++ b/include/linux/soc/mediatek/mtk-cmdq.h @@ -255,6 +255,17 @@ int cmdq_pkt_jump(struct cmdq_pkt *pkt, dma_addr_t addr, u8 shift_pa); */ int cmdq_pkt_eoc(struct cmdq_pkt *pkt); +/** + * cmdq_pkt_nop() - Append nop command to the CMDQ packet, ask GCE + * to do no operation. + * @pkt: the CMDQ packet + * @shift_pa: shift bits of physical address in CMDQ instruction. This value + * is got by cmdq_get_shift_pa(). + * + * Return: 0 for success; else the error code is returned + */ +int cmdq_pkt_nop(struct cmdq_pkt *pkt, u8 shift_pa); + /** * cmdq_pkt_finalize() - Append EOC and jump command to pkt. * @pkt: the CMDQ packet @@ -361,6 +372,11 @@ static inline int cmdq_pkt_eoc(struct cmdq_pkt *pkt) return -EINVAL; } +static inline int cmdq_pkt_nop(struct cmdq_pkt *pkt, u8 shift_pa) +{ + return -EINVAL; +} + static inline int cmdq_pkt_finalize(struct cmdq_pkt *pkt) { return -EINVAL;
cmdq_pkt_nop() append nop command to the packet. nop command ask GCE to do no operation. Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> --- drivers/soc/mediatek/mtk-cmdq-helper.c | 11 +++++++++++ include/linux/soc/mediatek/mtk-cmdq.h | 16 ++++++++++++++++ 2 files changed, 27 insertions(+)