]> Gentwo Git Trees - linux/.git/commitdiff
drm/mediatek: Add pm_runtime support for GCE power control
authorJason-JH Lin <jason-jh.lin@mediatek.com>
Fri, 29 Aug 2025 09:15:59 +0000 (17:15 +0800)
committerChun-Kuang Hu <chunkuang.hu@kernel.org>
Sat, 1 Nov 2025 14:14:56 +0000 (14:14 +0000)
Call pm_runtime_resume_and_get() before accessing GCE hardware in
mbox_send_message(), and invoke pm_runtime_put_autosuspend() in the
cmdq callback to release the PM reference and start autosuspend for
GCE. This ensures correct power management for the GCE device.

Fixes: 8afe816b0c99 ("mailbox: mtk-cmdq-mailbox: Implement Runtime PM with autosuspend")
Signed-off-by: Jason-JH Lin <jason-jh.lin@mediatek.com>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20250829091727.3745415-3-jason-jh.lin@mediatek.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
drivers/gpu/drm/mediatek/mtk_crtc.c

index bc7527542fdc6fb89fc36794cee7d6dc26f7dcce..c4c6d0249df562f0073d42a5336c3b45edeb1dc9 100644 (file)
@@ -283,6 +283,10 @@ static void ddp_cmdq_cb(struct mbox_client *cl, void *mssg)
        unsigned int i;
        unsigned long flags;
 
+       /* release GCE HW usage and start autosuspend */
+       pm_runtime_mark_last_busy(cmdq_cl->chan->mbox->dev);
+       pm_runtime_put_autosuspend(cmdq_cl->chan->mbox->dev);
+
        if (data->sta < 0)
                return;
 
@@ -618,6 +622,9 @@ static void mtk_crtc_update_config(struct mtk_crtc *mtk_crtc, bool needs_vblank)
                mtk_crtc->config_updating = false;
                spin_unlock_irqrestore(&mtk_crtc->config_lock, flags);
 
+               if (pm_runtime_resume_and_get(mtk_crtc->cmdq_client.chan->mbox->dev) < 0)
+                       goto update_config_out;
+
                mbox_send_message(mtk_crtc->cmdq_client.chan, cmdq_handle);
                mbox_client_txdone(mtk_crtc->cmdq_client.chan, 0);
                goto update_config_out;