From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D218937266E for ; Mon, 8 Jun 2026 12:41:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780922517; cv=none; b=DcS/34TeZPh8oYSE6W7Aqfh00eeqPHxVSh/r59cS2IACYWt4Clj7d2F8FBMecCLuh/z/ccfWhwPymmOSFXeVP4pKSiwfZBJyMP4g2BHhgoQbAvSQh1gRKFCidoINUCBdxeiQ9DZlyWtjah4JHwBPdif1UDo/0aMYrSDzEaGEvD8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780922517; c=relaxed/simple; bh=3kKrBK92f2wryh0g0/ufF0r5V1orty08YNLPU0r0qQ8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=EmpiFGMr49qbLMj5U60TLHQXyN3fv+CF8W3buAi53aFHlQs8I+IfTG8rWgzAzgStJ6jDhCJbJ1bw9/2DY3ibB6lYTuwNlGwc3UlMCmdCQJaG9YvrojMbbUcfQ1JacZpe0Yd6nXih9F7TrTdrVPcuplRpDOfblp/2cuo3ji2S8Ho= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XdclYxZz; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XdclYxZz" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-490aaeabdb4so26176105e9.1 for ; Mon, 08 Jun 2026 05:41:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780922514; x=1781527314; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=0Gdc6e3FdyeiLVZE3O+te4B1yIyOlEE2X2Wof8kU0zk=; b=XdclYxZz3h/UZ3W8MtISQVXBd241PC4rrZc4xSF9neBSaSKwOdERGzREaviiSO1Ahz wQxlc9XZpG4M6SFNm6vemzMinu/4r8cXAN68jshxqA4HnhaUOdwiR4b/IZcgjGqTTySL VyLstkQTRK/o1YEvlp0fppqgEUHQsOCGiYMB0rDpAwkR+Rd3A9zuA9QRqAJG8047RPr2 6m07n3/6OnbwADwamjYwRYlDi6/+TKHomD+bhdW7K2PTHEvTBkDwP2mYXhQHdVlByt5B lnv571n9VVNmpfomyi0bJ+iafsmgreGmBPpkfrCyfttJJL86xhahP+3lcbMkikx0eiqg do3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780922514; x=1781527314; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=0Gdc6e3FdyeiLVZE3O+te4B1yIyOlEE2X2Wof8kU0zk=; b=mAOEPZvOzk923WDHP+Iu3bjtGLOxtm70IvRgTrapfEqussq1qiHwo88pIA2rSQK7Gs 9TvxYBuHXM+j5CXNRq+QBUnQjoPQZcnVQBPDEkNRpA7cma7+mx8n7+KHVDNB118mRH6r TXdf4fUnG52LV+L2zYEgM5LVrbK0RaOeVbRcnIpwOIBR+kuU85bMXUUIYMrb2pa1e8kS cbnvdAmdekeYJ68CIGrmd1St5h4et4m2Vhu1hJRDS5IiL2nbMDic40qYlVh/wHauew1I ffSsVe3rPauC/Aahop9bDDhdTgZ7iI+vdvLDRzQkr081zG4Hm7k+BDRSskcRrnUk27bj xBEA== X-Forwarded-Encrypted: i=1; AFNElJ9vzHMb7S0v4DPm1txmCIj2s2JSis0ncPgQUfmVyLKRq1YIwJ+j4RrYmwz2RFofxKd7ihSi98JMPX9Fpjk=@vger.kernel.org X-Gm-Message-State: AOJu0YwvE4KagPQVDSfHUe6uW6GRQgKLowo0IHgcGQeR4J8iY+4w84M6 KSghh9dNd4EoCtF1oE+k3KlgvABmHcrzVPYP2hObBc08bxVODucivrOi X-Gm-Gg: Acq92OHIddJqOJ5+zNyitXXDqWG5ae3eMduS+Ml6U88LeoBLyzJgiB+wm36kGNVPWx+ QJM3g0tJkyAMjBT4XqCWASN7Hfq3GnoAjUhcmgvytCckoAdlf52p6ltCA2UwQM44KKezmJNQIRI dpgoKwvclZTekHsK7h6cafODYCGrXDi79+2TimGPPgsp/lOzITyDCcaUG3iDEgWTYCzVTuD+o6W P4sAuDjEUvYU1wC++HUjOSD1IVwYCIKh1ZK29Nx+quYDi9EtX8iuAaWEBFGeVaXIQVpac/kJSa5 MvOzovfjmDh+qtmGNhcE4HtbnBwSrhXm0arqTCODQqMZXWWsQRyALnaMK9DdJAjgvHWjjnVJZv9 efJwXzbFuyNLU0OF4CYHnhQxJkrXGbEqzmREikS/43TPmlel3dG9rxQr0UY7PaG8NURFuwJbdtg u4/iiZR3FPt05T2LMAL5MXo8gNN1MIvRvKJclFhgvI6cQYXY4CfID65p8TnFNPuIVCZuOQ6vvxj 0GE5empO+YVwuPoGlyocHflTCiijZ9PMSPDmcaDIFMXoXUw0+DVk89mu0FXUqrR X-Received: by 2002:a05:600c:4e13:b0:490:bd1d:4732 with SMTP id 5b1f17b1804b1-490c25eea3bmr291647535e9.23.1780922513967; Mon, 08 Jun 2026 05:41:53 -0700 (PDT) Received: from tiolaptop.telekom.ip (2a02-8388-013f-3800-2646-3d3e-bfee-9cee.cable.dynamic.v6.surfer.at. [2a02:8388:13f:3800:2646:3d3e:bfee:9cee]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490bc40716bsm414322615e9.12.2026.06.08.05.41.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 05:41:53 -0700 (PDT) From: Diogo Silva To: Sandy Huang , =?UTF-8?q?Heiko=20St=C3=BCbner?= , Andy Yan Cc: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Diogo Silva Subject: [PATCH v3] drm/rockchip: Remove dependency on DRM simple helpers Date: Mon, 8 Jun 2026 14:40:19 +0200 Message-ID: <20260608124018.480365-2-diogompaissilva@gmail.com> X-Mailer: git-send-email 2.51.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Simple KMS helper are deprecated since they only add an intermediate layer between drivers and the atomic modesetting. This patch removes the dependency on drm simple helpers from rockchip DRM drivers. Signed-off-by: Diogo Silva --- 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 776954c7d052..46c245e35d21 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 190cce9530c8..c3f41a4449f5 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 3547d91b25d3..a09b382d208e 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 d2e76d36d724..9dc207c2d20d 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 0de822360c8d..b23efb153c9e 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 cffc0af5190f..b6e154c35e7c 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 f35484715c2d..af34062685cd 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c @@ -24,7 +24,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 1996f8656612..b4ba9f894360 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 7a0c4fa29f2f..f3be2c91d147 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 add3123e5ce7..2ad24b914989 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); -- 2.51.2