From nobody Mon Jun 8 04:24:35 2026 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (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 089F54CB5B for ; Sun, 7 Jun 2026 12:38:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780835907; cv=none; b=rmLXNo72JcFM8UB7rpfYmNL9gHHdm8RhhTSKL5JjApxXM6dhcFXa5AYbJ0bNAHsBTQT/scaVjL19/tmkEQfGNe/6rpvbm4NCLC7Bp6SfKL1qcm1sQggS/aets8vSrDjl5UIrn6HFfECKUYSH2vwYNNAg93lOQ1OJ+uudHbQVLjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780835907; c=relaxed/simple; bh=Os7q2zMlH4BFZnA6Zk3bZOJS30BJLUGthzqe2sefpwc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=X8V+LKXh7k1n50LSkm4U8wqMwtp/AHHaP7lwZkl+5cQAYYL1DbKpeMUSFo0Pqiq1gOtvewDFwVQgvA8PPcA+SIGnyGSqfCWzk2AEDdhIQ8WD7fwD4uhKsHPkm0k6QN2qQ4UyckvsYKO45VInwKobeHRj5u1APaYV+0VVeoM+ddI= 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=MXKrlT4j; arc=none smtp.client-ip=209.85.221.50 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="MXKrlT4j" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-45eeea039ebso1733947f8f.1 for ; Sun, 07 Jun 2026 05:38:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780835904; x=1781440704; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MGJmTaj0v3fyny/5gzBI1fPt8RN2g4o65vx0LjqktFk=; b=MXKrlT4jVv0knJG7qcPFs6+B1KAknIf3eSakKxavitdEO1CX1/SagaBWodvUHItoAY cu++upb0+IpIA3UHrXCGHo9S4MEOMUmUeFMZvC/TSPH6cpaGO11LUbOdiyofgIB/dDLc bomss8hWcdysN9Y/+C1dQvXZBcQiMgh3Wv6sXyPpQ63G+HtPAxE0O5BpoZhUBCzEBGt7 6mB9et++h7KNdVjTfwoECcIOjU8kJTyEDehddG6vse1gWL4/AA1I10tl3PmhcIZMpt/w Re04Xb+0d1UDVROtKez+R5wbImLMdT10uEMQAStc+TNOgRNBpKLvB2QSHBHD546Tx/c3 4UwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780835904; x=1781440704; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=MGJmTaj0v3fyny/5gzBI1fPt8RN2g4o65vx0LjqktFk=; b=ATWZGTQTHfOYETGEWkom8J24wxy6RbbM055C//1DqYBgPYwWKkDIsucOwzAskR6g2R BhNjyoNf82L1lp0XJtO4Yh+AvI66HZOHjeYn4wORFVrC7g91OEdV3jCYTfKQfeldDiqc nrVsXF1AeIS42fpcU9EwVe0cUEnIaeTCi6sDIZ8OaYbDhBgb3uxZQcBfb+hgyyt9IDHX Y1Ex+s0ArPgIkhL2VWiI6PibhQKbzYJNeRU0UN/Xwf4G5u4inq7B4TPIdt8D7E+v1GFt bnEyPFLEmAqs6nOXh5I7E9ieC+DfiknX1DCPyDhHr4CTBepHTY6bIn6sO12dyIkoRPij 0F+A== X-Forwarded-Encrypted: i=1; AFNElJ8pcKf+uZQxINsu6cSY4DLu+wBLhSuzkzGq8NUw+h19v/FJQhCg4bZocT1VYpG8/47r8rtJ53X0dopUU+Q=@vger.kernel.org X-Gm-Message-State: AOJu0YxgasjzTyRkStbocyYkiDa4QgqJ8dkeYR8iV6bXIOiN90cVmyCE bU3AQOI3PZt9a+8vrld0k8lwUqFl+LxKu9a+MTOcKbpPHoqtdiVpldJA X-Gm-Gg: Acq92OGmGGBgSN8tobbrkgAiqa1CumXGxJoVBta3kDEQWVaU/Z/FtWa3qn1PdunnUjS 6w4Uy1aOjuLEwZ+7iO5554wJt4nkLd3hP5FUbS2/nz5ywLZSOdU4QOxgGQbNZS3G90z3RdPoQcf rIHlT75p63jOI6rhVvV/z20L/zG3u/DOluUo8mccP2dcQ9BxGSNRsA2xuAud1CBjuyr2JleJ+Zs VX8YAesw77TLHphUCl2dg4TBt+Z9Z3OZibOXWUzji1ia7YqJsuF09t3f8VoVHG+cxoHZV6Ya2ib 4Kv0Fmz0XpcJHz2+a3WaR3Yo/Y6Y7CE10jXdAUO2h2DdtcME0dqMRZBSc0q6C0SnTZAG92lA9rZ leZ0ZijwyHOCY6bEmmTqNc/28TNEX/wfyG009hVtCIwMjVjsl9ZBCru+Ku+mwfLyoVRHquNdjdT HiyEQiVMeTEyfENr4C4bk0rD9/x0OF4iQbognp6Epos4vyCWGuFjNSZit+XsEaZfI3ISODRPkSG A== X-Received: by 2002:a5d:4f11:0:b0:43c:fc5c:a9fe with SMTP id ffacd0b85a97d-460304fdf18mr12781534f8f.20.1780835904234; Sun, 07 Jun 2026 05:38:24 -0700 (PDT) Received: from tiolaptop.tail72d7bd.ts.net ([194.35.121.133]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f344558sm42201706f8f.18.2026.06.07.05.38.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 07 Jun 2026 05:38:23 -0700 (PDT) From: Diogo Silva To: heiko@sntech.de Cc: airlied@gmail.com, andy.yan@rock-chips.com, diogompaissilva@gmail.com, dri-devel@lists.freedesktop.org, hjc@rock-chips.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, maarten.lankhorst@linux.intel.com, mripard@kernel.org, simona@ffwll.ch, tzimmermann@suse.de Subject: [PATCH v2] drm/rockchip: dsi: Open-code drm_simple_encoder_init() Date: Sun, 7 Jun 2026 14:37:40 +0200 Message-ID: <20260607123739.393974-2-diogompaissilva@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <5277524.h16uAIiOU7@phil> References: <5277524.h16uAIiOU7@phil> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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_encoder_init from rockchip DRM drivers by inlining this helper. Signed-off-by: Diogo Silva --- 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_hdmi-rockchip.c | 8 ++++++-- drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 8 ++++++-- drivers/gpu/drm/rockchip/rk3066_hdmi.c | 8 ++++++-- drivers/gpu/drm/rockchip/rockchip_lvds.c | 9 +++++++-- drivers/gpu/drm/rockchip/rockchip_rgb.c | 8 ++++++-- 9 files changed, 56 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/= drm/rockchip/analogix_dp-rockchip.c index 96bd3dd239d2..ca6701319f2f 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 =20 #include "rockchip_drm_drv.h" =20 @@ -317,6 +316,10 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encode= r *encoder, return 0; } =20 +static const struct drm_encoder_funcs rockchip_dp_encoder_funcs =3D { + .destroy =3D drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs rockchip_dp_encoder_helper_fu= ncs =3D { .mode_fixup =3D rockchip_dp_drm_encoder_mode_fixup, .mode_set =3D rockchip_dp_drm_encoder_mode_set, @@ -369,8 +372,8 @@ static int rockchip_dp_drm_create_encoder(struct rockch= ip_dp_device *dp) dev->of_node); DRM_DEBUG_KMS("possible_crtcs =3D 0x%x\n", encoder->possible_crtcs); =20 - ret =3D drm_simple_encoder_init(drm_dev, encoder, - DRM_MODE_ENCODER_TMDS); + ret =3D 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/rockc= hip/cdn-dp-core.c index 177e30445ee8..060ffca1f3d8 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 =20 #include "cdn-dp-core.h" #include "cdn-dp-reg.h" @@ -671,6 +670,10 @@ static int cdn_dp_encoder_atomic_check(struct drm_enco= der *encoder, return 0; } =20 +static const struct drm_encoder_funcs cdn_dp_encoder_funcs =3D { + .destroy =3D drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs cdn_dp_encoder_helper_funcs = =3D { .atomic_check =3D cdn_dp_encoder_atomic_check, }; @@ -988,8 +991,8 @@ static int cdn_dp_bind(struct device *dev, struct devic= e *master, void *data) dev->of_node); DRM_DEBUG_KMS("possible_crtcs =3D 0x%x\n", encoder->possible_crtcs); =20 - ret =3D drm_simple_encoder_init(drm_dev, encoder, - DRM_MODE_ENCODER_TMDS); + ret =3D 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 =20 #include "rockchip_drm_drv.h" =20 @@ -825,6 +824,10 @@ static void dw_mipi_dsi_encoder_enable(struct drm_enco= der *encoder) clk_disable_unprepare(dsi->grf_clk); } =20 +static const struct drm_encoder_funcs dw_mipi_dsi_encoder_funcs =3D { + .destroy =3D drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs dw_mipi_dsi_encoder_helper_funcs =3D { .atomic_check =3D dw_mipi_dsi_encoder_atomic_check, @@ -840,7 +843,9 @@ static int rockchip_dsi_drm_create_encoder(struct dw_mi= pi_dsi_rockchip *dsi, encoder->possible_crtcs =3D drm_of_find_possible_crtcs(drm_dev, dsi->dev->of_node); =20 - ret =3D drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_DSI); + ret =3D 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 0aea764e29b2..687afc5590cd 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 =20 #include =20 @@ -275,6 +274,10 @@ dw_mipi_dsi2_encoder_atomic_check(struct drm_encoder *= encoder, return 0; } =20 +static const struct drm_encoder_funcs dw_mipi_dsi2_encoder_funcs =3D { + .destroy =3D drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs dw_mipi_dsi2_encoder_helper_funcs =3D { .atomic_enable =3D dw_mipi_dsi2_encoder_atomic_enable, @@ -290,7 +293,8 @@ static int rockchip_dsi2_drm_create_encoder(struct dw_m= ipi_dsi2_rockchip *dsi2, encoder->possible_crtcs =3D drm_of_find_possible_crtcs(drm_dev, dsi2->dev->of_node); =20 - ret =3D drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_DSI); + ret =3D 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_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index 0dc1eb5d2ae3..906264d65db3 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -16,7 +16,6 @@ #include #include #include -#include =20 #include "rockchip_drm_drv.h" =20 @@ -322,6 +321,10 @@ dw_hdmi_rockchip_encoder_atomic_check(struct drm_encod= er *encoder, return 0; } =20 +static const struct drm_encoder_funcs dw_hdmi_rockchip_encoder_funcs =3D { + .destroy =3D drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs dw_hdmi_rockchip_encoder_help= er_funcs =3D { .mode_fixup =3D dw_hdmi_rockchip_encoder_mode_fixup, .mode_set =3D dw_hdmi_rockchip_encoder_mode_set, @@ -604,7 +607,8 @@ static int dw_hdmi_rockchip_bind(struct device *dev, st= ruct device *master, } =20 drm_encoder_helper_add(encoder, &dw_hdmi_rockchip_encoder_helper_funcs); - drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS); + drm_encoder_init(drm, encoder, &dw_hdmi_rockchip_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); =20 platform_set_drvdata(pdev, hdmi); =20 diff --git a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c b/drivers/gpu/d= rm/rockchip/dw_hdmi_qp-rockchip.c index 1a09bcc96c3e..ed665352618f 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c @@ -23,7 +23,6 @@ #include #include #include -#include =20 #include "rockchip_drm_drv.h" =20 @@ -160,6 +159,10 @@ dw_hdmi_qp_rockchip_encoder_atomic_check(struct drm_en= coder *encoder, return ret; } =20 +static const struct drm_encoder_funcs dw_hdmi_qp_rockchip_encoder_funcs = =3D { + .destroy =3D drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs dw_hdmi_qp_rockchip_encoder_helper_funcs =3D { .enable =3D dw_hdmi_qp_rockchip_encoder_enable, @@ -586,7 +589,8 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev,= struct device *master, return ret; =20 drm_encoder_helper_add(encoder, &dw_hdmi_qp_rockchip_encoder_helper_funcs= ); - drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS); + drm_encoder_init(drm, encoder, &dw_hdmi_qp_rockchip_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); =20 platform_set_drvdata(pdev, hdmi); =20 diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockc= hip/rk3066_hdmi.c index 9066ee2d1dff..a21df6f380f5 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 =20 #include #include @@ -454,6 +453,10 @@ rk3066_hdmi_encoder_atomic_check(struct drm_encoder *e= ncoder, return 0; } =20 +static const struct drm_encoder_funcs rk3066_hdmi_encoder_funcs =3D { + .destroy =3D drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs rk3066_hdmi_encoder_helper_funcs =3D { .atomic_check =3D rk3066_hdmi_encoder_atomic_check, @@ -696,7 +699,8 @@ rk3066_hdmi_register(struct drm_device *drm, struct rk3= 066_hdmi *hdmi) return -EPROBE_DEFER; =20 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); =20 hdmi->bridge.driver_private =3D hdmi; hdmi->bridge.funcs =3D &rk3066_hdmi_bridge_funcs; diff --git a/drivers/gpu/drm/rockchip/rockchip_lvds.c b/drivers/gpu/drm/roc= kchip/rockchip_lvds.c index 75f898a10cbc..c3b30c622873 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 =20 #include "rockchip_drm_drv.h" #include "rockchip_lvds.h" @@ -427,6 +426,10 @@ static void px30_lvds_encoder_disable(struct drm_encod= er *encoder) drm_panel_unprepare(lvds->panel); } =20 +static const struct drm_encoder_funcs rockchip_lvds_encoder_funcs =3D { + .destroy =3D drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs rk3288_lvds_encoder_helper_funcs =3D { .enable =3D rk3288_lvds_encoder_enable, @@ -594,7 +597,9 @@ static int rockchip_lvds_bind(struct device *dev, struc= t device *master, encoder->possible_crtcs =3D drm_of_find_possible_crtcs(drm_dev, dev->of_node); =20 - ret =3D drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_LVDS); + ret =3D 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/rock= chip/rockchip_rgb.c index 5c0c6e2cc28d..b5b8322a1260 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 =20 #include "rockchip_drm_drv.h" #include "rockchip_rgb.h" @@ -65,6 +64,10 @@ rockchip_rgb_encoder_atomic_check(struct drm_encoder *en= coder, return 0; } =20 +static const struct drm_encoder_funcs rockchip_rgb_encoder_funcs =3D { + .destroy =3D drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs rockchip_rgb_encoder_helper_funcs =3D { .atomic_check =3D rockchip_rgb_encoder_atomic_check, @@ -127,7 +130,8 @@ struct rockchip_rgb *rockchip_rgb_init(struct device *d= ev, encoder =3D &rgb->encoder.encoder; encoder->possible_crtcs =3D drm_crtc_mask(crtc); =20 - ret =3D drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_NONE); + ret =3D 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); --=20 2.51.2