From: Suraj Kandpal <suraj.kandpal@intel.com>
To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org,
linux-renesas-soc@vger.kernel.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
linux-kernel@vger.kernel.org
Cc: dmitry.baryshkov@oss.qualcomm.com, John.Harrison@Igalia.com,
kernel-dev@igalia.com, alex.hung@amd.com, liviu.dudau@arm.com,
louis.chauvet@bootlin.com, maarten.lankhorst@linux.intel.com,
mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com,
simona@ffwll.ch, laurent.pinchart+renesas@ideasonboard.com,
tomi.valkeinen+renesas@ideasonboard.com,
kieran.bingham+renesas@ideasonboard.com,
dave.stevenson@raspberrypi.com, mcanal@igalia.com,
kernel-list@raspberrypi.com, uma.shankar@intel.com,
arun.r.murthy@intel.com, Suraj Kandpal <suraj.kandpal@intel.com>
Subject: [PATCH v7 3/8] drm: writeback: Modify writeback init helpers
Date: Tue, 10 Nov 2026 11:46:32 +0530 [thread overview]
Message-ID: <20261110061637.2500929-4-suraj.kandpal@intel.com> (raw)
In-Reply-To: <20261110061637.2500929-1-suraj.kandpal@intel.com>
The writeback connector init helpers (drm_writeback_connector_init
and drmm_writeback_connector_init) require access to the
parent drm_connector object as well as the drm_writeback_connector
object itself. So, pass in the top level drm_connector and traverse
down to drm_writeback_connector rather than passing in the lower level
object and traversing back up. Even where such is not the case, update
to use the top level object for consistency across the interface.
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: John Harrison <John.Harrison@Igalia.com>
Reviewed-by: Alex Hung <alex.hung@amd.com>
---
v6 -> v7:
- Rebase over latest kernel
- Rebase over latest writeback series by Dmitry
- Update commit message (Alex)
v5 -> v6:
- Rebase over latest kernel
v4 -> v5:
- Make @connector kerneldoc wording consistent across the series (John)
- Fix Drm -> DRM (John)
v3 -> v4:
- Update subject line for consitency (John)
- Update commit message across commits for consitency (John)
- Rename writeback to wb_connector in rcar_du_crtc for clarity (John)
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 2 +-
.../drm/arm/display/komeda/komeda_wb_connector.c | 5 +----
drivers/gpu/drm/arm/malidp_mw.c | 2 +-
drivers/gpu/drm/drm_writeback.c | 14 +++++++-------
drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 2 +-
.../gpu/drm/renesas/rcar-du/rcar_du_writeback.c | 6 +++---
drivers/gpu/drm/vc4/vc4_txp.c | 2 +-
drivers/gpu/drm/vkms/vkms_writeback.c | 4 ++--
include/drm/drm_writeback.h | 4 ++--
9 files changed, 19 insertions(+), 22 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
index 4cd8fdf6ef07..e98481d5aa74 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
@@ -262,7 +262,7 @@ int amdgpu_dm_wb_connector_init(struct amdgpu_display_manager *dm,
drm_connector_helper_add(&wbcon->base, &amdgpu_dm_wb_conn_helper_funcs);
- res = drm_writeback_connector_init(&dm->adev->ddev, &wbcon->base.writeback,
+ res = drm_writeback_connector_init(&dm->adev->ddev, &wbcon->base,
&amdgpu_dm_wb_connector_funcs,
&wbcon->encoder,
amdgpu_dm_wb_formats,
diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c
index 07075a8b5aa8..5cdcc468e8a4 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c
@@ -145,7 +145,6 @@ static int komeda_wb_connector_add(struct komeda_kms_dev *kms,
{
struct komeda_dev *mdev = kms->base.dev_private;
struct komeda_wb_connector *kwb_conn;
- struct drm_writeback_connector *wb_conn;
struct drm_display_info *info;
struct drm_encoder *encoder;
struct drm_encoder *wb_encoder;
@@ -164,8 +163,6 @@ static int komeda_wb_connector_add(struct komeda_kms_dev *kms,
kwb_conn->wb_layer = kcrtc->master->wb_layer;
- wb_conn = &kwb_conn->base.writeback;
-
formats = komeda_get_layer_fourcc_list(&mdev->fmt_tbl,
kwb_conn->wb_layer->layer_type,
&n_formats);
@@ -186,7 +183,7 @@ static int komeda_wb_connector_add(struct komeda_kms_dev *kms,
return err;
}
- err = drm_writeback_connector_init(&kms->base, wb_conn,
+ err = drm_writeback_connector_init(&kms->base, &kwb_conn->base,
&komeda_wb_connector_funcs,
wb_encoder,
formats, n_formats);
diff --git a/drivers/gpu/drm/arm/malidp_mw.c b/drivers/gpu/drm/arm/malidp_mw.c
index 503a19963587..bf06a47c3b63 100644
--- a/drivers/gpu/drm/arm/malidp_mw.c
+++ b/drivers/gpu/drm/arm/malidp_mw.c
@@ -239,7 +239,7 @@ int malidp_mw_connector_init(struct drm_device *drm)
return ret;
}
- ret = drm_writeback_connector_init(drm, &malidp->mw_connector.writeback,
+ ret = drm_writeback_connector_init(drm, &malidp->mw_connector,
&malidp_mw_connector_funcs,
&malidp->mw_encoder,
formats, n_formats);
diff --git a/drivers/gpu/drm/drm_writeback.c b/drivers/gpu/drm/drm_writeback.c
index c3d2853755ac..4a32ab840862 100644
--- a/drivers/gpu/drm/drm_writeback.c
+++ b/drivers/gpu/drm/drm_writeback.c
@@ -224,9 +224,9 @@ static int __drm_writeback_connector_init(struct drm_device *dev,
* drm_writeback_connector_init - Initialize a writeback connector
*
* @dev: DRM device
- * @wb_connector: Writeback connector to initialize
- * @enc: handle to the already initialized drm encoder
+ * @connector: DRM connector which contains the writeback connector to initialize
* @con_funcs: Connector funcs vtable
+ * @enc: handle to the already initialized drm encoder
* @formats: Array of supported pixel formats for the writeback engine
* @n_formats: Length of the formats array
*
@@ -249,12 +249,12 @@ static int __drm_writeback_connector_init(struct drm_device *dev,
* Returns: 0 on success, or a negative error code
*/
int drm_writeback_connector_init(struct drm_device *dev,
- struct drm_writeback_connector *wb_connector,
+ struct drm_connector *connector,
const struct drm_connector_funcs *con_funcs,
struct drm_encoder *enc,
const u32 *formats, int n_formats)
{
- struct drm_connector *connector = drm_writeback_to_connector(wb_connector);
+ struct drm_writeback_connector *wb_connector = &connector->writeback;
int ret;
ret = drm_connector_init(dev, connector, con_funcs,
@@ -307,7 +307,7 @@ void drm_writeback_connector_cleanup(struct drm_connector *connector)
* drmm_writeback_connector_init - Initialize a writeback connector
*
* @dev: DRM device
- * @wb_connector: Writeback connector to initialize
+ * @connector: DRM connector which contains the writeback connector to initialize
* @con_funcs: Connector funcs vtable
* @enc: Encoder to connect this writeback connector
* @formats: Array of supported pixel formats for the writeback engine
@@ -324,12 +324,12 @@ void drm_writeback_connector_cleanup(struct drm_connector *connector)
* Returns: 0 on success, or a negative error code
*/
int drmm_writeback_connector_init(struct drm_device *dev,
- struct drm_writeback_connector *wb_connector,
+ struct drm_connector *connector,
const struct drm_connector_funcs *con_funcs,
struct drm_encoder *enc,
const u32 *formats, int n_formats)
{
- struct drm_connector *connector = drm_writeback_to_connector(wb_connector);
+ struct drm_writeback_connector *wb_connector = &connector->writeback;
int ret;
ret = drmm_connector_init(dev, connector, con_funcs,
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
index 95db5002e999..38c214dea08d 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
@@ -134,7 +134,7 @@ int dpu_writeback_init(struct drm_device *dev, struct drm_encoder *enc,
drm_connector_helper_add(&dpu_wb_conn->base, &dpu_wb_conn_helper_funcs);
- rc = drmm_writeback_connector_init(dev, &dpu_wb_conn->base.writeback,
+ rc = drmm_writeback_connector_init(dev, &dpu_wb_conn->base,
&dpu_wb_conn_funcs, enc,
format_list, num_formats);
diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c b/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c
index 0708e5a38a15..5ad8b935eb81 100644
--- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c
+++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c
@@ -204,7 +204,7 @@ static const u32 writeback_formats[] = {
int rcar_du_writeback_init(struct rcar_du_device *rcdu,
struct rcar_du_crtc *rcrtc)
{
- struct drm_writeback_connector *wb_conn = &rcrtc->wb_connector.writeback;
+ struct drm_connector *connector = &rcrtc->wb_connector;
struct drm_encoder *encoder = &rcrtc->encoder;
int ret;
@@ -216,9 +216,9 @@ int rcar_du_writeback_init(struct rcar_du_device *rcdu,
if (ret)
return ret;
- drm_connector_helper_add(&rcrtc->wb_connector,
+ drm_connector_helper_add(connector,
&rcar_du_wb_conn_helper_funcs);
- ret = drm_writeback_connector_init(&rcdu->ddev, wb_conn,
+ ret = drm_writeback_connector_init(&rcdu->ddev, connector,
&rcar_du_wb_conn_funcs,
encoder,
writeback_formats,
diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c
index 591753dcfb30..34a9c714deb8 100644
--- a/drivers/gpu/drm/vc4/vc4_txp.c
+++ b/drivers/gpu/drm/vc4/vc4_txp.c
@@ -601,7 +601,7 @@ static int vc4_txp_bind(struct device *dev, struct device *master, void *data)
drm_connector_helper_add(&txp->connector,
&vc4_txp_connector_helper_funcs);
- ret = drm_writeback_connector_init(drm, &txp->connector.writeback,
+ ret = drm_writeback_connector_init(drm, &txp->connector,
&vc4_txp_connector_funcs,
encoder,
drm_fmts, ARRAY_SIZE(drm_fmts));
diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c
index b9f33f2e8b92..b8ef524fe313 100644
--- a/drivers/gpu/drm/vkms/vkms_writeback.c
+++ b/drivers/gpu/drm/vkms/vkms_writeback.c
@@ -170,7 +170,6 @@ static const struct drm_connector_helper_funcs vkms_wb_conn_helper_funcs = {
int vkms_enable_writeback_connector(struct vkms_device *vkmsdev,
struct vkms_output *vkms_output)
{
- struct drm_writeback_connector *wb = &vkms_output->wb_connector.writeback;
int ret;
ret = drmm_encoder_init(&vkmsdev->drm, &vkms_output->wb_encoder,
@@ -183,7 +182,8 @@ int vkms_enable_writeback_connector(struct vkms_device *vkmsdev,
drm_connector_helper_add(&vkms_output->wb_connector, &vkms_wb_conn_helper_funcs);
- return drmm_writeback_connector_init(&vkmsdev->drm, wb,
+ return drmm_writeback_connector_init(&vkmsdev->drm,
+ &vkms_output->wb_connector,
&vkms_wb_connector_funcs,
&vkms_output->wb_encoder,
vkms_wb_formats,
diff --git a/include/drm/drm_writeback.h b/include/drm/drm_writeback.h
index 702141099520..c6960c7e634e 100644
--- a/include/drm/drm_writeback.h
+++ b/include/drm/drm_writeback.h
@@ -78,13 +78,13 @@ drm_writeback_to_connector(struct drm_writeback_connector *wb_connector)
}
int drm_writeback_connector_init(struct drm_device *dev,
- struct drm_writeback_connector *wb_connector,
+ struct drm_connector *connector,
const struct drm_connector_funcs *con_funcs,
struct drm_encoder *enc,
const u32 *formats, int n_formats);
int drmm_writeback_connector_init(struct drm_device *dev,
- struct drm_writeback_connector *wb_connector,
+ struct drm_connector *connector,
const struct drm_connector_funcs *con_funcs,
struct drm_encoder *enc,
const u32 *formats, int n_formats);
--
2.34.1
next prev parent reply other threads:[~2026-11-10 6:17 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-10 6:16 [PATCH v7 0/8] Refactor drm_writeback_connector structure Suraj Kandpal
2026-11-10 6:16 ` [PATCH v7 DO NOT REVIEW 1/8] drm: writeback: drop excess connector initialization functions Suraj Kandpal
2026-11-10 6:16 ` [PATCH v7 2/8] drm: writeback: Refactor drm_writeback_connector structure Suraj Kandpal
2026-11-10 6:16 ` Suraj Kandpal [this message]
2026-11-10 6:16 ` [PATCH v7 4/8] drm: writeback: Modify drm_writeback_queue_job helper Suraj Kandpal
2026-11-10 6:16 ` [PATCH v7 5/8] drm: writeback: Modify drm_writeback_signal_completion helper Suraj Kandpal
2026-11-10 6:16 ` [PATCH v7 6/8] drm: writeback: Modify drm_writeback_get_out_fence helper Suraj Kandpal
2026-11-10 6:16 ` [PATCH v7 7/8] drm: writeback: Modify prepare_writeback_job helper Suraj Kandpal
2026-11-10 6:16 ` [PATCH v7 8/8] drm: writeback: Modify cleanup_writeback_job helper Suraj Kandpal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261110061637.2500929-4-suraj.kandpal@intel.com \
--to=suraj.kandpal@intel.com \
--cc=John.Harrison@Igalia.com \
--cc=airlied@gmail.com \
--cc=alex.hung@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=arun.r.murthy@intel.com \
--cc=dave.stevenson@raspberrypi.com \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=kernel-dev@igalia.com \
--cc=kernel-list@raspberrypi.com \
--cc=kieran.bingham+renesas@ideasonboard.com \
--cc=laurent.pinchart+renesas@ideasonboard.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=liviu.dudau@arm.com \
--cc=louis.chauvet@bootlin.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mcanal@igalia.com \
--cc=mripard@kernel.org \
--cc=simona@ffwll.ch \
--cc=tomi.valkeinen+renesas@ideasonboard.com \
--cc=tzimmermann@suse.de \
--cc=uma.shankar@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®