drivers/gpu/drm/mediatek/mtk_dsi.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
The drm_simple_encoder_init() helper is deprecated because it adds an
intermediate abstraction layer that only wraps drm_encoder_init() with
an empty or minimal drm_encoder_funcs struct.
Replace drm_simple_encoder_init() with explicit calls to drm_encoder_init()
and define driver-specific drm_encoder_funcs carrying the cleanup callback.
Signed-off-by: Sean Chang <seanwascoding@gmail.com>
---
drivers/gpu/drm/mediatek/mtk_dsi.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
index 49dfc0f825cb..276d57f8407b 100644
--- a/drivers/gpu/drm/mediatek/mtk_dsi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
@@ -226,6 +226,10 @@ struct mtk_dsi {
const struct mtk_dsi_driver_data *driver_data;
};
+static const struct drm_encoder_funcs mtk_dsi_encoder_funcs = {
+ .destroy = drm_encoder_cleanup,
+};
+
static inline struct mtk_dsi *bridge_to_dsi(struct drm_bridge *b)
{
return container_of(b, struct mtk_dsi, bridge);
@@ -918,8 +922,9 @@ static int mtk_dsi_encoder_init(struct drm_device *drm, struct mtk_dsi *dsi)
{
int ret;
- ret = drm_simple_encoder_init(drm, &dsi->encoder,
- DRM_MODE_ENCODER_DSI);
+ ret = drm_encoder_init(drm, &dsi->encoder,
+ &mtk_dsi_encoder_funcs,
+ DRM_MODE_ENCODER_DSI, NULL);
if (ret) {
drm_err(drm, "Failed to encoder init to drm\n");
return ret;
--
2.43.0
Hi, Sean:
On Fri, 2026-08-14 at 01:55 +0800, Sean Chang wrote:
> External email : Please do not click links or open attachments until you have verified the sender or the content.
>
>
> The drm_simple_encoder_init() helper is deprecated because it adds an
> intermediate abstraction layer that only wraps drm_encoder_init() with
> an empty or minimal drm_encoder_funcs struct.
>
> Replace drm_simple_encoder_init() with explicit calls to drm_encoder_init()
> and define driver-specific drm_encoder_funcs carrying the cleanup callback.
Because Diogo Silva has send similar patch before you and it looks good,
so I would like to apply his patch.
Regards,
CK
>
> Signed-off-by: Sean Chang <seanwascoding@gmail.com>
> ---
> drivers/gpu/drm/mediatek/mtk_dsi.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
> index 49dfc0f825cb..276d57f8407b 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
> @@ -226,6 +226,10 @@ struct mtk_dsi {
> const struct mtk_dsi_driver_data *driver_data;
> };
>
> +static const struct drm_encoder_funcs mtk_dsi_encoder_funcs = {
> + .destroy = drm_encoder_cleanup,
> +};
> +
> static inline struct mtk_dsi *bridge_to_dsi(struct drm_bridge *b)
> {
> return container_of(b, struct mtk_dsi, bridge);
> @@ -918,8 +922,9 @@ static int mtk_dsi_encoder_init(struct drm_device *drm, struct mtk_dsi *dsi)
> {
> int ret;
>
> - ret = drm_simple_encoder_init(drm, &dsi->encoder,
> - DRM_MODE_ENCODER_DSI);
> + ret = drm_encoder_init(drm, &dsi->encoder,
> + &mtk_dsi_encoder_funcs,
> + DRM_MODE_ENCODER_DSI, NULL);
> if (ret) {
> drm_err(drm, "Failed to encoder init to drm\n");
> return ret;
> --
> 2.43.0
>
>
On Fri, 2026-08-14 at 01:55 +0800, Sean Chang wrote:
> External email : Please do not click links or open attachments until you have verified the sender or the content.
>
>
> The drm_simple_encoder_init() helper is deprecated because it adds an
> intermediate abstraction layer that only wraps drm_encoder_init() with
> an empty or minimal drm_encoder_funcs struct.
>
> Replace drm_simple_encoder_init() with explicit calls to drm_encoder_init()
> and define driver-specific drm_encoder_funcs carrying the cleanup callback.
>
> Signed-off-by: Sean Chang <seanwascoding@gmail.com>
> ---
> drivers/gpu/drm/mediatek/mtk_dsi.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
> index 49dfc0f825cb..276d57f8407b 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
Replace
#include <drm/drm_simple_kms_helper.h>
with
#include <drm/drm_encoder.h>
> @@ -226,6 +226,10 @@ struct mtk_dsi {
> const struct mtk_dsi_driver_data *driver_data;
> };
>
> +static const struct drm_encoder_funcs mtk_dsi_encoder_funcs = {
> + .destroy = drm_encoder_cleanup,
> +};
> +
Align to mtk_dpi.c, move this function just before mtk_dsi_ddp_start().
Regards,
CK
> static inline struct mtk_dsi *bridge_to_dsi(struct drm_bridge *b)
> {
> return container_of(b, struct mtk_dsi, bridge);
> @@ -918,8 +922,9 @@ static int mtk_dsi_encoder_init(struct drm_device *drm, struct mtk_dsi *dsi)
> {
> int ret;
>
> - ret = drm_simple_encoder_init(drm, &dsi->encoder,
> - DRM_MODE_ENCODER_DSI);
> + ret = drm_encoder_init(drm, &dsi->encoder,
> + &mtk_dsi_encoder_funcs,
> + DRM_MODE_ENCODER_DSI, NULL);
> if (ret) {
> drm_err(drm, "Failed to encoder init to drm\n");
> return ret;
> --
> 2.43.0
>
>
© 2016 - 2026 Red Hat, Inc.