lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 624/757] soc: mediatek: cmdq: add clear option in cmdq_pkt_wfe api
    Date
    From: Dennis YC Hsieh <dennis-yc.hsieh@mediatek.com>

    [ Upstream commit 23c22299cd290409c6b78f57c42b64f8dfb6dd92 ]

    Add clear parameter to let client decide if
    event should be clear to 0 after GCE receive it.

    Signed-off-by: Dennis YC Hsieh <dennis-yc.hsieh@mediatek.com>
    Acked-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
    Link: https://lore.kernel.org/r/1594136714-11650-9-git-send-email-dennis-yc.hsieh@mediatek.com
    [mb: fix commit message]
    Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 2 +-
    drivers/soc/mediatek/mtk-cmdq-helper.c | 5 +++--
    include/linux/mailbox/mtk-cmdq-mailbox.h | 3 +--
    include/linux/soc/mediatek/mtk-cmdq.h | 5 +++--
    4 files changed, 8 insertions(+), 7 deletions(-)

    diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
    index 4d29568be3f53..a4977009d3076 100644
    --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
    +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
    @@ -481,7 +481,7 @@ static void mtk_drm_crtc_hw_config(struct mtk_drm_crtc *mtk_crtc)
    mbox_flush(mtk_crtc->cmdq_client->chan, 2000);
    cmdq_handle = cmdq_pkt_create(mtk_crtc->cmdq_client, PAGE_SIZE);
    cmdq_pkt_clear_event(cmdq_handle, mtk_crtc->cmdq_event);
    - cmdq_pkt_wfe(cmdq_handle, mtk_crtc->cmdq_event);
    + cmdq_pkt_wfe(cmdq_handle, mtk_crtc->cmdq_event, true);
    mtk_crtc_ddp_config(crtc, cmdq_handle);
    cmdq_pkt_finalize(cmdq_handle);
    cmdq_pkt_flush_async(cmdq_handle, ddp_cmdq_cb, cmdq_handle);
    diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c
    index dc644cfb6419e..c4609cd562ac4 100644
    --- a/drivers/soc/mediatek/mtk-cmdq-helper.c
    +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c
    @@ -223,15 +223,16 @@ int cmdq_pkt_write_mask(struct cmdq_pkt *pkt, u8 subsys,
    }
    EXPORT_SYMBOL(cmdq_pkt_write_mask);

    -int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event)
    +int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event, bool clear)
    {
    struct cmdq_instruction inst = { {0} };
    + u32 clear_option = clear ? CMDQ_WFE_UPDATE : 0;

    if (event >= CMDQ_MAX_EVENT)
    return -EINVAL;

    inst.op = CMDQ_CODE_WFE;
    - inst.value = CMDQ_WFE_OPTION;
    + inst.value = CMDQ_WFE_OPTION | clear_option;
    inst.event = event;

    return cmdq_pkt_append_command(pkt, inst);
    diff --git a/include/linux/mailbox/mtk-cmdq-mailbox.h b/include/linux/mailbox/mtk-cmdq-mailbox.h
    index 05eea1aef5aa0..ea35157974187 100644
    --- a/include/linux/mailbox/mtk-cmdq-mailbox.h
    +++ b/include/linux/mailbox/mtk-cmdq-mailbox.h
    @@ -28,8 +28,7 @@
    * bit 16-27: update value
    * bit 31: 1 - update, 0 - no update
    */
    -#define CMDQ_WFE_OPTION (CMDQ_WFE_UPDATE | CMDQ_WFE_WAIT | \
    - CMDQ_WFE_WAIT_VALUE)
    +#define CMDQ_WFE_OPTION (CMDQ_WFE_WAIT | CMDQ_WFE_WAIT_VALUE)

    /** cmdq event maximum */
    #define CMDQ_MAX_EVENT 0x3ff
    diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h
    index 2249ecaf77e42..76a3075077533 100644
    --- a/include/linux/soc/mediatek/mtk-cmdq.h
    +++ b/include/linux/soc/mediatek/mtk-cmdq.h
    @@ -105,11 +105,12 @@ int cmdq_pkt_write_mask(struct cmdq_pkt *pkt, u8 subsys,
    /**
    * cmdq_pkt_wfe() - append wait for event command to the CMDQ packet
    * @pkt: the CMDQ packet
    - * @event: the desired event type to "wait and CLEAR"
    + * @event: the desired event type to wait
    + * @clear: clear event or not after event arrive
    *
    * Return: 0 for success; else the error code is returned
    */
    -int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event);
    +int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event, bool clear);

    /**
    * cmdq_pkt_clear_event() - append clear event command to the CMDQ packet
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 17:40    [W:4.056 / U:0.236 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site