From nobody Thu Apr 2 18:53:49 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 97A1C37A4BC for ; Mon, 16 Mar 2026 08:30:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649848; cv=none; b=LWwztrk66Zwo56oYAuzH/Gm7pyOfeCQboS9usXTar0ysqG55KGIYLukhZYNBGuhzitAvoCuLwRyOUEwl/QD3zu3PLwDBr/kmt0GJO0F9aLOF3JZnYH6qBjbXNMAeOE8TM+YhhXEdQtlc2cpAsRbOK9jnFB3hbkwDVYdT4SvMWd4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649848; c=relaxed/simple; bh=xd5ze48IKlFeoMCjfDxsDPfIrHOrmPevk6baou3x6dk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=AeoWuzayogqfKsFHcW7iPzUphLaYPqV514pAoxoYQkIxL0ZJWQ1o5HxNhkiLz/5dxoaZ47gc/gjPb+FmLFv2mm8eG8yRpvRHD+Y0Nk6pGxdg1vJOQs7373j6oqgIHNQ/FSeSeuytICouFJjBUULzlYUowKks5+Wvph7MFH5YGIs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=D7oF5AEc; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="D7oF5AEc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1773649847; x=1805185847; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xd5ze48IKlFeoMCjfDxsDPfIrHOrmPevk6baou3x6dk=; b=D7oF5AEc+J2E0cY/ElOBXnC6OmLbtXvgZnbzXX/Bh653CdiPcu/fYzFh xk4nKF6Gan0N2ZKjMeu5RUJab5v+PpuB1wgWmjBWJ810IiqA19wf5NEHw o8KtEr9vy/qRtPNX5NZ4b30wFcdmd+US5o6N6P7ElEyOEIwyA0U9yum8v mqRcq4ApvzK4BOSq4UddWrmw7xyH3uRSgDl2Twi3V3wpLShrXrR+x5NA4 c9RadYkx+yyc4r1lajvraS89/5Lfq1CsEtiXxFceIyZeyn26O9NpRsFi5 pkog4SngGjt/WwcVSLeZy7hcaV+NOn0ZoRGn4nR3oJRtChUweD4YIW/qL Q==; X-CSE-ConnectionGUID: DhhM0D51Qcq/Q8JuIHWtDg== X-CSE-MsgGUID: qhTGiBfDRiCcvWFsyGZ66g== X-IronPort-AV: E=McAfee;i="6800,10657,11730"; a="77268199" X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="77268199" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2026 01:30:45 -0700 X-CSE-ConnectionGUID: aabWqP9PRga7x1weWYKl9A== X-CSE-MsgGUID: vVdgdwWJQyKOluZNJkDseg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="220888986" Received: from kandpal-x299-ud4-pro.iind.intel.com ([10.190.239.10]) by orviesa006.jf.intel.com with ESMTP; 16 Mar 2026 01:30:36 -0700 From: Suraj Kandpal To: freedreno@lists.freedesktop.org, dri-devel@lists.freedesktop.org, kernel-list@raspberrypi.com, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: ankit.k.nautiyal@intel.com, uma.shankar@intel.com, dmitry.baryshkov@oss.qualcomm.com, arun.r.murthy@intel.com, jani.nikula@intel.com, harry.wentland@amd.com, siqueira@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, robin.clark@oss.qualcomm.com, abhinav.kumar@linux.dev, tzimmermann@suse.de, sean@poorly.ru, marijn.suijten@somainline.org, laurent.pinchart+renesas@ideasonboard.com, dave.stevenson@raspberrypi.com, tomi.valkeinen+renesas@ideasonboard.com, kieran.bingham+renesas@ideasonboard.com, Suraj Kandpal , Louis Chauvet Subject: [PATCH v3 1/7] drm: writeback: Refactor drm_writeback_connector structure Date: Mon, 16 Mar 2026 14:00:03 +0530 Message-Id: <20260316083008.87466-2-suraj.kandpal@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260316083008.87466-1-suraj.kandpal@intel.com> References: <20260316083008.87466-1-suraj.kandpal@intel.com> 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" Some drivers cannot work with the current design where the connector is embedded within the drm_writeback_connector such as Intel and some drivers that can get it working end up adding a lot of checks all around the code to check if it's a writeback conenctor or not, this is due to the limitation of inheritance in C. To solve this move the drm_writeback_connector within the drm_connector and remove the drm_connector base which was in drm_writeback_connector. Make this drm_writeback_connector a union with hdmi connector to save memory and since a connector can never be both writeback and hdmi it should serve us well. Do all other required modifications that come with these changes along with addition of new function which returns the drm_connector when drm_writeback_connector is present. Modify drivers using the drm_writeback_connector to allow them to use this connector without breaking them. The drivers modified here are amd, komeda, mali, vc4, vkms, rcar_du, msm Signed-off-by: Suraj Kandpal Reviewed-by: Liviu Dudau Reviewed-by: Louis Chauvet --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 6 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 2 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 8 +-- .../gpu/drm/arm/display/komeda/komeda_crtc.c | 6 +- .../gpu/drm/arm/display/komeda/komeda_kms.h | 6 +- .../arm/display/komeda/komeda_wb_connector.c | 8 +-- drivers/gpu/drm/arm/malidp_crtc.c | 2 +- drivers/gpu/drm/arm/malidp_drv.h | 2 +- drivers/gpu/drm/arm/malidp_hw.c | 6 +- drivers/gpu/drm/arm/malidp_mw.c | 8 +-- drivers/gpu/drm/drm_atomic_uapi.c | 2 +- drivers/gpu/drm/drm_writeback.c | 35 ++++++---- .../drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 3 +- drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 16 +++-- drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.h | 4 +- .../gpu/drm/renesas/rcar-du/rcar_du_crtc.h | 4 +- .../drm/renesas/rcar-du/rcar_du_writeback.c | 19 ++--- drivers/gpu/drm/vc4/vc4_txp.c | 14 ++-- drivers/gpu/drm/vkms/vkms_composer.c | 2 +- drivers/gpu/drm/vkms/vkms_drv.h | 2 +- drivers/gpu/drm/vkms/vkms_writeback.c | 13 ++-- include/drm/drm_connector.h | 69 +++++++++++++++++-- include/drm/drm_writeback.h | 66 +----------------- 23 files changed, 161 insertions(+), 142 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 2f2b1b115bf2..5fe3eb6fc6e1 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -7219,11 +7219,9 @@ create_stream_for_sink(struct drm_connector *connect= or, aconnector =3D to_amdgpu_dm_connector(connector); link =3D aconnector->dc_link; } else { - struct drm_writeback_connector *wbcon =3D NULL; struct amdgpu_dm_wb_connector *dm_wbcon =3D NULL; =20 - wbcon =3D drm_connector_to_writeback(connector); - dm_wbcon =3D to_amdgpu_dm_wb_connector(wbcon); + dm_wbcon =3D to_amdgpu_dm_wb_connector(connector); link =3D dm_wbcon->link; } =20 @@ -10556,7 +10554,7 @@ static void dm_set_writeback(struct amdgpu_display_= manager *dm, struct drm_connector *connector, struct drm_connector_state *new_con_state) { - struct drm_writeback_connector *wb_conn =3D drm_connector_to_writeback(co= nnector); + struct drm_writeback_connector *wb_conn =3D &connector->writeback; struct amdgpu_device *adev =3D dm->adev; struct amdgpu_crtc *acrtc; struct dc_writeback_info *wb_info; diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.h index 800813671748..705d19f85231 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h @@ -861,7 +861,7 @@ static inline void amdgpu_dm_set_mst_status(uint8_t *st= atus, #define to_amdgpu_dm_connector(x) container_of(x, struct amdgpu_dm_connect= or, base) =20 struct amdgpu_dm_wb_connector { - struct drm_writeback_connector base; + struct drm_connector base; struct dc_link *link; }; =20 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 80c37487ca77..8fea29720989 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 @@ -202,9 +202,9 @@ int amdgpu_dm_wb_connector_init(struct amdgpu_display_m= anager *dm, =20 wbcon->link =3D link; =20 - drm_connector_helper_add(&wbcon->base.base, &amdgpu_dm_wb_conn_helper_fun= cs); + drm_connector_helper_add(&wbcon->base, &amdgpu_dm_wb_conn_helper_funcs); =20 - res =3D drmm_writeback_connector_init(&dm->adev->ddev, &wbcon->base, + res =3D drmm_writeback_connector_init(&dm->adev->ddev, &wbcon->base.write= back, &amdgpu_dm_wb_connector_funcs, encoder, amdgpu_dm_wb_formats, @@ -216,8 +216,8 @@ int amdgpu_dm_wb_connector_init(struct amdgpu_display_m= anager *dm, * Some of the properties below require access to state, like bpc. * Allocate some default initial connector state with our reset helper. */ - if (wbcon->base.base.funcs->reset) - wbcon->base.base.funcs->reset(&wbcon->base.base); + if (wbcon->base.funcs->reset) + wbcon->base.funcs->reset(&wbcon->base); =20 return 0; } diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu= /drm/arm/display/komeda/komeda_crtc.c index 9c8b8da531a7..ab7dcc7fd8f3 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c @@ -213,7 +213,7 @@ void komeda_crtc_handle_event(struct komeda_crtc *kcr= tc, struct komeda_wb_connector *wb_conn =3D kcrtc->wb_conn; =20 if (wb_conn) - drm_writeback_signal_completion(&wb_conn->base, 0); + drm_writeback_signal_completion(&wb_conn->base.writeback, 0); else drm_warn(drm, "CRTC[%d]: EOW happen but no wb_connector.\n", drm_crtc_index(&kcrtc->base)); @@ -269,9 +269,9 @@ komeda_crtc_do_flush(struct drm_crtc *crtc, if (slave && has_bit(slave->id, kcrtc_st->affected_pipes)) komeda_pipeline_update(slave, old->state); =20 - conn_st =3D wb_conn ? wb_conn->base.base.state : NULL; + conn_st =3D wb_conn ? wb_conn->base.state : NULL; if (conn_st && conn_st->writeback_job) - drm_writeback_queue_job(&wb_conn->base, conn_st); + drm_writeback_queue_job(&wb_conn->base.writeback, conn_st); =20 /* step 2: notify the HW to kickoff the update */ mdev->funcs->flush(mdev, master->id, kcrtc_st->active_pipes); diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.h b/drivers/gpu/= drm/arm/display/komeda/komeda_kms.h index 83e61c4080c2..9c34302782c0 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.h +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.h @@ -53,8 +53,8 @@ struct komeda_plane_state { * struct komeda_wb_connector */ struct komeda_wb_connector { - /** @base: &drm_writeback_connector */ - struct drm_writeback_connector base; + /** @base: &drm_connector */ + struct drm_connector base; =20 /** @wb_layer: represents associated writeback pipeline of komeda */ struct komeda_layer *wb_layer; @@ -139,7 +139,7 @@ struct komeda_kms_dev { static inline bool is_writeback_only(struct drm_crtc_state *st) { struct komeda_wb_connector *wb_conn =3D to_kcrtc(st->crtc)->wb_conn; - struct drm_connector *conn =3D wb_conn ? &wb_conn->base.base : NULL; + struct drm_connector *conn =3D wb_conn ? &wb_conn->base : NULL; =20 return conn && (st->connector_mask =3D=3D BIT(drm_connector_index(conn))); } diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c b/dri= vers/gpu/drm/arm/display/komeda/komeda_wb_connector.c index bcc53d4015f1..fa2f63c142cd 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c @@ -53,7 +53,7 @@ komeda_wb_encoder_atomic_check(struct drm_encoder *encode= r, return -EINVAL; } =20 - wb_layer =3D to_kconn(to_wb_conn(conn_st->connector))->wb_layer; + wb_layer =3D to_kconn(conn_st->connector)->wb_layer; =20 /* * No need for a full modested when the only connector changed is the @@ -151,7 +151,7 @@ static int komeda_wb_connector_add(struct komeda_kms_de= v *kms, =20 kwb_conn->wb_layer =3D kcrtc->master->wb_layer; =20 - wb_conn =3D &kwb_conn->base; + wb_conn =3D &kwb_conn->base.writeback; =20 formats =3D komeda_get_layer_fourcc_list(&mdev->fmt_tbl, kwb_conn->wb_layer->layer_type, @@ -180,9 +180,9 @@ static int komeda_wb_connector_add(struct komeda_kms_de= v *kms, return err; } =20 - drm_connector_helper_add(&wb_conn->base, &komeda_wb_conn_helper_funcs); + drm_connector_helper_add(&kwb_conn->base, &komeda_wb_conn_helper_funcs); =20 - info =3D &kwb_conn->base.base.display_info; + info =3D &kwb_conn->base.display_info; info->bpc =3D __fls(kcrtc->master->improc->supported_color_depths); info->color_formats =3D kcrtc->master->improc->supported_color_formats; =20 diff --git a/drivers/gpu/drm/arm/malidp_crtc.c b/drivers/gpu/drm/arm/malidp= _crtc.c index 18e6157b1047..68fa6024be9b 100644 --- a/drivers/gpu/drm/arm/malidp_crtc.c +++ b/drivers/gpu/drm/arm/malidp_crtc.c @@ -421,7 +421,7 @@ static int malidp_crtc_atomic_check(struct drm_crtc *cr= tc, u32 new_mask =3D crtc_state->connector_mask; =20 if ((old_mask ^ new_mask) =3D=3D - (1 << drm_connector_index(&malidp->mw_connector.base))) + (1 << drm_connector_index(&malidp->mw_connector))) crtc_state->connectors_changed =3D false; } =20 diff --git a/drivers/gpu/drm/arm/malidp_drv.h b/drivers/gpu/drm/arm/malidp_= drv.h index bc0387876dea..aa5599467d27 100644 --- a/drivers/gpu/drm/arm/malidp_drv.h +++ b/drivers/gpu/drm/arm/malidp_drv.h @@ -32,7 +32,7 @@ struct malidp_drm { struct drm_device base; struct malidp_hw_device *dev; struct drm_crtc crtc; - struct drm_writeback_connector mw_connector; + struct drm_connector mw_connector; wait_queue_head_t wq; struct drm_pending_vblank_event *event; atomic_t config_valid; diff --git a/drivers/gpu/drm/arm/malidp_hw.c b/drivers/gpu/drm/arm/malidp_h= w.c index 9b845d3f34e1..5a7bd27d3718 100644 --- a/drivers/gpu/drm/arm/malidp_hw.c +++ b/drivers/gpu/drm/arm/malidp_hw.c @@ -1315,15 +1315,15 @@ static irqreturn_t malidp_se_irq(int irq, void *arg) if (status & se->vsync_irq) { switch (hwdev->mw_state) { case MW_ONESHOT: - drm_writeback_signal_completion(&malidp->mw_connector, 0); + drm_writeback_signal_completion(&malidp->mw_connector.writeback, 0); break; case MW_STOP: - drm_writeback_signal_completion(&malidp->mw_connector, 0); + drm_writeback_signal_completion(&malidp->mw_connector.writeback, 0); /* disable writeback after stop */ hwdev->mw_state =3D MW_NOT_ENABLED; break; case MW_RESTART: - drm_writeback_signal_completion(&malidp->mw_connector, 0); + drm_writeback_signal_completion(&malidp->mw_connector.writeback, 0); fallthrough; /* to a new start */ case MW_START: /* writeback started, need to emulate one-shot mode */ diff --git a/drivers/gpu/drm/arm/malidp_mw.c b/drivers/gpu/drm/arm/malidp_m= w.c index 6e0c78e998aa..472598b3e007 100644 --- a/drivers/gpu/drm/arm/malidp_mw.c +++ b/drivers/gpu/drm/arm/malidp_mw.c @@ -212,7 +212,7 @@ int malidp_mw_connector_init(struct drm_device *drm) if (!malidp->dev->hw->enable_memwrite) return 0; =20 - drm_connector_helper_add(&malidp->mw_connector.base, + drm_connector_helper_add(&malidp->mw_connector, &malidp_mw_connector_helper_funcs); =20 formats =3D get_writeback_formats(malidp, &n_formats); @@ -228,7 +228,7 @@ int malidp_mw_connector_init(struct drm_device *drm) =20 encoder->possible_crtcs =3D drm_crtc_mask(&malidp->crtc); =20 - ret =3D drmm_writeback_connector_init(drm, &malidp->mw_connector, + ret =3D drmm_writeback_connector_init(drm, &malidp->mw_connector.writebac= k, &malidp_mw_connector_funcs, encoder, formats, n_formats); @@ -243,8 +243,8 @@ void malidp_mw_atomic_commit(struct drm_device *drm, struct drm_atomic_state *old_state) { struct malidp_drm *malidp =3D drm_to_malidp(drm); - struct drm_writeback_connector *mw_conn =3D &malidp->mw_connector; - struct drm_connector_state *conn_state =3D mw_conn->base.state; + struct drm_writeback_connector *mw_conn =3D &malidp->mw_connector.writeba= ck; + struct drm_connector_state *conn_state =3D malidp->mw_connector.state; struct malidp_hw_device *hwdev =3D malidp->dev; struct malidp_mw_connector_state *mw_state; =20 diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic= _uapi.c index 87de41fb4459..13576a6c25d7 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -1468,7 +1468,7 @@ static int prepare_signaling(struct drm_device *dev, f[*num_fences].out_fence_ptr =3D fence_ptr; *fence_state =3D f; =20 - wb_conn =3D drm_connector_to_writeback(conn); + wb_conn =3D &conn->writeback; fence =3D drm_writeback_get_out_fence(wb_conn); if (!fence) return -ENOMEM; diff --git a/drivers/gpu/drm/drm_writeback.c b/drivers/gpu/drm/drm_writebac= k.c index 68fdac745f42..7bf9f6374712 100644 --- a/drivers/gpu/drm/drm_writeback.c +++ b/drivers/gpu/drm/drm_writeback.c @@ -89,8 +89,10 @@ static const char *drm_writeback_fence_get_driver_name(s= truct dma_fence *fence) { struct drm_writeback_connector *wb_connector =3D fence_to_wb_connector(fence); + struct drm_connector *connector =3D + drm_writeback_to_connector(wb_connector); =20 - return wb_connector->base.dev->driver->name; + return connector->dev->driver->name; } =20 static const char * @@ -187,7 +189,8 @@ static int __drm_writeback_connector_init(struct drm_de= vice *dev, struct drm_encoder *enc, const u32 *formats, int n_formats) { - struct drm_connector *connector =3D &wb_connector->base; + struct drm_connector *connector =3D + drm_writeback_to_connector(wb_connector); struct drm_mode_config *config =3D &dev->mode_config; struct drm_property_blob *blob; int ret =3D create_writeback_properties(dev); @@ -269,7 +272,8 @@ int drm_writeback_connector_init(struct drm_device *dev, struct drm_encoder *enc, const u32 *formats, int n_formats) { - struct drm_connector *connector =3D &wb_connector->base; + struct drm_connector *connector =3D + drm_writeback_to_connector(wb_connector); int ret; =20 ret =3D drm_connector_init(dev, connector, con_funcs, @@ -339,7 +343,8 @@ int drmm_writeback_connector_init(struct drm_device *de= v, struct drm_encoder *enc, const u32 *formats, int n_formats) { - struct drm_connector *connector =3D &wb_connector->base; + struct drm_connector *connector =3D + drm_writeback_to_connector(wb_connector); int ret; =20 ret =3D drmm_connector_init(dev, connector, con_funcs, @@ -372,7 +377,7 @@ int drm_writeback_set_fb(struct drm_connector_state *co= nn_state, return -ENOMEM; =20 conn_state->writeback_job->connector =3D - drm_connector_to_writeback(conn_state->connector); + &conn_state->connector->writeback; } =20 drm_framebuffer_assign(&conn_state->writeback_job->fb, fb); @@ -381,13 +386,15 @@ int drm_writeback_set_fb(struct drm_connector_state *= conn_state, =20 int drm_writeback_prepare_job(struct drm_writeback_job *job) { - struct drm_writeback_connector *connector =3D job->connector; + struct drm_writeback_connector *wb_connector =3D job->connector; + struct drm_connector *connector =3D + drm_writeback_to_connector(wb_connector); const struct drm_connector_helper_funcs *funcs =3D - connector->base.helper_private; + connector->helper_private; int ret; =20 if (funcs->prepare_writeback_job) { - ret =3D funcs->prepare_writeback_job(connector, job); + ret =3D funcs->prepare_writeback_job(wb_connector, job); if (ret < 0) return ret; } @@ -433,12 +440,14 @@ EXPORT_SYMBOL(drm_writeback_queue_job); =20 void drm_writeback_cleanup_job(struct drm_writeback_job *job) { - struct drm_writeback_connector *connector =3D job->connector; + struct drm_writeback_connector *wb_connector =3D job->connector; + struct drm_connector *connector =3D + drm_writeback_to_connector(wb_connector); const struct drm_connector_helper_funcs *funcs =3D - connector->base.helper_private; + connector->helper_private; =20 if (job->prepared && funcs->cleanup_writeback_job) - funcs->cleanup_writeback_job(connector, job); + funcs->cleanup_writeback_job(wb_connector, job); =20 if (job->fb) drm_framebuffer_put(job->fb); @@ -520,8 +529,10 @@ struct dma_fence * drm_writeback_get_out_fence(struct drm_writeback_connector *wb_connector) { struct dma_fence *fence; + struct drm_connector *connector =3D + drm_writeback_to_connector(wb_connector); =20 - if (WARN_ON(wb_connector->base.connector_type !=3D + if (WARN_ON(connector->connector_type !=3D DRM_MODE_CONNECTOR_WRITEBACK)) return NULL; =20 diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c b/drivers/= gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c index 6d28f2281c76..0375faf7f50c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c @@ -482,7 +482,8 @@ static void dpu_encoder_phys_wb_prepare_for_kickoff( return; } =20 - drm_conn =3D &wb_enc->wb_conn->base; + drm_conn =3D + container_of(wb_enc->wb_conn, struct drm_connector, writeback); state =3D drm_conn->state; =20 if (wb_enc->wb_conn && wb_enc->wb_job) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/dr= m/msm/disp/dpu1/dpu_writeback.c index 6f2370c9dd98..930ba1ad777b 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c @@ -29,8 +29,7 @@ static int dpu_wb_conn_get_modes(struct drm_connector *co= nnector) static int dpu_wb_conn_atomic_check(struct drm_connector *connector, struct drm_atomic_state *state) { - struct drm_writeback_connector *wb_conn =3D drm_connector_to_writeback(co= nnector); - struct dpu_wb_connector *dpu_wb_conn =3D to_dpu_wb_conn(wb_conn); + struct dpu_wb_connector *dpu_wb_conn =3D to_dpu_wb_conn(connector); struct drm_connector_state *conn_state =3D drm_atomic_get_new_connector_state(state, connector); struct drm_crtc *crtc; @@ -88,10 +87,11 @@ static const struct drm_connector_funcs dpu_wb_conn_fun= cs =3D { .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, }; =20 -static int dpu_wb_conn_prepare_job(struct drm_writeback_connector *connect= or, +static int dpu_wb_conn_prepare_job(struct drm_writeback_connector *wb_conn, struct drm_writeback_job *job) { - + struct drm_connector *connector =3D + container_of(wb_conn, struct drm_connector, writeback); struct dpu_wb_connector *dpu_wb_conn =3D to_dpu_wb_conn(connector); =20 if (!job->fb) @@ -102,9 +102,11 @@ static int dpu_wb_conn_prepare_job(struct drm_writebac= k_connector *connector, return 0; } =20 -static void dpu_wb_conn_cleanup_job(struct drm_writeback_connector *connec= tor, +static void dpu_wb_conn_cleanup_job(struct drm_writeback_connector *wb_con= nector, struct drm_writeback_job *job) { + struct drm_connector *connector =3D + container_of(wb_connector, struct drm_connector, writeback); struct dpu_wb_connector *dpu_wb_conn =3D to_dpu_wb_conn(connector); =20 if (!job->fb) @@ -132,9 +134,9 @@ int dpu_writeback_init(struct drm_device *dev, struct d= rm_encoder *enc, =20 dpu_wb_conn->maxlinewidth =3D maxlinewidth; =20 - drm_connector_helper_add(&dpu_wb_conn->base.base, &dpu_wb_conn_helper_fun= cs); + drm_connector_helper_add(&dpu_wb_conn->base, &dpu_wb_conn_helper_funcs); =20 - rc =3D drmm_writeback_connector_init(dev, &dpu_wb_conn->base, + rc =3D drmm_writeback_connector_init(dev, &dpu_wb_conn->base.writeback, &dpu_wb_conn_funcs, enc, format_list, num_formats); =20 diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.h b/drivers/gpu/dr= m/msm/disp/dpu1/dpu_writeback.h index 4b11cca8014c..9ebf15392b20 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.h @@ -16,12 +16,12 @@ #include "dpu_encoder_phys.h" =20 struct dpu_wb_connector { - struct drm_writeback_connector base; + struct drm_connector base; struct drm_encoder *wb_enc; u32 maxlinewidth; }; =20 -static inline struct dpu_wb_connector *to_dpu_wb_conn(struct drm_writeback= _connector *conn) +static inline struct dpu_wb_connector *to_dpu_wb_conn(struct drm_connector= *conn) { return container_of(conn, struct dpu_wb_connector, base); } diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.h b/drivers/gpu/d= rm/renesas/rcar-du/rcar_du_crtc.h index d0f38a8b3561..11937e70e308 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.h +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.h @@ -42,7 +42,7 @@ struct rcar_du_vsp; * @cmm: CMM associated with this CRTC * @vsp: VSP feeding video to this CRTC * @vsp_pipe: index of the VSP pipeline feeding video to this CRTC - * @writeback: the writeback connector + * @writeback: the drm connector which contains the writeback connector */ struct rcar_du_crtc { struct drm_crtc crtc; @@ -72,7 +72,7 @@ struct rcar_du_crtc { const char *const *sources; unsigned int sources_count; =20 - struct drm_writeback_connector writeback; + struct drm_connector writeback; }; =20 #define to_rcar_crtc(c) container_of(c, struct rcar_du_crtc, crtc) 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 aa37cf99754c..cd09e0fbb030 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c @@ -50,7 +50,9 @@ static int rcar_du_wb_conn_get_modes(struct drm_connector= *connector) static int rcar_du_wb_prepare_job(struct drm_writeback_connector *connecto= r, struct drm_writeback_job *job) { - struct rcar_du_crtc *rcrtc =3D wb_to_rcar_crtc(connector); + struct drm_connector *conn =3D + drm_writeback_to_connector(connector); + struct rcar_du_crtc *rcrtc =3D wb_to_rcar_crtc(conn); struct rcar_du_wb_job *rjob; int ret; =20 @@ -75,7 +77,9 @@ static int rcar_du_wb_prepare_job(struct drm_writeback_co= nnector *connector, static void rcar_du_wb_cleanup_job(struct drm_writeback_connector *connect= or, struct drm_writeback_job *job) { - struct rcar_du_crtc *rcrtc =3D wb_to_rcar_crtc(connector); + struct drm_connector *conn =3D + drm_writeback_to_connector(connector); + struct rcar_du_crtc *rcrtc =3D wb_to_rcar_crtc(conn); struct rcar_du_wb_job *rjob =3D job->priv; =20 if (!job->fb) @@ -199,8 +203,7 @@ static const u32 writeback_formats[] =3D { int rcar_du_writeback_init(struct rcar_du_device *rcdu, struct rcar_du_crtc *rcrtc) { - struct drm_writeback_connector *wb_conn =3D &rcrtc->writeback; - + struct drm_writeback_connector *wb_conn =3D &rcrtc->writeback.writeback; struct drm_encoder *encoder; =20 encoder =3D drmm_plain_encoder_alloc(&rcdu->ddev, NULL, @@ -212,7 +215,7 @@ int rcar_du_writeback_init(struct rcar_du_device *rcdu, =20 encoder->possible_crtcs =3D drm_crtc_mask(&rcrtc->crtc); =20 - drm_connector_helper_add(&wb_conn->base, + drm_connector_helper_add(&rcrtc->writeback, &rcar_du_wb_conn_helper_funcs); =20 return drmm_writeback_connector_init(&rcdu->ddev, wb_conn, @@ -231,7 +234,7 @@ void rcar_du_writeback_setup(struct rcar_du_crtc *rcrtc, struct drm_framebuffer *fb; unsigned int i; =20 - state =3D rcrtc->writeback.base.state; + state =3D rcrtc->writeback.state; if (!state || !state->writeback_job) return; =20 @@ -246,10 +249,10 @@ void rcar_du_writeback_setup(struct rcar_du_crtc *rcr= tc, cfg->mem[i] =3D sg_dma_address(rjob->sg_tables[i].sgl) + fb->offsets[i]; =20 - drm_writeback_queue_job(&rcrtc->writeback, state); + drm_writeback_queue_job(&rcrtc->writeback.writeback, state); } =20 void rcar_du_writeback_complete(struct rcar_du_crtc *rcrtc) { - drm_writeback_signal_completion(&rcrtc->writeback, 0); + drm_writeback_signal_completion(&rcrtc->writeback.writeback, 0); } diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c index befdb094c173..de3db0834011 100644 --- a/drivers/gpu/drm/vc4/vc4_txp.c +++ b/drivers/gpu/drm/vc4/vc4_txp.c @@ -168,7 +168,7 @@ struct vc4_txp { struct platform_device *pdev; =20 struct vc4_encoder encoder; - struct drm_writeback_connector connector; + struct drm_connector connector; =20 void __iomem *regs; }; @@ -177,7 +177,7 @@ struct vc4_txp { container_of_const(_encoder, struct vc4_txp, encoder.base) =20 #define connector_to_vc4_txp(_connector) \ - container_of_const(_connector, struct vc4_txp, connector.base) + container_of_const(_connector, struct vc4_txp, connector) =20 static const struct debugfs_reg32 txp_regs[] =3D { VC4_REG32(TXP_DST_PTR), @@ -357,7 +357,7 @@ static void vc4_txp_connector_atomic_commit(struct drm_= connector *conn, =20 TXP_WRITE(TXP_DST_CTRL, ctrl); =20 - drm_writeback_queue_job(&txp->connector, conn_state); + drm_writeback_queue_job(&txp->connector.writeback, conn_state); =20 drm_dev_exit(idx); } @@ -505,7 +505,7 @@ static irqreturn_t vc4_txp_interrupt(int irq, void *dat= a) */ TXP_WRITE(TXP_DST_CTRL, TXP_READ(TXP_DST_CTRL) & ~TXP_EI); vc4_crtc_handle_vblank(vc4_crtc); - drm_writeback_signal_completion(&txp->connector, 0); + drm_writeback_signal_completion(&txp->connector.writeback, 0); =20 return IRQ_HANDLED; } @@ -599,9 +599,9 @@ static int vc4_txp_bind(struct device *dev, struct devi= ce *master, void *data) if (ret) return ret; =20 - drm_connector_helper_add(&txp->connector.base, + drm_connector_helper_add(&txp->connector, &vc4_txp_connector_helper_funcs); - ret =3D drmm_writeback_connector_init(drm, &txp->connector, + ret =3D drmm_writeback_connector_init(drm, &txp->connector.writeback, &vc4_txp_connector_funcs, encoder, drm_fmts, ARRAY_SIZE(drm_fmts)); @@ -623,7 +623,7 @@ static void vc4_txp_unbind(struct device *dev, struct d= evice *master, { struct vc4_txp *txp =3D dev_get_drvdata(dev); =20 - drm_connector_cleanup(&txp->connector.base); + drm_connector_cleanup(&txp->connector); } =20 static const struct component_ops vc4_txp_ops =3D { diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vk= ms_composer.c index cd85de4ffd03..d15623be85fa 100644 --- a/drivers/gpu/drm/vkms/vkms_composer.c +++ b/drivers/gpu/drm/vkms/vkms_composer.c @@ -646,7 +646,7 @@ void vkms_composer_worker(struct work_struct *work) return; =20 if (wb_pending) { - drm_writeback_signal_completion(&out->wb_connector, 0); + drm_writeback_signal_completion(&out->wb_connector.writeback, 0); spin_lock_irq(&out->composer_lock); crtc_state->wb_pending =3D false; spin_unlock_irq(&out->composer_lock); diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_dr= v.h index 0933e4ce0ff0..145a7909388b 100644 --- a/drivers/gpu/drm/vkms/vkms_drv.h +++ b/drivers/gpu/drm/vkms/vkms_drv.h @@ -217,7 +217,7 @@ struct vkms_crtc_state { */ struct vkms_output { struct drm_crtc crtc; - struct drm_writeback_connector wb_connector; + struct drm_connector wb_connector; struct drm_encoder wb_encoder; struct workqueue_struct *composer_workq; spinlock_t lock; diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/v= kms_writeback.c index 908b7e602ffb..cadb4cb372c5 100644 --- a/drivers/gpu/drm/vkms/vkms_writeback.c +++ b/drivers/gpu/drm/vkms/vkms_writeback.c @@ -103,10 +103,13 @@ static int vkms_wb_prepare_job(struct drm_writeback_c= onnector *wb_connector, return ret; } =20 -static void vkms_wb_cleanup_job(struct drm_writeback_connector *connector, +static void vkms_wb_cleanup_job(struct drm_writeback_connector *wb_conn, struct drm_writeback_job *job) { struct vkms_writeback_job *vkmsjob =3D job->priv; + struct drm_connector *connector =3D container_of(wb_conn, + struct drm_connector, + writeback); struct vkms_output *vkms_output =3D container_of(connector, struct vkms_output, wb_connector); @@ -128,8 +131,8 @@ static void vkms_wb_atomic_commit(struct drm_connector = *conn, struct drm_connector_state *connector_state =3D drm_atomic_get_new_connec= tor_state(state, conn); struct vkms_output *output =3D drm_crtc_to_vkms_output(connector_state->c= rtc); - struct drm_writeback_connector *wb_conn =3D &output->wb_connector; - struct drm_connector_state *conn_state =3D wb_conn->base.state; + struct drm_writeback_connector *wb_conn =3D &output->wb_connector.writeba= ck; + struct drm_connector_state *conn_state =3D output->wb_connector.state; struct vkms_crtc_state *crtc_state =3D output->composer_state; struct drm_framebuffer *fb =3D connector_state->writeback_job->fb; u16 crtc_height =3D crtc_state->base.mode.vdisplay; @@ -167,7 +170,7 @@ static const struct drm_connector_helper_funcs vkms_wb_= conn_helper_funcs =3D { int vkms_enable_writeback_connector(struct vkms_device *vkmsdev, struct vkms_output *vkms_output) { - struct drm_writeback_connector *wb =3D &vkms_output->wb_connector; + struct drm_writeback_connector *wb =3D &vkms_output->wb_connector.writeba= ck; int ret; =20 ret =3D drmm_encoder_init(&vkmsdev->drm, &vkms_output->wb_encoder, @@ -178,7 +181,7 @@ int vkms_enable_writeback_connector(struct vkms_device = *vkmsdev, vkms_output->wb_encoder.possible_clones |=3D drm_encoder_mask(&vkms_output->wb_encoder); =20 - drm_connector_helper_add(&wb->base, &vkms_wb_conn_helper_funcs); + drm_connector_helper_add(&vkms_output->wb_connector, &vkms_wb_conn_helper= _funcs); =20 return drmm_writeback_connector_init(&vkmsdev->drm, wb, &vkms_wb_connector_funcs, diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index c18be8c19de0..7032bb42d06f 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -1927,6 +1927,61 @@ struct drm_connector_cec { void *data; }; =20 +/** + * struct drm_writeback_connector - DRM writeback connector + */ +struct drm_writeback_connector { + /** + * @pixel_formats_blob_ptr: + * + * DRM blob property data for the pixel formats list on writeback + * connectors + * See also drm_writeback_connector_init() + */ + struct drm_property_blob *pixel_formats_blob_ptr; + + /** @job_lock: Protects job_queue */ + spinlock_t job_lock; + + /** + * @job_queue: + * + * Holds a list of a connector's writeback jobs; the last item is the + * most recent. The first item may be either waiting for the hardware + * to begin writing, or currently being written. + * + * See also: drm_writeback_queue_job() and + * drm_writeback_signal_completion() + */ + struct list_head job_queue; + + /** + * @fence_context: + * + * timeline context used for fence operations. + */ + unsigned int fence_context; + /** + * @fence_lock: + * + * spinlock to protect the fences in the fence_context. + */ + spinlock_t fence_lock; + /** + * @fence_seqno: + * + * Seqno variable used as monotonic counter for the fences + * created on the connector's timeline. + */ + unsigned long fence_seqno; + /** + * @timeline_name: + * + * The name of the connector's fence timeline. + */ + char timeline_name[32]; +}; + /** * struct drm_connector - central DRM connector control structure * @@ -2336,10 +2391,16 @@ struct drm_connector { */ struct llist_node free_node; =20 - /** - * @hdmi: HDMI-related variable and properties. - */ - struct drm_connector_hdmi hdmi; + union { + /** + * @hdmi: HDMI-related variable and properties. + */ + struct drm_connector_hdmi hdmi; + /** + * @writeback: Writeback related valriables. + */ + struct drm_writeback_connector writeback; + }; =20 /** * @hdmi_audio: HDMI codec properties and non-DRM state. diff --git a/include/drm/drm_writeback.h b/include/drm/drm_writeback.h index 958466a05e60..702141099520 100644 --- a/include/drm/drm_writeback.h +++ b/include/drm/drm_writeback.h @@ -15,66 +15,6 @@ #include #include =20 -/** - * struct drm_writeback_connector - DRM writeback connector - */ -struct drm_writeback_connector { - /** - * @base: base drm_connector object - */ - struct drm_connector base; - - /** - * @pixel_formats_blob_ptr: - * - * DRM blob property data for the pixel formats list on writeback - * connectors - * See also drm_writeback_connector_init() - */ - struct drm_property_blob *pixel_formats_blob_ptr; - - /** @job_lock: Protects job_queue */ - spinlock_t job_lock; - - /** - * @job_queue: - * - * Holds a list of a connector's writeback jobs; the last item is the - * most recent. The first item may be either waiting for the hardware - * to begin writing, or currently being written. - * - * See also: drm_writeback_queue_job() and - * drm_writeback_signal_completion() - */ - struct list_head job_queue; - - /** - * @fence_context: - * - * timeline context used for fence operations. - */ - unsigned int fence_context; - /** - * @fence_lock: - * - * spinlock to protect the fences in the fence_context. - */ - spinlock_t fence_lock; - /** - * @fence_seqno: - * - * Seqno variable used as monotonic counter for the fences - * created on the connector's timeline. - */ - unsigned long fence_seqno; - /** - * @timeline_name: - * - * The name of the connector's fence timeline. - */ - char timeline_name[32]; -}; - /** * struct drm_writeback_job - DRM writeback job */ @@ -131,10 +71,10 @@ struct drm_writeback_job { void *priv; }; =20 -static inline struct drm_writeback_connector * -drm_connector_to_writeback(struct drm_connector *connector) +static inline struct drm_connector * +drm_writeback_to_connector(struct drm_writeback_connector *wb_connector) { - return container_of(connector, struct drm_writeback_connector, base); + return container_of(wb_connector, struct drm_connector, writeback); } =20 int drm_writeback_connector_init(struct drm_device *dev, --=20 2.34.1 From nobody Thu Apr 2 18:53:49 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EF64937C933 for ; Mon, 16 Mar 2026 08:30:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649856; cv=none; b=m1GLfb6/c8HVHOuCMrP4i4fbsEzp6o7eOgGboJYDr1gv+omCBrD9nNKAYxO/efsxLL6hD5vbogn4LwztWnSxf7j91UaPtFb8vFbzCjTQ5Xl9o2EkmlaypvtW23YBb7dqjYKp1GWHw8xAWreZtsJXVIdpv0IDtsuUvS6FFD0u08g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649856; c=relaxed/simple; bh=v4d6F5mmPPlfAIAC2KqNlCMpKb0oLaSm/CJm+k2o/jE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GosZM0a+O8vi/mBRFsbPPMamlLT4OXCAq4HUT2vFjeN3DOD9GoY6hO5bisk+p2BB7doTwkX2Lk5Ex9TioYzF59DE+rzSWgNCBm4E+k+fyVHs4R0HnT9JgXOMc2pCo1bwnj10iYCG6SQDumj7l/n7HcYSQGW03uchrWyA7pMwgB0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=aLl6+L6i; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="aLl6+L6i" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1773649855; x=1805185855; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=v4d6F5mmPPlfAIAC2KqNlCMpKb0oLaSm/CJm+k2o/jE=; b=aLl6+L6iEr2ZtNqyuq040Mt9v/ai59lN9BEtTxqDhLbU/JY1Kft51y+8 cawDwGiuAX08JQ+KfymNeW1No6RBngrGy7t5qGR1A3hebHAI18sSypP51 L7W3YJ7VZ0aTLke1hUYHJAWDt4vDo2ujRExbDW9nK7e9gmGNJsjwxNup4 /2rP55UKTri6z7EOL+ZjbDP/W5Tf1MTV7YGr1RAg0TV5pY4FXUYEOMeP1 olIsscZXoOoqOoTcBE+pY6OcS49P4YE1vzm0GZVqnYEwQthAIio2PbUJn VtIS3CofBnG2RMcBCg+minT4Kc24I+niq21cvwIQNGBDnSgVUTum+2ON8 A==; X-CSE-ConnectionGUID: GjzUspe6QUq7uYqpK1pscA== X-CSE-MsgGUID: uOUOrwnkQeiCewBYLttJTg== X-IronPort-AV: E=McAfee;i="6800,10657,11730"; a="77268233" X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="77268233" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2026 01:30:54 -0700 X-CSE-ConnectionGUID: /fl54rmXTa2YVzWXdoMvDw== X-CSE-MsgGUID: IfdGah8iS12mOmqX+TiQjg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="220889010" Received: from kandpal-x299-ud4-pro.iind.intel.com ([10.190.239.10]) by orviesa006.jf.intel.com with ESMTP; 16 Mar 2026 01:30:46 -0700 From: Suraj Kandpal To: freedreno@lists.freedesktop.org, dri-devel@lists.freedesktop.org, kernel-list@raspberrypi.com, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: ankit.k.nautiyal@intel.com, uma.shankar@intel.com, dmitry.baryshkov@oss.qualcomm.com, arun.r.murthy@intel.com, jani.nikula@intel.com, harry.wentland@amd.com, siqueira@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, robin.clark@oss.qualcomm.com, abhinav.kumar@linux.dev, tzimmermann@suse.de, sean@poorly.ru, marijn.suijten@somainline.org, laurent.pinchart+renesas@ideasonboard.com, dave.stevenson@raspberrypi.com, tomi.valkeinen+renesas@ideasonboard.com, kieran.bingham+renesas@ideasonboard.com, Suraj Kandpal Subject: [PATCH v3 2/7] drm: writeback: Modify writeback init helpers Date: Mon, 16 Mar 2026 14:00:04 +0530 Message-Id: <20260316083008.87466-3-suraj.kandpal@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260316083008.87466-1-suraj.kandpal@intel.com> References: <20260316083008.87466-1-suraj.kandpal@intel.com> 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" Now with drm_writeback_connector moved to drm_connector it makes more sense use drm_connector as an argument rather than drm_writeback_connector. The writeback connector can easily be derived from drm_connector. Signed-off-by: Suraj Kandpal --- .../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 | 3 +-- 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, 16 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 8fea29720989..84a9c1d2bd8e 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 @@ -204,7 +204,7 @@ int amdgpu_dm_wb_connector_init(struct amdgpu_display_m= anager *dm, =20 drm_connector_helper_add(&wbcon->base, &amdgpu_dm_wb_conn_helper_funcs); =20 - res =3D drmm_writeback_connector_init(&dm->adev->ddev, &wbcon->base.write= back, + res =3D drmm_writeback_connector_init(&dm->adev->ddev, &wbcon->base, &amdgpu_dm_wb_connector_funcs, encoder, amdgpu_dm_wb_formats, diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c b/dri= vers/gpu/drm/arm/display/komeda/komeda_wb_connector.c index fa2f63c142cd..85b34375d275 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c @@ -135,7 +135,6 @@ static int komeda_wb_connector_add(struct komeda_kms_de= v *kms, { struct komeda_dev *mdev =3D 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; =20 @@ -151,8 +150,6 @@ static int komeda_wb_connector_add(struct komeda_kms_de= v *kms, =20 kwb_conn->wb_layer =3D kcrtc->master->wb_layer; =20 - wb_conn =3D &kwb_conn->base.writeback; - formats =3D komeda_get_layer_fourcc_list(&mdev->fmt_tbl, kwb_conn->wb_layer->layer_type, &n_formats); @@ -170,7 +167,7 @@ static int komeda_wb_connector_add(struct komeda_kms_de= v *kms, =20 encoder->possible_crtcs =3D drm_crtc_mask(&kcrtc->base); =20 - err =3D drmm_writeback_connector_init(&kms->base, wb_conn, + err =3D drmm_writeback_connector_init(&kms->base, &kwb_conn->base, &komeda_wb_connector_funcs, encoder, formats, n_formats); diff --git a/drivers/gpu/drm/arm/malidp_mw.c b/drivers/gpu/drm/arm/malidp_m= w.c index 472598b3e007..7d42b007ef19 100644 --- a/drivers/gpu/drm/arm/malidp_mw.c +++ b/drivers/gpu/drm/arm/malidp_mw.c @@ -228,7 +228,7 @@ int malidp_mw_connector_init(struct drm_device *drm) =20 encoder->possible_crtcs =3D drm_crtc_mask(&malidp->crtc); =20 - ret =3D drmm_writeback_connector_init(drm, &malidp->mw_connector.writebac= k, + ret =3D drmm_writeback_connector_init(drm, &malidp->mw_connector, &malidp_mw_connector_funcs, encoder, formats, n_formats); diff --git a/drivers/gpu/drm/drm_writeback.c b/drivers/gpu/drm/drm_writebac= k.c index 7bf9f6374712..9a3037d11009 100644 --- a/drivers/gpu/drm/drm_writeback.c +++ b/drivers/gpu/drm/drm_writeback.c @@ -242,7 +242,7 @@ static int __drm_writeback_connector_init(struct drm_de= vice *dev, * a custom encoder * * @dev: DRM device - * @wb_connector: Writeback connector to initialize + * @connector: Drm connector which contains the writeback connector to ini= tialize * @enc: handle to the already initialized drm encoder * @con_funcs: Connector funcs vtable * @formats: Array of supported pixel formats for the writeback engine @@ -267,13 +267,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 =3D - drm_writeback_to_connector(wb_connector); + struct drm_writeback_connector *wb_connector =3D &connector->writeback; int ret; =20 ret =3D drm_connector_init(dev, connector, con_funcs, @@ -322,7 +321,7 @@ static void drm_writeback_connector_cleanup(struct drm_= device *dev, * a custom encoder * * @dev: DRM device - * @wb_connector: Writeback connector to initialize + * @connector: Drm connector containing the writeback connector to initial= ize * @con_funcs: Connector funcs vtable * @enc: Encoder to connect this writeback connector * @formats: Array of supported pixel formats for the writeback engine @@ -338,13 +337,12 @@ static void drm_writeback_connector_cleanup(struct dr= m_device *dev, * 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 =3D - drm_writeback_to_connector(wb_connector); + struct drm_writeback_connector *wb_connector =3D &connector->writeback; int ret; =20 ret =3D drmm_connector_init(dev, connector, con_funcs, diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/dr= m/msm/disp/dpu1/dpu_writeback.c index 930ba1ad777b..d4fc28951085 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c @@ -136,7 +136,7 @@ int dpu_writeback_init(struct drm_device *dev, struct d= rm_encoder *enc, =20 drm_connector_helper_add(&dpu_wb_conn->base, &dpu_wb_conn_helper_funcs); =20 - rc =3D drmm_writeback_connector_init(dev, &dpu_wb_conn->base.writeback, + rc =3D drmm_writeback_connector_init(dev, &dpu_wb_conn->base, &dpu_wb_conn_funcs, enc, format_list, num_formats); =20 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 cd09e0fbb030..1de8865fb751 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c @@ -203,7 +203,6 @@ static const u32 writeback_formats[] =3D { int rcar_du_writeback_init(struct rcar_du_device *rcdu, struct rcar_du_crtc *rcrtc) { - struct drm_writeback_connector *wb_conn =3D &rcrtc->writeback.writeback; struct drm_encoder *encoder; =20 encoder =3D drmm_plain_encoder_alloc(&rcdu->ddev, NULL, @@ -218,7 +217,7 @@ int rcar_du_writeback_init(struct rcar_du_device *rcdu, drm_connector_helper_add(&rcrtc->writeback, &rcar_du_wb_conn_helper_funcs); =20 - return drmm_writeback_connector_init(&rcdu->ddev, wb_conn, + return drmm_writeback_connector_init(&rcdu->ddev, &rcrtc->writeback, &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 de3db0834011..d08271142116 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 devi= ce *master, void *data) =20 drm_connector_helper_add(&txp->connector, &vc4_txp_connector_helper_funcs); - ret =3D drmm_writeback_connector_init(drm, &txp->connector.writeback, + ret =3D drmm_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/v= kms_writeback.c index cadb4cb372c5..b368c569cf0a 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 =3D { int vkms_enable_writeback_connector(struct vkms_device *vkmsdev, struct vkms_output *vkms_output) { - struct drm_writeback_connector *wb =3D &vkms_output->wb_connector.writeba= ck; int ret; =20 ret =3D drmm_encoder_init(&vkmsdev->drm, &vkms_output->wb_encoder, @@ -183,7 +182,8 @@ int vkms_enable_writeback_connector(struct vkms_device = *vkmsdev, =20 drm_connector_helper_add(&vkms_output->wb_connector, &vkms_wb_conn_helper= _funcs); =20 - 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_connect= or *wb_connector) } =20 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); =20 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); --=20 2.34.1 From nobody Thu Apr 2 18:53:49 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F133637E2F3 for ; Mon, 16 Mar 2026 08:31:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649865; cv=none; b=ifB0IW+eMhzgZg/ZeDDoSikalYaX5Ncr6zYkrcBoafOLRnzX7V+Q6GcNrmEpkiJne6bbhealutFKRCBJoTvxWtut1yqzFVRwYIBxF4MjlqqTSoW76WHu8qbtzVDw6M/vYGWMBDlJMVQR1bvwB+I3u9Tt5HvWpi7LefJU7ina3RE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649865; c=relaxed/simple; bh=ItW/RH0celFURQDhB7MPvv4Ek5ZqCgEv8KPYPfW2bW0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=s3VEozNaKU9JqIDc7b5fupoz6lc3qI3oFHNUYrVw86RTeizIcdTidGw+SMijerMHk5j/Ir7WI/7xMfdviBoDUVBRYvTyN2Q/5S0DPgeO/pbmCHWmBNScEux7NWJBlqQtZUHjhULhW5yxh7ptUcBPkNFxttXOHnLkY5x4G3suuk0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=TInNiM6s; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="TInNiM6s" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1773649864; x=1805185864; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ItW/RH0celFURQDhB7MPvv4Ek5ZqCgEv8KPYPfW2bW0=; b=TInNiM6sCC3dTZT21K1N9moqi5rolUQ6D96QXPHXJl6pqOGxDbl+SGVc 4RypwEDFmMY60sH7xgnfLAtWjjn1eWuKkkr4RICzG0D6W5EXgRNdTeOmt 0glEHWycE1LQYHxes7o8WozkK7ZLCB8Cmzd/wnLB3zFxxhIeR5MO9C26y ZNTt96OC10yfWkxR562hQh7mnZCB1FMQUyt4SIjWU5Ch926GnlIbvW9U8 an+2fvckmfez8BWgjf0YKxAlyLmGp5RGPikHQIDalMvBq8LMEeOQ9w1M0 QrMXOq1Un4suTEXXP0qR2wIzW+k4ZPVxRbnMqbUUEoccnWxxHJougILyu Q==; X-CSE-ConnectionGUID: SvTU26lvT+uNovmpe8jKXg== X-CSE-MsgGUID: 3hfKGIZVQSuN3+4kS/ASdQ== X-IronPort-AV: E=McAfee;i="6800,10657,11730"; a="77268270" X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="77268270" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2026 01:31:03 -0700 X-CSE-ConnectionGUID: Qhx9VCMySra+1ER4Ds4PzQ== X-CSE-MsgGUID: vOS3ikbHS2aZARkcoYYr5w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="220889031" Received: from kandpal-x299-ud4-pro.iind.intel.com ([10.190.239.10]) by orviesa006.jf.intel.com with ESMTP; 16 Mar 2026 01:30:54 -0700 From: Suraj Kandpal To: freedreno@lists.freedesktop.org, dri-devel@lists.freedesktop.org, kernel-list@raspberrypi.com, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: ankit.k.nautiyal@intel.com, uma.shankar@intel.com, dmitry.baryshkov@oss.qualcomm.com, arun.r.murthy@intel.com, jani.nikula@intel.com, harry.wentland@amd.com, siqueira@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, robin.clark@oss.qualcomm.com, abhinav.kumar@linux.dev, tzimmermann@suse.de, sean@poorly.ru, marijn.suijten@somainline.org, laurent.pinchart+renesas@ideasonboard.com, dave.stevenson@raspberrypi.com, tomi.valkeinen+renesas@ideasonboard.com, kieran.bingham+renesas@ideasonboard.com, Suraj Kandpal Subject: [PATCH v3 3/7] drm: writeback: Modify drm_writeback_queue_job params Date: Mon, 16 Mar 2026 14:00:05 +0530 Message-Id: <20260316083008.87466-4-suraj.kandpal@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260316083008.87466-1-suraj.kandpal@intel.com> References: <20260316083008.87466-1-suraj.kandpal@intel.com> 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" Move to using drm_connector structure instead of drm_writeback_connector since this now writeback resides within drm_connector. This helps make sure drivers change drm_writeback_connector using helpers provided by drm core. Signed-off-by: Suraj Kandpal --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +- drivers/gpu/drm/arm/display/komeda/komeda_crtc.c | 2 +- drivers/gpu/drm/arm/malidp_mw.c | 3 +-- drivers/gpu/drm/drm_writeback.c | 6 ++++-- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 4 ++-- drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c | 2 +- drivers/gpu/drm/vc4/vc4_txp.c | 2 +- drivers/gpu/drm/vkms/vkms_writeback.c | 3 +-- include/drm/drm_writeback.h | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 5fe3eb6fc6e1..9faf16036531 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -10645,7 +10645,7 @@ static void dm_set_writeback(struct amdgpu_display_= manager *dm, =20 acrtc->wb_pending =3D true; acrtc->wb_conn =3D wb_conn; - drm_writeback_queue_job(wb_conn, new_con_state); + drm_writeback_queue_job(connector, new_con_state); } =20 static void amdgpu_dm_update_hdcp(struct drm_atomic_state *state) diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu= /drm/arm/display/komeda/komeda_crtc.c index ab7dcc7fd8f3..0d22c2e7f722 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c @@ -271,7 +271,7 @@ komeda_crtc_do_flush(struct drm_crtc *crtc, =20 conn_st =3D wb_conn ? wb_conn->base.state : NULL; if (conn_st && conn_st->writeback_job) - drm_writeback_queue_job(&wb_conn->base.writeback, conn_st); + drm_writeback_queue_job(&wb_conn->base, conn_st); =20 /* step 2: notify the HW to kickoff the update */ mdev->funcs->flush(mdev, master->id, kcrtc_st->active_pipes); diff --git a/drivers/gpu/drm/arm/malidp_mw.c b/drivers/gpu/drm/arm/malidp_m= w.c index 7d42b007ef19..af31d6570231 100644 --- a/drivers/gpu/drm/arm/malidp_mw.c +++ b/drivers/gpu/drm/arm/malidp_mw.c @@ -243,7 +243,6 @@ void malidp_mw_atomic_commit(struct drm_device *drm, struct drm_atomic_state *old_state) { struct malidp_drm *malidp =3D drm_to_malidp(drm); - struct drm_writeback_connector *mw_conn =3D &malidp->mw_connector.writeba= ck; struct drm_connector_state *conn_state =3D malidp->mw_connector.state; struct malidp_hw_device *hwdev =3D malidp->dev; struct malidp_mw_connector_state *mw_state; @@ -263,7 +262,7 @@ void malidp_mw_atomic_commit(struct drm_device *drm, &mw_state->addrs[0], mw_state->format); =20 - drm_writeback_queue_job(mw_conn, conn_state); + drm_writeback_queue_job(&malidp->mw_connector, conn_state); hwdev->hw->enable_memwrite(hwdev, mw_state->addrs, mw_state->pitches, mw_state->n_planes, fb->width, fb->height, mw_state->format, diff --git a/drivers/gpu/drm/drm_writeback.c b/drivers/gpu/drm/drm_writebac= k.c index 9a3037d11009..1c1802d87f13 100644 --- a/drivers/gpu/drm/drm_writeback.c +++ b/drivers/gpu/drm/drm_writeback.c @@ -404,7 +404,8 @@ EXPORT_SYMBOL(drm_writeback_prepare_job); =20 /** * drm_writeback_queue_job - Queue a writeback job for later signalling - * @wb_connector: The writeback connector to queue a job on + * @connector: The drm connector which contains the writeback connector to + * queue a job on * @conn_state: The connector state containing the job to queue * * This function adds the job contained in @conn_state to the job_queue fo= r a @@ -421,9 +422,10 @@ EXPORT_SYMBOL(drm_writeback_prepare_job); * * See also: drm_writeback_signal_completion() */ -void drm_writeback_queue_job(struct drm_writeback_connector *wb_connector, +void drm_writeback_queue_job(struct drm_connector *connector, struct drm_connector_state *conn_state) { + struct drm_writeback_connector *wb_connector =3D &connector->writeback; struct drm_writeback_job *job; unsigned long flags; =20 diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c b/drivers/= gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c index 0375faf7f50c..5beffb73fd50 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c @@ -483,11 +483,11 @@ static void dpu_encoder_phys_wb_prepare_for_kickoff( } =20 drm_conn =3D - container_of(wb_enc->wb_conn, struct drm_connector, writeback); + drm_writeback_to_connector(wb_enc->wb_conn); state =3D drm_conn->state; =20 if (wb_enc->wb_conn && wb_enc->wb_job) - drm_writeback_queue_job(wb_enc->wb_conn, state); + drm_writeback_queue_job(drm_conn, state); =20 dpu_encoder_phys_wb_setup(phys_enc); =20 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 1de8865fb751..4921d4b9cef5 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c @@ -248,7 +248,7 @@ void rcar_du_writeback_setup(struct rcar_du_crtc *rcrtc, cfg->mem[i] =3D sg_dma_address(rjob->sg_tables[i].sgl) + fb->offsets[i]; =20 - drm_writeback_queue_job(&rcrtc->writeback.writeback, state); + drm_writeback_queue_job(&rcrtc->writeback, state); } =20 void rcar_du_writeback_complete(struct rcar_du_crtc *rcrtc) diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c index d08271142116..abd47bea60ed 100644 --- a/drivers/gpu/drm/vc4/vc4_txp.c +++ b/drivers/gpu/drm/vc4/vc4_txp.c @@ -357,7 +357,7 @@ static void vc4_txp_connector_atomic_commit(struct drm_= connector *conn, =20 TXP_WRITE(TXP_DST_CTRL, ctrl); =20 - drm_writeback_queue_job(&txp->connector.writeback, conn_state); + drm_writeback_queue_job(&txp->connector, conn_state); =20 drm_dev_exit(idx); } diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/v= kms_writeback.c index b368c569cf0a..59d44c759785 100644 --- a/drivers/gpu/drm/vkms/vkms_writeback.c +++ b/drivers/gpu/drm/vkms/vkms_writeback.c @@ -131,7 +131,6 @@ static void vkms_wb_atomic_commit(struct drm_connector = *conn, struct drm_connector_state *connector_state =3D drm_atomic_get_new_connec= tor_state(state, conn); struct vkms_output *output =3D drm_crtc_to_vkms_output(connector_state->c= rtc); - struct drm_writeback_connector *wb_conn =3D &output->wb_connector.writeba= ck; struct drm_connector_state *conn_state =3D output->wb_connector.state; struct vkms_crtc_state *crtc_state =3D output->composer_state; struct drm_framebuffer *fb =3D connector_state->writeback_job->fb; @@ -153,7 +152,7 @@ static void vkms_wb_atomic_commit(struct drm_connector = *conn, crtc_state->active_writeback =3D active_wb; crtc_state->wb_pending =3D true; spin_unlock_irq(&output->composer_lock); - drm_writeback_queue_job(wb_conn, connector_state); + drm_writeback_queue_job(&output->wb_connector, connector_state); active_wb->pixel_write =3D get_pixel_write_function(wb_format); drm_rect_init(&wb_frame_info->src, 0, 0, crtc_width, crtc_height); drm_rect_init(&wb_frame_info->dst, 0, 0, crtc_width, crtc_height); diff --git a/include/drm/drm_writeback.h b/include/drm/drm_writeback.h index c6960c7e634e..b4c11d380df0 100644 --- a/include/drm/drm_writeback.h +++ b/include/drm/drm_writeback.h @@ -94,7 +94,7 @@ int drm_writeback_set_fb(struct drm_connector_state *conn= _state, =20 int drm_writeback_prepare_job(struct drm_writeback_job *job); =20 -void drm_writeback_queue_job(struct drm_writeback_connector *wb_connector, +void drm_writeback_queue_job(struct drm_connector *wb_connector, struct drm_connector_state *conn_state); =20 void drm_writeback_cleanup_job(struct drm_writeback_job *job); --=20 2.34.1 From nobody Thu Apr 2 18:53:49 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 685A537F730 for ; Mon, 16 Mar 2026 08:31:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649874; cv=none; b=Zf5FH1O71k7CpQg95hafuNx4ndOsDradUGyeP/bHtpIJPzyeGT+GOmLwrAAQ5WIttDIJLyc2+xbxOGzkVzELu2UfJ8zSAJgfk1043jhl70ELxpqaZJg4verVVHJaC8dfQav5keL+e9AViv7RrpwcAFvC3PfUX2erwb1BFmnnZ6Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649874; c=relaxed/simple; bh=k4y8iTNZZPlbPyjzE+qIn051SDnRprfm7rCbusDToDs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=pZQt7StupJMAqoRxtv678Wi6XF6zKYHd+cgXjJKzWkL689r/t9VT8yaKxSePPopeQrMCPQOCrwtvje9iw0FwcKb1v/BdGmYiZt8S55bftGpjgKFRKJJpdlqNAd5FKh1Jk5gSkB3LAxoETANUDQe08e8Es0a3bXsw4dRuDVy44Mo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=jkr0A3Gv; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="jkr0A3Gv" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1773649872; x=1805185872; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=k4y8iTNZZPlbPyjzE+qIn051SDnRprfm7rCbusDToDs=; b=jkr0A3GvGTONABgqgaaR1zaAvQTiQ4UAV38GdXM1GBJmoVcqTgDDBCgJ bqFye7NqW4CdV4pqltEJ+lam74+TYRfOWX4u1wki/Xd3AwYL3UgyyX9aX sbnZrI4TMI5V7zfplXsvuEoFIcgSQfx/usptGFUb5ozILKckbYrKdGWvX aP9ppUte04tzU+ShSxiTDtOBTnT34QN0/6YJri0cCuKiUSHmjIGvEot/+ 8h53vQgskO9JCibRd5Xt75P7GPnDiYozRmimTihxYDr30jHqnRmkeao/8 U7wT7oGiwfVhnx9bZKLNtF3rzLeiqW9gB/gGVAeX1GOC+xGRbrLxQx72g A==; X-CSE-ConnectionGUID: 3xsXgvSPSSO6r70WJDIUvg== X-CSE-MsgGUID: KyKni5rZSEe3rN96qS9+ww== X-IronPort-AV: E=McAfee;i="6800,10657,11730"; a="77268304" X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="77268304" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2026 01:31:12 -0700 X-CSE-ConnectionGUID: F4OwHw9zQIyn58eECFYpiw== X-CSE-MsgGUID: OHmb2rmaSyyv5YCy+9dpVg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="220889057" Received: from kandpal-x299-ud4-pro.iind.intel.com ([10.190.239.10]) by orviesa006.jf.intel.com with ESMTP; 16 Mar 2026 01:31:03 -0700 From: Suraj Kandpal To: freedreno@lists.freedesktop.org, dri-devel@lists.freedesktop.org, kernel-list@raspberrypi.com, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: ankit.k.nautiyal@intel.com, uma.shankar@intel.com, dmitry.baryshkov@oss.qualcomm.com, arun.r.murthy@intel.com, jani.nikula@intel.com, harry.wentland@amd.com, siqueira@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, robin.clark@oss.qualcomm.com, abhinav.kumar@linux.dev, tzimmermann@suse.de, sean@poorly.ru, marijn.suijten@somainline.org, laurent.pinchart+renesas@ideasonboard.com, dave.stevenson@raspberrypi.com, tomi.valkeinen+renesas@ideasonboard.com, kieran.bingham+renesas@ideasonboard.com, Suraj Kandpal Subject: [PATCH v3 4/7] drm: writeback: Modify drm_writeback_signal_completion param Date: Mon, 16 Mar 2026 14:00:06 +0530 Message-Id: <20260316083008.87466-5-suraj.kandpal@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260316083008.87466-1-suraj.kandpal@intel.com> References: <20260316083008.87466-1-suraj.kandpal@intel.com> 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" Move to using drm_connector instead of drm_writeback_connector since it now resides within drm_connector. This will also help make sure drivers do not need to access drm_writeback_connector as much. Signed-off-by: Suraj Kandpal --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +- drivers/gpu/drm/arm/display/komeda/komeda_crtc.c | 2 +- drivers/gpu/drm/arm/malidp_hw.c | 6 +++--- drivers/gpu/drm/drm_writeback.c | 6 ++++-- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 4 ++-- drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c | 2 +- drivers/gpu/drm/vc4/vc4_txp.c | 2 +- drivers/gpu/drm/vkms/vkms_composer.c | 2 +- include/drm/drm_writeback.h | 2 +- 9 files changed, 15 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 9faf16036531..308809128ac1 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -679,7 +679,7 @@ static void dm_crtc_high_irq(void *interrupt_params) 100LL, (v_total * stream->timing.h_total)); mdelay(1000 / refresh_hz); =20 - drm_writeback_signal_completion(acrtc->wb_conn, 0); + drm_writeback_signal_completion(acrtc->connector, 0); dc_stream_fc_disable_writeback(adev->dm.dc, acrtc->dm_irq_params.stream, 0); } diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu= /drm/arm/display/komeda/komeda_crtc.c index 0d22c2e7f722..eed6ac53cc35 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c @@ -213,7 +213,7 @@ void komeda_crtc_handle_event(struct komeda_crtc *kcr= tc, struct komeda_wb_connector *wb_conn =3D kcrtc->wb_conn; =20 if (wb_conn) - drm_writeback_signal_completion(&wb_conn->base.writeback, 0); + drm_writeback_signal_completion(&wb_conn->base, 0); else drm_warn(drm, "CRTC[%d]: EOW happen but no wb_connector.\n", drm_crtc_index(&kcrtc->base)); diff --git a/drivers/gpu/drm/arm/malidp_hw.c b/drivers/gpu/drm/arm/malidp_h= w.c index 5a7bd27d3718..9b845d3f34e1 100644 --- a/drivers/gpu/drm/arm/malidp_hw.c +++ b/drivers/gpu/drm/arm/malidp_hw.c @@ -1315,15 +1315,15 @@ static irqreturn_t malidp_se_irq(int irq, void *arg) if (status & se->vsync_irq) { switch (hwdev->mw_state) { case MW_ONESHOT: - drm_writeback_signal_completion(&malidp->mw_connector.writeback, 0); + drm_writeback_signal_completion(&malidp->mw_connector, 0); break; case MW_STOP: - drm_writeback_signal_completion(&malidp->mw_connector.writeback, 0); + drm_writeback_signal_completion(&malidp->mw_connector, 0); /* disable writeback after stop */ hwdev->mw_state =3D MW_NOT_ENABLED; break; case MW_RESTART: - drm_writeback_signal_completion(&malidp->mw_connector.writeback, 0); + drm_writeback_signal_completion(&malidp->mw_connector, 0); fallthrough; /* to a new start */ case MW_START: /* writeback started, need to emulate one-shot mode */ diff --git a/drivers/gpu/drm/drm_writeback.c b/drivers/gpu/drm/drm_writebac= k.c index 1c1802d87f13..f3b4371d4201 100644 --- a/drivers/gpu/drm/drm_writeback.c +++ b/drivers/gpu/drm/drm_writeback.c @@ -477,7 +477,8 @@ static void cleanup_work(struct work_struct *work) =20 /** * drm_writeback_signal_completion - Signal the completion of a writeback = job - * @wb_connector: The writeback connector whose job is complete + * @connector: The drm connector whicha has the drm_writeback_connector wh= ose + * job is complete * @status: Status code to set in the writeback out_fence (0 for success) * * Drivers should call this to signal the completion of a previously queued @@ -492,10 +493,11 @@ static void cleanup_work(struct work_struct *work) * See also: drm_writeback_queue_job() */ void -drm_writeback_signal_completion(struct drm_writeback_connector *wb_connect= or, +drm_writeback_signal_completion(struct drm_connector *connector, int status) { unsigned long flags; + struct drm_writeback_connector *wb_connector =3D &connector->writeback; struct drm_writeback_job *job; struct dma_fence *out_fence; =20 diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c b/drivers/= gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c index 5beffb73fd50..0311aba2bc73 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c @@ -371,7 +371,7 @@ static void dpu_encoder_phys_wb_done_irq(void *arg) spin_unlock_irqrestore(phys_enc->enc_spinlock, lock_flags); =20 if (wb_enc->wb_conn) - drm_writeback_signal_completion(wb_enc->wb_conn, 0); + drm_writeback_signal_completion(drm_writeback_to_connector(wb_enc->wb_co= nn), 0); =20 /* Signal any waiting atomic commit thread */ wake_up_all(&phys_enc->pending_kickoff_wq); @@ -432,7 +432,7 @@ static void _dpu_encoder_phys_wb_handle_wbdone_timeout( phys_enc->enable_state =3D DPU_ENC_ERR_NEEDS_HW_RESET; =20 if (wb_enc->wb_conn) - drm_writeback_signal_completion(wb_enc->wb_conn, 0); + drm_writeback_signal_completion(drm_writeback_to_connector(wb_enc->wb_co= nn), 0); =20 dpu_encoder_frame_done_callback(phys_enc->parent, phys_enc, frame_event); } 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 4921d4b9cef5..e874732f4d01 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c @@ -253,5 +253,5 @@ void rcar_du_writeback_setup(struct rcar_du_crtc *rcrtc, =20 void rcar_du_writeback_complete(struct rcar_du_crtc *rcrtc) { - drm_writeback_signal_completion(&rcrtc->writeback.writeback, 0); + drm_writeback_signal_completion(&rcrtc->writeback, 0); } diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c index abd47bea60ed..23c8783f9f3c 100644 --- a/drivers/gpu/drm/vc4/vc4_txp.c +++ b/drivers/gpu/drm/vc4/vc4_txp.c @@ -505,7 +505,7 @@ static irqreturn_t vc4_txp_interrupt(int irq, void *dat= a) */ TXP_WRITE(TXP_DST_CTRL, TXP_READ(TXP_DST_CTRL) & ~TXP_EI); vc4_crtc_handle_vblank(vc4_crtc); - drm_writeback_signal_completion(&txp->connector.writeback, 0); + drm_writeback_signal_completion(&txp->connector, 0); =20 return IRQ_HANDLED; } diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vk= ms_composer.c index d15623be85fa..cd85de4ffd03 100644 --- a/drivers/gpu/drm/vkms/vkms_composer.c +++ b/drivers/gpu/drm/vkms/vkms_composer.c @@ -646,7 +646,7 @@ void vkms_composer_worker(struct work_struct *work) return; =20 if (wb_pending) { - drm_writeback_signal_completion(&out->wb_connector.writeback, 0); + drm_writeback_signal_completion(&out->wb_connector, 0); spin_lock_irq(&out->composer_lock); crtc_state->wb_pending =3D false; spin_unlock_irq(&out->composer_lock); diff --git a/include/drm/drm_writeback.h b/include/drm/drm_writeback.h index b4c11d380df0..5e8ab51c2da4 100644 --- a/include/drm/drm_writeback.h +++ b/include/drm/drm_writeback.h @@ -100,7 +100,7 @@ void drm_writeback_queue_job(struct drm_connector *wb_c= onnector, void drm_writeback_cleanup_job(struct drm_writeback_job *job); =20 void -drm_writeback_signal_completion(struct drm_writeback_connector *wb_connect= or, +drm_writeback_signal_completion(struct drm_connector *connector, int status); =20 struct dma_fence * --=20 2.34.1 From nobody Thu Apr 2 18:53:49 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B792C3803EE for ; Mon, 16 Mar 2026 08:31:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649882; cv=none; b=uhpgm6MEaxu9p1YplgDLpo3DjyzDUetSg2z362vBmzO8A8olpPDgnUxrBqGLHgRYpTl5yJaddPTo134unE0Uesf3ummlLJvLAnedz6LwBlZ3Yy21WU2kOqEV5Ras3zz6Xmuy03YUIZYbqGhFIqGlU+d0Apnfdl3x+NXTe9fNuqs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649882; c=relaxed/simple; bh=0M4s/sniHfYPh4D/8gJAKswJtRy+RmZ9RYqmHj5c39c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qOsuewjSLywOc4qQAuxoIpCJB6waXwFVT00QuwD5z9UMdOHhPUXyvTcr5iFTCeBYFv1QWGa51DHBlHOSIQf2aOWL5zMs544JKBYE7KlMMCM9YaQRRVnxVrhAxU9pfctdcu9wrbM5eEyE22Cfyu6FsNNNrf6uqdBSWtXIjHD4eOQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=aRuDf6aL; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="aRuDf6aL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1773649881; x=1805185881; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0M4s/sniHfYPh4D/8gJAKswJtRy+RmZ9RYqmHj5c39c=; b=aRuDf6aL5XqrHFG9s+Gmj4SnWDzNuWeYEoJ8Ga+GpW/1tHCmT48LfWzQ Lo4RNFvm55aWQCe3pYG9OSKdm99+k8qh+T/8uXXxoIe91ng1sle5/ONvF 8jjOBa7BZYfqZFcVNTLm/s6W6U8R7CASmiJl4srP8QlnrjdSA/39dx9vf Gv//RHy157qQyUoiGVprr5rdd7kOrfrRkRIG+w2QVWt8RA/5qwkczdlia 8q2z0pZvEIh9wWLd7rs6HnajgSRrPj/vUrEXoaoVNnUNjsd4AgHhw+Q6k KUA7orEAXMH7KM5KiNus3eVJc+phGQj9AYXOMPR/b0r3mELtg2l91tNgo w==; X-CSE-ConnectionGUID: qGjUYgVRR6CN4mf5VmLMsw== X-CSE-MsgGUID: cgm/kZSqRWG6S27GeGW9Ow== X-IronPort-AV: E=McAfee;i="6800,10657,11730"; a="77268322" X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="77268322" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2026 01:31:20 -0700 X-CSE-ConnectionGUID: Zex74FRWR6KZRGhmOUsARQ== X-CSE-MsgGUID: kuchdyl6QsK5ZXzsFsbTRw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="220889064" Received: from kandpal-x299-ud4-pro.iind.intel.com ([10.190.239.10]) by orviesa006.jf.intel.com with ESMTP; 16 Mar 2026 01:31:12 -0700 From: Suraj Kandpal To: freedreno@lists.freedesktop.org, dri-devel@lists.freedesktop.org, kernel-list@raspberrypi.com, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: ankit.k.nautiyal@intel.com, uma.shankar@intel.com, dmitry.baryshkov@oss.qualcomm.com, arun.r.murthy@intel.com, jani.nikula@intel.com, harry.wentland@amd.com, siqueira@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, robin.clark@oss.qualcomm.com, abhinav.kumar@linux.dev, tzimmermann@suse.de, sean@poorly.ru, marijn.suijten@somainline.org, laurent.pinchart+renesas@ideasonboard.com, dave.stevenson@raspberrypi.com, tomi.valkeinen+renesas@ideasonboard.com, kieran.bingham+renesas@ideasonboard.com, Suraj Kandpal Subject: [PATCH v3 5/7] drm: writeback: Modify params for drm_writeback_get_out_fence Date: Mon, 16 Mar 2026 14:00:07 +0530 Message-Id: <20260316083008.87466-6-suraj.kandpal@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260316083008.87466-1-suraj.kandpal@intel.com> References: <20260316083008.87466-1-suraj.kandpal@intel.com> 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" Use drm_connector instead of drm_writeback_connector since it now resides within drm_connector and also helps make sure drm_wrtieback_connector is being modified mostly by drm core provided helpers. Signed-off-by: Suraj Kandpal --- drivers/gpu/drm/drm_atomic_uapi.c | 4 +--- drivers/gpu/drm/drm_writeback.c | 6 +++--- include/drm/drm_writeback.h | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic= _uapi.c index 13576a6c25d7..5e61565c939b 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -1446,7 +1446,6 @@ static int prepare_signaling(struct drm_device *dev, } =20 for_each_new_connector_in_state(state, conn, conn_state, i) { - struct drm_writeback_connector *wb_conn; struct drm_out_fence_state *f; struct dma_fence *fence; s32 __user *fence_ptr; @@ -1468,8 +1467,7 @@ static int prepare_signaling(struct drm_device *dev, f[*num_fences].out_fence_ptr =3D fence_ptr; *fence_state =3D f; =20 - wb_conn =3D &conn->writeback; - fence =3D drm_writeback_get_out_fence(wb_conn); + fence =3D drm_writeback_get_out_fence(conn); if (!fence) return -ENOMEM; =20 diff --git a/drivers/gpu/drm/drm_writeback.c b/drivers/gpu/drm/drm_writebac= k.c index f3b4371d4201..15a680ba98ae 100644 --- a/drivers/gpu/drm/drm_writeback.c +++ b/drivers/gpu/drm/drm_writeback.c @@ -528,11 +528,11 @@ drm_writeback_signal_completion(struct drm_connector = *connector, EXPORT_SYMBOL(drm_writeback_signal_completion); =20 struct dma_fence * -drm_writeback_get_out_fence(struct drm_writeback_connector *wb_connector) +drm_writeback_get_out_fence(struct drm_connector *connector) { struct dma_fence *fence; - struct drm_connector *connector =3D - drm_writeback_to_connector(wb_connector); + struct drm_writeback_connector *wb_connector =3D + &connector->writeback; =20 if (WARN_ON(connector->connector_type !=3D DRM_MODE_CONNECTOR_WRITEBACK)) diff --git a/include/drm/drm_writeback.h b/include/drm/drm_writeback.h index 5e8ab51c2da4..2afa48ea7c00 100644 --- a/include/drm/drm_writeback.h +++ b/include/drm/drm_writeback.h @@ -104,5 +104,5 @@ drm_writeback_signal_completion(struct drm_connector *c= onnector, int status); =20 struct dma_fence * -drm_writeback_get_out_fence(struct drm_writeback_connector *wb_connector); +drm_writeback_get_out_fence(struct drm_connector *connector); #endif --=20 2.34.1 From nobody Thu Apr 2 18:53:49 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9382A3803EB for ; Mon, 16 Mar 2026 08:31:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649890; cv=none; b=PHLCV9cyA0t1HgkDySBptnjYljb22SIyQ0XtkFNULK6fYYcr3z9psbWNmlqanjB5lvVnXdtqzjN4CCEWeBnrs8mSPnExPIkjHYf9YMFLXJr3uNBNn7/5E4/ZHHewCaDIjhKPHMxSGJVZa82eTU9Ug0rdCRJie9/VX/tJI1RNDH8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649890; c=relaxed/simple; bh=/vdvZ8+JNewyJLC5VPWobT2nRff/AFgHAyyvAiwGErs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jhbKwmAOuJVdDQm2Jf95AOpeV+OzcDuprHXGIPeaCX5Bz0jQH5eZEMnyVR27qki3+jNrVvcDtINXaumgnTvuk59hfKbwX2C47lkbwrkx/m/r0Y6/ZNmC3+t/Hum2JqbEAcFWJOfpiw0L1lHe+zNKbAJI3Qz84Xac7vlIlikzFi4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Yj/HrSXQ; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Yj/HrSXQ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1773649890; x=1805185890; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/vdvZ8+JNewyJLC5VPWobT2nRff/AFgHAyyvAiwGErs=; b=Yj/HrSXQ+DkFrb4agYOSni7jNWeNQNnSD1qSwMel41nehB2pSAD358ZK SKmsqECn6OBDkzKVzO6S0CVyySe8ijhmmJQeUNUVnTeGBkSw8X7TOI+gL hwhOzsRe5tRd9FnQci7buxATEOFXR0WwkyN/G2D5LzMUsCmIDf4yL6yaC yaijSq+DoqOwhAAB2hlY5h4QxdnituCO8WEbG3fnQmEQCR1B9OGyeL/ZX gHeMPKGygT6dVfAXPQ1eb/JSE5tY01sV2Mztug5XIq1KFyRNYEr6/6lkf 0nRbv3sMWhX9Gfz2QUZcd0EeiYhtObMNpjVd/AQAuurXZ4CBt7DKM1JNd w==; X-CSE-ConnectionGUID: 7XbQSFnFR9y5sAz9X9cCSw== X-CSE-MsgGUID: urOaM5/jQoiLU3Jv4F1pfw== X-IronPort-AV: E=McAfee;i="6800,10657,11730"; a="77268368" X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="77268368" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2026 01:31:29 -0700 X-CSE-ConnectionGUID: UYF//OnvROu3s89iesGXgQ== X-CSE-MsgGUID: ZwiqnZgNQRyw7rUdPnhmjg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="220889095" Received: from kandpal-x299-ud4-pro.iind.intel.com ([10.190.239.10]) by orviesa006.jf.intel.com with ESMTP; 16 Mar 2026 01:31:20 -0700 From: Suraj Kandpal To: freedreno@lists.freedesktop.org, dri-devel@lists.freedesktop.org, kernel-list@raspberrypi.com, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: ankit.k.nautiyal@intel.com, uma.shankar@intel.com, dmitry.baryshkov@oss.qualcomm.com, arun.r.murthy@intel.com, jani.nikula@intel.com, harry.wentland@amd.com, siqueira@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, robin.clark@oss.qualcomm.com, abhinav.kumar@linux.dev, tzimmermann@suse.de, sean@poorly.ru, marijn.suijten@somainline.org, laurent.pinchart+renesas@ideasonboard.com, dave.stevenson@raspberrypi.com, tomi.valkeinen+renesas@ideasonboard.com, kieran.bingham+renesas@ideasonboard.com, Suraj Kandpal Subject: [PATCH v3 6/7] drm/connector: Modify prepare_writeback_job helper Date: Mon, 16 Mar 2026 14:00:08 +0530 Message-Id: <20260316083008.87466-7-suraj.kandpal@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260316083008.87466-1-suraj.kandpal@intel.com> References: <20260316083008.87466-1-suraj.kandpal@intel.com> 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" Pass drm_connector to prepare_writeback_job since drm_writeback_connector now resides within drm_connector. It also makes it uniform with params passed to other drm_connector_helper_funcs. Signed-off-by: Suraj Kandpal --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 2 +- drivers/gpu/drm/drm_writeback.c | 2 +- drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 4 +--- drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c | 6 ++---- drivers/gpu/drm/vkms/vkms_writeback.c | 2 +- include/drm/drm_modeset_helper_vtables.h | 2 +- 6 files changed, 7 insertions(+), 11 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 84a9c1d2bd8e..d02f5d20f3b1 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 @@ -80,7 +80,7 @@ static int amdgpu_dm_wb_connector_get_modes(struct drm_co= nnector *connector) return drm_add_modes_noedid(connector, 3840, 2160); } =20 -static int amdgpu_dm_wb_prepare_job(struct drm_writeback_connector *wb_con= nector, +static int amdgpu_dm_wb_prepare_job(struct drm_connector *connector, struct drm_writeback_job *job) { struct amdgpu_framebuffer *afb; diff --git a/drivers/gpu/drm/drm_writeback.c b/drivers/gpu/drm/drm_writebac= k.c index 15a680ba98ae..d6b260478889 100644 --- a/drivers/gpu/drm/drm_writeback.c +++ b/drivers/gpu/drm/drm_writeback.c @@ -392,7 +392,7 @@ int drm_writeback_prepare_job(struct drm_writeback_job = *job) int ret; =20 if (funcs->prepare_writeback_job) { - ret =3D funcs->prepare_writeback_job(wb_connector, job); + ret =3D funcs->prepare_writeback_job(connector, job); if (ret < 0) return ret; } diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/dr= m/msm/disp/dpu1/dpu_writeback.c index d4fc28951085..b8b299067845 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c @@ -87,11 +87,9 @@ static const struct drm_connector_funcs dpu_wb_conn_func= s =3D { .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, }; =20 -static int dpu_wb_conn_prepare_job(struct drm_writeback_connector *wb_conn, +static int dpu_wb_conn_prepare_job(struct drm_connector *connector, struct drm_writeback_job *job) { - struct drm_connector *connector =3D - container_of(wb_conn, struct drm_connector, writeback); struct dpu_wb_connector *dpu_wb_conn =3D to_dpu_wb_conn(connector); =20 if (!job->fb) 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 e874732f4d01..a0ad4c97971e 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c @@ -47,12 +47,10 @@ static int rcar_du_wb_conn_get_modes(struct drm_connect= or *connector) dev->mode_config.max_height); } =20 -static int rcar_du_wb_prepare_job(struct drm_writeback_connector *connecto= r, +static int rcar_du_wb_prepare_job(struct drm_connector *connector, struct drm_writeback_job *job) { - struct drm_connector *conn =3D - drm_writeback_to_connector(connector); - struct rcar_du_crtc *rcrtc =3D wb_to_rcar_crtc(conn); + struct rcar_du_crtc *rcrtc =3D wb_to_rcar_crtc(connector); struct rcar_du_wb_job *rjob; int ret; =20 diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/v= kms_writeback.c index 59d44c759785..ebfd243e2c1a 100644 --- a/drivers/gpu/drm/vkms/vkms_writeback.c +++ b/drivers/gpu/drm/vkms/vkms_writeback.c @@ -72,7 +72,7 @@ static int vkms_wb_connector_get_modes(struct drm_connect= or *connector) dev->mode_config.max_height); } =20 -static int vkms_wb_prepare_job(struct drm_writeback_connector *wb_connecto= r, +static int vkms_wb_prepare_job(struct drm_connector *connector, struct drm_writeback_job *job) { struct vkms_writeback_job *vkmsjob; diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_mod= eset_helper_vtables.h index 3e68213958dd..9de96a04784e 100644 --- a/include/drm/drm_modeset_helper_vtables.h +++ b/include/drm/drm_modeset_helper_vtables.h @@ -1119,7 +1119,7 @@ struct drm_connector_helper_funcs { * * This callback is used by the atomic modeset helpers. */ - int (*prepare_writeback_job)(struct drm_writeback_connector *connector, + int (*prepare_writeback_job)(struct drm_connector *connector, struct drm_writeback_job *job); /** * @cleanup_writeback_job: --=20 2.34.1 From nobody Thu Apr 2 18:53:49 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D4101F4168 for ; Mon, 16 Mar 2026 08:31:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649899; cv=none; b=PNq13a8f/pun3YW9KTXbN9Z0BwVfEql0MbEFVctFX/Dne4i2e3d1jFZZA6tMvALcSshoWhBy40RmcYtBIejlDX4PSHfxG5GSvynhOoUhFgS+6Z77e5SgG1SumyvsZY8m+sGRdXhpnJi9NKU0SBkP9XClddfLbVBky0swMGzTGF0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773649899; c=relaxed/simple; bh=SbzoBorLYrD7JirBAghIl6KN+QOccmx9tCu7NPjLY+g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RtUNYk5s8FBSCEExaAhmjaw3d3eklj296IrouWdyeMkMYjFwWBHSuzxe9uj6++RiF5Ae/Rclxn0ggaYvF1ammCslS9CGaT1CtU/c4nP/j53fMFu98f/KSI8zv0QTnKBNOvyie7Iqry36kwCToYEh4j1cLPSJccv5bOlPCZdHPPE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=cobB987+; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="cobB987+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1773649898; x=1805185898; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=SbzoBorLYrD7JirBAghIl6KN+QOccmx9tCu7NPjLY+g=; b=cobB987+QImTf8RfGMWhMmxQl+zmszZfy8jDpkoyGk2i5g4P/RN+om3Q XLahI8V/TR2COJMMwycHde8XtucUBvol3cAb70fobzvbZFAmTOlRJKKbe 7ofoFfYzbduHqZ9Mx9Y02dwfeIUs9fiVw1KdJ0rfJ2wCJu4SZGHyB84G0 JQPGOOHmI8zLzt1E1kJ+plkWRFvt2sFTr4QucJSoDUOc4wMHckWp+lsN4 OECVNKKEXZOi0MCeyDqFwua7yXNbwoV879LtelLohI8tQIBnltBEAXLC8 2iZ9USEAElxmluCCee3LMYnU9yDQ4HEObKo8/q8Ra0fPatoZYl0sV868/ Q==; X-CSE-ConnectionGUID: tg1vUCIpSOWkaIWVBWAFyw== X-CSE-MsgGUID: 4JbnpRDsSISORN4tkUfl4A== X-IronPort-AV: E=McAfee;i="6800,10657,11730"; a="77268388" X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="77268388" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2026 01:31:38 -0700 X-CSE-ConnectionGUID: o3KNXB+cSn2qLk1J/aLJ6w== X-CSE-MsgGUID: Bv93gwZ3S7GLeNIipK00hQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,123,1770624000"; d="scan'208";a="220889111" Received: from kandpal-x299-ud4-pro.iind.intel.com ([10.190.239.10]) by orviesa006.jf.intel.com with ESMTP; 16 Mar 2026 01:31:29 -0700 From: Suraj Kandpal To: freedreno@lists.freedesktop.org, dri-devel@lists.freedesktop.org, kernel-list@raspberrypi.com, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: ankit.k.nautiyal@intel.com, uma.shankar@intel.com, dmitry.baryshkov@oss.qualcomm.com, arun.r.murthy@intel.com, jani.nikula@intel.com, harry.wentland@amd.com, siqueira@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, robin.clark@oss.qualcomm.com, abhinav.kumar@linux.dev, tzimmermann@suse.de, sean@poorly.ru, marijn.suijten@somainline.org, laurent.pinchart+renesas@ideasonboard.com, dave.stevenson@raspberrypi.com, tomi.valkeinen+renesas@ideasonboard.com, kieran.bingham+renesas@ideasonboard.com, Suraj Kandpal Subject: [PATCH v3 7/7] drm/connector: Modify cleanup_writeback_job helper Date: Mon, 16 Mar 2026 14:00:09 +0530 Message-Id: <20260316083008.87466-8-suraj.kandpal@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260316083008.87466-1-suraj.kandpal@intel.com> References: <20260316083008.87466-1-suraj.kandpal@intel.com> 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" Pass drm_connector to prepare_writeback_job since drm_writeback_connector now resides within drm_connector. It also makes it uniform with params passed to other drm_connector_helper_funcs. Signed-off-by: Suraj Kandpal --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 4 ++-- drivers/gpu/drm/drm_writeback.c | 2 +- drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 4 +--- drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c | 6 ++---- drivers/gpu/drm/vkms/vkms_writeback.c | 5 +---- include/drm/drm_modeset_helper_vtables.h | 2 +- 6 files changed, 8 insertions(+), 15 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 d02f5d20f3b1..bf1ecf5d3027 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 @@ -144,8 +144,8 @@ static int amdgpu_dm_wb_prepare_job(struct drm_connecto= r *connector, return r; } =20 -static void amdgpu_dm_wb_cleanup_job(struct drm_writeback_connector *conne= ctor, - struct drm_writeback_job *job) +static void amdgpu_dm_wb_cleanup_job(struct drm_connector *connector, + struct drm_writeback_job *job) { struct amdgpu_bo *rbo; int r; diff --git a/drivers/gpu/drm/drm_writeback.c b/drivers/gpu/drm/drm_writebac= k.c index d6b260478889..1134be412cde 100644 --- a/drivers/gpu/drm/drm_writeback.c +++ b/drivers/gpu/drm/drm_writeback.c @@ -447,7 +447,7 @@ void drm_writeback_cleanup_job(struct drm_writeback_job= *job) connector->helper_private; =20 if (job->prepared && funcs->cleanup_writeback_job) - funcs->cleanup_writeback_job(wb_connector, job); + funcs->cleanup_writeback_job(connector, job); =20 if (job->fb) drm_framebuffer_put(job->fb); diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/dr= m/msm/disp/dpu1/dpu_writeback.c index b8b299067845..8e10d71ad292 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c @@ -100,11 +100,9 @@ static int dpu_wb_conn_prepare_job(struct drm_connecto= r *connector, return 0; } =20 -static void dpu_wb_conn_cleanup_job(struct drm_writeback_connector *wb_con= nector, +static void dpu_wb_conn_cleanup_job(struct drm_connector *connector, struct drm_writeback_job *job) { - struct drm_connector *connector =3D - container_of(wb_connector, struct drm_connector, writeback); struct dpu_wb_connector *dpu_wb_conn =3D to_dpu_wb_conn(connector); =20 if (!job->fb) 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 a0ad4c97971e..5553b7fcbd3a 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c @@ -72,12 +72,10 @@ static int rcar_du_wb_prepare_job(struct drm_connector = *connector, return 0; } =20 -static void rcar_du_wb_cleanup_job(struct drm_writeback_connector *connect= or, +static void rcar_du_wb_cleanup_job(struct drm_connector *connector, struct drm_writeback_job *job) { - struct drm_connector *conn =3D - drm_writeback_to_connector(connector); - struct rcar_du_crtc *rcrtc =3D wb_to_rcar_crtc(conn); + struct rcar_du_crtc *rcrtc =3D wb_to_rcar_crtc(connector); struct rcar_du_wb_job *rjob =3D job->priv; =20 if (!job->fb) diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/v= kms_writeback.c index ebfd243e2c1a..fffdee585e4a 100644 --- a/drivers/gpu/drm/vkms/vkms_writeback.c +++ b/drivers/gpu/drm/vkms/vkms_writeback.c @@ -103,13 +103,10 @@ static int vkms_wb_prepare_job(struct drm_connector *= connector, return ret; } =20 -static void vkms_wb_cleanup_job(struct drm_writeback_connector *wb_conn, +static void vkms_wb_cleanup_job(struct drm_connector *connector, struct drm_writeback_job *job) { struct vkms_writeback_job *vkmsjob =3D job->priv; - struct drm_connector *connector =3D container_of(wb_conn, - struct drm_connector, - writeback); struct vkms_output *vkms_output =3D container_of(connector, struct vkms_output, wb_connector); diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_mod= eset_helper_vtables.h index 9de96a04784e..4a0e7c19dd4e 100644 --- a/include/drm/drm_modeset_helper_vtables.h +++ b/include/drm/drm_modeset_helper_vtables.h @@ -1134,7 +1134,7 @@ struct drm_connector_helper_funcs { * * This callback is used by the atomic modeset helpers. */ - void (*cleanup_writeback_job)(struct drm_writeback_connector *connector, + void (*cleanup_writeback_job)(struct drm_connector *connector, struct drm_writeback_job *job); =20 /** --=20 2.34.1