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 519633A6B85 for ; Tue, 23 Jun 2026 20:34: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=1782246896; cv=none; b=BpaV1AIkExWsDEtSp+JiKKNvBNKDCCChPzoPruKiNtxLBHeFJotBDR3CNH6HFyGh0RN1mLzEdYFEn1l+3/AfU884mkuoHV7HGjzVcS69SKbN6uBXwWPZ3t1IDeY6kX3AXjmWh1P+LWCnTt9MmfLiOxhz2Cm76Jat0bcLRSP38qA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782246896; c=relaxed/simple; bh=VIVa48SIpA6zVOPSS8O6SLVXDjtd6I9Jk+9GWFqC30Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=Ig5vP1BSAO3Yvijqf7VLFdt1KmF2auN/grfx9MX9UFOF3Q/iOTN0flK0f/9Jm3c72xqn9qma+oZcBvlSRdJilxz0BfJo1OvjMdRAEblopDX2Adidl0gIuLNV+jrk2ZIGhjPPdOgihGhppJbCponqf8MSiFoj732Hl4DbMxawSlw= 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=GUfqtdzn; 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="GUfqtdzn" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4922244f7c7so2861005e9.0 for ; Tue, 23 Jun 2026 13:34:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782246894; x=1782851694; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=5t3Yym7TNcn23mBBw6H+IPIGFaMcwRdXEZmNa7/R0B4=; b=GUfqtdzn7mgpXi40zdL7fhrTihgIi9k8brlNVA9XIFyidroR9N6l0ZMV9rAvQDi9gv 4fbp/Mqa6vewrVJ+3brCIw0OEMz0HnhTVWT8ANk+a8o3O/lkAgmKvNAExeIXymdU0Mrx VSX2OZrYphmt4Urcw5LSUY+mr8SBtdWpqEIO7lpsfEASfqY8D+Dkh8k7HX4/0Ls5FImj aawPM79K56TTSWq96BQIWFpTt9eTW1tKYt5YStAUQ5CLBXclR8rFgckk/KtqJwHGSBOx MxNMufq+o+WanCExFCNs2V1RQ0U5PCrSWZG8GiQwEZzN9jVee4toRcBaax/X3Utf8b2S L6EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782246894; x=1782851694; 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=5t3Yym7TNcn23mBBw6H+IPIGFaMcwRdXEZmNa7/R0B4=; b=r6Q9e1JRvjTT2Mym1XlpvIRY/c7/s68dgcjeeb8wGG7yr3BIid5S0VD9S82Wts3lY3 bK7W8A8/TQ4WF7PV2zlFAqlsSNioXZ+hIs9lP4j4kSGnWyMkCeNlNN2TWzpWlXL1QT0Y ixtrpWwU+IiHXWm9kIw/mVmnTUMS3Q2YL2RlOhDZ/jLRkcd6heiLUdOgUNVwAgXtqq7V MKzKSAxpUYwyuoSMnjb4J0ZHtX4WE55+aehQ66ISkTrB/Yy8FU9n4QXhB+dVFoPNzWxR 86bcpcwF+hZLOTEe75+szwTCsxLqPMR4BSgd9L4NJhOAf6lNnFb7WUrsUYyBmKCMIJ/n Py4Q== X-Forwarded-Encrypted: i=1; AFNElJ+MTfjAJnJOkn4Lfp1c1DrT66ros6MZbPXJHpOWmYH1O/7w8UZotfqAKH5sDCh5YiXFBdOY9M9oKzykzMs=@vger.kernel.org X-Gm-Message-State: AOJu0Yzz3diSmUrd5d/x2CBMyGxSDT+hiv6XWCFL0fA3OoCagVaVP/vz X9xAEN14EkcF26ppxrDOuiKQ4547+M+54kTLelhuypyVLLGtBfbPYP83 X-Gm-Gg: AfdE7clWYVzmpNM75MmmOf1ouKZX44xBeVsxJMMD4+T7IjBPNCJ2g9XuD89LQuXe9CA 3THpnNWwDNgEIgaUtbpcwxvs0TPZzr2GQaHAT4Dc/WC1smI/i1WMy8YsuJAH67QcrD8ila5Racs pS4W68qozpBRHpIluG/3fXEiyaFw8EivEaYfdIVSX7AFkq0Bvw1PoGKkg11eYiiwM/5DZn+/uG9 +LvfqWci4613NbIhj3quGOH69j36lxoQJuHt3xWubpmJXbWQpwZzunUlBroLJbJvC9g3vRSJwg9 t2EwIjFfKh2+950+y9K51TPBm7I4xxvO0j+TUnWJqD3w6vONAPuSCHFVDkbv+0Krww+KXJeCGII S+sVCu1N+BPRp3Ss+1TZsgGavWUfgiZMtxVx+FBlvFmVvswv3cLzA70zg5j3DrSYU4sTryB18DJ hFhAIb7+PHfqQqIr+7J93k X-Received: by 2002:a05:600c:34c2:b0:492:465a:7e5b with SMTP id 5b1f17b1804b1-4926087371bmr2714075e9.22.1782246893690; Tue, 23 Jun 2026 13:34:53 -0700 (PDT) Received: from [127.0.0.2] ([194.35.121.133]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4923fd154fdsm374613865e9.1.2026.06.23.13.34.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Jun 2026 13:34:53 -0700 (PDT) From: Diogo Silva Date: Tue, 23 Jun 2026 22:34:40 +0200 Subject: [PATCH] drm/sun4i: Remove dependency on DRM simple helpers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260623-sun4i_simple-v1-1-fa6696df1fad@gmail.com> X-B4-Tracking: v=1; b=H4sIAN/tOmoC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIzMDMyNj3eLSPJPM+OLM3IKcVF0j02QzCwsL01RjU0sloJaCotS0zAqwcdG xtbUAyL0mhF4AAAA= X-Change-ID: 20260623-sun4i_simple-25c68885e359 To: Chen-Yu Tsai , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jernej Skrabec , Samuel Holland Cc: dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Diogo Silva X-Mailer: b4 0.14.3 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 sun4i DRM drivers. Signed-off-by: Diogo Silva --- drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 9 ++++++--- drivers/gpu/drm/sun4i/sun4i_lvds.c | 10 +++++++--- drivers/gpu/drm/sun4i/sun4i_rgb.c | 10 +++++++--- drivers/gpu/drm/sun4i/sun4i_tv.c | 10 +++++++--- drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 10 +++++++--- drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c | 8 ++++++-- 6 files changed, 40 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c index 8f64464621c9..e99f52ebb26f 100644 --- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c +++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -172,6 +171,10 @@ static void sun4i_hdmi_enable(struct drm_encoder *encoder, writel(val, hdmi->base + SUN4I_HDMI_VID_CTRL_REG); } +static const struct drm_encoder_funcs sun4i_hdmi_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs sun4i_hdmi_helper_funcs = { .atomic_disable = sun4i_hdmi_disable, .atomic_enable = sun4i_hdmi_enable, @@ -624,8 +627,8 @@ static int sun4i_hdmi_bind(struct device *dev, struct device *master, drm_encoder_helper_add(&hdmi->encoder, &sun4i_hdmi_helper_funcs); - ret = drm_simple_encoder_init(drm, &hdmi->encoder, - DRM_MODE_ENCODER_TMDS); + ret = drm_encoder_init(drm, &hdmi->encoder, &sun4i_hdmi_funcs, + DRM_MODE_ENCODER_TMDS, NULL); if (ret) { dev_err(dev, "Couldn't initialise the HDMI encoder\n"); goto err_put_ddc_i2c; diff --git a/drivers/gpu/drm/sun4i/sun4i_lvds.c b/drivers/gpu/drm/sun4i/sun4i_lvds.c index 6716e895ae8a..35a3f987c37a 100644 --- a/drivers/gpu/drm/sun4i/sun4i_lvds.c +++ b/drivers/gpu/drm/sun4i/sun4i_lvds.c @@ -8,11 +8,11 @@ #include #include +#include #include #include #include #include -#include #include "sun4i_crtc.h" #include "sun4i_tcon.h" @@ -89,6 +89,10 @@ static void sun4i_lvds_encoder_disable(struct drm_encoder *encoder) } } +static const struct drm_encoder_funcs sun4i_lvds_enc_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs sun4i_lvds_enc_helper_funcs = { .disable = sun4i_lvds_encoder_disable, .enable = sun4i_lvds_encoder_enable, @@ -115,8 +119,8 @@ int sun4i_lvds_init(struct drm_device *drm, struct sun4i_tcon *tcon) drm_encoder_helper_add(&lvds->encoder, &sun4i_lvds_enc_helper_funcs); - ret = drm_simple_encoder_init(drm, &lvds->encoder, - DRM_MODE_ENCODER_LVDS); + ret = drm_encoder_init(drm, &lvds->encoder, &sun4i_lvds_enc_funcs, + DRM_MODE_ENCODER_LVDS, NULL); if (ret) { dev_err(drm->dev, "Couldn't initialise the lvds encoder\n"); goto err_out; diff --git a/drivers/gpu/drm/sun4i/sun4i_rgb.c b/drivers/gpu/drm/sun4i/sun4i_rgb.c index dfb6acc42f02..9c3fbf1b949e 100644 --- a/drivers/gpu/drm/sun4i/sun4i_rgb.c +++ b/drivers/gpu/drm/sun4i/sun4i_rgb.c @@ -10,11 +10,11 @@ #include #include +#include #include #include #include #include -#include #include "sun4i_crtc.h" #include "sun4i_tcon.h" @@ -180,6 +180,10 @@ static void sun4i_rgb_encoder_disable(struct drm_encoder *encoder) } } +static const struct drm_encoder_funcs sun4i_rgb_enc_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs sun4i_rgb_enc_helper_funcs = { .disable = sun4i_rgb_encoder_disable, .enable = sun4i_rgb_encoder_enable, @@ -207,8 +211,8 @@ int sun4i_rgb_init(struct drm_device *drm, struct sun4i_tcon *tcon) drm_encoder_helper_add(&rgb->encoder, &sun4i_rgb_enc_helper_funcs); - ret = drm_simple_encoder_init(drm, &rgb->encoder, - DRM_MODE_ENCODER_NONE); + ret = drm_encoder_init(drm, &rgb->encoder, &sun4i_rgb_enc_funcs, + DRM_MODE_ENCODER_NONE, NULL); if (ret) { dev_err(drm->dev, "Couldn't initialise the rgb encoder\n"); goto err_out; diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c index 814b77f278f6..ce22f1662c0c 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tv.c +++ b/drivers/gpu/drm/sun4i/sun4i_tv.c @@ -16,11 +16,11 @@ #include #include +#include #include #include #include #include -#include #include "sun4i_crtc.h" #include "sun4i_drv.h" @@ -391,6 +391,10 @@ static void sun4i_tv_enable(struct drm_encoder *encoder, SUN4I_TVE_EN_ENABLE); } +static const struct drm_encoder_funcs sun4i_tv_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs sun4i_tv_helper_funcs = { .atomic_disable = sun4i_tv_disable, .atomic_enable = sun4i_tv_enable, @@ -474,8 +478,8 @@ static int sun4i_tv_bind(struct device *dev, struct device *master, drm_encoder_helper_add(&tv->encoder, &sun4i_tv_helper_funcs); - ret = drm_simple_encoder_init(drm, &tv->encoder, - DRM_MODE_ENCODER_TVDAC); + ret = drm_encoder_init(drm, &tv->encoder, &sun4i_tv_funcs, + DRM_MODE_ENCODER_TVDAC, NULL); if (ret) { dev_err(dev, "Couldn't initialise the TV encoder\n"); goto err_disable_clk; diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c index c35b70d83e53..f0c9f0e573d2 100644 --- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c @@ -20,11 +20,11 @@ #include #include +#include #include #include #include #include -#include #include "sun4i_crtc.h" #include "sun4i_tcon.h" @@ -842,6 +842,10 @@ static const struct drm_connector_funcs sun6i_dsi_connector_funcs = { .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, }; +static const struct drm_encoder_funcs sun6i_dsi_enc_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs sun6i_dsi_enc_helper_funcs = { .disable = sun6i_dsi_encoder_disable, .enable = sun6i_dsi_encoder_enable, @@ -1056,8 +1060,8 @@ static int sun6i_dsi_bind(struct device *dev, struct device *master, drm_encoder_helper_add(&dsi->encoder, &sun6i_dsi_enc_helper_funcs); - ret = drm_simple_encoder_init(drm, &dsi->encoder, - DRM_MODE_ENCODER_DSI); + ret = drm_encoder_init(drm, &dsi->encoder, &sun6i_dsi_enc_funcs, + DRM_MODE_ENCODER_DSI, NULL); if (ret) { dev_err(dsi->dev, "Couldn't initialise the DSI encoder\n"); return ret; diff --git a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c index 96532709c2a7..9694ad142a7d 100644 --- a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c +++ b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c @@ -9,8 +9,8 @@ #include #include +#include #include -#include #include "sun8i_dw_hdmi.h" #include "sun8i_tcon_top.h" @@ -23,6 +23,9 @@ static void sun8i_dw_hdmi_encoder_mode_set(struct drm_encoder *encoder, clk_set_rate(hdmi->clk_tmds, mode->crtc_clock * 1000); } +static const struct drm_encoder_funcs sun8i_dw_hdmi_encoder_funcs = { + .destroy = drm_encoder_cleanup, +}; static const struct drm_encoder_helper_funcs sun8i_dw_hdmi_encoder_helper_funcs = { @@ -180,7 +183,8 @@ static int sun8i_dw_hdmi_bind(struct device *dev, struct device *master, goto err_disable_clk_tmds; drm_encoder_helper_add(encoder, &sun8i_dw_hdmi_encoder_helper_funcs); - drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS); + drm_encoder_init(drm, encoder, &sun8i_dw_hdmi_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); plat_data->mode_valid = hdmi->quirks->mode_valid; plat_data->use_drm_infoframe = hdmi->quirks->use_drm_infoframe; --- base-commit: e2a6e04d045a56c6dc61e1eb9e2a6d7cf86512cd change-id: 20260623-sun4i_simple-25c68885e359 Best regards, -- Diogo Silva