From nobody Sun Dec 14 21:46:46 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 187EF267F54 for ; Thu, 13 Mar 2025 12:00:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741867252; cv=none; b=DOVA6uZ8IiMI/fGKjCAZ8kEtqxzSnCFaYVu2fXKhlVz74waoEseUE8n9O0+oJsgEpc1sRaE33koCaPFvKCYZHBqME7eCbt1CqHxJ/q8rMN7AEBLzhUpcVoWjVUPhjqX8lW3+OIEWU04QSPUA+8g11XK9KLZNvKf0Caj5d6ISaQY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741867252; c=relaxed/simple; bh=KzJc5TiXnjvtl+zcWu9wp4j+B7/vu4hUfNVTpT0Z+HQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rJi19uibhzjyqyrZ71O4iE6zd+/aOyf9OaSJWyKo7pQACgCuUjOxqsPO0CwX+xnoZSIeWEmFRfJWlJZxAE/pHheQaISQ+jYMU5Vt5aPI+RoTYzyOaSaf1IDTuozV3IkAPLR3L1ITduEdDgfTjSmM0RZFmWFUrtimxtVDH6lJF88= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dySuTXn+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="dySuTXn+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95943C4CEDD; Thu, 13 Mar 2025 12:00:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741867251; bh=KzJc5TiXnjvtl+zcWu9wp4j+B7/vu4hUfNVTpT0Z+HQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=dySuTXn+o7bxUpXsfZBd31gkruJgZ50VLCoiiw+YS74b2sv44+UD8XF3OI9/zeF3N uZzo8XCvLTLeOOgJG2fbwsnHm5VjYfWzHj0z0mA3jdmIH6B8LFf7YGPPq25eyiJnXx C49qQ2Fh6krbnApov6adPmtni9pd1Lipj7xnoBqsxPM+hsasp48pUaF/OTghiE3C/d jIwdEcgvdZ1jSTaZlozeLUhi9tRrtF3rLboOuxNvMmQbJb1OgjE3nHJuyVBnS6CYzk 9ywIQcRGY+xBKE3L//AGf4MpglLbWZGKJe0ZLrmCQyv3QAc76xBXJJxAnfZi0xhRad gojcHUQ4ZXLYA== From: Maxime Ripard Date: Thu, 13 Mar 2025 13:00:08 +0100 Subject: [PATCH v6 14/16] drm/bridge: tc358768: Stop disabling when failing to enable 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: <20250313-bridge-connector-v6-14-511c54a604fb@kernel.org> References: <20250313-bridge-connector-v6-0-511c54a604fb@kernel.org> In-Reply-To: <20250313-bridge-connector-v6-0-511c54a604fb@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=2183; i=mripard@kernel.org; h=from:subject:message-id; bh=KzJc5TiXnjvtl+zcWu9wp4j+B7/vu4hUfNVTpT0Z+HQ=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOmXThxTVrn78U3o9PbJx/RltC44HroYWFg7OXN5wHv99 X2zftsadJSyMIhxMciKKbLECJsviTs163UnG988mDmsTCBDGLg4BWAiu1cxMvS+qj9/a/EkxXyn h4x2Z1VPZbzNfrmZK/1i82depW1zXc8wMhz9ta5tLp+c7MWI4nuL9b4fmqdQ8DFcVd1s5tf409w 83pwA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The tc358768 bridge driver, if enabling it fails, tries to disable it. This is pretty uncommon in bridge drivers, and also stands in the way for further reworks. Worse, since pre_enable and enable aren't expected to fail, disable and post_disable might be called twice: once to handle the failure, and once to actually disable the bridge. Since post_disable uses regulators and clocks, this would lead to enable count imbalances. In order to prevent that imbalance, and to allow further reworks, let's drop the calls to disable and post_disable, but keep the warning to let users know about what's going on. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- drivers/gpu/drm/bridge/tc358768.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc3= 58768.c index 6db18d1e8824dd7d387211d6d1e668645cf88bbe..6b65ba8aed86012bc0f464bd5ee= 44325dae677c6 100644 --- a/drivers/gpu/drm/bridge/tc358768.c +++ b/drivers/gpu/drm/bridge/tc358768.c @@ -1075,15 +1075,12 @@ static void tc358768_bridge_pre_enable(struct drm_b= ridge *bridge) val =3D TC358768_DSI_CONFW_MODE_CLR | TC358768_DSI_CONFW_ADDR_DSI_CONTROL; val |=3D TC358768_DSI_CONTROL_DIS_MODE; /* DSI mode */ tc358768_write(priv, TC358768_DSI_CONFW, val); =20 ret =3D tc358768_clear_error(priv); - if (ret) { + if (ret) dev_err(dev, "Bridge pre_enable failed: %d\n", ret); - tc358768_bridge_disable(bridge); - tc358768_bridge_post_disable(bridge); - } } =20 static void tc358768_bridge_enable(struct drm_bridge *bridge) { struct tc358768_priv *priv =3D bridge_to_tc358768(bridge); @@ -1099,15 +1096,12 @@ static void tc358768_bridge_enable(struct drm_bridg= e *bridge) =20 /* set PP_en */ tc358768_update_bits(priv, TC358768_CONFCTL, BIT(6), BIT(6)); =20 ret =3D tc358768_clear_error(priv); - if (ret) { + if (ret) dev_err(priv->dev, "Bridge enable failed: %d\n", ret); - tc358768_bridge_disable(bridge); - tc358768_bridge_post_disable(bridge); - } } =20 #define MAX_INPUT_SEL_FORMATS 1 =20 static u32 * --=20 2.48.1