From nobody Tue Dec 16 14:23:11 2025 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) (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 C3B587BB1D for ; Tue, 14 Jan 2025 14:06:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.198 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736863571; cv=none; b=gkBgwFZ73FC/Cyb4jYTV5ZA4L/L7zjeKyQms5yLSsWU9nSo8+x60mgPIeA7Ir2r/Ys43KQNvf81n26vRinJagrI0Fb+Pa+vQkTBy39AolLyexUxAjgEBI+ftHySInajjH2+yG9NxTVdAoDdn6Da5sNzV+sI+xunOCXJxkwgVAyI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736863571; c=relaxed/simple; bh=zEON8U4xfektoFrGFLGBfKHveoeJ4SqRMTmMY8YzcnY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=H7zg5FGhWNmYBPlkRYFCNqZ07R5NZ5yvgnEFPC61IxBR/U3sGWGId12VrCY4GWBAlgntQ0uZdQBZZQTV9igfqpkgeBKC65VDlvGowg/+1y6FjaT4Y0hUXK169FB3HvqlBtEN1G6Gbg3IseC7YA+CSKDWwH0OlyaAFoZARxtKjx8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=e5eg7+xJ; arc=none smtp.client-ip=217.70.183.198 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="e5eg7+xJ" Received: by mail.gandi.net (Postfix) with ESMTPSA id 6DD0AC0014; Tue, 14 Jan 2025 14:06:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1736863567; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=s6dIp4rzcIzAg5vGoAZF2DeDk0BH08IatA2EdlwvT9I=; b=e5eg7+xJEiraCoFiXZVFXGGB3YsXBaMjMQcke7f61cRyOwo259BdSAvzG5iyE857WtYGgh EOrSkWUsI047QAoD8NCJ+BKRjyvVNxhVRgeKXk0kKni7goIwZowPML0ssR+OprJ3zbLtDv eckmbClM4I3YT6R9bhModr2AnPjIHZgE0X8891egO7+tJbZxNgKoMdgtBCeib8Vez0UFSi SOscB2NpACPL9B5A6nxUiDbglGAXQkdesxDb5T4hWm1qEJBhfS5RamhcGhZM0+igf5EnAz i0WGkLdyS3S7p7TADoEMMyS9piIQ1nV391tgDy02g9aO5iLo6bOBkPavHVVSRA== From: Louis Chauvet Date: Tue, 14 Jan 2025 15:05:50 +0100 Subject: [PATCH v8 8/8] drm/vkms: Switch to managed for writeback connector Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250114-google-vkms-managed-v8-8-da4254aa3dd5@bootlin.com> References: <20250114-google-vkms-managed-v8-0-da4254aa3dd5@bootlin.com> In-Reply-To: <20250114-google-vkms-managed-v8-0-da4254aa3dd5@bootlin.com> To: Rodrigo Siqueira , Melissa Wen , =?utf-8?q?Ma=C3=ADra_Canal?= , Haneen Mohammed , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Simona Vetter Cc: dri-devel@lists.freedesktop.org, arthurgrillo@riseup.net, linux-kernel@vger.kernel.org, jeremie.dautheribes@bootlin.com, miquel.raynal@bootlin.com, thomas.petazzoni@bootlin.com, seanpaul@google.com, nicolejadeyee@google.com, Louis Chauvet X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=3879; i=louis.chauvet@bootlin.com; h=from:subject:message-id; bh=zEON8U4xfektoFrGFLGBfKHveoeJ4SqRMTmMY8YzcnY=; b=owEBbQKS/ZANAwAIASCtLsZbECziAcsmYgBnhm9Fa1eNf7XbIDvBh+53Fu0F2CczKy560q8n3 UqobgZbnOyJAjMEAAEIAB0WIQRPj7g/vng8MQxQWQQgrS7GWxAs4gUCZ4ZvRQAKCRAgrS7GWxAs 4hCuEACekOJ3wPE1eHHLv3bHQuuEXPy2wCHapfnkGjEHHJcHacDalgBTh5irR5FcHdEtvGaJ8Fa r9XmuNADvFK2SweEtrewUp0NH4l9GGZkhTsI6urjsCGze4/pud/+2xUo44V33nGgRruU52Y/KlJ RkX7qKlC3lBWDXO8BBbZyNyq8R4qURanAESGzvTYJVMmI56dlQobK2bdy3uSyZWbaBb3VLe+7hO E/NiIgHAB2c/n8Cu6SdvQSnP43yMl8MVWIfal3jkcajbVODPxYXc1SfnX9z5cDtFS+OYNW1suEV frSax6wx+H+XS8tt9rAkdYuPM5PBgyXckdE92qeQ9XnkMT2+ICKLQFU1BiBgvntx4KNEKadGoUR qXOWvkhQ3Z8I0K+0O8GWufXLxx3vBii022HOObqsn51QALyOXjtZSsLg4tUclwk+ZBAs2Qhm1YU YZT+fKnt3K5Hp+dAvqOroZ+j4mWI8EZiTuK03FvhVRIk9imsQ2Q2hMnCp2EhH9T8oET9kmCdMP+ tnvXRnM1JPzuLvTdyIPGos5MrgHGb64UO39m3DBLMPE+JXwmzZdfd36NYGYevajRtUpL/hBEz77 11VSjdcLkDmmamkksmfziUvoE9b7eRS2xtjuNQZ4/uH2QYCPCvZWEd8RVADbjjVVQYAM+gA5jwG 3brXy5Ax3xT1rQA== X-Developer-Key: i=louis.chauvet@bootlin.com; a=openpgp; fpr=8B7104AE9A272D6693F527F2EC1883F55E0B40A5 X-GND-Sasl: louis.chauvet@bootlin.com The current VKMS driver uses non-managed function to create writeback connectors. It is not an issue yet, but in order to support multiple devices easily, convert this code to use drm and device managed helpers. Acked-by: Thomas Zimmermann Signed-off-by: Louis Chauvet Acked-by: Maxime Ripard Reviewed-by: Jos=C3=A9 Exp=C3=B3sito --- drivers/gpu/drm/vkms/vkms_drv.h | 3 ++- drivers/gpu/drm/vkms/vkms_output.c | 2 +- drivers/gpu/drm/vkms/vkms_writeback.c | 21 +++++++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_dr= v.h index 00541eff3d1b0aa4b374fb94c8fe34932df31509..46ac36aebb27ce8d90182247350= 07c1b3fe7d0a5 100644 --- a/drivers/gpu/drm/vkms/vkms_drv.h +++ b/drivers/gpu/drm/vkms/vkms_drv.h @@ -179,6 +179,7 @@ struct vkms_output { struct drm_encoder encoder; struct drm_connector connector; struct drm_writeback_connector wb_connector; + struct drm_encoder wb_encoder; struct hrtimer vblank_hrtimer; ktime_t period_ns; struct workqueue_struct *composer_workq; @@ -275,6 +276,6 @@ void vkms_set_composer(struct vkms_output *out, bool en= abled); void vkms_writeback_row(struct vkms_writeback_job *wb, const struct line_b= uffer *src_buffer, int y); =20 /* Writeback */ -int vkms_enable_writeback_connector(struct vkms_device *vkmsdev); +int vkms_enable_writeback_connector(struct vkms_device *vkmsdev, struct dr= m_crtc *crtc); =20 #endif /* _VKMS_DRV_H_ */ diff --git a/drivers/gpu/drm/vkms/vkms_output.c b/drivers/gpu/drm/vkms/vkms= _output.c index ab9affa75b66ce9f00fe025052439405206144ec..de817e2794860f9071a71b36314= 60691e0d73a85 100644 --- a/drivers/gpu/drm/vkms/vkms_output.c +++ b/drivers/gpu/drm/vkms/vkms_output.c @@ -95,7 +95,7 @@ int vkms_output_init(struct vkms_device *vkmsdev) } =20 if (vkmsdev->config->writeback) { - writeback =3D vkms_enable_writeback_connector(vkmsdev); + writeback =3D vkms_enable_writeback_connector(vkmsdev, crtc); if (writeback) DRM_ERROR("Failed to init writeback connector\n"); } diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/v= kms_writeback.c index 79918b44fedd7ae2451d1d530fc6d5aabf2d99a3..981975c2b0a0c75e4a3aceca2a9= 65f5876ae0a8f 100644 --- a/drivers/gpu/drm/vkms/vkms_writeback.c +++ b/drivers/gpu/drm/vkms/vkms_writeback.c @@ -24,7 +24,6 @@ static const u32 vkms_wb_formats[] =3D { =20 static const struct drm_connector_funcs vkms_wb_connector_funcs =3D { .fill_modes =3D drm_helper_probe_single_connector_modes, - .destroy =3D drm_connector_cleanup, .reset =3D drm_atomic_helper_connector_reset, .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, @@ -163,16 +162,22 @@ static const struct drm_connector_helper_funcs vkms_w= b_conn_helper_funcs =3D { .atomic_check =3D vkms_wb_atomic_check, }; =20 -int vkms_enable_writeback_connector(struct vkms_device *vkmsdev) +int vkms_enable_writeback_connector(struct vkms_device *vkmsdev, struct dr= m_crtc *crtc) { struct drm_writeback_connector *wb =3D &vkmsdev->output.wb_connector; + int ret; + + ret =3D drmm_encoder_init(&vkmsdev->drm, &vkmsdev->output.wb_encoder, + NULL, DRM_MODE_ENCODER_VIRTUAL, NULL); + if (ret) + return ret; + vkmsdev->output.wb_encoder.possible_crtcs |=3D drm_crtc_mask(crtc); =20 drm_connector_helper_add(&wb->base, &vkms_wb_conn_helper_funcs); =20 - return drm_writeback_connector_init(&vkmsdev->drm, wb, - &vkms_wb_connector_funcs, - NULL, - vkms_wb_formats, - ARRAY_SIZE(vkms_wb_formats), - 1); + return drmm_writeback_connector_init(&vkmsdev->drm, wb, + &vkms_wb_connector_funcs, + &vkmsdev->output.wb_encoder, + vkms_wb_formats, + ARRAY_SIZE(vkms_wb_formats)); } --=20 2.47.1