From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=192.198.163.13 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794291437; b=dPIdFY426wgGR5/LXoOB66JdKMX2k63G1GVFDt3zVxtvm+Gn71TkYkTy2Z58vuQdjDdt pywg76WoKkfMXBLggPyjYtvYofHXCVf2LQyN6I3nHc9+qRE7SFafHQnTkjYkvZYPcgrR7 R8ZspwhiA/+KppKuqvG61bxoC9OmqJ+EusPRj1/TyS3lKHF+AezjwNzXlOPDLOBs6TAIY rbXbOFU4mf7zcI9LJz39aIreHxeSwL90CsLU3IZ7fUFWj0xemTT0U5pwV0+/KdU2uzB91 vseRENiC0Qr+r8Hv4qRXIJC8KgST/wKtK1uncQyL/61USNk2X5HORkEZk8eDiF+E1lA== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794291437; h=DMARC-Filter:DKIM-Signature:X-CSE-ConnectionGUID:X-CSE-MsgGUID: X-IronPort-AV:X-IronPort-AV:Received:X-CSE-ConnectionGUID: X-CSE-MsgGUID:X-ExtLoop1:X-IronPort-AV:Received:From:To:Cc:Subject: Date:Message-Id:X-Mailer:In-Reply-To:References:MIME-Version: Content-Transfer-Encoding; bh=EG8RYjyvqjFKjLJpQD+/PPMYVGRcARqX3NlXZPTHBLA=; b=xGSuru0YEYtPnzE0DgkzSDV8M92/TDCC3lOS7HDaEF8he6fNS1N0dbIowpn15T8NrteM U1slsmfpTrPu72JVXdd8HhH7UTy4bv5DpMvKnMxrIvuhSJAVbxiP7odkyV6doWjehNhuq XHC+Xjm7pzSbGc5qcjKzhuxQgJGjBqZJx4w2aOmqd43cb9FZoZLpEd/fBe6fCzki+ISR1 BopDZEKSTd+TduE30VkaOGT20G3Ru5pNP2Idnn92Fi/jSUACcPqLDQntgj0pIqQMKzKwB Rzt4rhVwzqOA3obW1+kLTY86F1XYCeDE+0pG3kHqiXFSYpQrOP4B5++itgZ8CagmTLA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=W539okpb; arc=none smtp.remote-ip=192.198.163.13 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4E5A2606A31C; Tue, 10 Nov 2026 06:17:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 4E5A2606A31C 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.a=rsa-sha256 header.s=Intel header.b=W539okpb DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1794291436; x=1825827436; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=w2pZRFUiT0i4zWczMSE/ONRS5w7sWyaZRFP+DRcHtVw=; b=W539okpbMusVSDUclMn51v4L/O9muvWUo+P9GuZwLXBLmAyJ8086iqOV wlwgol3RTXAJEk2BtRXRtCuwp9MzRAYzQBEBQy98497l/tyseAloyg9RI 8tdivmg8WrH16zZuHeaLodb2s+Ws8/C88Z7MfyBj7e/4tSHjqt/yMm7nP aCeotGZHj36oEgn1zhlMRyUFBS31GitacjJoEPfpq8jvIqaHb+j88WVft ITBHVdV9OZxWw/DWpn+V6o88PdQail4fGYmQfvXkJ0Lljj9CU6ePbZu/O +B7ophF0ZJgVUtMXL+mV65tC6ib+6U/FVWNv/rLpDIylX9bbUrTX4Xsnk w==; X-CSE-ConnectionGUID: BQCHepk7Styx2R4ylBeB5w== X-CSE-MsgGUID: gPxFnPXrRiqoc+7pMAyfgw== X-IronPort-AV: E=McAfee;i="6800,10657,11961"; a="3020953" X-IronPort-AV: E=Sophos;i="6.27,205,1787036400"; d="scan'208";a="3020953" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Nov 2026 22:17:15 -0800 X-CSE-ConnectionGUID: jegj6YZZR0aVGKvWfuoB5w== X-CSE-MsgGUID: XX65PZWMT1G62dipQW60fg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,205,1787036400"; d="scan'208";a="7931007" Received: from kandpal-x299-ud4-pro.iind.intel.com ([10.190.239.10]) by orviesa004.jf.intel.com with ESMTP; 09 Nov 2026 22:17:09 -0800 From: Suraj Kandpal To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, linux-renesas-soc@vger.kernel.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: dmitry.baryshkov@oss.qualcomm.com, John.Harrison@Igalia.com, kernel-dev@igalia.com, alex.hung@amd.com, liviu.dudau@arm.com, louis.chauvet@bootlin.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, laurent.pinchart+renesas@ideasonboard.com, tomi.valkeinen+renesas@ideasonboard.com, kieran.bingham+renesas@ideasonboard.com, dave.stevenson@raspberrypi.com, mcanal@igalia.com, kernel-list@raspberrypi.com, uma.shankar@intel.com, arun.r.murthy@intel.com, Suraj Kandpal Subject: [PATCH v7 3/8] drm: writeback: Modify writeback init helpers Date: Tue, 10 Nov 2026 11:46:32 +0530 Message-Id: <20261110061637.2500929-4-suraj.kandpal@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20261110061637.2500929-1-suraj.kandpal@intel.com> References: <20261110061637.2500929-1-suraj.kandpal@intel.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The writeback connector init helpers (drm_writeback_connector_init and drmm_writeback_connector_init) require access to the parent drm_connector object as well as the drm_writeback_connector object itself. So, pass in the top level drm_connector and traverse down to drm_writeback_connector rather than passing in the lower level object and traversing back up. Even where such is not the case, update to use the top level object for consistency across the interface. Signed-off-by: Suraj Kandpal Reviewed-by: John Harrison Reviewed-by: Alex Hung --- v6 -> v7: - Rebase over latest kernel - Rebase over latest writeback series by Dmitry - Update commit message (Alex) v5 -> v6: - Rebase over latest kernel v4 -> v5: - Make @connector kerneldoc wording consistent across the series (John) - Fix Drm -> DRM (John) v3 -> v4: - Update subject line for consitency (John) - Update commit message across commits for consitency (John) - Rename writeback to wb_connector in rcar_du_crtc for clarity (John) .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 2 +- .../drm/arm/display/komeda/komeda_wb_connector.c | 5 +---- drivers/gpu/drm/arm/malidp_mw.c | 2 +- drivers/gpu/drm/drm_writeback.c | 14 +++++++------- drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 2 +- .../gpu/drm/renesas/rcar-du/rcar_du_writeback.c | 6 +++--- drivers/gpu/drm/vc4/vc4_txp.c | 2 +- drivers/gpu/drm/vkms/vkms_writeback.c | 4 ++-- include/drm/drm_writeback.h | 4 ++-- 9 files changed, 19 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c index 4cd8fdf6ef07..e98481d5aa74 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c @@ -262,7 +262,7 @@ int amdgpu_dm_wb_connector_init(struct amdgpu_display_manager *dm, drm_connector_helper_add(&wbcon->base, &amdgpu_dm_wb_conn_helper_funcs); - res = drm_writeback_connector_init(&dm->adev->ddev, &wbcon->base.writeback, + res = drm_writeback_connector_init(&dm->adev->ddev, &wbcon->base, &amdgpu_dm_wb_connector_funcs, &wbcon->encoder, amdgpu_dm_wb_formats, diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c index 07075a8b5aa8..5cdcc468e8a4 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c @@ -145,7 +145,6 @@ static int komeda_wb_connector_add(struct komeda_kms_dev *kms, { struct komeda_dev *mdev = kms->base.dev_private; struct komeda_wb_connector *kwb_conn; - struct drm_writeback_connector *wb_conn; struct drm_display_info *info; struct drm_encoder *encoder; struct drm_encoder *wb_encoder; @@ -164,8 +163,6 @@ static int komeda_wb_connector_add(struct komeda_kms_dev *kms, kwb_conn->wb_layer = kcrtc->master->wb_layer; - wb_conn = &kwb_conn->base.writeback; - formats = komeda_get_layer_fourcc_list(&mdev->fmt_tbl, kwb_conn->wb_layer->layer_type, &n_formats); @@ -186,7 +183,7 @@ static int komeda_wb_connector_add(struct komeda_kms_dev *kms, return err; } - err = drm_writeback_connector_init(&kms->base, wb_conn, + err = drm_writeback_connector_init(&kms->base, &kwb_conn->base, &komeda_wb_connector_funcs, wb_encoder, formats, n_formats); diff --git a/drivers/gpu/drm/arm/malidp_mw.c b/drivers/gpu/drm/arm/malidp_mw.c index 503a19963587..bf06a47c3b63 100644 --- a/drivers/gpu/drm/arm/malidp_mw.c +++ b/drivers/gpu/drm/arm/malidp_mw.c @@ -239,7 +239,7 @@ int malidp_mw_connector_init(struct drm_device *drm) return ret; } - ret = drm_writeback_connector_init(drm, &malidp->mw_connector.writeback, + ret = drm_writeback_connector_init(drm, &malidp->mw_connector, &malidp_mw_connector_funcs, &malidp->mw_encoder, formats, n_formats); diff --git a/drivers/gpu/drm/drm_writeback.c b/drivers/gpu/drm/drm_writeback.c index c3d2853755ac..4a32ab840862 100644 --- a/drivers/gpu/drm/drm_writeback.c +++ b/drivers/gpu/drm/drm_writeback.c @@ -224,9 +224,9 @@ static int __drm_writeback_connector_init(struct drm_device *dev, * drm_writeback_connector_init - Initialize a writeback connector * * @dev: DRM device - * @wb_connector: Writeback connector to initialize - * @enc: handle to the already initialized drm encoder + * @connector: DRM connector which contains the writeback connector to initialize * @con_funcs: Connector funcs vtable + * @enc: handle to the already initialized drm encoder * @formats: Array of supported pixel formats for the writeback engine * @n_formats: Length of the formats array * @@ -249,12 +249,12 @@ static int __drm_writeback_connector_init(struct drm_device *dev, * Returns: 0 on success, or a negative error code */ int drm_writeback_connector_init(struct drm_device *dev, - struct drm_writeback_connector *wb_connector, + struct drm_connector *connector, const struct drm_connector_funcs *con_funcs, struct drm_encoder *enc, const u32 *formats, int n_formats) { - struct drm_connector *connector = drm_writeback_to_connector(wb_connector); + struct drm_writeback_connector *wb_connector = &connector->writeback; int ret; ret = drm_connector_init(dev, connector, con_funcs, @@ -307,7 +307,7 @@ void drm_writeback_connector_cleanup(struct drm_connector *connector) * drmm_writeback_connector_init - Initialize a writeback connector * * @dev: DRM device - * @wb_connector: Writeback connector to initialize + * @connector: DRM connector which contains the writeback connector to initialize * @con_funcs: Connector funcs vtable * @enc: Encoder to connect this writeback connector * @formats: Array of supported pixel formats for the writeback engine @@ -324,12 +324,12 @@ void drm_writeback_connector_cleanup(struct drm_connector *connector) * Returns: 0 on success, or a negative error code */ int drmm_writeback_connector_init(struct drm_device *dev, - struct drm_writeback_connector *wb_connector, + struct drm_connector *connector, const struct drm_connector_funcs *con_funcs, struct drm_encoder *enc, const u32 *formats, int n_formats) { - struct drm_connector *connector = drm_writeback_to_connector(wb_connector); + struct drm_writeback_connector *wb_connector = &connector->writeback; int ret; ret = drmm_connector_init(dev, connector, con_funcs, diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c index 95db5002e999..38c214dea08d 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c @@ -134,7 +134,7 @@ int dpu_writeback_init(struct drm_device *dev, struct drm_encoder *enc, drm_connector_helper_add(&dpu_wb_conn->base, &dpu_wb_conn_helper_funcs); - rc = drmm_writeback_connector_init(dev, &dpu_wb_conn->base.writeback, + rc = drmm_writeback_connector_init(dev, &dpu_wb_conn->base, &dpu_wb_conn_funcs, enc, format_list, num_formats); diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c b/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c index 0708e5a38a15..5ad8b935eb81 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c @@ -204,7 +204,7 @@ static const u32 writeback_formats[] = { int rcar_du_writeback_init(struct rcar_du_device *rcdu, struct rcar_du_crtc *rcrtc) { - struct drm_writeback_connector *wb_conn = &rcrtc->wb_connector.writeback; + struct drm_connector *connector = &rcrtc->wb_connector; struct drm_encoder *encoder = &rcrtc->encoder; int ret; @@ -216,9 +216,9 @@ int rcar_du_writeback_init(struct rcar_du_device *rcdu, if (ret) return ret; - drm_connector_helper_add(&rcrtc->wb_connector, + drm_connector_helper_add(connector, &rcar_du_wb_conn_helper_funcs); - ret = drm_writeback_connector_init(&rcdu->ddev, wb_conn, + ret = drm_writeback_connector_init(&rcdu->ddev, connector, &rcar_du_wb_conn_funcs, encoder, writeback_formats, diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c index 591753dcfb30..34a9c714deb8 100644 --- a/drivers/gpu/drm/vc4/vc4_txp.c +++ b/drivers/gpu/drm/vc4/vc4_txp.c @@ -601,7 +601,7 @@ static int vc4_txp_bind(struct device *dev, struct device *master, void *data) drm_connector_helper_add(&txp->connector, &vc4_txp_connector_helper_funcs); - ret = drm_writeback_connector_init(drm, &txp->connector.writeback, + ret = drm_writeback_connector_init(drm, &txp->connector, &vc4_txp_connector_funcs, encoder, drm_fmts, ARRAY_SIZE(drm_fmts)); diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c index b9f33f2e8b92..b8ef524fe313 100644 --- a/drivers/gpu/drm/vkms/vkms_writeback.c +++ b/drivers/gpu/drm/vkms/vkms_writeback.c @@ -170,7 +170,6 @@ static const struct drm_connector_helper_funcs vkms_wb_conn_helper_funcs = { int vkms_enable_writeback_connector(struct vkms_device *vkmsdev, struct vkms_output *vkms_output) { - struct drm_writeback_connector *wb = &vkms_output->wb_connector.writeback; int ret; ret = drmm_encoder_init(&vkmsdev->drm, &vkms_output->wb_encoder, @@ -183,7 +182,8 @@ int vkms_enable_writeback_connector(struct vkms_device *vkmsdev, drm_connector_helper_add(&vkms_output->wb_connector, &vkms_wb_conn_helper_funcs); - return drmm_writeback_connector_init(&vkmsdev->drm, wb, + return drmm_writeback_connector_init(&vkmsdev->drm, + &vkms_output->wb_connector, &vkms_wb_connector_funcs, &vkms_output->wb_encoder, vkms_wb_formats, diff --git a/include/drm/drm_writeback.h b/include/drm/drm_writeback.h index 702141099520..c6960c7e634e 100644 --- a/include/drm/drm_writeback.h +++ b/include/drm/drm_writeback.h @@ -78,13 +78,13 @@ drm_writeback_to_connector(struct drm_writeback_connector *wb_connector) } int drm_writeback_connector_init(struct drm_device *dev, - struct drm_writeback_connector *wb_connector, + struct drm_connector *connector, const struct drm_connector_funcs *con_funcs, struct drm_encoder *enc, const u32 *formats, int n_formats); int drmm_writeback_connector_init(struct drm_device *dev, - struct drm_writeback_connector *wb_connector, + struct drm_connector *connector, const struct drm_connector_funcs *con_funcs, struct drm_encoder *enc, const u32 *formats, int n_formats); -- 2.34.1