From mboxrd@z Thu Jan 1 00:00:00 1970 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 8C6B61DF274 for ; Wed, 15 Jan 2025 21:06:58 +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=1736975218; cv=none; b=aTtjno476zAed3de6s1Uk+L6Z5VpBi6Fq31tpuubaf+CTHqAj3bTHZ43oIuzExLUiNKWP79pq6mlrw3ljyDWISvAojTWyOAdmkFzZSERZoSbvctixbVTGMZqx172UR+j/rl3NMMi85oXNAvvGQ+b/YC5KVLjYkci5aT3Jk1kQiI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736975218; c=relaxed/simple; bh=Lxn7QYHOtKzIJLhVs8S7FYY1s/WdolpaIS+Erde033U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CQqvC4OQK+EccaDG73Hqewwtm7p3PBWD22HdegE8d/vzr95MUEVjVVoNMGctVv6ata9i8o3Z1MxvdTcRDt2FJGqwyrL9qgBedeXHK5OW8pdI1AlgO/VYzrkRb8lOksV9lz1FrrwrdA9Xal8YeK3V+mabsABlfU2ZZd8a0W21XSs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=at8sTwos; 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="at8sTwos" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C1FCCC4CED1; Wed, 15 Jan 2025 21:06:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1736975218; bh=Lxn7QYHOtKzIJLhVs8S7FYY1s/WdolpaIS+Erde033U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=at8sTwosJIi2FuSt/sSqa3ATo3RkilEXLx6KpeoQLYocdRqs5eZF9BAs5mtt+JAUr YEKFAk7h8uLOv+ueNYfxbh4oDvk1sIVciQiP88fWwEd2/i6Bt6Pwf+c9lWqFwhFgZH aBqf4A3RoSbzij5rtF8vWpdKrpDC3iyNBxFiNtjmInIC5yRUr2Us/fIDpyBXOwp+zD FaEOp+yWogKK/HqFWbwf/z4uCk1fzQp7SJHdho1Bs5SgIBt3OAcUFHuAHh1l+pCMjf ptj0MCAqBOgStSZEF1ehicGCELLCVoBrA1QzlIHjWiQJvxl0ldEqqo/xTeruTnIYh2 EIPgNIsK/jWTw== From: Maxime Ripard Date: Wed, 15 Jan 2025 22:05:35 +0100 Subject: [PATCH 28/29] drm/bridge: tc358768: Convert to atomic helpers 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: 7bit Message-Id: <20250115-bridge-connector-v1-28-9a2fecd886a6@kernel.org> References: <20250115-bridge-connector-v1-0-9a2fecd886a6@kernel.org> In-Reply-To: <20250115-bridge-connector-v1-0-9a2fecd886a6@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: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4131; i=mripard@kernel.org; h=from:subject:message-id; bh=Lxn7QYHOtKzIJLhVs8S7FYY1s/WdolpaIS+Erde033U=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOkdyor3Vvziqf56auvONbyNL0u6Kx60id+M8/zv5X5iZ Zwn47yTHVNZGIQ5GWTFFFmeyISdXt6+uMrBfuUPmDmsTCBDGLg4BWAiNucY69Tu7A5csWBuxdSF t0qDxVOsdLWnFay9/kdTjau398nlbT8c0kull60org4JO71UurXSj7G+rqdXPqPBSmj3q3k597O 4zObllx9+doKV1yCUrXfPjN2358nO7BU1aFd+yrSH7dlU7wsA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The tc358768 driver follows the drm_encoder->crtc pointer that is deprecated and shouldn't be used by atomic drivers. This was due to the fact that we did't have any other alternative to retrieve the CRTC pointer. Fortunately, the crtc pointer is now provided in the bridge state, so we can move to atomic callbacks and drop that deprecated pointer usage. Signed-off-by: Maxime Ripard --- drivers/gpu/drm/bridge/tc358768.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc358768.c index ec79b0dd0e2cd6dfbdd8aee54d6a8d9cf8bfb060..043ecfa5f9bac49c30a2fe9f708b5fba9d235bdc 100644 --- a/drivers/gpu/drm/bridge/tc358768.c +++ b/drivers/gpu/drm/bridge/tc358768.c @@ -600,17 +600,29 @@ static void tc358768_bridge_disable(struct drm_bridge *bridge) ret = tc358768_clear_error(priv); if (ret) dev_warn(priv->dev, "Software disable failed: %d\n", ret); } +static void tc358768_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state) +{ + tc358768_bridge_disable(bridge); +} + static void tc358768_bridge_post_disable(struct drm_bridge *bridge) { struct tc358768_priv *priv = bridge_to_tc358768(bridge); tc358768_hw_disable(priv); } +static void tc358768_bridge_atomic_post_disable(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state) +{ + tc358768_bridge_post_disable(bridge); +} + static int tc358768_setup_pll(struct tc358768_priv *priv, const struct drm_display_mode *mode) { u32 fbd, prd, frs; int ret; @@ -680,11 +692,12 @@ static u32 tc358768_dsi_bytes_to_ns(struct tc358768_priv *priv, u32 val) u64 n = priv->dsiclk / 4 * priv->dsi_lanes; return (u32)div_u64(m, n); } -static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) +static void tc358768_bridge_atomic_pre_enable(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state) { struct tc358768_priv *priv = bridge_to_tc358768(bridge); struct mipi_dsi_device *dsi_dev = priv->output.dev; unsigned long mode_flags = dsi_dev->mode_flags; u32 val, val2, lptxcnt, hact, data_type; @@ -717,11 +730,11 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) dev_err(dev, "Software reset failed: %d\n", ret); tc358768_hw_disable(priv); return; } - mode = &bridge->encoder->crtc->state->adjusted_mode; + mode = &bridge_state->crtc->state->adjusted_mode; ret = tc358768_setup_pll(priv, mode); if (ret) { dev_err(dev, "PLL setup failed: %d\n", ret); tc358768_hw_disable(priv); return; @@ -1081,11 +1094,12 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) tc358768_bridge_disable(bridge); tc358768_bridge_post_disable(bridge); } } -static void tc358768_bridge_enable(struct drm_bridge *bridge) +static void tc358768_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state) { struct tc358768_priv *priv = bridge_to_tc358768(bridge); int ret; if (!priv->enabled) { @@ -1164,14 +1178,14 @@ static bool tc358768_mode_fixup(struct drm_bridge *bridge, static const struct drm_bridge_funcs tc358768_bridge_funcs = { .attach = tc358768_bridge_attach, .mode_valid = tc358768_bridge_mode_valid, .mode_fixup = tc358768_mode_fixup, - .pre_enable = tc358768_bridge_pre_enable, - .enable = tc358768_bridge_enable, - .disable = tc358768_bridge_disable, - .post_disable = tc358768_bridge_post_disable, + .atomic_pre_enable = tc358768_bridge_atomic_pre_enable, + .atomic_enable = tc358768_bridge_atomic_enable, + .atomic_disable = tc358768_bridge_atomic_disable, + .atomic_post_disable = tc358768_bridge_atomic_post_disable, .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state, .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state, .atomic_reset = drm_atomic_helper_bridge_reset, .atomic_get_input_bus_fmts = tc358768_atomic_get_input_bus_fmts, -- 2.47.1