From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 61C2CC43458 for ; Sat, 4 Jul 2026 09:12:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Message-Id:MIME-Version:Subject: Date:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=uhEBMl1ABt6TARO+C/fEaCQLsf1sEO+nl+Jcs2pXygc=; b=zQQMs8S7zZ5OoT YlSoTRBBQ9ch7QTE4nB5E5kPs9XNv9rHSSjuxih3d0hC2jqaJ/wkb9qH1IXaX6OwDfPglVcp5Db8G 8CpUCmsCodWHDa7hA9ps0p618lTsnbYDdSmipjRLIreDw7UQFcQUunzX8iwMPEfoaqIu8grVNtAAs 8Y/SXyFjEIJMf2s/sU3MeuEfIFnyYgCAYXxojR/hHkrMjg90sY+3MA56E6PLj3Xr3MLxeOzNNMVX8 LvrJNqmtoS/m+Wrvdp4NMQdw1pc1GrtaxLUJP0qzGrrE/rQYrMcSHetz+ad4IyPnqUrHRY10M/XVr 4ZLqgJOasH4j5Bk1KT9Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wfwQ4-00000008JWy-0K9X; Sat, 04 Jul 2026 09:12:16 +0000 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wfwQ1-00000008JWG-1l5P for linux-rockchip@lists.infradead.org; Sat, 04 Jul 2026 09:12:14 +0000 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-4631679f204so1458075f8f.0 for ; Sat, 04 Jul 2026 02:12:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783156331; x=1783761131; darn=lists.infradead.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=BbW7ODmyi3VAP92/8ljxFasAPjrxxi6fJ+oOf3N8IIA=; b=CNgdGK/ZjdiXNt54TQQ/I80b4p3pQK8qJdSP0oZFPaMKYp4kkDpdcylcmvGCMTLD/Y ea7YnbE2o9NCh2v8c5xkeDar/a7rDJqV53QbIKyQiNyGWB95Hbwn+boiWPEVm2IxT6X9 U7XJvxx5MaEqB9Nhb3bEeDA+KbNXTK+md0lNor2OjTh1Irkrg87Muxx5SWzqLCrUwah7 tTfun8667Tx5El5R/8n1s7l0Pc24pYCorOyHWI6f/EfPeDS5gHB72AaChTYANEDXq2ky lJy/4gabAmZ4Rc2mQhV37f6ioY9hI65No/we6fEubywBTFekatCthvqqPivGoU+IGfyJ w80Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783156331; x=1783761131; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=BbW7ODmyi3VAP92/8ljxFasAPjrxxi6fJ+oOf3N8IIA=; b=cC8+2evupXh51bDhCflXP6VsOoyYc5M6VIm13C3uyC60KHUoivapu+x1WJCvIMU11h 6JtqaveTDoB4iSvRu0B/eRZzLT9Nmh7I8jJff1b445nxZIPm+8TBITNWW1g+GZoIJH2V hwKiadhIU4G03aSeDO+X519iD07t3g/H5cT2gcbA/JMnVa8w6+fUpUnRY759T9l8LMez qRpAWFUXCFPKECg3yngyJ8ZkA/SC1c7DPYo8mbcWLVtMQaVjSFuHdsaSkj1kCbltOW4N QITWnoAAETDCEPhuX0aSr4VNpThYtzo+qKD2yo64UQhYvJSZvl+COVZxY8Nr/Z9/ynE5 CAYA== X-Forwarded-Encrypted: i=1; AHgh+RofcedFiEt8TjUfYD6FCdJ9BpcdX4gMXekEE8+2nywJowuU0v1f3u4Sxo+I3wqLS9eiJ74X7EhZ43Y6RXPVlg==@lists.infradead.org X-Gm-Message-State: AOJu0YwPp23/ouL9F/wZ8f9vE43kmxukLpO9Z8pXuTvX7+xGsVnKy0Sz W0C9K0RP3X7/YTgfi9r0KqsNf2CYZiN6F/ldX7NWQ5oIQ+zRw9qc8kAX X-Gm-Gg: AfdE7cmXUbh8uJMHeSqfF4e3p5amEADbbuKSgtyYqktoeobMDErovQd1LZr/T+UVz9u g2b+EFMUWQx3uGFFAKgohRBiRSbKheQ3qxKtYDfAlIeZyFuyD3UhSvA571vSYhLwGlvyZkjlKT+ hqRAygLntU3eO4OgMQHwn7j86k1UaFrAD0xN3oTswSA565BM3HgjzuTnn5QDlRSZF1Vh3jeRAJQ qEck4lLaW4MeUR59ne7pGmCS6U+s3yaKKsfBw0pnbApXP07pJNqigQ/R+XPQJHtZY19Tfo4Q1pd M93vITrtufGoF8Rm2Nv2iPMli8urZ/7Y/n49UodNsjSQnnv1VkmcDmvKjRvku37pqK9GlTPmTRT VNey3tGSxfOJ50LYbdwxN8t2a/ge/nQEbUB6vhmLbCNML62mTFLUBM7YZdNiADawFA8NZ2jhKrt HC7Cox8rz3P3N6bYwOcfLs X-Received: by 2002:a05:6000:18a5:b0:474:c3a5:4132 with SMTP id ffacd0b85a97d-47934b8a255mr10193626f8f.9.1783156331147; Sat, 04 Jul 2026 02:12:11 -0700 (PDT) Received: from [127.0.0.2] ([194.35.121.133]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9de1e785sm6366058f8f.8.2026.07.04.02.12.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Jul 2026 02:12:10 -0700 (PDT) From: Diogo Silva Date: Sat, 04 Jul 2026 11:12:02 +0200 Subject: [PATCH v5] drm/rockchip: Remove dependency on DRM simple helpers MIME-Version: 1.0 Message-Id: <20260704-rockchip-drm-simple-v5-1-a333f527a4f9@gmail.com> X-B4-Tracking: v=1; b=H4sIAGHOSGoC/x3MSwqEMBBF0a1IjbsgpKM2vRVxIOVTC3+hAiKIe zc4PIN7L0owRaJ/cZHh0KT7llF+CpKp20aw9tnkna9c7QLbLrNMGrm3lZOucQH/vlXwtYgHQLm MhkHP99q09/0A6CST62UAAAA= X-Change-ID: 20260704-rockchip-drm-simple-836427cc2eee To: Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Javier Martinez Canillas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Diogo Silva X-Mailer: b4 0.14.3 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260704_021213_517979_4AB9D20D X-CRM114-Status: GOOD ( 16.70 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org Simple KMS helper are deprecated since they only add an intermediate layer between drivers and the atomic modesetting. This patch removes the drm_simple_encoder_init() helper usage in the rockchip drivers by open coding it and using the encoder atomic helpers directly. This is a step to eventually get rid of this simple KMS helper, once all drivers that use it have been converted. Reviewed-by: Javier Martinez Canillas Signed-off-by: Diogo Silva --- v5: - fixed formatting and some indentation v4: - improved commit message based on Javier Canillas feedback v3: - rebase on drm-tip tree --- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 9 ++++++--- drivers/gpu/drm/rockchip/cdn-dp-core.c | 9 ++++++--- drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c | 9 +++++++-- drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c | 8 ++++++-- drivers/gpu/drm/rockchip/dw_dp-rockchip.c | 1 - drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 1 - drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 1 - drivers/gpu/drm/rockchip/rk3066_hdmi.c | 8 ++++++-- drivers/gpu/drm/rockchip/rockchip_lvds.c | 9 +++++++-- drivers/gpu/drm/rockchip/rockchip_rgb.c | 8 ++++++-- 10 files changed, 44 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index 776954c7d0525..46c245e35d215 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -30,7 +30,6 @@ #include #include #include -#include #include "rockchip_drm_drv.h" @@ -303,6 +302,10 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encoder *encoder, return 0; } +static const struct drm_encoder_funcs rockchip_dp_encoder_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs rockchip_dp_encoder_helper_funcs = { .mode_fixup = rockchip_dp_drm_encoder_mode_fixup, .mode_set = rockchip_dp_drm_encoder_mode_set, @@ -361,8 +364,8 @@ static int rockchip_dp_drm_create_encoder(struct rockchip_dp_device *dp) dev->of_node); DRM_DEBUG_KMS("possible_crtcs = 0x%x\n", encoder->possible_crtcs); - ret = drm_simple_encoder_init(drm_dev, encoder, - DRM_MODE_ENCODER_TMDS); + ret = drm_encoder_init(drm_dev, encoder, &rockchip_dp_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); if (ret) { DRM_ERROR("failed to initialize encoder with drm\n"); return ret; diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c index e159e1627f3c2..68aa66915e8ac 100644 --- a/drivers/gpu/drm/rockchip/cdn-dp-core.c +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c @@ -23,7 +23,6 @@ #include #include #include -#include #include "cdn-dp-core.h" #include "cdn-dp-reg.h" @@ -671,6 +670,10 @@ static int cdn_dp_encoder_atomic_check(struct drm_encoder *encoder, return 0; } +static const struct drm_encoder_funcs cdn_dp_encoder_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs cdn_dp_encoder_helper_funcs = { .atomic_check = cdn_dp_encoder_atomic_check, }; @@ -988,8 +991,8 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data) dev->of_node); DRM_DEBUG_KMS("possible_crtcs = 0x%x\n", encoder->possible_crtcs); - ret = drm_simple_encoder_init(drm_dev, encoder, - DRM_MODE_ENCODER_TMDS); + ret = drm_encoder_init(drm_dev, encoder, &cdn_dp_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); if (ret) { DRM_ERROR("failed to initialize encoder with drm\n"); return ret; diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c index 3547d91b25d31..268d4993a04fd 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c @@ -25,7 +25,6 @@ #include #include #include -#include #include "rockchip_drm_drv.h" @@ -825,6 +824,10 @@ static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder) clk_disable_unprepare(dsi->grf_clk); } +static const struct drm_encoder_funcs dw_mipi_dsi_encoder_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs dw_mipi_dsi_encoder_helper_funcs = { .atomic_check = dw_mipi_dsi_encoder_atomic_check, @@ -840,7 +843,9 @@ static int rockchip_dsi_drm_create_encoder(struct dw_mipi_dsi_rockchip *dsi, encoder->possible_crtcs = drm_of_find_possible_crtcs(drm_dev, dsi->dev->of_node); - ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_DSI); + ret = drm_encoder_init(drm_dev, encoder, + &dw_mipi_dsi_encoder_funcs, + DRM_MODE_ENCODER_DSI, NULL); if (ret) { DRM_ERROR("Failed to initialize encoder with drm\n"); return ret; diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c index d2e76d36d7247..9dc207c2d20d1 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c @@ -23,7 +23,6 @@ #include #include #include -#include #include @@ -275,6 +274,10 @@ dw_mipi_dsi2_encoder_atomic_check(struct drm_encoder *encoder, return 0; } +static const struct drm_encoder_funcs dw_mipi_dsi2_encoder_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs dw_mipi_dsi2_encoder_helper_funcs = { .atomic_enable = dw_mipi_dsi2_encoder_atomic_enable, @@ -290,7 +293,8 @@ static int rockchip_dsi2_drm_create_encoder(struct dw_mipi_dsi2_rockchip *dsi2, encoder->possible_crtcs = drm_of_find_possible_crtcs(drm_dev, dsi2->dev->of_node); - ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_DSI); + ret = drm_encoder_init(drm_dev, encoder, &dw_mipi_dsi2_encoder_funcs, + DRM_MODE_ENCODER_DSI, NULL); if (ret) { dev_err(dsi2->dev, "Failed to initialize encoder with drm\n"); return ret; diff --git a/drivers/gpu/drm/rockchip/dw_dp-rockchip.c b/drivers/gpu/drm/rockchip/dw_dp-rockchip.c index 0de822360c8db..b23efb153c9e6 100644 --- a/drivers/gpu/drm/rockchip/dw_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_dp-rockchip.c @@ -20,7 +20,6 @@ #include #include #include -#include #include "rockchip_drm_drv.h" diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c index cffc0af5190fe..b6e154c35e7c2 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -18,7 +18,6 @@ #include #include #include -#include #include "rockchip_drm_drv.h" diff --git a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c index 815f9ea7bcbe4..9c4cf68d79d50 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c @@ -25,7 +25,6 @@ #include #include #include -#include #include "rockchip_drm_drv.h" diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c index 9b8981fa19aee..f28d6a883e099 100644 --- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c +++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include @@ -454,6 +453,10 @@ rk3066_hdmi_encoder_atomic_check(struct drm_encoder *encoder, return 0; } +static const struct drm_encoder_funcs rk3066_hdmi_encoder_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs rk3066_hdmi_encoder_helper_funcs = { .atomic_check = rk3066_hdmi_encoder_atomic_check, @@ -696,7 +699,8 @@ rk3066_hdmi_register(struct drm_device *drm, struct rk3066_hdmi *hdmi) return -EPROBE_DEFER; drm_encoder_helper_add(encoder, &rk3066_hdmi_encoder_helper_funcs); - drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS); + drm_encoder_init(drm, encoder, &rk3066_hdmi_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); hdmi->bridge.driver_private = hdmi; hdmi->bridge.funcs = &rk3066_hdmi_bridge_funcs; diff --git a/drivers/gpu/drm/rockchip/rockchip_lvds.c b/drivers/gpu/drm/rockchip/rockchip_lvds.c index 31dc206bedeba..262f818752781 100644 --- a/drivers/gpu/drm/rockchip/rockchip_lvds.c +++ b/drivers/gpu/drm/rockchip/rockchip_lvds.c @@ -24,7 +24,6 @@ #include #include #include -#include #include "rockchip_drm_drv.h" #include "rockchip_lvds.h" @@ -427,6 +426,10 @@ static void px30_lvds_encoder_disable(struct drm_encoder *encoder) drm_panel_unprepare(lvds->panel); } +static const struct drm_encoder_funcs rockchip_lvds_encoder_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs rk3288_lvds_encoder_helper_funcs = { .enable = rk3288_lvds_encoder_enable, @@ -594,7 +597,9 @@ static int rockchip_lvds_bind(struct device *dev, struct device *master, encoder->possible_crtcs = drm_of_find_possible_crtcs(drm_dev, dev->of_node); - ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_LVDS); + ret = drm_encoder_init(drm_dev, encoder, + &rockchip_lvds_encoder_funcs, + DRM_MODE_ENCODER_LVDS, NULL); if (ret < 0) { drm_err(drm_dev, "failed to initialize encoder: %d\n", ret); diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c index add3123e5ce70..2ad24b914989f 100644 --- a/drivers/gpu/drm/rockchip/rockchip_rgb.c +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c @@ -17,7 +17,6 @@ #include #include #include -#include #include "rockchip_drm_drv.h" #include "rockchip_rgb.h" @@ -65,6 +64,10 @@ rockchip_rgb_encoder_atomic_check(struct drm_encoder *encoder, return 0; } +static const struct drm_encoder_funcs rockchip_rgb_encoder_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs rockchip_rgb_encoder_helper_funcs = { .atomic_check = rockchip_rgb_encoder_atomic_check, @@ -127,7 +130,8 @@ struct rockchip_rgb *rockchip_rgb_init(struct device *dev, encoder = &rgb->encoder.encoder; encoder->possible_crtcs = drm_crtc_mask(crtc); - ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_NONE); + ret = drm_encoder_init(drm_dev, encoder, &rockchip_rgb_encoder_funcs, + DRM_MODE_ENCODER_NONE, NULL); if (ret < 0) { DRM_DEV_ERROR(drm_dev->dev, "failed to initialize encoder: %d\n", ret); --- base-commit: 7f15fa27122a00a78e7bc2722748bb303adbbb99 change-id: 20260704-rockchip-drm-simple-836427cc2eee Best regards, -- Diogo Silva _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip