From patchwork Tue Mar 4 11:10:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14000490 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0D0BFC282D0 for ; Tue, 4 Mar 2025 11:11:33 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 89A7010E593; Tue, 4 Mar 2025 11:11:32 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="uFJRYKrG"; dkim-atps=neutral Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3262F10E58F for ; Tue, 4 Mar 2025 11:11:31 +0000 (UTC) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id CF6D55C5B19; Tue, 4 Mar 2025 11:09:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 02EF4C4CEE5; Tue, 4 Mar 2025 11:11:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741086690; bh=zLb35gCnwj3cDqgAv/299qLDd0Z23b2Wt1wKwdm5r60=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=uFJRYKrGniwCWEm2PjycnmEPlf8epnFn2wF6iTyx0Y9om2TCDgDfyyOpyHyx25zwZ hB1wcslGEEHxHv3fjTGb5c1BksV/MDHTru8D/482amixM1KEOoFgpp6nmVmSfaEOMd 0HRne7rp08vvP9uinbmJ4F7Map36zIQaLQdNIxIEniD5T8QXHu41rai1YoTnmv9F27 8mui9DJqWB7H3QmAZhshRONiPFyNWw5KxnG+6WNgIZLN0bWYLz2FH0oIt+dN1bk3KK ibPq3cYKCmIHPvGPRDB7eGbfQ54jNukZ4JhOk4PkkfTb7009t/y/Mgv05wSZ6zhxZM 850htHPVG3SLA== From: Maxime Ripard Date: Tue, 04 Mar 2025 12:10:53 +0100 Subject: [PATCH v5 10/16] drm/bridge: ti-sn65dsi83: Switch to drm_bridge_helper_reset_crtc MIME-Version: 1.0 Message-Id: <20250304-bridge-connector-v5-10-aacf461d2157@kernel.org> References: <20250304-bridge-connector-v5-0-aacf461d2157@kernel.org> In-Reply-To: <20250304-bridge-connector-v5-0-aacf461d2157@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: Herve Codina , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2488; i=mripard@kernel.org; h=from:subject:message-id; bh=zLb35gCnwj3cDqgAv/299qLDd0Z23b2Wt1wKwdm5r60=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnH7h846DXd5pzWF86ZWemXJTYmmX85ND3kpspn5qov8 4ol7kgkdUxlYRDmZJAVU2R5IhN2enn74ioH+5U/YOawMoEMYeDiFICJVCxhrFO5sXaZl/rWwISQ Xyszgq8xpkQrZtQsYix7KL47jU1sddUVxVKXe/2lAm9CPCepVFi+Zqwz8z3P/33P/rAZbCyN++r KXp/J/VYbr5ZXyfpMkPFJ0LUlAaXf0gQSowXMf2uWz39WMw8A X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Now that we have a helper for bridge drivers to call to reset the output pipeline, let's use it. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- drivers/gpu/drm/bridge/ti-sn65dsi83.c | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c b/drivers/gpu/drm/bridge/ti-sn65dsi83.c index 7122a3ebd88399ed32420fcaf9f1f9384d031d2d..53cc4cfb0c884f6a410e3df2c4df4572f89c0768 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c @@ -38,11 +38,11 @@ #include #include #include #include -#include /* DRM_MODESET_LOCK_ALL_BEGIN() needs drm_drv_uses_atomic_modeset() */ +#include #include #include #include #include @@ -369,11 +369,10 @@ static u8 sn65dsi83_get_dsi_div(struct sn65dsi83 *ctx) return dsi_div - 1; } static int sn65dsi83_reset_pipe(struct sn65dsi83 *sn65dsi83) { - struct drm_device *dev = sn65dsi83->bridge.dev; struct drm_modeset_acquire_ctx ctx; int err; /* * Reset active outputs of the related CRTC. @@ -384,30 +383,25 @@ static int sn65dsi83_reset_pipe(struct sn65dsi83 *sn65dsi83) * bridge. * * Keep the lock during the whole operation to be atomic. */ - DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, err); - - if (!sn65dsi83->bridge.encoder->crtc) { - /* - * No CRTC attached -> No CRTC active outputs to reset - * This can happen when the SN65DSI83 is reset. Simply do - * nothing without returning any errors. - */ - err = 0; - goto end; - } + drm_modeset_acquire_init(&ctx, 0); dev_warn(sn65dsi83->dev, "reset the pipe\n"); - err = drm_atomic_helper_reset_crtc(sn65dsi83->bridge.encoder->crtc, &ctx); +retry: + err = drm_bridge_helper_reset_crtc(&sn65dsi83->bridge, &ctx); + if (err == -EDEADLK) { + drm_modeset_backoff(&ctx); + goto retry; + } -end: - DRM_MODESET_LOCK_ALL_END(dev, ctx, err); + drm_modeset_drop_locks(&ctx); + drm_modeset_acquire_fini(&ctx); - return err; + return 0; } static void sn65dsi83_reset_work(struct work_struct *ws) { struct sn65dsi83 *ctx = container_of(ws, struct sn65dsi83, reset_work);