Skip to content

Commit a18033f

Browse files
committed
Merge tag 'mediatek-drm-fixes-20251105' of https://git.kernel.org/pub/scm/linux/kernel/git/chunkuang.hu/linux into drm-fixes
Mediatek DRM Fixes - 20251105 1. Disable AFBC support on Mediatek DRM driver 2. Add pm_runtime support for GCE power control Signed-off-by: Dave Airlie <airlied@redhat.com> From: Chun-Kuang Hu <chunkuang.hu@kernel.org> Link: https://patch.msgid.link/20251105151443.3909-1-chunkuang.hu@kernel.org
2 parents b57b477 + afcfb6c commit a18033f

File tree

2 files changed

+8
-23
lines changed

2 files changed

+8
-23
lines changed

drivers/gpu/drm/mediatek/mtk_crtc.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,10 @@ static void ddp_cmdq_cb(struct mbox_client *cl, void *mssg)
283283
unsigned int i;
284284
unsigned long flags;
285285

286+
/* release GCE HW usage and start autosuspend */
287+
pm_runtime_mark_last_busy(cmdq_cl->chan->mbox->dev);
288+
pm_runtime_put_autosuspend(cmdq_cl->chan->mbox->dev);
289+
286290
if (data->sta < 0)
287291
return;
288292

@@ -618,6 +622,9 @@ static void mtk_crtc_update_config(struct mtk_crtc *mtk_crtc, bool needs_vblank)
618622
mtk_crtc->config_updating = false;
619623
spin_unlock_irqrestore(&mtk_crtc->config_lock, flags);
620624

625+
if (pm_runtime_resume_and_get(mtk_crtc->cmdq_client.chan->mbox->dev) < 0)
626+
goto update_config_out;
627+
621628
mbox_send_message(mtk_crtc->cmdq_client.chan, cmdq_handle);
622629
mbox_client_txdone(mtk_crtc->cmdq_client.chan, 0);
623630
goto update_config_out;

drivers/gpu/drm/mediatek/mtk_plane.c

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@
2121

2222
static const u64 modifiers[] = {
2323
DRM_FORMAT_MOD_LINEAR,
24-
DRM_FORMAT_MOD_ARM_AFBC(AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 |
25-
AFBC_FORMAT_MOD_SPLIT |
26-
AFBC_FORMAT_MOD_SPARSE),
2724
DRM_FORMAT_MOD_INVALID,
2825
};
2926

@@ -71,26 +68,7 @@ static bool mtk_plane_format_mod_supported(struct drm_plane *plane,
7168
uint32_t format,
7269
uint64_t modifier)
7370
{
74-
if (modifier == DRM_FORMAT_MOD_LINEAR)
75-
return true;
76-
77-
if (modifier != DRM_FORMAT_MOD_ARM_AFBC(
78-
AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 |
79-
AFBC_FORMAT_MOD_SPLIT |
80-
AFBC_FORMAT_MOD_SPARSE))
81-
return false;
82-
83-
if (format != DRM_FORMAT_XRGB8888 &&
84-
format != DRM_FORMAT_ARGB8888 &&
85-
format != DRM_FORMAT_BGRX8888 &&
86-
format != DRM_FORMAT_BGRA8888 &&
87-
format != DRM_FORMAT_ABGR8888 &&
88-
format != DRM_FORMAT_XBGR8888 &&
89-
format != DRM_FORMAT_RGB888 &&
90-
format != DRM_FORMAT_BGR888)
91-
return false;
92-
93-
return true;
71+
return modifier == DRM_FORMAT_MOD_LINEAR;
9472
}
9573

9674
static void mtk_plane_destroy_state(struct drm_plane *plane,

0 commit comments

Comments
 (0)