From patchwork Mon Feb 3 17:29:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 861876 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 7091320B808 for ; Mon, 3 Feb 2025 17:29:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738603779; cv=none; b=nRGQ8VWOL8qimV9rnBnVckdRbO5v+eGo572LLfVdpAg72IUYaw1Whl9a7c0P5gLFmOv1FCO/Mh6GQBOc6Ds9bo9F9oJ/p47VxSxAeYx5KNOCjTsPg7xvpWV9HfOnhSTkjiQ7j+dG4WPGL2AtaWVW+gexLaBgqv4SgwxRH1FtCo0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738603779; c=relaxed/simple; bh=qPayIg/NkA+MgAFyPivDQRmrfYR5ne0X/KrNddzzxvc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qGeeXanSA1kBfnrCA4L3W4oOdW1EPYcdzy7pOlukbkOM1XaNHQbCOBU0lgqAp+8Q0Yli3QJgki1r7bn3p9xmX5bnvDI1OJWQaa8sT38qx4jDHA+iji1E8Vk3877fqSIh9jad+8CyS+7/TopkmqeXkWndzTmi/hMnFoPawZ7snIU= 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=c7Q8sEDb; arc=none smtp.client-ip=209.85.221.46 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="c7Q8sEDb" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-3862de51d38so182519f8f.1 for ; Mon, 03 Feb 2025 09:29:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738603775; x=1739208575; 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=nuYKr/hO5ESxnU+rHE9EocNAqOyGfy1DJ7LFqKkR5XM=; b=c7Q8sEDbVXvfEmePzPSng6Ly0uKKVT8hN5Oi/uvCOVheN4UeAdp1TXAW1wZmmaHbcl 4ovdVQkafTbqSbqix7S3hpaexhijkjAFO4/52nY2ugh10C9kol7cINjonYw46I1qAWBy H2Vy/eTxsrRUHXQZgdde7g1ipsNGCkhWTbUAUObrmXQJlam3wiPE93bSu/wN8w8xQfVu 956FtcOMU05OZrBvOy5tOdqraAVwi/dWqwFIq+ETC2cwWzQLr6SWXHQonWPkzBYdwH01 VftGosaMzYkDdLdhm/xq622SDtlmebOj2MfalcgfG96zJfDZbyk+ctc45K5y2Hq9I/6v OFoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738603775; x=1739208575; 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=nuYKr/hO5ESxnU+rHE9EocNAqOyGfy1DJ7LFqKkR5XM=; b=US/NsMReQPTQvWBvcHGMMq9u8n8jF2e6aPwgvjMreZb4X9bHqCXP3Lk/TsbGmXTLsD HBQKUT7JIY5DzuPpOWF+stY4nszZd7IHRA75SvWGcBkKIZWDVNEsnvO0vUSH1ZFN+NW6 FZhYhfiiR4G8R+MyP1/XAGD7p/9LoS9fObZ8ALCMX+b8yk9UF7PJV4Tm7eH7JkMsN3FG yenL882oTk6I5n76BvHVQT4ScGUnEqMX1RhalOB1XG1fWpsku4qfcShAA1dKrFaZ2/9j PAFDTC147NAK35axgiOt0tX0xwruDkiRv3lEp5erBgQCwBlkvMgmPFpYTfgVuqODKp4l 8+tA== X-Gm-Message-State: AOJu0Yy/EQL4kjo78hdw7Wz5G9PKCeLl0RjgrYBb7L9IuBaglBBN5Ekk nix1SMQFJlq+x292Nxb5XEmQ/RRvClbGHd/RvdaahP2TzcU7o7UEmRrqql98ciDddegWhp4715b x X-Gm-Gg: ASbGncukR80rvPuMJlFgE6FRXC5t0ReS+p8B4hN1GqrV29jOCWEiWvP2wtaQqgOuvP2 lMwkqZpmieXYYhhEOCHj1BT1WKnW9Xp5i4pOztvlNG9/njVtluUS6y5txYpSAXv63NmYEywWSwR ePnmpz2X4ClI0JnT2U8nU8ZTiMvxr64cvmPuVReuTHIsCacRr98sgZzhQ1pblmBamKywIXJDVbp ZPo+zgpzZO4YtP+Qbn5ElTMcMPHokqQqd/uR2qj6zFg/OJJUQnRLRtAv8AbOeQKpzXTF4v3os66 4Ll/M+huuqPHy8wxc73TzYQ4HYw63mo= X-Google-Smtp-Source: AGHT+IECb98Xkkqy62+Q7p2Drgjriyq42gI9R4uri6xqRDj25EMSJm+y28xmAHcntMRMQEfZGqJsfA== X-Received: by 2002:a05:6000:4013:b0:38a:8784:9137 with SMTP id ffacd0b85a97d-38da4e637e4mr149177f8f.9.1738603775494; Mon, 03 Feb 2025 09:29:35 -0800 (PST) Received: from [127.0.1.1] ([178.197.218.144]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c5c122e59sm13528122f8f.55.2025.02.03.09.29.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 09:29:35 -0800 (PST) From: Krzysztof Kozlowski Date: Mon, 03 Feb 2025 18:29:18 +0100 Subject: [PATCH v2 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: <20250203-drm-msm-phy-pll-cfg-reg-v2-1-862b136c5d22@linaro.org> References: <20250203-drm-msm-phy-pll-cfg-reg-v2-0-862b136c5d22@linaro.org> In-Reply-To: <20250203-drm-msm-phy-pll-cfg-reg-v2-0-862b136c5d22@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2063; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=qPayIg/NkA+MgAFyPivDQRmrfYR5ne0X/KrNddzzxvc=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnoPz5WQwjRgNnNMv5Hfv7P6hoqwOW1ag0x8hBw 6PQOZoOJZmJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ6D8+QAKCRDBN2bmhouD 1wRzD/4jCTIK8MbzpBxNwd/b0SIj8Csp+QLgtshMGR8U7NiBcwPDx3vo/xW8PpGfPxVpfH40Cd+ WrN1C/pNihHURZRJhoGPIrFRFW6VBFM2znehMUfvdkHGsLVxyT6UUkpsE5RiAVGa2Y9MHSv4osR JadWShWRvTiSaEH9S8jqj4ZrnnIKPNpiHYTJgEVomWb0ohaduXyXsXeLa7vnfSQKIpkDHJwKGaD l5h64tzDYk7D/8XfNa5k/L1Rkh0Oe9TOt/t/SHkJDWkljek3IqQ4L717HFfZW8jpJWB8UBTcnA+ KBrP6SGSP0JrM/p5DKyia58IoWMKWN6qnqPsbsJdL7tvdyGOTqrNGBN5uGMpLX9NiO7v2X4vcAe jV00rYtsgS91CNe9lYealqyuXgBUezMFW2rXwJRoTHyk622+JfywVaG6BKdgZrCs+w8UnDcgOie 6d5Sn37sXVt0WbxKuqZqf2Hmqikpi+qRgOZRHqQ9KE7/XEuZ/4F3W6i27J2VX3OsYUFnhbIETcc IIy7t5zJimNNF0rDrRerf9cYwk001V6uR3v7+kv4NxXIvJy3ln7a0a46D1vxqUDo44/d+evkfbi luJ+QkmH0PojUAmCJMaFtswrsB91IrlyX4aGGiLmCVuvzoZCazYzkUr8ScBiF8Hfg9Q67ZpmBNg WzBkgvtEKrudStg== 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. Fixes: 1ef7c99d145c ("drm/msm/dsi: add support for 7nm DSI PHY/PLL") Signed-off-by: Krzysztof Kozlowski --- drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c | 13 +++++++++++-- 1 file changed, 11 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 031446c87daec0af3f81df324158311f5a80014e..c164f845653816291ad96c863257f75462ef58e7 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,8 @@ 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, + cached->bit_clk_div | (cached->pix_clk_div << 4)); val = readl(phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG1); val &= ~0x3; From patchwork Mon Feb 3 17:29:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 861875 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 9C6CF20C499 for ; Mon, 3 Feb 2025 17:29:38 +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=1738603781; cv=none; b=Wr9v4XA+oOtj1R2VThKAdPYDlAEb/rZIvLhqUR7sxdpCVzu5JxMtfGBBTTIvbVDgproTwF2K8bnYxPw/RyeCAA5vF2Ij7+TKyRztiKjQ/Ig9nLn27bql8QZCf9p/nxtCwJth/uhDzAG5MFyJlenWZOcdGes27Oh/cjUB48K0etw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738603781; c=relaxed/simple; bh=zlnos82iUqx+CQNn8/y/plTrr00WcMZCC6iMPwasfUA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fhJDgfUzsp26wnuAmo1YOxTi2P7izWLwUTYhXJ3mwm/y+Qh3+TlKKlQ6uOaJyoospY3a5iegz+hStE53UAABzpA8pkUC+4cPl3Zg+xKNm/88LgZTLeNo7bP7zBpIvUlnEdSbMPPKJ1dK21HMq7wLk7hXLSy2f6aQX/+Mj5XsriM= 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=OLqUjhB1; 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="OLqUjhB1" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-436230de7a3so5888785e9.0 for ; Mon, 03 Feb 2025 09:29:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738603777; x=1739208577; 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=Tf+gynoUbS6lxW8GWMLHyFia33+uFkAfKbxTriQ8gQk=; b=OLqUjhB1Q02TzTaszwI8UOMLBTyD7b6UqXKKjbJXA1JXNKC4QdkE+gJ53Hs9IUNMak /zK73L2f+S3NsXsBH8gME2wG/11qbmAmURtMwbJkfOXbMj+zr9cZLBLgP7dYs7zS6UPp Odt1Ac/uBotpWhEuK3+/rabgK01s/cCe1Q+jqxzOhTsipFV2t6QG5jXF5BWcgY2HeWSI 5wrLLS6FRZUFtaY905sXGKXP/1uH8nljnbcWMF3/bMGb3lT5S3WSo9O0NkqYylN/TCov BEcgrqLuzwIVDjNVzlJe8tP9Vd9StUMWFQBcf2CtmSqTSOlck2HIb8wITuclEWb5ABSk PNDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738603777; x=1739208577; 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=Tf+gynoUbS6lxW8GWMLHyFia33+uFkAfKbxTriQ8gQk=; b=mTsaQZ6h6rMbr5KgUun/y4SaQf7k9uAE6meLrCMeWOiO4038F7hVRV3If2i6wgpvef AtPJb3EF431pdmxIgOjq/IUy7ugIHZ0NtxxBZULoD9wr3Gsic9fk7j0cPBBQvsyxkLj1 U29Yxu+LfNLLgErS3vHAl1c0EHvYTwrtQAIm0ZF+QB+e2zqyJqpaTLALP+SCylgGb0Dw nn1y0d8QrhI/YNA+ajd1antzopfzda5rta4Xp2hcvbX5Q/GuyVgt+x7WrE8Qgt0kh6AW 9a8VivbR6eMFjOflV3hhafyMZM0hjx+OB5C09zMIfTRcplzYKNvc6H6hFDhj5KXyOflw hDiQ== X-Gm-Message-State: AOJu0Yw4bzi5IGlCdb0bgFIhvaZhZnHDb/0bABXzrDeSRVepcS+oMkY+ iak4kbRp89n2lgAVJKgX8hHvfPaAq3gGCuHatxWvV9YMEk7kcl8LnPbtUiQ9rdA= X-Gm-Gg: ASbGncs/M0YZbwPBYv0xXyvx4Lv1aHjCi1Bqq2Ho4kwBHsQHP2kMUzBzjcLGWlmgVVv w67WugsZBtAj+qwSKN+I1k9ShdF1f+6a01uoZrMtXrPUPr2li28YHyp+Fi+ZzUy5NY9LngYAwBJ MlD83fvYnSLFXIo9i6JkGnET1Qype8pHKEKPWKRz6ByX6QbiytOq40MjbpaGnOjTYtvm0N5OMrt S8ym0nALm7bDpYbwnL1lkR+l1Iy4Ck5bf6aHUOR+BGjLLcMP6YmQmGZul8p+4Zr3x7Ac6JMqi84 n7yiqUNU6lGowuuaqwuaZOptyELQ4Rw= X-Google-Smtp-Source: AGHT+IHpCi8NFdRZPkNyfk3QyLKPMrZikIzHsaOMm+NxpNTCIpyZ/wD6KwoRM3Rv4yDTUHoHPY3etw== X-Received: by 2002:a5d:5889:0:b0:38b:ed21:c2ad with SMTP id ffacd0b85a97d-38da4e44075mr142580f8f.10.1738603776796; Mon, 03 Feb 2025 09:29:36 -0800 (PST) Received: from [127.0.1.1] ([178.197.218.144]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c5c122e59sm13528122f8f.55.2025.02.03.09.29.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 09:29:36 -0800 (PST) From: Krzysztof Kozlowski Date: Mon, 03 Feb 2025 18:29:19 +0100 Subject: [PATCH v2 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: <20250203-drm-msm-phy-pll-cfg-reg-v2-2-862b136c5d22@linaro.org> References: <20250203-drm-msm-phy-pll-cfg-reg-v2-0-862b136c5d22@linaro.org> In-Reply-To: <20250203-drm-msm-phy-pll-cfg-reg-v2-0-862b136c5d22@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3986; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=zlnos82iUqx+CQNn8/y/plTrr00WcMZCC6iMPwasfUA=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnoPz6SXke1wN3LIxQpJSGHIG66Ahs05fJYVm97 EI55upUv52JAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ6D8+gAKCRDBN2bmhouD 17mjEACTFIg2S5sLDyvJm4cvRIu+58N1tdpml8Ho4aDS5A5mzbv5nDSQWGscQ6ljI5t9OSmyelR 52A6qLGVFefVpEEpaxw+5jbD/Gnac1QsvtOKvYzimBAXKaXegC2ib/um49dePLH4ucgVnF6e2xI GIJql9srxKV3yHXOYImS9uYWqkiKNtad4Zv0k8MSXRU1bwD50MwxDAT6jMc2OsSWl6KQTRsQ6tR kSEZc0l5I1K9IoWdthde7Dyzg8tTGvrd6bkNp3bqwFwpKFrhDmoZlKDKHNr5BhH2YR0Il3j/F0s M+cEIiDjOFhcrZGAAsUGheMS7PUA/BqOcu3aU3lqzrxfLUy/MJRNfuiH30NYo3GzQ8qv69xBssn /+Vr+579/tSyDrsXoSs7FvxGqAxKi6EkWAAJt2/36qbcK4HyIC9DChZQ/hqIK+okmYRrwkjE0p4 Jzvo1yctgd57P2YQNfumHu5FNMlxYdYrMnvkPPq8EPIuJ4u9f6zpSqymJpxxp8B0UKt6IePF642 pTXbF9H9tNw3zY+tgaswu/lBBWHxRGFNLzJ9SlSev2nN9Q5VasGmouLOlax0LPb2rKiCTcZMVjU KZIxOu1nQDbsKA8VLWxousm8vWOwe3B0mkdPQw5hWE3Y7uyxben/ffY27SUS64CQA1ujKG1x7yd FYITAlGx+wi/PRA== 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. Fixes: 1ef7c99d145c ("drm/msm/dsi: add support for 7nm DSI PHY/PLL") Signed-off-by: Krzysztof Kozlowski --- 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 +++++++++++++++++++------------ 1 file changed, 22 insertions(+), 13 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 c164f845653816291ad96c863257f75462ef58e7..e26f53f7cde8f0f6419a633f5d39784dc2e5bb98 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, BIT(5), 0); } static void dsi_pll_enable_global_clk(struct dsi_pll_7nm *pll) { - u32 data; + u32 cfg_1 = BIT(5) | BIT(4); 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; @@ -585,11 +597,7 @@ static int dsi_7nm_pll_restore_state(struct msm_dsi_phy *phy) dsi_pll_cmn_clk_cfg0_write(pll_7nm, cached->bit_clk_div | (cached->pix_clk_div << 4)); - - 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, @@ -742,7 +750,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; @@ -787,6 +795,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; From patchwork Mon Feb 3 17:29:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 861585 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (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 D120A20B808 for ; Mon, 3 Feb 2025 17:29:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738603781; cv=none; b=hK9pR69nvfpprZjq8ZSzP3ay62G7iTxr9k3/8qPyylGpME1p8b6UYLAICHqK7CNb7XcVoViI2U0JRUhZwgoOq5sjnbyeEt2FNkN0y/T5tS3iVtmzMp2hopzWJr26kevmTdPimfSJRYAg4hUIS2OAgMj38fW5bBVSnh5Gdx6ULeY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738603781; c=relaxed/simple; bh=hyETAALjAp1ZZkmUcX9prHNyliCQYJnSPIVGqiYhRz8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HFrAj2kMP1fLd8QwsEuz0qBRtkPkL6l3QStyAEFEcvjUWsRUKTfgMiuKYOfqxzbpv5iXZbbAwxjNkauYrgSawLMfpxY9vKP8I/0PxN5ZowA8godvg+kU25UGMikycCPINZKwYS2DQETkv4DUJNK5zoQeIMq94QmxnCMhRN6EdC8= 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=RTMIFlAr; arc=none smtp.client-ip=209.85.221.42 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="RTMIFlAr" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-38bec08834dso339369f8f.3 for ; Mon, 03 Feb 2025 09:29:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738603778; x=1739208578; 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=ZJ4SckAe3M5hIc6bII4OvJM2A7o5F83xDKuWL0+57KE=; b=RTMIFlArVDT5vELC+OTFrYoX/+shiD8E3Q3XIm9sl7e/5EwRD6HMLRIFsKDGviZJl6 8drNKdqM+5gferuBij1MIJk/Vy/2KJYj1vtJvmUDKFystwNxTY0icEw6eqEe11LxVEH/ oRTZij8oXIUw9jlxk7vpfI207nGBokyriwnx08PHtvoi0rQOtzSSMzh+GiGOMxjyWQ1p J+xWJw6Xw86fgF7AFfLzO8E0UHrzOU/G4XEQuWFvZXefTqIDAkKby5TxEZ0AKBDzPrBy /RAP6mIo85F78Dj+5bQYzvWLodxO23F4hpA6+S74K5r5ZZbcaVjlytJbiSoPLj48Prej r2rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738603778; x=1739208578; 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=ZJ4SckAe3M5hIc6bII4OvJM2A7o5F83xDKuWL0+57KE=; b=Sf5fBnU0lzxmBcFuo1xMNLTraEDIyEfFMTgzXR6i8I+R5lhx2O+7/J0wQdcpmr0Fit W9CbgcGs4qs1m7FLH8Ehg7x/Vw0hQtO3Xo8QiUtrB3qtx8RSM+nokl4q4if2SEsb261W HzITtzu2SDsbWgToZmZWvIc6zFjleWW4nBBeHl+OREUMylW1w3pGmNtD5aNGVOKOL6Zh UH4e5zmF0sOi/1OKoyqgKC3xhAXtQWFgA1rNDkFkvxtw3XWs+MUUOI2BttrYuayUemBA zJV1PCgx28E+/0u4u0pKapfp0M+1XREfgQgT0Qj3lu1k+Xr2NYMcALLBwxoMjInrwFT+ 2KKQ== X-Gm-Message-State: AOJu0Yzp+i2Qzw9JDNJ+4zrSTyLBJ1GTZtzzdlND5s6qKPtQZgLuELnJ KidKKy4krzuYyKQQXqpF2zVu4h0Uwu/9b+IQMOpQPmlcvgQwNUcBa6THb+zJy28= X-Gm-Gg: ASbGncvcnMM/MJMu4qFov/Q2YI8oeDEEOzuLv29nC11kuEBF/Sq0jNT8cX1ohhRW63m lGWWuuuLSa+XLzw0s87JF16BXhUvjQd1Vx/1MzaxuPb/piLBpN2jZLNwW2AF3jRNLzaw3mwcfps 9Gpp38eBaUd3jx6d1Z+0I13Pi18km201K7M8e6ERVoaVrG94uBqdnPv74LEUvJKpk/g/oMZcCoj /uUqhLU+YTTu5sKBnLSnwxx85So/NvYGN9enDkPQIGVThLAdV6t+BYaVFwj9RVSJE8EChz0QzTl WhEhgKCedPrrs/vHFPjzN808XJgx5q0= X-Google-Smtp-Source: AGHT+IFIj4gRIDP4pX0InpsIa4ZwSNF/sOa8F+6utSwOkoqKvTqGjRdYhd1+BwpOgmBytJ4Gc3rcYQ== X-Received: by 2002:a05:6000:1acb:b0:38b:f3a4:4e15 with SMTP id ffacd0b85a97d-38da4e027c5mr148030f8f.4.1738603778081; Mon, 03 Feb 2025 09:29:38 -0800 (PST) Received: from [127.0.1.1] ([178.197.218.144]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c5c122e59sm13528122f8f.55.2025.02.03.09.29.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 09:29:37 -0800 (PST) From: Krzysztof Kozlowski Date: Mon, 03 Feb 2025 18:29:20 +0100 Subject: [PATCH v2 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: <20250203-drm-msm-phy-pll-cfg-reg-v2-3-862b136c5d22@linaro.org> References: <20250203-drm-msm-phy-pll-cfg-reg-v2-0-862b136c5d22@linaro.org> In-Reply-To: <20250203-drm-msm-phy-pll-cfg-reg-v2-0-862b136c5d22@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1491; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=hyETAALjAp1ZZkmUcX9prHNyliCQYJnSPIVGqiYhRz8=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnoPz7wTiytFmItVkhR/QVQhjlyp7a9NNDuCzGS viLLXyQdLeJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ6D8+wAKCRDBN2bmhouD 13ecD/45uNqBQXPujtKXQplCzdZ1S842t1bD975cTQzBpJN1MF75/iexO0wkpEJ6CNa0k7fiP/H RE2nQ7Q0HPfls6Secz/pG9DTzy2OSiQmnOHq6eOWExVJSl6cQcjZ7o0+y21srYhpSdXutcpJ6xp kGJN7lQyXyOJ5fFGnPWALIeNVf0ozbkylM/Vz4rac4IqDcf1QfFvNA69wX14RhVxuyBsRLhq6z8 DKj5oBB3OU1ahAlviKu0t/QQjTzGe93CeZVECz1mQYMeP7t0ARY+TWzCwSxfz0ruWi9wOLMsUnL tD0C/XZyJWAkMmPQvPdxXpvxi5iygP95ZVkYu7RZJLgbsS3BlkQJaacvP9/SjDzQ/FM7F6/l3nq aSGm0kDHrtl9xKUaJYfzGT//rbAYE7+kC65UxR0/duievXHCMFHaCd+kK1EmI9RmTYintf5RMWQ wTGUO5QpvM/s1cwyaVRE+BDfVT63Usc4PoQDKMTMDcBI2/hO86rn5zEwiqpAiHQwmj0p8CjsfYc z44BJYZt19buIAOLuaMGpVtKb0AmjGXI7m43Ves93B7laSLFisFFqyWirB8cUp8sNbeiSimpZLh LINguzbhhSWwMtaI2sxpN6vcKNUsG4zvl5703fAv43h5uvZI1EFLXtSFgw0MOjYo5K0ts2+uxAt wzuwFw28fzFFykw== 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. Fixes: 1ef7c99d145c ("drm/msm/dsi: add support for 7nm DSI PHY/PLL") Signed-off-by: Krzysztof Kozlowski --- drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c | 3 +-- 1 file changed, 1 insertion(+), 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 e26f53f7cde8f0f6419a633f5d39784dc2e5bb98..926fd8e3330b2cdfc69d1e0e5d3930abae77b7d8 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c @@ -616,7 +616,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); @@ -635,7 +634,7 @@ 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, GENMASK(3, 2), data << 2); return 0; } From patchwork Mon Feb 3 17:29:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 861584 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.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 494F520E038 for ; Mon, 3 Feb 2025 17:29:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738603784; cv=none; b=PhlUKk9RuQjmWPGEkKaZnFjdYnBS/2xK3T5al10yjDFPv7CiP91cIhfHA8eZ9SPD8q/3NQqmVZYNseYsEZyfzFb6sgIhgfnRUCv80bpjc9eYUdJuQT0uhRqePyapYx3ZoN3nJ3KPrIL78ORLubvGFSvpuqTZJm0ieJqNgoEQe3c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738603784; c=relaxed/simple; bh=8J9yPH7vzWSfYWlIvW/7lONVx1z/scQLxZ+Dr1iePJY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BY7k+DTmwqd9x/khJA+9K3XOHciH0vV8oCBUV6ilQHxtGJkZNTHAZMIoQfJSE8inu0Oh2BdAZrH5h/3Iwe2RM49wwxirSVNSaCyOLUzqlcNXpJ5W/Yg72PcSS5WFc1gzQpv/wkfr1aBjl/xHZBz/CrpjgD2SYmEpw/Eb2kBH/HM= 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=F3mt4tQt; arc=none smtp.client-ip=209.85.128.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="F3mt4tQt" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-436230de7a3so5888825e9.0 for ; Mon, 03 Feb 2025 09:29:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738603779; x=1739208579; 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=GFEJkSWV8EqlxS4ccHV0qsfBF5Y8l25q3xX6ZVEbfhk=; b=F3mt4tQt/MN5QvY1Lh10RffPjKoJ2cOK1ifyIWffmDtzEueKUdLqnXMBFRKBkUDUzt uv0dUIJpRB27IdfOFpdnf8/6SWS65AIZK3h2FysK2Q8OWoMZT7k10vp3nnCZw6F7oF3k bKobfptzVHiz8Fbo5AJeN5bIV5fmUqDVvzZmCZ4F9laFW6rKM+kNYr13A887va5kB/cK dM3n3e2bBlLrU3SXNxM3QP0MYIszzZyWvGOk9OR7pdkPK4Bv4qe7hEE/XGR8RfHs/YOQ 7Cf5FzbMuwvIn1/k/hQ18QHljVULK1+IpuygdQf2UnZ82cIEUILN8addTiMhuh7+8hzo F8hA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738603779; x=1739208579; 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=GFEJkSWV8EqlxS4ccHV0qsfBF5Y8l25q3xX6ZVEbfhk=; b=X1AfPeaTkvXEOQtmpOw2mOqSNWzf1N1Hl8BMqzjQuAKrUT3x7oZWR1k0yb/J2nE73Y TEVOACpboubv8vGE6YFSCdvjAZqg87NbKP2qKG04XJB5lo8ZxxPtJYgn7QNrC3rLnh9v dQT5mTyO3cvCYADGVg72V5LWxVPqDA2kxGMmh5qAF18Clm3Ual8icuGxnAJMyWw8UPAI a6h7tbXFDOAaVyNIPwsv1h+EsaIRWF2rHeEKdAIpMRWeRReI83GH0QeQmhjtaHPZITPa LsPlIhham/pcdoKDTI1Tuf2p4PVrjdxKZ7V8vpPnORe+Bm8oIBYnCaxZuNKRfzhssCFB VLTA== X-Gm-Message-State: AOJu0YzLAEJC0trlSjBJB8LbMNV2Hs5sWwy7YJ+gkXsIzGicmYt8/i4V VrvrzGxYc+k+H0/U3AYLcn/AfEqhE7cvVfZrTaQLH2M7lCLi0Gtrf/roJQ9/JKA= X-Gm-Gg: ASbGncv/lYmBdsJeHXNvHKpWN6wSvRGqn4wDlCryGGJz+gOpoau7ViDE1L0aFuRVRo7 OAE/T8YheHkYhHSeX9BhPXkcvWTO8lk/WydHIJO7oFpdJzjCpuQOUagPcw53WzqU6N2JW6vPcWS jJgkRLz4OZEVG16DxSJhhDkRiHHEdEVOt9KQE7k5mXdToLF8rrrSP8xXrOlbluggMyVmTkUzJHg 5Ar3mGxBZVXS9XquNHDg7eN88O9nYE2FZuXhWu1T9LeuuMwMk2lRQPfkvjdBJxVik5vIHBJCdCe fT214b3syZTs5CjLR/IiHmVAGGL4Too= X-Google-Smtp-Source: AGHT+IHAZR31jk7cgQImdAXKbLZVi3PgQDQvGTzkJyq/KIHOb1BAE4Ed3PCPRMwsFm7IFfCJtLB63Q== X-Received: by 2002:a05:600c:548b:b0:436:17f4:9b3d with SMTP id 5b1f17b1804b1-43905ac4913mr1728715e9.4.1738603779408; Mon, 03 Feb 2025 09:29:39 -0800 (PST) Received: from [127.0.1.1] ([178.197.218.144]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c5c122e59sm13528122f8f.55.2025.02.03.09.29.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 09:29:38 -0800 (PST) From: Krzysztof Kozlowski Date: Mon, 03 Feb 2025 18:29:21 +0100 Subject: [PATCH v2 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: <20250203-drm-msm-phy-pll-cfg-reg-v2-4-862b136c5d22@linaro.org> References: <20250203-drm-msm-phy-pll-cfg-reg-v2-0-862b136c5d22@linaro.org> In-Reply-To: <20250203-drm-msm-phy-pll-cfg-reg-v2-0-862b136c5d22@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5553; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=8J9yPH7vzWSfYWlIvW/7lONVx1z/scQLxZ+Dr1iePJY=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnoPz8U+LiZC73yFpJFPRfF2xbFXgicoUahB2Wt 8PLA7CrdsaJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ6D8/AAKCRDBN2bmhouD 100GD/9lVGCRE731lWWUz4GdQLNxSdZ55RES0L+uItHvLkzhV5GSP7VvyA3mfDGylnkqGHDD3dE d1doKuC6a0ZsMD54rshnuwWEi7Q2QGydWWHqaMyOLGMGvfLERnswhH2uOvu4e/PLM+ubSweZUQg ppNlnxj//QI+gGnc3D3DONFaPLhdJHRTYZQn4lBxf+uF4d/OCoxCg22kF/qpheOarxa725F0xpm LxXHDj6Fzz+unuesi7vODErgjXGyn0t0vfXLu+pt/kUkfOBahieHmj+KVMAoHKONySwBqFhd+Nz ApC3UHAdquEuLon8PO6mI2LFt4T71/e+IOi6uhUiOBD45so48KtJ1o5S84s3thYA30Ll8gstYjZ n/XBlAG3942Em02ovnGIPcsVtXiE3oTlcM7wW8bLlnxOX9Qn0JCC9k3FsUigTEvy95FSJ6q8l1n VXeuyLATS6ie1PdJzyZKoug/RYJC1SxWkNuRCgpreBHL8/8k2Sk67O5FEQWzWycFaIN+QyFwkiB ThwGRH2H7EtoZ8/p8dwmjLIgZjpR/c3hRTM9a6Jh9d31cPSukSN1ksHL9eHGSZB/JihmQuEzwPh KCkRO84+WuLGbvRaU7WOTgaVLaXA8yNV1qCebEOUGxpEkqd3XY4KOzBtLNu6H21a7QBb9BP1X8j 4Ozsnn3H3c3YqIw== 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 v2: 1. New patch --- drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c | 31 ++++++++++++---------- .../gpu/drm/msm/registers/display/dsi_phy_7nm.xml | 12 +++++++-- 2 files changed, 27 insertions(+), 16 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 926fd8e3330b2cdfc69d1e0e5d3930abae77b7d8..b61e75a01e1b69f33548ff0adefc5c92980a15d7 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c @@ -67,8 +67,7 @@ struct dsi_pll_config { struct pll_7nm_cached_state { unsigned long vco_rate; - u8 bit_clk_div; - u8 pix_clk_div; + u8 clk_div; u8 pll_out_div; u8 pll_mux; }; @@ -401,12 +400,12 @@ static void dsi_pll_cmn_clk_cfg1_update(struct dsi_pll_7nm *pll, u32 mask, static void dsi_pll_disable_global_clk(struct dsi_pll_7nm *pll) { - dsi_pll_cmn_clk_cfg1_update(pll, BIT(5), 0); + 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 cfg_1 = BIT(5) | BIT(4); + 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); dsi_pll_cmn_clk_cfg1_update(pll, cfg_1, cfg_1); @@ -572,15 +571,17 @@ 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->clk_div = cmn_clk_cfg0 & (DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_3_0__MASK | + DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_7_4__MASK); 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, - cached->pix_clk_div, cached->pll_mux); + pll_7nm->phy->id, cached->pll_out_div, + cached->clk_div & DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_3_0__MASK, + cached->clk_div >> DSI_7nm_PHY_CMN_CLK_CFG0_DIV_CTRL_7_4__SHIFT, + cached->pll_mux); } static int dsi_7nm_pll_restore_state(struct msm_dsi_phy *phy) @@ -595,9 +596,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); - dsi_pll_cmn_clk_cfg0_write(pll_7nm, - cached->bit_clk_div | (cached->pix_clk_div << 4)); - dsi_pll_cmn_clk_cfg1_update(pll_7nm, 0x3, cached->pll_mux); + dsi_pll_cmn_clk_cfg0_write(pll_7nm, cached->clk_div); + 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, @@ -634,7 +635,8 @@ static int dsi_7nm_set_usecase(struct msm_dsi_phy *phy) } /* set PLL src */ - dsi_pll_cmn_clk_cfg1_update(pll_7nm, GENMASK(3, 2), data << 2); + dsi_pll_cmn_clk_cfg1_update(pll_7nm, DSI_7nm_PHY_CMN_CLK_CFG1_BITCLK_SEL__MASK, + data << DSI_7nm_PHY_CMN_CLK_CFG1_BITCLK_SEL__SHIFT); return 0; } @@ -737,7 +739,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 d54b72f924493b4bf0925c287366f7b1e18eb46b..d2c8c46bb04159da6e539bfe80a4b5dc9ffdf367 100644 --- a/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml +++ b/drivers/gpu/drm/msm/registers/display/dsi_phy_7nm.xml @@ -9,8 +9,16 @@ xsi:schemaLocation="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd"> - - + + + + + + + + + +