From patchwork Fri Feb 14 15:08:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 865119 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (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 E6474263F5F for ; Fri, 14 Feb 2025 15:09:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739545749; cv=none; b=EAy+im0EpYGYn3DUfiDhy0uW847eyLR8tllHGFM1lwFK61UOnfegnWEDUg/lHq37Mcmxc/HckCNihE01+a9Oxzm142K6fLM+aDssRpsXg7XRDBHRRHxnNvYiADdxaVBP+r+NSCIhYQ2jlul/ctt/SRMZ9DWPB3uf9UnzJW9Znqc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739545749; c=relaxed/simple; bh=VSoo9tOfvx5J/rILKbc9JGnlfjdESe0PpUUegqGlGK4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=J7dgA38N/aaiX3/w4EYs0bkcxdapnWjVcxOJJfpdT797klBkPxsMVNyMz0zm2Gkc9tMMe7GkrCJKYeUoWpjj7J66ZQaA4xjgozJwpMPJkonIoYaq4sg8lXjX2TpTctDRMKm9CY5Tfpe+Al5xHiN5QAN9zPBq+/kHA/eUEMglQ8U= 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=FqqDbb1t; arc=none smtp.client-ip=209.85.218.47 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="FqqDbb1t" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-ab7dd005cb0so42896966b.3 for ; Fri, 14 Feb 2025 07:09:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739545746; x=1740150546; 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=FqqDbb1tIlCd2kjPByI+N/39ZkF3Tycz4D57JjCXgDQhiZVWRoC9/lEIls/XKnbaAZ VWyDAYZSv7uAF1WusvPZSWNymPffl5pZPLDgnK3/wd++31AHFlSoQJdXWTNot7i39j9N ETsx5cW0A+ItZdAVENic3wB5kI+2Som/GyTdaH8G2SFfKPFJ4OCXa42rEJnGuuQdKkUe Seyg4AxEDkEfGXkYpa1I9Q8gdo+lxLd/9tE+HlqcnwMcfqal3nXZDjpb5Ufla2xwTuS/ NNXxwli5pgC0s73aSRh7E+gUQ4Q0h7a9yQd+VrC+MSFtX/PnYRtWWjoGbwCd11qpYYJj sUCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739545746; x=1740150546; 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=Y5cDlCFkJ5oRd/S+OcGZyzCXH7GmSLfnz+SRf1i9jwsvbmKfbJjbUeNge4if+zVPLl gs6A6WYzZVg1fjUe9mIFIfAu0Fqs4BjS1EIjy7DDPEAfEnP8um7LnwZBmOskiHyfQBnu kuKcbuTFoQ3n07VEhHyfXlp/K7qlmeDKHgnqfIn0GjaOjkkjEzacrVNPVyJHI7WZ5Jcf /COED41OXzKNtcYGkXBUNajhhcJwngNIqyHsVrL/yopNeGtVAqeEaa5/Yhwlcy/nFEdm wjaFDxxBSdfuOjpoKbr5AMAYCD96+AVCC8E3nwKMbfHFQK3a5OYgp47Vaqsi5u7M00Qx CnAQ== X-Gm-Message-State: AOJu0YzFPHgmn3Tv39FH67pfSMj+rGW/Lh+eKonLwzLIU5gd4Q595Sxl YU5jioe8D5blDv99K9nyjzvH7MYSEyvK60nwXVm3kw8BNPmd5wSQoPj4uTWKu+ZMuQ4EPByAPkG 2 X-Gm-Gg: ASbGnct04LRgPtbylx3ZWYRcIOlaLw3qHAwXW2HvN6kE51EgoKkfjzDAxH+PVnNLUZ5 sEfVpOMX+OisG96xAdwPGlJjnQAPxNwuCE8xhxez+xNpfguMGQbiApryjaeY7s80wWnClWxkcs3 F4KP4ZCcQqKT+pnBVnsyTtxy3tNwOim2zBasKt5aParqRnkTBprCVtlm4Sd6oLW716lDAKIphlh e86xlyphLdbJc+PTTTzitpeDMvbYXTPT/CdKw6QPnBl4ifmBe9nIH346h0703EuRzKlWl10//1I 9DX2WHYf+MtvIeTvZBQOtYDOmjkv+a8= X-Google-Smtp-Source: AGHT+IFFtfEHxQ3Cdoslz28Y5w6bY5MFVmE3IwU8ScYouzkRBfjtskiGVpTwclCF4Xi6nwCc3WvatQ== X-Received: by 2002:a17:907:969e:b0:ab9:4451:331e with SMTP id a640c23a62f3a-aba6970f9eemr123171466b.13.1739545745495; Fri, 14 Feb 2025 07:09:05 -0800 (PST) Received: from [127.0.1.1] ([178.197.218.144]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aba533bf70asm356266766b.180.2025.02.14.07.09.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 07:09:05 -0800 (PST) From: Krzysztof Kozlowski Date: Fri, 14 Feb 2025 16:08:41 +0100 Subject: [PATCH v3 1/4] drm/msm/dsi/phy: Protect PHY_CMN_CLK_CFG0 updated from driver side Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250214-drm-msm-phy-pll-cfg-reg-v3-1-0943b850722c@linaro.org> References: <20250214-drm-msm-phy-pll-cfg-reg-v3-0-0943b850722c@linaro.org> In-Reply-To: <20250214-drm-msm-phy-pll-cfg-reg-v3-0-0943b850722c@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/ZANAwAKAcE3ZuaGi4PXAcsmYgBnr1yKRgQ3FN5sNjIZkHoOJetRwRejI5VSJZ+Gx MQkuXSCuOaJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ69cigAKCRDBN2bmhouD 19dKEACW4noHnmfbw+d7hsQw4M8NRi8UQsNZpJhyBS67KQrX0SnetIqHTmyyZhz0XChu4qbwrX2 HP5WHY3qaxeIll4u4iw+Zi72np+NpCoqa7abijLTtEYL9RjEhXXYCbc1gQpuaYrGptUrzcHkMpW tQhPZ/umnkNV2LBy1XaI8vNnV9Y7fki5i4cz/o8YZ+ZarcpXmU22qMryxcYe/xQo3eInglcdGlD tNDQHP6XCrRX3CuWd+TEXPpKqf84v6OvBsI0wbOPbDpu1DVa7rRUMGF+atvBYS1PpOBhQ0BthFs E+sYlIvbygHKXtXIWP2ONeIZMx9UcNWKdWVi1abC+x1FYfMq1oMAn45jj6HQLiJpzZG2ZGEmWVq zeoacSZsFK9NDrzjK4fVbNl0J9jgTgjKL978nRbxPe57i7uEXoII44Gj9p4G3t7kXXRBb1qJ777 3RqDs4qB/GnYbh9z5gZkeE9HsDFj2u7R7Cj4E3t5EDMBkP8MyE42MfGDJQuX9FYMP7fHvNwA9Mu emSDfSnLKd+iWwXu0yyABsKoH+Pqvz3FmzEPIORmUBD2kvayGENbkYwW5e255y784oR1hNCEgXT pnAfnwMYenZu0yOa755shdzMBFjMiLMTAsrZ+sDYm6TnfO0P8+cWurQE5fulWoM/q+4Eys67UKg Js9syNWvbN1M1mQ== 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/msm/dsi/phy/dsi_phy_7nm.c index 031446c87daec0af3f81df324158311f5a80014e..25ca649de717eaeec603c520bbaa603ece244d3c 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); } +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 |= cached->pll_out_div; writel(val, pll_7nm->phy->pll_base + REG_DSI_7nm_PHY_PLL_PLL_OUTDIV_RATE); - 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)); val = readl(phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); val &= ~0x3; diff --git a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml b/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml index d54b72f924493b4bf0925c287366f7b1e18eb46b..e0bf6e016b4ce5b35f73fce7b8e371456b88e3ac 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="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd"> - + + + + From patchwork Fri Feb 14 15:08:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 865331 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.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 27EDF266EEC for ; Fri, 14 Feb 2025 15:09:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739545753; cv=none; b=oBMwc4vSwpP1FeB+eTMrgsBJwCywkG1zVpg5XPMplLqu2rt2DW7naIKvvfcFzA8i4RDUTDN7bQq79LjpwQZ0BxhuTq+/aHJctvXjpWE/MsxouCBewbgh/8kdMbKhEz490/JEz8MRHm3B5hjzX/advP5u9Y2WwPXPRaLip8Qimu8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739545753; c=relaxed/simple; bh=6d31yt4/0eptwO5sGCeUjo/cybg3SpE5A04xzTo+AZY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j4T5aLLPw5JQv+2hl5k4MfAje9x6XRTUJcVYQLrYkxLWC+VPizi1c6mwHaw+kiU9axNJS71Be1Yt/QvvUaWp5WgYU3imFxSW9jmABjyD4nAaWFvpnYMDVDRncNnfp78a/mG1ReAWBBa9HF2EhrOiQmWN37+O8/pGQ/rtHklyqVI= 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=nkNzfZmh; arc=none smtp.client-ip=209.85.218.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="nkNzfZmh" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-abad214f9c9so7213266b.0 for ; Fri, 14 Feb 2025 07:09:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739545748; x=1740150548; 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=WpoyP1aRpWJku5O/ebmWUj4BI5NRc8vCFD+rq5oYp8g=; b=nkNzfZmhY5bBU6GoBNQpck/qhVennBuuP0YdHbznYgLQ3nf6zgs/rwsxTFR6Gimqgm pJjhQvTA39p4EsToIUsTZYPnZu2SGckpsxWk6J5u1lpvOPw0IJHmYm3GUupq8qLMfiCt gwJyqFuNang/AT+ni9QD1VyUuMJsI9ekohDxeLWgao4BnXYTH99s4hZ1omdpfNTTIeM2 mwKdccQ8BR0GIGKxc1EsNVqsNdcze6dkxHf0EFbCpm655nQFrcEDSbopU1ILQnZ2PK+L kU3kH6b7oaIexR/WXkQffOolk/MFn0BNkxhNXQvMn0K0sZLKQuRkl+mZOV+k/qFQ/X5J XNAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739545748; x=1740150548; 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=WpoyP1aRpWJku5O/ebmWUj4BI5NRc8vCFD+rq5oYp8g=; b=RUYgEAgXWejFDD/neyAVKs74ffNDwU8SizAjd5ppW9vZFFS4r7Lv4ClX6/FkJBuVRw K+Sa2xxjU/8WLVckW1Vc2E/PE5gB7AObB9rs2Hqqg89/ATI623L5iAgiZGQAEdWVR0UW W+oU+wFc08sPbTZqBwZS5Ul7+jovjpVxejqF6R6J1lZGVxR7gi19JkyAbH82qw8+R1h8 WDNcdvKBQ3EJFqmXW/r8wk/PvAe7HbD4c5Ca7bUN/32GbtavD2AWHhPWsZbKqWLhelt0 3pXDrVqR68m2UeFz0wJwztL2AbIt9rcxej63hkk7/s5la/+PFv4gibhjuJRJkms2dCNG 3gJg== X-Gm-Message-State: AOJu0Yx2EWmEIyrgQJuEDvKNtNzfL/lnfWStV9tSmMV7hkf+FGW3qVSF uzo4+q+8rpUh1esnwVaNmaFm1PqqxQ894xzHuTv/NYCnUMSi15v1JN26mho54sHqCmVbTC2TBGx m X-Gm-Gg: ASbGncvyxU5IFy9kBibOcIeVeTnWGy39g8lq0ii0ZZfNswD/EpKXsu5JSPeaETVcg95 lgdpyXR4XUCjYLmYa+uvohFQsSHP9i8V11rKEGtr6Z3TBMjQW7e1Z6+5yiJTE5zfbqKNa0epkWg UxVS0gPnZRJlvbo2Z5RVLSZoDA96I5yj0jeFZAcC2sMrxRNGKW44dYgAV9hx40bBvz6ffl1k4Dm OuoN3ZLw5A8dCjWFNzeC1rMejtQQvsSdvwHQQvNaX9QNyXTgAzsZjXA2Hs8hW3tcR8WS3eHMPYz 2r5JiX+g8emJvwmgM8tKvsvD9ixaR54= X-Google-Smtp-Source: AGHT+IFNOiguXYpTX8lfXBsfBc46gvxa11KhDG2tEU18bJRnmHT//7C6mYWaJDkT8sKQx1QxWy8cgw== X-Received: by 2002:a17:907:6e9f:b0:ab7:63fa:e33a with SMTP id a640c23a62f3a-aba68bf01e8mr139219666b.0.1739545747133; Fri, 14 Feb 2025 07:09:07 -0800 (PST) Received: from [127.0.1.1] ([178.197.218.144]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aba533bf70asm356266766b.180.2025.02.14.07.09.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 07:09:06 -0800 (PST) From: Krzysztof Kozlowski Date: Fri, 14 Feb 2025 16:08:42 +0100 Subject: [PATCH v3 2/4] drm/msm/dsi/phy: Protect PHY_CMN_CLK_CFG1 against clock driver Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250214-drm-msm-phy-pll-cfg-reg-v3-2-0943b850722c@linaro.org> References: <20250214-drm-msm-phy-pll-cfg-reg-v3-0-0943b850722c@linaro.org> In-Reply-To: <20250214-drm-msm-phy-pll-cfg-reg-v3-0-0943b850722c@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=5326; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=6d31yt4/0eptwO5sGCeUjo/cybg3SpE5A04xzTo+AZY=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnr1yL+xzURKrXVULWEQh05QUgv0y4Y0lrn+IEx 5chLHR69UCJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ69ciwAKCRDBN2bmhouD 1yuLD/4p8DmI9eKNYanA+xTsZEo0UJl6ywYkRn28tea7zP+jjDPOfWaCoA4yBHsfrJj6IVmGqD9 EL6XgU+E0Y1vGWDewD6C3tRqSR+OX7htPd78K4u86nS+SeHOh1Vnzq1hU5/YpkxHyD5hittrKkH IrvRoTEIXGRv+df0CsYI9yXbGZ0UJFVwkF469XFNUmSisj4CcyLuewVCKvTndYkgD+R5sm9Ws62 bxE+Gh9+4nmgTH+zZpO8yJJuPXGuBQ9LifTyJasA//js7UL3qMtGx585J2sa5hetIZpvGoRc2pl e9FLSYyNnLBubP47XBP//4RyI9oHvpkoCRh7PmKsKSO35wN9gGIo5I+g/R9F4PKlReFtSUxgiO6 G3eKRW+zrD4pk5fTHpZuk+lj4rJrDGLmxKc7k3SdK+bAIrlV3fvjUV0+rnCiU8LTJ52NJRDwZ0U ypfIbunx/dMQhINA1W2i8waz8DeDjDaxFk0fbuqFtoRPo07miWO3bT/Xon6adIr0rcYUN7WUf00 Fon88BPiqm4kY+TS6lGIARveHNB/q+pX0orF5U8HR6zleIEPW+QkxlVvCRjV/1c3X5FHtboIAtB vDtE5Jnf4ONc8lzr3ceRIaDFiTmj6AvWYBUjj+Qx0xA77NsRKmMEMt0Fb7aqJmANKDvN32cDNmY WH8CL8Shbhe7VnQ== 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") 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/msm/dsi/phy/dsi_phy_7nm.c index 25ca649de717eaeec603c520bbaa603ece244d3c..388017db45d802c4ef1299296f932c4182512aae 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; + /* protects REG_DSI_7nm_PHY_CMN_CLK_CFG1 register */ + spinlock_t pclk_mux_lock; + struct pll_7nm_cached_state cached_state; 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); } -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; + spin_lock_irqsave(&pll->pclk_mux_lock, flags); data = 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 &= ~mask; + data |= 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); } static void dsi_pll_enable_global_clk(struct dsi_pll_7nm *pll) { - u32 data; + u32 cfg_1 = DSI_7nm_PHY_CMN_CLK_CFG1_CLK_EN | DSI_7nm_PHY_CMN_CLK_CFG1_CLK_EN_SEL; writel(0x04, pll->phy->base + REG_DSI_7nm_PHY_CMN_CTRL_3); - - data = 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_CFG1); + dsi_pll_cmn_clk_cfg1_update(pll, cfg_1, cfg_1); } 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 = to_pll_7nm(phy->vco_hw); struct pll_7nm_cached_state *cached = &pll_7nm->cached_state; - void __iomem *phy_base = pll_7nm->phy->base; u32 val; int ret; @@ -586,11 +598,7 @@ 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)); - - val = readl(phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); - val &= ~0x3; - val |= 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); ret = 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 = 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] = pll_7nm; spin_lock_init(&pll_7nm->postdiv_lock); + spin_lock_init(&pll_7nm->pclk_mux_lock); pll_7nm->phy = phy; diff --git a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml b/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml index e0bf6e016b4ce5b35f73fce7b8e371456b88e3ac..cfaf78c028b1325682889a5c2d8fffd0268122cf 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="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd"> - + + + + From patchwork Fri Feb 14 15:08:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 865118 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (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 8CD5E267386 for ; Fri, 14 Feb 2025 15:09:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739545754; cv=none; b=nRPaLSnhFP5hFre8k3ziK44n6OSiEzMB5nLPTGSY7MfTVC94yTXe/wE1f9LjZJEpNSECx/bNpwksJeSbTPpgysBrHl8xWe0tjyjE7+Uo6hQy/VxqlEPEIiPZ+xangeBU8/t7siK9dsKs9DThb7Fib5a70/6c/OpHFFlDSCUhPtM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739545754; c=relaxed/simple; bh=BQ4ctpKzt2JNBBm/FezOIGSkr/SYl7Hi5IRx7EgvobQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Aku/mDqwwHNIyXmZsLMYg9B1CLXiliNX3Ha/UjpTBBf8Hgqb5Xy2TsDCd+Lc/VczIKcUX1VZ+l/FyOxFrYDVq40iF3Eu4ybtGyq/j5uc5MphXWAkXiol0m1UuKdPCsDS2F9Uw0RSyC2HRxD/pLu95XLpSGVTikXBgz4isaB3s4E= 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=YJWazoGX; arc=none smtp.client-ip=209.85.218.43 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="YJWazoGX" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-ab7b35a004aso38630066b.0 for ; Fri, 14 Feb 2025 07:09:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739545750; x=1740150550; 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=0GstLIXqd1K/ZKQfJCz4c26uEua+iUU1422NpxaHZF0=; b=YJWazoGXTuT0dc7Ch1owdLLCts7/Gd0oMXsV7rKdZyy4osFXPNJI+8NXrY5pKE8URZ x7oC8ppswz6GEsTVYc/ebflLd7U56oeYWLILM0scdgYqmJPEm5iJnt4cHuIdiV0j8TDw c5VL3iKGOIit5EzQnP/+n+p4dD5BaYssWUeTSAiotT32AozwXO5ACIhJLVdYShJr506m SRunYlGlgSYJc/zoyMEUNm+jNCL3DsikSB3PVcH/HjT4jPF/+XHny1yQ+sV3F4ednv/6 8Lp4+dAmSvRM7yfC4nbLzST1Q0wuYB9/eh9rkrcoz6a0WzphA3O6s7KA/362taq0Yfm3 JSlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739545750; x=1740150550; 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=0GstLIXqd1K/ZKQfJCz4c26uEua+iUU1422NpxaHZF0=; b=L03FkojfMMBbJxTnSb4XFQRql2YnjdjeoJ0qXLyLjc3kr/qSUuYLFUglIlpUeVnSg3 2FHtJ5clmOK0F7b8NgYcKSd4Im5QWkJ99Sj/j1VQ9z6xD65jq7zFKSu/S7Z9Yp4Yovnj 8mSZoW8zzfqc/HOzMmuVc2D1KCkbc20SKrLuDbMQd/yQkdQhBvi0Ljr2cqmlU7dQpSi9 Zkj1FD8h+HUNxpz3Yo/3o5i08eRUoHAm3b0+EigXL3IRGkZsipN0krBWYB7ALD2HbfKq G2Fy8ZBzB+4yRmnp5yRi0PoQxz7aNWdgss+Z1EYZJi7z+WBecwUX6JAtKrzh12h3Cppn GTtA== X-Gm-Message-State: AOJu0YyVOjszYitlyM3c/iRdDtzYj1jtKOwMBa2k+guw1mj7w6kLJ1XM dDm2qdEoMQVLJPwWJ6cskOIBwVhFJXUcxoUY3DyJJtDUKYosgKbN3jm9OXEH1jZ1bdxgSXB/hKE a X-Gm-Gg: ASbGncvja9bgV3ERjC2Lg40KlN3RShQoPhSsGbQo21mgf52P56HARmXess4sNpSalqj UORFwgyYYtKVvH5sAEH75JBc8f00ieI3/FdSuTxX22HbQh15ZdBQ40F+LsZT5rXIlCFYEVh/Xca ymv9CRJQNjyw9J4IecVYid1Wmn4eMmAYJG7V59yjrXr6eokCJn/nGnifUf8sll0W0NMGiGvKsgy 8NhP3WCxGs9GiUECKpZ8J8yrk0Mpu6jQccs99UGGfWCCbIxatNnHFDy92jfgbG/Zp72F55F486j pea4fTBY2afTKasnlmX8wOEQHIMej7M= X-Google-Smtp-Source: AGHT+IEzVqM+iUmxc7skwIAEYucZ3akEM3g7G8GQlo3NC2U8yusEjhbXvucjr1pSP1U70ccqH5eCWg== X-Received: by 2002:a17:907:9720:b0:ab7:be81:893b with SMTP id a640c23a62f3a-ab7f318e3f8mr491212166b.0.1739545750041; Fri, 14 Feb 2025 07:09:10 -0800 (PST) Received: from [127.0.1.1] ([178.197.218.144]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aba533bf70asm356266766b.180.2025.02.14.07.09.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 07:09:09 -0800 (PST) From: Krzysztof Kozlowski Date: Fri, 14 Feb 2025 16:08:43 +0100 Subject: [PATCH v3 3/4] drm/msm/dsi/phy: Do not overwite PHY_CMN_CLK_CFG1 when choosing bitclk source Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250214-drm-msm-phy-pll-cfg-reg-v3-3-0943b850722c@linaro.org> References: <20250214-drm-msm-phy-pll-cfg-reg-v3-0-0943b850722c@linaro.org> In-Reply-To: <20250214-drm-msm-phy-pll-cfg-reg-v3-0-0943b850722c@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=2592; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=BQ4ctpKzt2JNBBm/FezOIGSkr/SYl7Hi5IRx7EgvobQ=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnr1yMWlXDCCR0YeuZkcFoQUPFixkLcf1UZ+u1H 9ehMouSx6iJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ69cjAAKCRDBN2bmhouD 1yxpD/9hIXb1N3TiLm97hyItMPG7g63u9pCjssD653f4reFjoc0jJWXob0VogwGA28ddfd2BZmH vFdKX9XZjh/AvDFseBOPyLcli9Fjxch911KpBsKSmq9q6Q3nUbQd5P8+Xn3Ht2dbwvQLKfh3Kvd FNqXJHVP27uxS4mvgwEAyTBCsh+wVu3B4J55nqzedi1+1qMVpnhLxA3X0F3vTiX5H0iWtIkimfm MJRMtrVfnB7n02Ygu5H2jZFGUlXpS93eEm9XI1fvsP0/mzyvnCA1SlwbA2XdaFbLH0edDX3VAFz audt3Y8np4Ag0nCwAWcyZnVzktz8gpzugw/IsXHAOUdEy4HCSYY7yt7a8lFPhcYTBB0+fUIia6i KYmZeyNZHGp3PE1vH4yxjru1Uh4xy3wzzaaxRIHsGWgEpzp3dkIzjeNC6+6YSWgU/uWIKNXSiip OKEcR5HRjyhW6vEUGX2WrqfNsUbVoTdGOXtjMnkZwwgdWFJ8A7qQyNRmRu8zrWk/lNolXlZoseD N5sezKQ+i951OTx1h1iVSbs6tYzAMRc6W6Li0jKsB8CHLqvGBnHE3n11DJC+yBbn2dKwv0ffUur GZ5X88+ofzEY6vDY+2hujXWxKT65+hirW9+QhQvxpBFLQukUvSWw/luF39lQeE0vyMulTx4OctK imlK6EKYwx9z9Nw== 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") Signed-off-by: Krzysztof Kozlowski Reviewed-by: Abhinav Kumar --- 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/msm/dsi/phy/dsi_phy_7nm.c index 388017db45d802c4ef1299296f932c4182512aae..798168180c1ab6c96ec2384f854302720cb27932 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 = to_pll_7nm(phy->vco_hw); - void __iomem *base = phy->base; u32 data = 0x0; /* internal PLL */ DBG("DSI PLL%d", pll_7nm->phy->id); @@ -636,7 +635,8 @@ static int dsi_7nm_set_usecase(struct msm_dsi_phy *phy) } /* 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)); return 0; } diff --git a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml b/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml index cfaf78c028b1325682889a5c2d8fffd0268122cf..35f7f40e405b7dd9687725eae754522a7136725e 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="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd"> + From patchwork Fri Feb 14 15:08:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 865330 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (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 5D87A2673BB for ; Fri, 14 Feb 2025 15:09:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739545759; cv=none; b=P5bE76DxDcdjanT8Z6x89DdLIDizMGh0KNghYsdA76T85swucpwH0nrRyQPdXOLW3IkvJjYPsTi6SsKt0K5/4bDduJ7ZSnNghi7DAR1lYjmVDSRPAzCQo3+YjqL8IMZXy6S5FvYDUIK4kza9Xlc681TdElOOMRDmUbWQo8fyteg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739545759; c=relaxed/simple; bh=2CBa9IBMibbcITCTnBXKA4ai81Vo/pmWYs2riYsXCmg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tYcTyFxy762IG1JYz7N3ITRerd+faWYbeVALtyZKlpBUL+pnrfgKsnI4ONG8X3Ki8gXEXm0MW56fV7VNHIwHxUt8GHm28ZKcsFghKJXiQrZOIrONcIpckyD0RVPlcKqUnjU5cYdpOJCsRDvuN/+rdz95CjJZKPDNCUnVddTjNb8= 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=WNuS80tN; arc=none smtp.client-ip=209.85.218.47 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="WNuS80tN" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-ab7b35a004aso38631666b.0 for ; Fri, 14 Feb 2025 07:09:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739545754; x=1740150554; 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=B7jsGzrzWA2UpjfP518+Ys9Fu8SxTav8yjO65ThpneE=; b=WNuS80tNfTlW7WceVU/9Fxvy0fkxRA0xVSw8+D8ymEo3WTBVsYHqvdTEvrVpCKn4dL U9YYgx7bpUjlZfhETbzZjHMCUHT4LA97BU73W1Q4J8kQz0i0iKZr1EMdHtAh0T+puU25 joYGueXy0y8d/KnIqNoqeT+nCoFU5hHIdsrKdid25cZlV4kGUkfcn8Bs02tUqaGkw96S 6JjxV4B/P+OzYiPJTgQBaOF/4oFSVJjfEYDisijetllLxPZy3agMOtK6gGJC9ZIwvlU2 uWSP7qZlAm0AWiOT6+8wgoz4qmcfDILKjYGLsV9mQqz3nCRJfXBABPaLSKC72+GP+4De YH/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739545754; x=1740150554; 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=B7jsGzrzWA2UpjfP518+Ys9Fu8SxTav8yjO65ThpneE=; b=F3KjKB2VZ3xZpgbE7HraWMpxlpw/kaYJeF0AxoNEZRbCW3rBknxEMmiovQS8r2O7n4 bSS5AT5unijwRJhmpN6wdv1JhOGDS87CoW5nb2uItTss75FPEIUR5TaznMb0G3Igyp+y eMGdelJLnQKUO/UZlloSjeLwy4TJTJ/2MTM7DFp4cEiUdoD0D8jED/Y3EvEbu0m1mbXl +O31Foi5vxCFhLYq1ZMFauDo/FpL3Y43gg6B0MW4Ya06YzsQ5QY/0egQ5Ou37gHgEdZf YC3rlxzUQbsnSzFQ0kDHVDanzkkFiasgdMaWKlgtakDJkusuLoRF1vC2fjie6KAhRIy0 j8+g== X-Gm-Message-State: AOJu0YwH6eOXsjyq7z/LpZGZmzCAySCWNpPQj2VV55btjZDppoBHL/Uz 0fIOxGoFu2BR/7rnAUdaTLnn+Fr/QcdRq9fiCtZVhJU6LPCSaxFAtJ+kH5ov1Q1hYs/FUV56M5M O X-Gm-Gg: ASbGncsqPiY+2+qlj1sNHcA65LHzcP7VInzbJPOX6S91dr4SVH988XFXCGV8XNfOf5T XYejjS9djgCXiziHqM3Q8I6obK9/Xdw4TC/FKGAupmkyO4QXHJuD7ZWOs+GXG1ZW5PIyClrp/sA l19xjCguPFGd5DWL133CA+V7apUiA7yJr4kGRkbM3JxIBeLztGwrY37OvvntMjt0r5lS9VT57Om deunCXK9ZA9hanJIO9Wnh0h20ROQkeaC/qtq4mG5uA50xzYRHDPbgR7JAJm1Hm407wR94anMe6p cs6mdPNkoCo/XGC/kRDia/2TBUUnbZU= X-Google-Smtp-Source: AGHT+IE7JU7OBLRkos654tOsr2eurVNX6fP97fyobBh9cWCTtMYkOpMH7QEK2km71kJRMzG661dyZw== X-Received: by 2002:a17:907:9490:b0:aa6:6f12:aa45 with SMTP id a640c23a62f3a-ab7f33cee90mr468424866b.7.1739545753005; Fri, 14 Feb 2025 07:09:13 -0800 (PST) Received: from [127.0.1.1] ([178.197.218.144]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aba533bf70asm356266766b.180.2025.02.14.07.09.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 07:09:12 -0800 (PST) From: Krzysztof Kozlowski Date: Fri, 14 Feb 2025 16:08:44 +0100 Subject: [PATCH v3 4/4] drm/msm/dsi/phy: Define PHY_CMN_CLK_CFG[01] bitfields and simplify saving Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250214-drm-msm-phy-pll-cfg-reg-v3-4-0943b850722c@linaro.org> References: <20250214-drm-msm-phy-pll-cfg-reg-v3-0-0943b850722c@linaro.org> In-Reply-To: <20250214-drm-msm-phy-pll-cfg-reg-v3-0-0943b850722c@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=3653; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=2CBa9IBMibbcITCTnBXKA4ai81Vo/pmWYs2riYsXCmg=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnr1yNPOoysNFKaCqU06xwyIbjOpzjtXtIKu6ny 4+bnqJO1UuJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ69cjQAKCRDBN2bmhouD 1yGpD/wMzzZRoNEJddfIEvdwKtLRihZJNRYkTaNYECkfJYQ6wVhuz/xiDFeQ/SsAKz9pXIik4SF r1dMnA02Sdxyt8TCDLtpJK0u3ExejMBuU8qebOKqizCR+eo6R0DPttheCsrYtVrbdFF3AdnlwzG gAz+vQprz0JP0P0HRcUQ6Lr7dLKjgGlJTEnUD/BA2haAPIeNL65suMKARExE7XPqcKfKKW2rerR bP+5YlODHhXC8Ed9PZUTBZeKswlrHetbg+K6sXYVVeiZlrSaHxaAiBKwqRG3aZDmGTck+fXDxAc wtArZ7WcsYip5uEe+3IpEMbhKj30Y63CHWBXqhEF3Yy7whUzFW7Y/MidDXE5b6H54iOl1FFTA1M ygz7rypxFuKTIhwjjQMwTRwmi7QmB8lYQwO0AXuNjogTa/87fzaHB0ZksZL08OGx7pdzSkD2FVF H70bF7zWAVrubgHNrd7dq7mVvW7fUagqjVZgQ4zt0qZyKGq9tfdF32WqOjQzuKP8KTOuJDjzz53 GU8w3jameWwtUdx94rwQWUwBSybUxrlEFt/u3CyrfAQuJREuLn63Um71DBvnAUeGy5WMAuoceSJ 0gyuPMvDvi+/l74qISVy8ROY5hlboH4ec0KxaguKF40BhO8oR2imSsOJkhGsagTK+4ZDRJmNgS7 o1B5XGYPuyYdueA== 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 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 | 12 +++++++----- drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c index 798168180c1ab6c96ec2384f854302720cb27932..a8a5b41b63fb78348038c8f9fbb141aab2b07c7a 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c @@ -572,11 +572,11 @@ static void dsi_7nm_pll_save_state(struct msm_dsi_phy *phy) cached->pll_out_div &= 0x3; cmn_clk_cfg0 = readl(phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG0); - cached->bit_clk_div = cmn_clk_cfg0 & 0xf; - cached->pix_clk_div = (cmn_clk_cfg0 & 0xf0) >> 4; + cached->bit_clk_div = FIELD_GET(DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_3_0__MASK, cmn_clk_cfg0); + cached->pix_clk_div = FIELD_GET(DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_7_4__MASK, cmn_clk_cfg0); cmn_clk_cfg1 = readl(phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); - cached->pll_mux = cmn_clk_cfg1 & 0x3; + cached->pll_mux = cmn_clk_cfg1 & DSI_7nm_PHY_CMN_CLK_CFG1_DSICLK_SEL__MASK; 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 +598,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); ret = dsi_pll_7nm_vco_set_rate(phy->vco_hw, pll_7nm->vco_current_rate, @@ -739,7 +740,8 @@ static int pll_7nm_register(struct dsi_pll_7nm *pll_7nm, struct clk_hw **provide u32 data; data = 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__MASK, + pll_7nm->phy->base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); phy_pll_out_dsi_parent = pll_post_out_div; } else { diff --git a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml b/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml index 35f7f40e405b7dd9687725eae754522a7136725e..d2c8c46bb04159da6e539bfe80a4b5dc9ffdf367 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="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd"> +