Re: [PATCH v8 16/23] drm/mediatek: mtk_hdmi: Split driver and add common probe function

From: AngeloGioacchino Del Regno
Date: Mon Apr 14 2025 - 04:53:08 EST


Il 11/04/25 10:18, CK Hu (胡俊光) ha scritto:
On Wed, 2025-04-09 at 15:13 +0200, AngeloGioacchino Del Regno wrote:
External email : Please do not click links or open attachments until you have verified the sender or the content.


In preparation for adding a new driver for the HDMI TX v2 IP,
split out the functions that will be common between the already
present mtk_hdmi (v1) driver and the new one.

Since the probe flow for both drivers is 90% similar, add a common
probe function that will be called from each driver's .probe()
callback, avoiding lots of code duplication.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx>
---
drivers/gpu/drm/mediatek/Kconfig | 11 +-
drivers/gpu/drm/mediatek/Makefile | 1 +
drivers/gpu/drm/mediatek/mtk_hdmi.c | 542 +--------------------
drivers/gpu/drm/mediatek/mtk_hdmi_common.c | 426 ++++++++++++++++
drivers/gpu/drm/mediatek/mtk_hdmi_common.h | 188 +++++++
5 files changed, 633 insertions(+), 535 deletions(-)
create mode 100644 drivers/gpu/drm/mediatek/mtk_hdmi_common.c
create mode 100644 drivers/gpu/drm/mediatek/mtk_hdmi_common.h

diff --git a/drivers/gpu/drm/mediatek/Kconfig b/drivers/gpu/drm/mediatek/Kconfig
index e47debd60619..994b48b82d44 100644
--- a/drivers/gpu/drm/mediatek/Kconfig
+++ b/drivers/gpu/drm/mediatek/Kconfig
@@ -30,9 +30,18 @@ config DRM_MEDIATEK_DP
help
DRM/KMS Display Port driver for MediaTek SoCs.

+config DRM_MEDIATEK_HDMI_COMMON
+ tristate
+ depends on DRM_MEDIATEK
+ select DRM_DISPLAY_HDMI_HELPER
+ select DRM_DISPLAY_HELPER
+ select SND_SOC_HDMI_CODEC if SND_SOC
+ help
+ MediaTek SoC HDMI common library
+
config DRM_MEDIATEK_HDMI
tristate "DRM HDMI Support for Mediatek SoCs"
depends on DRM_MEDIATEK
- select SND_SOC_HDMI_CODEC if SND_SOC
+ select DRM_MEDIATEK_HDMI_COMMON
help
DRM/KMS HDMI driver for Mediatek SoCs
diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile
index 43afd0a26d14..78cf2d4fc85f 100644
--- a/drivers/gpu/drm/mediatek/Makefile
+++ b/drivers/gpu/drm/mediatek/Makefile
@@ -21,6 +21,7 @@ mediatek-drm-y := mtk_crtc.o \

obj-$(CONFIG_DRM_MEDIATEK) += mediatek-drm.o

+obj-$(CONFIG_DRM_MEDIATEK_HDMI_COMMON) += mtk_hdmi_common.o

The whole patch looks good to me.
But make common part to a module looks a little bit more modularized.
Let things to be simple, I would like the whole MediaTek hdmi driver be a single module.
For MediaTek drm driver, it is already broken to mediatek-drm, hdmi, dp modules.
Maybe someday dsi or dpi would be broken to modules.
So I would like hdmi to be a single module which include v1, v2 and common part.
If someday we need to optimize code size, then send patch to break hdmi module.


Hello CK,

The HDMIv1 and HDMIv2 drivers are handling two *very* different IPs that can never
be *both* present at the same time on one SoC: having one Kconfig for both would
not only add unnecessary bloat (especially on older SoCs!!), but would actually be
wrong.

Also, please be aware that old LK bootloaders (smartphones/tablets) have a very
limited RAM carveout for kernel + ramdisk that should be around 8MB if I recall
correctly.

Remember as well that these devices *cannot* run different bootloaders as those
are only able to run *OEM signed* binaries in the early bootchain, so replacing
the bootloader is not a viable solution.

It's true, people can (and most probably want to and will) build this as a module
but, in my opinion, freedom should be given to have the HDMI driver built-in even
in these cases - and that's another good reason to keep them split.

This is done to avoid being hostile to old platforms, in full upstream spirit.

Regards,
Angelo

Regards,
CK

obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mtk_cec.o
obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mtk_hdmi.o
obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mtk_hdmi_ddc.o
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c