From nobody Mon Feb 9 18:50:24 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C9680219A9E for ; Mon, 17 Feb 2025 11:53:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739793209; cv=none; b=KYZZBajdGakR/kupgVOCM5XlWXTO2skplEc20Wpm1yfF0e+22PU1WL87i/tp3wwxo0GRuDK9VtugYuB9xuP6ZT3ujCmHUDRFOueaMrnR5jGEMbUnvZ9rplHRFdqI9fXpuYAkenDRd1UUyqnpo1wVv98Py7VUIpe3fQiy+8pwk34= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739793209; c=relaxed/simple; bh=VSoo9tOfvx5J/rILKbc9JGnlfjdESe0PpUUegqGlGK4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CS2bYAMgDiWfb1ut5pI3JBYDaY+uED8dMgbu4Fyax0pS6M9BAhG3obN1DdGihN3m1IPVdT6GJb0ErDmakovSk+KtyTPFOo3DkJGTwLjUt81Ztu5VHRZO6RAyAdQjQyG3pK4J8fn3IGhaRXbSmI/NzQWB7qAxurdcr/rqV9xB7F4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=FytocBdT; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="FytocBdT" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-43979038df6so1045135e9.2 for ; Mon, 17 Feb 2025 03:53:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739793206; x=1740398006; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=tgWx1O98lxWOuf2pUGZf2+wF+nxvuU7wTS9vVKBBrYU=; b=FytocBdTFxRXmIqdRGA8J6M9BWC1UA596R5uVN/V0d6xPBZo5uuRvzSgR9+X1o2E9p z/Eqg4TqLlNoLaf0Hnv8qVwG0G7+8SNBJM/qUDqKZeRkyEbtZmT1+rZmQETK5FyGFG1X Xflzt0nH5RsBwO35CFYJMxLiD35kocSMexwxDrs575RWKrEpEdttxzYGfdRGhV9fhsSb Zxum7VFoi9/lQ+UCTPJDFbgP9YIVtkI4Z6Ly7HVz/23InnFlmv/Q4Ce3bk5qa78zPNbC SZv2GdSixbokkwQff9bgR33Faqv7VcBrPYbeqWoXHGLzOpqAUFa/PSznHgu+4E1gFMkU txwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739793206; x=1740398006; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tgWx1O98lxWOuf2pUGZf2+wF+nxvuU7wTS9vVKBBrYU=; b=D3DsHqFDGGyHtxm+ZinkAFgu5NyV2/qUkxWcm024H6cH06sPLxZHwIR/l+UoYK9wlR NVjm0rMydNLTTZvmw1IfUZm3vfBykrFvFMFGwOgQ5OSFr8emAETvMvLz5fVUNlfZJbXs GSzvt9gceSgmMoXvR5ON76mvBCO8p+2PxXM3TsnqMzszVdi08iSLkwZQq+JiCvdKNOyi Hz7eRdBshIYcFsmWvHrRIw9/p0eRCwhHatGMDRyYfaLDWqoQLvHqIkWG1jAkf7dw4dXo G5fSeTW+0Hd77G/UiUP+8tVmmB0BY8KVrj+RgMMto6Sdq6FzZ/pEbMKAWapWfvjlLh2d dx2Q== X-Forwarded-Encrypted: i=1; AJvYcCX/7uyBLYRb+mV7/M5VtgGYdZUx/3Ms0GX1+mYYsW8TiO7S61mHSP/+2iAhsMjSqw/IScomYCsSitBncL0=@vger.kernel.org X-Gm-Message-State: AOJu0YzzJS5Ca15mqExSTFpawGhdHdG0RCenPASGFTso6eflicErw5wd tQMvFC+9gOJRsF5iNWgupOM8L2Ts73s03NvtUNj6DCRLBiLpSbAtKtJ964ZRcJ4= X-Gm-Gg: ASbGncub1OP8d7U6nE5hcHy6E63N0Fq8+EvlDwq2QtYzSlYnWwg1qWOvhqtYoAQCeWf LKe2uVTbGWYj5XbNFTFLqEXbfnErQcjRjPCi7EFjTDFz+Ubo0BRoFs/zEquJQHPqujRdsMGV9Q0 TIHVWnp5zChIei7dGomnfXFwh5Igl5MQ2pXepcUZS9stIRnm7rag5GzRxrfEtee+Dy53+LERfAu Uxi1H8OodUf2OeFFuK8UnDtcD9DKzKXOOpNjnUPBbe9X4fnQoTyySqBSuYLLpYf9+SakiTEaJXB Fzzg6SDwj5xaQQoAh1RDKisnWLfEw3Y= X-Google-Smtp-Source: AGHT+IENBpGOOCFfXQ2oU+u0lvPVoTf/HoOUkdK7JIiHIZbTU/t9CaTNX3kn8py3uSDeAAwKZRr4DQ== X-Received: by 2002:a05:600c:154d:b0:439:6103:d2de with SMTP id 5b1f17b1804b1-4396e78e432mr36085435e9.7.1739793206047; Mon, 17 Feb 2025 03:53:26 -0800 (PST) Received: from [127.0.1.1] ([178.197.206.225]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4395a1b8397sm150212575e9.36.2025.02.17.03.53.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2025 03:53:25 -0800 (PST) From: Krzysztof Kozlowski Date: Mon, 17 Feb 2025 12:53:14 +0100 Subject: [PATCH v4 1/4] drm/msm/dsi/phy: Protect PHY_CMN_CLK_CFG0 updated from driver side 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: <20250217-drm-msm-phy-pll-cfg-reg-v4-1-106b0d1df51e@linaro.org> References: <20250217-drm-msm-phy-pll-cfg-reg-v4-0-106b0d1df51e@linaro.org> In-Reply-To: <20250217-drm-msm-phy-pll-cfg-reg-v4-0-106b0d1df51e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jonathan Marek Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Rob Clark , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3488; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=VSoo9tOfvx5J/rILKbc9JGnlfjdESe0PpUUegqGlGK4=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnsyMuKJttLyTWP9K0UPqf4QMjwl4tteEV/CcIb UADWxj71/2JAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ7MjLgAKCRDBN2bmhouD 11xLD/9x4qurO23zU/hodHy295lsiPZHU24L4380Y9aoU1JpwtPWdySzx5OkgyZP/e5qdO5zccs H8tRCcPP8KP+gBceRgwAYKv5dZ1GseSMvfPCL17nIcns1QC3LseIXD8VzW+sT84r10gPPWg9sT+ wT9fTJK99166K8b3RBCz2DCKX3/Wp7b2vWSeumk86EsGV/rovQm+xLzjwUBwCQZu7vUZJlsId47 bxooued62Jd03oXxlKmHp4OdwSLg0/JWDGtcleuw9UAuL3oOsjo0W6jJraImo0wH/V4YxPg+DB7 BpXlRNBlzjzQylj4hpfyyxnpogDEuJK2HBGkhJQdKtdmfdj80N/4wJ0h1K98BCBu5oCqfrJakl3 9jvcmV3mnea2/MCifQErjHX2RTQEB7j7RuntOn8zFVCb0atFBZAumvQBLZFL7ZsHS5HoEmkEExx UDYTOAaY/Upy4QkptQ/l2csvmQ93z3xpDtoFxJGemPmEnQs0NhbrcCNZB6ZbbiFo/dIdWAk29pY 4pIhpqM3OjpRnezrG/ai0E6uKOpUOC0SpwWGIELKt9/6E0NMCiOcnL+v2k3UWpoB0H3+sy2snlN gmrAyN+ITOKbEbVBddWqVCcFXlphEfhoR8f2uAm29x9NE2j6BXqjmnLRjC+WeqlvSHZZGP2sQEe Lo1anelF8vcMvXQ== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B PHY_CMN_CLK_CFG0 register is updated by the PHY driver and by two divider clocks from Common Clock Framework: devm_clk_hw_register_divider_parent_hw(). Concurrent access by the clocks side is protected with spinlock, however driver's side in restoring state is not. Restoring state is called from msm_dsi_phy_enable(), so there could be a path leading to concurrent and conflicting updates with clock framework. Add missing lock usage on the PHY driver side, encapsulated in its own function so the code will be still readable. While shuffling the code, define and use PHY_CMN_CLK_CFG0 bitfields to make the code more readable and obvious. Fixes: 1ef7c99d145c ("drm/msm/dsi: add support for 7nm DSI PHY/PLL") Reviewed-by: Dmitry Baryshkov Reviewed-by: Abhinav Kumar Signed-off-by: Krzysztof Kozlowski --- Changes in v3: 1. Define bitfields (move here parts from patch #4) --- drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c | 14 ++++++++++++-- drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml | 5 ++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c b/drivers/gpu/drm/ms= m/dsi/phy/dsi_phy_7nm.c index 031446c87daec0af3f81df324158311f5a80014e..25ca649de717eaeec603c520bba= a603ece244d3c 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c @@ -372,6 +372,15 @@ static void dsi_pll_enable_pll_bias(struct dsi_pll_7nm= *pll) ndelay(250); } =20 +static void dsi_pll_cmn_clk_cfg0_write(struct dsi_pll_7nm *pll, u32 val) +{ + unsigned long flags; + + spin_lock_irqsave(&pll->postdiv_lock, flags); + writel(val, pll->phy->base + REG_DSI_7nm_PHY_CMN_CLK_CFG0); + spin_unlock_irqrestore(&pll->postdiv_lock, flags); +} + static void dsi_pll_disable_global_clk(struct dsi_pll_7nm *pll) { u32 data; @@ -574,8 +583,9 @@ static int dsi_7nm_pll_restore_state(struct msm_dsi_phy= *phy) val |=3D cached->pll_out_div; writel(val, pll_7nm->phy->pll_base + REG_DSI_7nm_PHY_PLL_PLL_OUTDIV_RATE); =20 - writel(cached->bit_clk_div | (cached->pix_clk_div << 4), - phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG0); + dsi_pll_cmn_clk_cfg0_write(pll_7nm, + DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_3_0(cached->bit_clk_div) | + DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_7_4(cached->pix_clk_div)); =20 val =3D readl(phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); val &=3D ~0x3; diff --git a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml b/driver= s/gpu/drm/msm/registers/display/dsi_phy_7nm.xml index d54b72f924493b4bf0925c287366f7b1e18eb46b..e0bf6e016b4ce5b35f73fce7b8e= 371456b88e3ac 100644 --- a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml +++ b/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml @@ -9,7 +9,10 @@ xsi:schemaLocation=3D"https://gitlab.freedesktop.org/freed= reno/ rules-fd.xsd"> - + + + + --=20 2.43.0 From nobody Mon Feb 9 18:50:24 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4FE6C21A437 for ; Mon, 17 Feb 2025 11:53:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739793211; cv=none; b=oli0NMKEjeYIdJUbybgDOLGowoCj5ygNFzVl0wYp/E4RTXpVjpB0JrTMeb7V363uEJAKYD2ygqRdoHkpnX76fltPFrT/yIe9lyXLYVmKNj5SlcQcLWMauQvESNU8V0uvhu6lH8mntMBiXMpAmk4au1jcHxx3MoAkiJO2/l0T9DY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739793211; c=relaxed/simple; bh=JDa2rufW4GrwAH1og6yrejuXIhY3lQbcXiG2vjBVULk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=reG5teJggMy2RrV0qdloP9IMAHkp+VcGxMlry/iJPtO8AxZYRsZe83HrHsKZqoUDgsV3KR/s6ii45IeIPBf+4KKZvgRDu48sZFC9+5DXv28dr2U9uCbdqJ5cB9RO5NFiucdo+94ycrMmr2x8J9auuvSilSZrwHbDVn3abNAlD9E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=VMSGBqkj; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="VMSGBqkj" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4394944f161so3073695e9.3 for ; Mon, 17 Feb 2025 03:53:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739793207; x=1740398007; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rWmUpWyrE1eFyVx0zffSJlvaDmfJ0SMAFHZs9MJfKYI=; b=VMSGBqkjQopMSqf5+aWIiWZTaljZ4C36+b9zcw8jfB7hhaG59+oUH9Uhpz/GzYI165 f+oiE+wNMfUfOUYV18OkDelt2GBzxGA4CUlS1OPPKACqoo3hrp9TqVBRcE+UW7j6e5Rf 7D9KJ3wf9sJLjONy04pohzvV2LhEsMcq9RBm0Sqw/7uIZ3BiP/jFFxXblCoEHwF9dtvO Ps411HrKxOh72nHzyyGEfZuZln2amL21Xge2BQCuxlvD7zRkevH3GgA0eePFG0L1vGPz ky9Rp3sSns9QUbIpbfHR1rpmIRUFpHs48Yfr7qmUR8yJkuZVfejQ0k/qMZNQ+kluFpMP ZPJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739793207; x=1740398007; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rWmUpWyrE1eFyVx0zffSJlvaDmfJ0SMAFHZs9MJfKYI=; b=RnWKAownIuen3nrvkp5MZOG4QjRdnCS5g/7IDtdV2MRH8T9GO+SUDjoPqazzMKtwFH bzTi1AXi00+FBg8LOQxvQBCZeob2Ke8po9Gde7LLXuO/Dw1Zd3fhdB2gAbiW4fgkkv4W BydpMK3r4YMUQGaIrrU8KerUGtO4bXnGOvnBRc0OqSPlLvTjxS+7zrhr4KMj569MOYDT Jn5UCcPZnASeBXyd6YUONS+wyt/MchClFcJwhFybWOze2qlELp2h4eDwqEhU0Or+aotz xzc/N+uLBaUKfbhbYE1koCi98AMSbhhvIA2guEy+TRwd14TGbkKOAAKh9/ozLqV3e5C8 Wr9w== X-Forwarded-Encrypted: i=1; AJvYcCVUeVcoY85eti/DdACt35HDDuQsJ9/FdCNn9dzqrLD3zakx+u5Dt60MtvzCntYXE7n75Y7NbJlABmHdSUA=@vger.kernel.org X-Gm-Message-State: AOJu0YznEWHWhqGg30w2zl6Zbx4V7nbATiCVp/uB+Y/FEd9gBaRV9NNj HzQpfFd1vJg0MN9eTSfXuUyJYHtF2iLA18WKPaq+vWY0l4fe7Wisu0yghxrXovY= X-Gm-Gg: ASbGncvXPZya5w4PCfrs3ko+n7He1z20vHE1iAnH1ysXQv7oP7S3JNOFgT0GYUsndEJ 2jWw+xVaslB8sEgLYasEv3unw1QLy/ygf+rFpPK5dYMeSxOZnyh35qs3b4AUdONKucXAkvWzDT4 fF6CFww8emqyZLhsLV1BrWjTQul0N6S9HV0pAkH5Xs43ONYFGF4BNm45x/DFQNJ2k5EtkNZmFQG jMDENNY8JwYVNv/27Om9kmM2B/JarOHf118LIdb9PdzTTKGp8yGHKf+/BvLhMnvwEI+EthpEwtE iVuL3OwVOfCVt3rnwLePJuuL+q9cIcM= X-Google-Smtp-Source: AGHT+IEpqJgGoiNouVEBinoSlxzWDrCXnZfB8FaV8pAohFqj/o2Rl50/1emoQ/bdbrtDxEfbHaNIPQ== X-Received: by 2002:a05:600c:4611:b0:439:8c80:6af3 with SMTP id 5b1f17b1804b1-4398c806dcamr4218225e9.8.1739793207551; Mon, 17 Feb 2025 03:53:27 -0800 (PST) Received: from [127.0.1.1] ([178.197.206.225]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4395a1b8397sm150212575e9.36.2025.02.17.03.53.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2025 03:53:27 -0800 (PST) From: Krzysztof Kozlowski Date: Mon, 17 Feb 2025 12:53:15 +0100 Subject: [PATCH v4 2/4] drm/msm/dsi/phy: Protect PHY_CMN_CLK_CFG1 against clock driver 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: <20250217-drm-msm-phy-pll-cfg-reg-v4-2-106b0d1df51e@linaro.org> References: <20250217-drm-msm-phy-pll-cfg-reg-v4-0-106b0d1df51e@linaro.org> In-Reply-To: <20250217-drm-msm-phy-pll-cfg-reg-v4-0-106b0d1df51e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jonathan Marek Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Rob Clark , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5441; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=JDa2rufW4GrwAH1og6yrejuXIhY3lQbcXiG2vjBVULk=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnsyMvKhzTG7p5hIu1DyXtjncScjmy2NVL7bNxB dCbQx/Xs1iJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ7MjLwAKCRDBN2bmhouD 1w1mD/4+hN+MoWY8h+0Oz8p1Zy+XrCbiPsqhtlTwRDDxZ6r561qTxlUcb+kG4Z6Dqz0U696Bcop CJTTqbNxGKIW2OeWCpOadGSJT4qDrBbsiFocY1oeWKSG1C6b4q4hW6uii63NRhb3aD8J5Of/dGH LeXNS6rNnK8VIJyEenFvM7h67CULUfQbRnNqNc5iQ+CN7NsASC08j/4yquoholWmb6ao4ckqao1 lxrX3muDfxCFAt5p50j5Zr9z6b/wn88Yf9jgtrineIz2wsOpmcAVmIFVSpK6/1NyLv2rbNyCvKp CmOc2EXGFQ/zhN0wQ7+V75TefYs9Rbvzt7OAppYksGqb4lZzzKeCTNatHJ6ARpkvvwPOtUM1rpG nkTlcCUkMx7JOFNfBrhFsVQKkakoZ9OEdiJOF0ldR2/McKm8QevkVC2A0cIdZWNImz9cVIT5GqM KugKstXy+4xyZ7BOlPXTGvtZhw+97425GFk24pKFA+oWB69RnXuX4npp1cLGlgZKCw311ApPU1H u7o9gGv5UPC3waR1TlZ/RNTWYY/vf+NJRBPLBbv3/hRkZG1IZq3bFrpUXVKmTpdzAy2Aml9zkQw 0LY1tQLxefSOsFuPMkPL91hL6DZnKWY21jgR710hSdVoDQwcXjfsRoiHb5Xxj5T/XTcmrIIIZEd wTezgW5/isw+Umw== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B PHY_CMN_CLK_CFG1 register is updated by the PHY driver and by a mux clock from Common Clock Framework: devm_clk_hw_register_mux_parent_hws(). There could be a path leading to concurrent and conflicting updates between PHY driver and clock framework, e.g. changing the mux and enabling PLL clocks. Add dedicated spinlock to be sure all PHY_CMN_CLK_CFG1 updates are synchronized. While shuffling the code, define and use PHY_CMN_CLK_CFG1 bitfields to make the code more readable and obvious. Fixes: 1ef7c99d145c ("drm/msm/dsi: add support for 7nm DSI PHY/PLL") Reviewed-by: Dmitry Baryshkov Reviewed-by: Abhinav Kumar Signed-off-by: Krzysztof Kozlowski --- Changes in v3: 1. Define bitfields (move here parts from patch #4) Changes in v2: 1. Store BIT(4) and BIT(5) in local var in dsi_pll_enable_global_clk() --- drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c | 35 ++++++++++++++----= ---- .../gpu/drm/msm/registers/display/dsi_phy_7nm.xml | 5 +++- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c b/drivers/gpu/drm/ms= m/dsi/phy/dsi_phy_7nm.c index 25ca649de717eaeec603c520bbaa603ece244d3c..388017db45d802c4ef1299296f9= 32c4182512aae 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c @@ -83,6 +83,9 @@ struct dsi_pll_7nm { /* protects REG_DSI_7nm_PHY_CMN_CLK_CFG0 register */ spinlock_t postdiv_lock; =20 + /* protects REG_DSI_7nm_PHY_CMN_CLK_CFG1 register */ + spinlock_t pclk_mux_lock; + struct pll_7nm_cached_state cached_state; =20 struct dsi_pll_7nm *slave; @@ -381,22 +384,32 @@ static void dsi_pll_cmn_clk_cfg0_write(struct dsi_pll= _7nm *pll, u32 val) spin_unlock_irqrestore(&pll->postdiv_lock, flags); } =20 -static void dsi_pll_disable_global_clk(struct dsi_pll_7nm *pll) +static void dsi_pll_cmn_clk_cfg1_update(struct dsi_pll_7nm *pll, u32 mask, + u32 val) { + unsigned long flags; u32 data; =20 + spin_lock_irqsave(&pll->pclk_mux_lock, flags); data =3D readl(pll->phy->base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); - writel(data & ~BIT(5), pll->phy->base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); + data &=3D ~mask; + data |=3D val & mask; + + writel(data, pll->phy->base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); + spin_unlock_irqrestore(&pll->pclk_mux_lock, flags); +} + +static void dsi_pll_disable_global_clk(struct dsi_pll_7nm *pll) +{ + dsi_pll_cmn_clk_cfg1_update(pll, DSI_7nm_PHY_CMN_CLK_CFG1_CLK_EN, 0); } =20 static void dsi_pll_enable_global_clk(struct dsi_pll_7nm *pll) { - u32 data; + u32 cfg_1 =3D DSI_7nm_PHY_CMN_CLK_CFG1_CLK_EN | DSI_7nm_PHY_CMN_CLK_CFG1_= CLK_EN_SEL; =20 writel(0x04, pll->phy->base + REG_DSI_7nm_PHY_CMN_CTRL_3); - - data =3D readl(pll->phy->base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); - writel(data | BIT(5) | BIT(4), pll->phy->base + REG_DSI_7nm_PHY_CMN_CLK_C= FG1); + dsi_pll_cmn_clk_cfg1_update(pll, cfg_1, cfg_1); } =20 static void dsi_pll_phy_dig_reset(struct dsi_pll_7nm *pll) @@ -574,7 +587,6 @@ static int dsi_7nm_pll_restore_state(struct msm_dsi_phy= *phy) { struct dsi_pll_7nm *pll_7nm =3D to_pll_7nm(phy->vco_hw); struct pll_7nm_cached_state *cached =3D &pll_7nm->cached_state; - void __iomem *phy_base =3D pll_7nm->phy->base; u32 val; int ret; =20 @@ -586,11 +598,7 @@ static int dsi_7nm_pll_restore_state(struct msm_dsi_ph= y *phy) dsi_pll_cmn_clk_cfg0_write(pll_7nm, DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_3_0(cached->bit_clk_div) | DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_7_4(cached->pix_clk_div)); - - val =3D readl(phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); - val &=3D ~0x3; - val |=3D cached->pll_mux; - writel(val, phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); + dsi_pll_cmn_clk_cfg1_update(pll_7nm, 0x3, cached->pll_mux); =20 ret =3D dsi_pll_7nm_vco_set_rate(phy->vco_hw, pll_7nm->vco_current_rate, @@ -743,7 +751,7 @@ static int pll_7nm_register(struct dsi_pll_7nm *pll_7nm= , struct clk_hw **provide pll_by_2_bit, }), 2, 0, pll_7nm->phy->base + REG_DSI_7nm_PHY_CMN_CLK_CFG1, - 0, 1, 0, NULL); + 0, 1, 0, &pll_7nm->pclk_mux_lock); if (IS_ERR(hw)) { ret =3D PTR_ERR(hw); goto fail; @@ -788,6 +796,7 @@ static int dsi_pll_7nm_init(struct msm_dsi_phy *phy) pll_7nm_list[phy->id] =3D pll_7nm; =20 spin_lock_init(&pll_7nm->postdiv_lock); + spin_lock_init(&pll_7nm->pclk_mux_lock); =20 pll_7nm->phy =3D phy; =20 diff --git a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml b/driver= s/gpu/drm/msm/registers/display/dsi_phy_7nm.xml index e0bf6e016b4ce5b35f73fce7b8e371456b88e3ac..cfaf78c028b1325682889a5c2d8= fffd0268122cf 100644 --- a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml +++ b/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml @@ -13,7 +13,10 @@ xsi:schemaLocation=3D"https://gitlab.freedesktop.org/fre= edreno/ rules-fd.xsd"> - + + + + --=20 2.43.0 From nobody Mon Feb 9 18:50:24 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ADE8321A45A for ; Mon, 17 Feb 2025 11:53:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739793212; cv=none; b=Iyu6doLHRX68sZpOVp1oIewixY3ZXdFqwdQMANNH1FUrgI3S00hoR1DlAMiUhRWwxtyE1Cd06G2UqtCXoQkYSfB6p3wr/nM65c3ZFM732bxRujw8mdOTAlDmd5opfq/UZeTEmgiRsZb8XURA/N+cVzyAXfP0rVNkZKGQeazxTi4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739793212; c=relaxed/simple; bh=cMgwWGUQiMQhE6DDyTTBwdxL692z4kYW1HPAGgpjM8I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k3Ou47NwwLiM8WTMtZ8CpO/S5RnG4FTHsx6/5ogqFnmnIsPyUsmSFrY5wcTgmQ/KkNgHAMyo8+Zw92JRPcPOHvymBaIbU65jDkmbgRhirtV+7ABmVPOhfXuquFffGFD0B/tywja0EMqjeWxZh8Ye4BwZWDQ0zpKa/7zJziNFQiE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=nGxM+bG7; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="nGxM+bG7" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4397185cfa9so622935e9.2 for ; Mon, 17 Feb 2025 03:53:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739793209; x=1740398009; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=hjG3Ku4LdCaIMwepghOAchlIqKd0EIigG675oG9WLrc=; b=nGxM+bG73ckge5HUeZ/P6FoF6Dem0rUcsIzWbyKfzfsAy77aTupxkUOceZ0bBwANlN YsoZqhMc5C2vasHEYMnLyUDuWo17J+wLK7XnS3LbdQuxs1jakxkN+Hb0j6Ayv0+fyhTE tQLf9OUgjaisYirlglsF/fvT8mQHGNumSV6o7Z9i/DjLex7AGEXhj/s+tPTZGiT6tA/N hHUi21Ej5annHVdgbo4WA+hJp5ysYGqi3hocgCyMlSoU8KYGsvhOqwAGzroFkoIgUi84 kFca+g3s2CgcIDOgne+bypJn3fKfOoFM9sfl6Ai2XFTyNWuBbNZhMHWcQabyPi9qgwRC ydFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739793209; x=1740398009; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hjG3Ku4LdCaIMwepghOAchlIqKd0EIigG675oG9WLrc=; b=dwLY5Ogd0tv8oATI/PeDBYRNHLTQCY4007lzhBKUJmu4y26JM0PA2YjTq6r0WBSUKS MCX1g4zlbIAvy+LfBNm4DgdTdWf34+1/Ki8W1/NVNFbqukCGC1pNaziXqeVV2dlV1ESC riXvQUBmZ7LDCr3QO9Tk323ce071PplmRGiNa03+v9G+z02piqGN+XJ+GB2iymRF0WyT PJ/hC14rvzMxTntdEGdwrr19FkEOdues59b9yU1cc6miDgCryJcyaxWpvLAnBtNAKNNp ABPb2NnPEqfaPwVRTdPXP839upeCttuDU5oNzfNPGODbMeX/2ljvOwmruMIm7Zy8hOBg 0+Lg== X-Forwarded-Encrypted: i=1; AJvYcCWlJYbshC53WiH+hTfpwzc6ywSFgfvH/mXVcHcdslPOm8D/aT4+4u6lpspS9hfXjC1GU8SePhfq51qAftE=@vger.kernel.org X-Gm-Message-State: AOJu0YwQw8E/M/IMRVCViBMgiCWW1BVzycnrBDlPdQ/G3hfMGDL3V52x me2MUGk9F/it5LzjjW4Nj5ba0VXgTxBDFrWGP4pb/qZTA4TOKz3XkdQzu+T5mds= X-Gm-Gg: ASbGnct2OwKrrXdPiEBtIvSSRwGJWmtt0OAjtl1qZt8JpnISVXkxQDWU9w7x+1kCSsx TzYPUrV4i6lZnwBjA4HEG5M80ENotP87D5Ru7tus/t0aXCTFb6bd0yO3bOClhONQ8DhIbHqkuZk /FDqW0q4YnUVITr7LENnVtmbMwKszzhageS8hszeumrIQWCTXBZjrVNzkLeD2iSSWh92Hq/12mG vpn/ioBSe6lakYnZ6sjxkAS+QBACP7NOy/Q5k7mBAteyBehyKbX6h9VBk9Eug/BF/Eyd+iASZbN R8NAq5xOxgrDVy+B0ZNnj44cmd4SVI4= X-Google-Smtp-Source: AGHT+IGCd23PgjMv6+NwPn2SnlycPmlxTO7A7R1Yt8hyOG8pqhgRXI6SsHsJrv0uj9+65L4ln5dvmA== X-Received: by 2002:a05:600c:1c84:b0:439:8c80:6aee with SMTP id 5b1f17b1804b1-4398c806c54mr3587435e9.4.1739793208873; Mon, 17 Feb 2025 03:53:28 -0800 (PST) Received: from [127.0.1.1] ([178.197.206.225]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4395a1b8397sm150212575e9.36.2025.02.17.03.53.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2025 03:53:28 -0800 (PST) From: Krzysztof Kozlowski Date: Mon, 17 Feb 2025 12:53:16 +0100 Subject: [PATCH v4 3/4] drm/msm/dsi/phy: Do not overwite PHY_CMN_CLK_CFG1 when choosing bitclk source 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: <20250217-drm-msm-phy-pll-cfg-reg-v4-3-106b0d1df51e@linaro.org> References: <20250217-drm-msm-phy-pll-cfg-reg-v4-0-106b0d1df51e@linaro.org> In-Reply-To: <20250217-drm-msm-phy-pll-cfg-reg-v4-0-106b0d1df51e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jonathan Marek Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Rob Clark , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2707; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=cMgwWGUQiMQhE6DDyTTBwdxL692z4kYW1HPAGgpjM8I=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnsyMwmW8N/wWnJUe63RdHqlkXLabaoe3us7+9F W18wvNn3WiJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ7MjMAAKCRDBN2bmhouD 11VZD/9TfKW1EzYYS82ibwofKiQ/x2ymfpqm54bQmJkcevXw1P8/nnlYtgGxgMlrkpHePMQ8nur gSOaafs1WOQHkXEy1r7cyhg7SZoZfN2+le13cheLS9XvhGH4CiYyDQSemvoFK40j36DKOIw8AwZ vzK8kYynKIrSWUae6CAFNZYC0BQCo7gZSwC69En9lD393lR9ebR0DeMMjpXkS9FFigA8AvjF9TN 6DdhNHQ8B8C9ronXrt5RsxHsiP3hp8h6tfkUCUAKWZaVHU6q4exvLoBir9jc+wUW+6OlWFO11wX UDH7mopLEK9gkZ+iih8TGSQ+/XMHNbViO7/NX7GvGPVr/sWhTLLUWTMss+zfd3qdZ70M2T9UGFG FkNva0yKB0aOXAr6ixhvXCcMKMBdcriy5eC5LkwFmv8fYnNORxJt+lF1QqT+APbH1KIo6EJH1R9 seTfXKJkEORbvLPzXsvqzT2xT1OWXn1ldNVfW+M2uuKXSNsIyhIwa17OlfmRG2SL1VD4WRXRjpM SzOu2EZ79y1qP2wYcRecljM8FoLdqyKYHtltrE34l7T/lsqXSJOPTR/k4vdD34iDAiQ8h9iCS2W L3fyHIjhEO0b21XrDXXHE+2woTggARx2to0P7OMTPNzp4RL4CqMMYuCTvNOPzQqiqMNu+UijqIA sDvEMK9O5ulFqmw== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B PHY_CMN_CLK_CFG1 register has four fields being used in the driver: DSI clock divider, source of bitclk and two for enabling the DSI PHY PLL clocks. dsi_7nm_set_usecase() sets only the source of bitclk, so should leave all other bits untouched. Use newly introduced dsi_pll_cmn_clk_cfg1_update() to update respective bits without overwriting the rest. While shuffling the code, define and use PHY_CMN_CLK_CFG1 bitfields to make the code more readable and obvious. Fixes: 1ef7c99d145c ("drm/msm/dsi: add support for 7nm DSI PHY/PLL") Reviewed-by: Dmitry Baryshkov Reviewed-by: Abhinav Kumar Signed-off-by: Krzysztof Kozlowski --- Changes in v3: 1. Define bitfields (move here parts from patch #4) --- drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c | 4 ++-- drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c b/drivers/gpu/drm/ms= m/dsi/phy/dsi_phy_7nm.c index 388017db45d802c4ef1299296f932c4182512aae..798168180c1ab6c96ec2384f854= 302720cb27932 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c @@ -617,7 +617,6 @@ static int dsi_7nm_pll_restore_state(struct msm_dsi_phy= *phy) static int dsi_7nm_set_usecase(struct msm_dsi_phy *phy) { struct dsi_pll_7nm *pll_7nm =3D to_pll_7nm(phy->vco_hw); - void __iomem *base =3D phy->base; u32 data =3D 0x0; /* internal PLL */ =20 DBG("DSI PLL%d", pll_7nm->phy->id); @@ -636,7 +635,8 @@ static int dsi_7nm_set_usecase(struct msm_dsi_phy *phy) } =20 /* set PLL src */ - writel(data << 2, base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); + dsi_pll_cmn_clk_cfg1_update(pll_7nm, DSI_7nm_PHY_CMN_CLK_CFG1_BITCLK_SEL_= _MASK, + DSI_7nm_PHY_CMN_CLK_CFG1_BITCLK_SEL(data)); =20 return 0; } diff --git a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml b/driver= s/gpu/drm/msm/registers/display/dsi_phy_7nm.xml index cfaf78c028b1325682889a5c2d8fffd0268122cf..35f7f40e405b7dd9687725eae75= 4522a7136725e 100644 --- a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml +++ b/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml @@ -16,6 +16,7 @@ xsi:schemaLocation=3D"https://gitlab.freedesktop.org/free= dreno/ rules-fd.xsd"> + --=20 2.43.0 From nobody Mon Feb 9 18:50:24 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C13C21883E for ; Mon, 17 Feb 2025 11:53:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739793214; cv=none; b=iju4zgmZ6mf4WIBWYUg9nUyNB/OhaFvqlAVrYqPXmW2luC6a7Ucooo8yrkZ/rUPI+CPZmsYfEWoDoxNIl++sp1+qpqrT/focbueSs1XBdkzI9SfbC8CwyAHW1PaSOjZ0DCBzjZnkTLzjET4e3ojAHmsoffFyGHTO1SmkjlH5uEE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739793214; c=relaxed/simple; bh=4yRGnHcWDQONSQquawDOtYjp+676tk0lAQdyTV3hXMg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nul4N2yKq3q3U0z0KWRdz24mW8LRu8Ius6kopzkMsjJohobRBy7IKqZ0aic0/sAa1jaFn2AVKtcggYjsYMcclVOzw2PiBu2SIeNNhgZoL8zwXKQ+vvjXj6kjysJipE/W9vlQeEaC4jnZgXUH28AHHsl3bqAtGkYN8ZlINAUzg3E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=XQpUIk/r; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="XQpUIk/r" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-4396590c614so4338345e9.1 for ; Mon, 17 Feb 2025 03:53:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739793210; x=1740398010; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=VXADKpBGHnogkbd8cS/4TYoAV8pATRtlq3ir5WyAbIs=; b=XQpUIk/rg95F8vxBd4s4GMrlMb4ymra7Pwyt2aIbpbjy9t7Epw2H7Y6S7lWbF5UaDt p0PHtNH7LzCDemTpN/JngmSZTAGEOCzGS/uNVzdgKt9rj9kNRjY6ro61pdFENPm8rUnM hAvkxCfZ76RfrR0hKSDDSeq28ixL+9vuTT08gCrhXAanhhwalyCNDY5hXj80tfNmxtKQ zmHlCwzytbsYx4x9ys/KF/pFYGyerm4EmwkbzK5j18XzUW4M47/7H7lwNN8J1nVEp5NU 9hCmpWumASwQkcziNU7VETGzAiSdr1iqVZ9M4Mk5xNBVEyc62vmgVfiWTqAevuX+T5wm jAeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739793210; x=1740398010; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VXADKpBGHnogkbd8cS/4TYoAV8pATRtlq3ir5WyAbIs=; b=AKTI3NK2m9zp+GElHLPxYpSKj3cM1uDeywewDCIJ3KugiYhBBtIeG2A4QKKnen6Sxw eJqHjbKytSAvbPuXLQhn1PNOAKPBYqbE4eiV0euZ8jyzN7N66sIpmvsc8HYzO0vvOjCi McyK4EQER7MAeACf4YANN8/Pfz96IaaDYzFx3LyWNqmJ8z7jToV2zWB0fK8YDFyp/W+a UNO+6EiZaIceIyjEvuxQ6E0MH06HNcBMqSDTbWpmZzvACWJS4BJBa7vfT7Zo9DmITJMi cYmnIlf5dM1GIegwD0YEjCbirPDd5c9dMVyqD5Q7eKQWiCRQj5by2tJHP6uZ9/0s4fFS giEg== X-Forwarded-Encrypted: i=1; AJvYcCXa/yM6hDY7zISDQqLClmYCyz80mU+SnsqTLqk8IzoOsf+FtjZ/IpFViVBGTvX3oGKdI/co0SLiuFYFhTQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwNMJyavzmOtYu69pAuH34cY2mtuatIj+YHuWKmT5yo3rz33kL1 TaUesMSBvID79VyUNmk6l24iRRmV5NDW/TPDqyDd78A2bu9Sp2MOKi6CGzbpu9E= X-Gm-Gg: ASbGncsEYZT6HwEU8I7DJvVIbxfVXefpRPYXM75a+yUX9fX/Umv86uCsXovjX+dx02G KjkKrbY45bD6RbmesNALl8XEIW5XSZZgUzVA7jzXDb2dovbhdQsEjl2wpF+jVe0ZkYepSbpKsX4 +tZ6GmnkxEVEmDhjIqZ4Qm2qHoQcbNyFKmzw08MPUrUvLAnjdux9kFZgvkUAM/9HRLmoyQ/QmyS 1rQ2c3CrxuejR0RupykJh2SDPN1pmjv5mvgcxjI8UlCJcDm+GLt0iwHLh1vVENq4J9zPjizf1Y2 1StXA4CBA8Zxc9eGZDuhPx9efA13Y14= X-Google-Smtp-Source: AGHT+IGvMjD7p9GjhrUpvftXXHMvF0vbK7oOwRaetxWgr7yi3kaGjbJ1/6/7j1IQvEsbRwaSlUn3zQ== X-Received: by 2002:a05:600c:4fc6:b0:439:60ef:ce81 with SMTP id 5b1f17b1804b1-4396e766556mr33000415e9.3.1739793210354; Mon, 17 Feb 2025 03:53:30 -0800 (PST) Received: from [127.0.1.1] ([178.197.206.225]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4395a1b8397sm150212575e9.36.2025.02.17.03.53.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2025 03:53:29 -0800 (PST) From: Krzysztof Kozlowski Date: Mon, 17 Feb 2025 12:53:17 +0100 Subject: [PATCH v4 4/4] drm/msm/dsi/phy: Define PHY_CMN_CLK_CFG[01] bitfields and simplify saving 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: <20250217-drm-msm-phy-pll-cfg-reg-v4-4-106b0d1df51e@linaro.org> References: <20250217-drm-msm-phy-pll-cfg-reg-v4-0-106b0d1df51e@linaro.org> In-Reply-To: <20250217-drm-msm-phy-pll-cfg-reg-v4-0-106b0d1df51e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jonathan Marek Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Rob Clark , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3974; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=4yRGnHcWDQONSQquawDOtYjp+676tk0lAQdyTV3hXMg=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnsyMwK7IZW73ULwxxqUXagpmKeHSvU+x5QzO/z k2gd9eaWp6JAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ7MjMAAKCRDBN2bmhouD 1zCvD/9NDmBcpr4KfuIFGlG3APDEV8rTX5KEwtZ4EYWYh6xlWPARnoeam+n4Q+ZrBgqUqO32nAv YkSpnGU2fbzqbNZJ7LDaKe6ZuQ17q8emN9411nKX3L4zyF+3cOi+1ZVGTYA+COfzdrPFnlVYAn7 Pgg/ojtRQNfxWlLGLD4Q+vB3/OXXMqnslW6ksFANsHYqhihKqwXvX6aus+XZtzbAtP2yGaIVY5Z SmzpTu2TvHD1aN17XWdf0nAN3bLpz3uAp3ySxd089adIHfMt5kMXyTSyHMg5svC2jLLD9pvhdPS AbK542sQ/XHukkiPeuwOwOLuFTdJjvPBJRjUgjcaPuo/DXUm7rzrD56Qgb/6TyZJFUSO/8gk9sd fudKxUkZNb9vsvnxFhFK6uYo8+jku3UJZlKEhVAf1bf7lEaxRizDOvEGq5vwyaP/SwCB+xe0+xA hnsoakNgkoEeOeW8QRvC7i2yVAxOzthurIfAfFOIuQhhSBOO85Uymw0nopl4rr14lRXsh6kx60G aaopaqdf4c1VRmTF9frM1ysffPNOudb87GsY5KvuUaEED76YlLt4aDdoFSO3lRtR6G0oRpSlW1g HBlsmRPu9mFabyUmcrriZ0GctEd8LnCiqzc1n7cwDKfXDPA4riuzoAMw/PdNt/g8U2MiM5drN0G MmJAfqK5jQnm+IQ== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B Add bitfields for PHY_CMN_CLK_CFG0 and PHY_CMN_CLK_CFG1 registers to avoid hard-coding bit masks and shifts and make the code a bit more readable. While touching the lines in dsi_7nm_pll_save_state() resulting cached->pix_clk_div assignment would be too big, so just combine pix_clk_div and bit_clk_div into one cached state to make everything simpler. Signed-off-by: Krzysztof Kozlowski --- Changes in v4: 1. Add mising bitfield.h include 2. One more FIELD_GET and DSI_7nm_PHY_CMN_CLK_CFG1_DSICLK_SEL (Dmitry) Changes in v3: 1. Use FIELD_GET 2. Keep separate bit_clk_div and pix_clk_div 3. Rebase (some things moved to previous patches) Changes in v2: 1. New patch --- drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c | 13 ++++++++----- drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c b/drivers/gpu/drm/ms= m/dsi/phy/dsi_phy_7nm.c index 798168180c1ab6c96ec2384f854302720cb27932..cf63b4c5c3c0c39f0031dbe948b= 1694765f01af8 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c @@ -3,6 +3,7 @@ * Copyright (c) 2018, The Linux Foundation */ =20 +#include #include #include #include @@ -572,11 +573,11 @@ static void dsi_7nm_pll_save_state(struct msm_dsi_phy= *phy) cached->pll_out_div &=3D 0x3; =20 cmn_clk_cfg0 =3D readl(phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG0); - cached->bit_clk_div =3D cmn_clk_cfg0 & 0xf; - cached->pix_clk_div =3D (cmn_clk_cfg0 & 0xf0) >> 4; + cached->bit_clk_div =3D FIELD_GET(DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_3_0__= MASK, cmn_clk_cfg0); + cached->pix_clk_div =3D FIELD_GET(DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_7_4__= MASK, cmn_clk_cfg0); =20 cmn_clk_cfg1 =3D readl(phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); - cached->pll_mux =3D cmn_clk_cfg1 & 0x3; + cached->pll_mux =3D FIELD_GET(DSI_7nm_PHY_CMN_CLK_CFG1_DSICLK_SEL__MASK, = cmn_clk_cfg1); =20 DBG("DSI PLL%d outdiv %x bit_clk_div %x pix_clk_div %x pll_mux %x", pll_7nm->phy->id, cached->pll_out_div, cached->bit_clk_div, @@ -598,7 +599,8 @@ static int dsi_7nm_pll_restore_state(struct msm_dsi_phy= *phy) dsi_pll_cmn_clk_cfg0_write(pll_7nm, DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_3_0(cached->bit_clk_div) | DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_7_4(cached->pix_clk_div)); - dsi_pll_cmn_clk_cfg1_update(pll_7nm, 0x3, cached->pll_mux); + dsi_pll_cmn_clk_cfg1_update(pll_7nm, DSI_7nm_PHY_CMN_CLK_CFG1_DSICLK_SEL_= _MASK, + cached->pll_mux); =20 ret =3D dsi_pll_7nm_vco_set_rate(phy->vco_hw, pll_7nm->vco_current_rate, @@ -739,7 +741,8 @@ static int pll_7nm_register(struct dsi_pll_7nm *pll_7nm= , struct clk_hw **provide u32 data; =20 data =3D readl(pll_7nm->phy->base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); - writel(data | 3, pll_7nm->phy->base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); + writel(data | DSI_7nm_PHY_CMN_CLK_CFG1_DSICLK_SEL(3), + pll_7nm->phy->base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); =20 phy_pll_out_dsi_parent =3D pll_post_out_div; } else { diff --git a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml b/driver= s/gpu/drm/msm/registers/display/dsi_phy_7nm.xml index 35f7f40e405b7dd9687725eae754522a7136725e..d2c8c46bb04159da6e539bfe80a= 4b5dc9ffdf367 100644 --- a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml +++ b/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml @@ -17,6 +17,7 @@ xsi:schemaLocation=3D"https://gitlab.freedesktop.org/free= dreno/ rules-fd.xsd"> + --=20 2.43.0