From nobody Tue Dec 16 14:23:12 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 EE1C213B7BE for ; Tue, 14 Jan 2025 14:06:07 +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=1736863570; cv=none; b=PB2i/BfQoDYQkeIUCll7GMn1Kk+Yxx9JjG7LvT4MKPFZsvilwGMYS7yp9FaPq5/Ep53tozDiz3ky37XsKmZI8wQb90YXTwsQ6teAO743GUFfmF3Z0AAZaTc21OHddJWn2a+0yUtNj9SIN8mDpn0uULMA55dWWNEVL5YrzsN/+4g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736863570; c=relaxed/simple; bh=+fUb0GLJudMuErVuypsDt3jWi3Z7jzufxwye9EpDQwI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MS+NnMLCFx3YE62+jxiKE4KBam97z7TI21VzJiQ+uQBB94KHXiCoOSl9z22AEl0l6YYMm4tGMmaqVahpHCY5NDYT5FLzrlY9w9RP/UMp/SA7HIoyTNzlhdLagJEFghf3kkkA6pnKzx5nIkAFlBUwvO8X3t2yzEGAqx54vDu+wvw= 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=ZUZXflcY; 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="ZUZXflcY" Received: by mail.gandi.net (Postfix) with ESMTPSA id 86262C0010; Tue, 14 Jan 2025 14:06:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1736863566; 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=kcFo04aePHcVATEz/b+YPOhv65FHdQoDZzb/BhLAltA=; b=ZUZXflcYXdQKN1L6q+HhHLFX5+0YeYlhBLlNl6FCao25kxq18Lg5EmHyyZIfLI3TuD7Ccr YN1NAa+tasfm2L42Y6oLZ+vLgLU++31jTZKDUc1IfE4jNR7Y1+efI02W1RjILZ3pv81UYL m/7jednKPsKd1dBRiNikHTWWlowXImwIRCgYC808EkyzGYytJinfE8eJCx1PZMVo/w9d5S EU2E/UKTzczj9ePMfdnw0y/bQDGG0771kN0+gUwFKJCMyQpUAj5301jWtUINQKJCnInIvF ornZDU4wzZLtscKDBm3f763jxN5j9ydS7vw3IwzeVNaF5ge04pEfDi1TnXJ2Qw== From: Louis Chauvet Date: Tue, 14 Jan 2025 15:05:49 +0100 Subject: [PATCH v8 7/8] drm: writeback: Create drmm variants for drm_writeback_connector initialization 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-7-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=3290; i=louis.chauvet@bootlin.com; h=from:subject:message-id; bh=+fUb0GLJudMuErVuypsDt3jWi3Z7jzufxwye9EpDQwI=; b=owEBbQKS/ZANAwAIASCtLsZbECziAcsmYgBnhm9FQz72oosOEbLe+RlYB/2zznAsBCsQEG+V7 2aG/i66xkeJAjMEAAEIAB0WIQRPj7g/vng8MQxQWQQgrS7GWxAs4gUCZ4ZvRQAKCRAgrS7GWxAs 4ptVD/9UZRIC5vQc+IMa5Au67aIDPhcqTNNjm+pEeXWzm+5wqdsSPwGtOCKQF+8SLzvhMFVm5AN JOJAqeFgLEBqBwH625HalBtU1fTZelP9hIsUf2jbGP3FC9mzdbgDJMF9nOXE6E949BnFCbeOjfK VoCdtFyNE8jWywEQhHnBynCYKww4mxKBWqmDc/gWxTrzlqcDP8bYBaA9fXebeTKkojmkvQk05cI TCySFoKV30lLysv8bDj1gz4jiU5o0yKsRHvm7oQSozK+V2idCeuOjXm8Wrm+8/v/HYDYtgLkPVb HLVnyF1y2e46ll63xSgwIeWSaCzNCxd+8cqpbiVXE5NOSiJkIWH/KBHBHqRs1UzVkXfS5GpG7n5 6YOq5l1NrrIcnOmUkCCvfRzAD0ZpDzZ14yq9b8Fvs+8kJg+qw+QSo4AQmwjh/rhz4lFDgqcXQEe SS7OlQlXyz6CvSIJuOvM/ltU1gpxuavtXb7Jc/BYELU8Iwq3CK56vueTGM+9sLvwZ/DBWa5gGqe S+Mbn5aRt0r60USd2oCLkfAifhSWPSkFtcHjAnN0txsdVcknLMMazwd82f5vZzuBHtfDDnLSOZ1 UQuFa3mWKtonzmyTxJQuBMUnRUgguaXMtvYzcqFttw6mLoZXGVvr/tGOXQroa4F6F5Ie9gc4zgC WGQOaydqAyohQ/w== X-Developer-Key: i=louis.chauvet@bootlin.com; a=openpgp; fpr=8B7104AE9A272D6693F527F2EC1883F55E0B40A5 X-GND-Sasl: louis.chauvet@bootlin.com To allows driver to only use drmm objects, add helper to create drm_writeback_connectors with automated lifetime management. Acked-by: Thomas Zimmermann Signed-off-by: Louis Chauvet Acked-by: Maxime Ripard --- drivers/gpu/drm/drm_writeback.c | 48 +++++++++++++++++++++++++++++++++++++= ++++ include/drm/drm_writeback.h | 6 ++++++ 2 files changed, 54 insertions(+) diff --git a/drivers/gpu/drm/drm_writeback.c b/drivers/gpu/drm/drm_writebac= k.c index b767184289222353489b21416a3329352c3bdfa0..1d0f35ff96396ee6e887ac987d6= 075e122e89b1a 100644 --- a/drivers/gpu/drm/drm_writeback.c +++ b/drivers/gpu/drm/drm_writeback.c @@ -367,6 +367,54 @@ static void drm_writeback_connector_cleanup(struct drm= _device *dev, spin_unlock_irqrestore(&wb_connector->job_lock, flags); } =20 +/** + * drmm_writeback_connector_init - Initialize a writeback connector with + * a custom encoder + * + * @dev: DRM device + * @wb_connector: 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 + * @n_formats: Length of the formats array + * + * This function initialize a writeback connector and register its cleanup. + * + * This function creates the writeback-connector-specific properties if th= ey + * have not been already created, initializes the connector as + * type DRM_MODE_CONNECTOR_WRITEBACK, and correctly initializes the proper= ty + * values. + * + * Returns: 0 on success, or a negative error code + */ +int drmm_writeback_connector_init(struct drm_device *dev, + struct drm_writeback_connector *wb_connector, + const struct drm_connector_funcs *con_funcs, + struct drm_encoder *enc, + const u32 *formats, int n_formats) +{ + struct drm_connector *connector =3D &wb_connector->base; + int ret; + + ret =3D drmm_connector_init(dev, connector, con_funcs, + DRM_MODE_CONNECTOR_WRITEBACK, NULL); + if (ret) + return ret; + + ret =3D __drm_writeback_connector_init(dev, wb_connector, enc, formats, + n_formats); + if (ret) + return ret; + + ret =3D drmm_add_action_or_reset(dev, (void *)drm_writeback_connector_cle= anup, + wb_connector); + if (ret) + return ret; + + return 0; +} +EXPORT_SYMBOL(drmm_writeback_connector_init); + int drm_writeback_set_fb(struct drm_connector_state *conn_state, struct drm_framebuffer *fb) { diff --git a/include/drm/drm_writeback.h b/include/drm/drm_writeback.h index 17e576c80169a820e8d5587b229b2cc2ee369a18..c380a7b8f55a3616fa070c037d5= cc653b0061fe6 100644 --- a/include/drm/drm_writeback.h +++ b/include/drm/drm_writeback.h @@ -161,6 +161,12 @@ int drm_writeback_connector_init_with_encoder(struct d= rm_device *dev, const struct drm_connector_funcs *con_funcs, const u32 *formats, int n_formats); =20 +int drmm_writeback_connector_init(struct drm_device *dev, + struct drm_writeback_connector *wb_connector, + const struct drm_connector_funcs *con_funcs, + struct drm_encoder *enc, + const u32 *formats, int n_formats); + int drm_writeback_set_fb(struct drm_connector_state *conn_state, struct drm_framebuffer *fb); =20 --=20 2.47.1