From patchwork Fri Jan 31 15:02:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 13955442 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.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 72C521E47C7 for ; Fri, 31 Jan 2025 15:03:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738335806; cv=none; b=Szf5xcVK3L6aeYYyp3tIXFGPHLnWyMCJjSbDxYQRTABCq7p2PXsEHpAn1v/pvrTCxcA9GKvvCc/3wTWU3qjwzeBzSJ9oAyqphbaYqRg4QnZM89dCjLZmNk1IPBnBIUVkHNM+EO/8Shd9oFKP8j4o/u7eztgCxmz9wTfDhzgGDpk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738335806; c=relaxed/simple; bh=TQMpX2q60ioSuYRUXxHVBxFSOpUM+v7zvcx6K2VHOjQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aiByhmZNKd+AfQUateHZSuIFg7JNQEphp4Q5c6BJ/No0PaVZFi7rVKRwADk7rxsL9qw4pogl29G0+DuWwHeicS2VWZDWbFRzRSUab7FmNmcsX8Hc+HNCk5hlb8BpC1a0dyeEwDt8KpoFaXnqa8+Kz4452ObmjBHVns/G2gLJmlc= 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=MZT/RlMQ; arc=none smtp.client-ip=209.85.128.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="MZT/RlMQ" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-436246b1f9bso2968655e9.1 for ; Fri, 31 Jan 2025 07:03:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738335803; x=1738940603; 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=vOG04vmKwSpyueEe3IB81azzOYNf9nZXosv7oYLCah0=; b=MZT/RlMQe6Cp3VtF55LuwREQJTL2UPY3a2s2P2k0VIG1WNJmpaJl06gUNdhnLiCHCz VFvPpEdpq4nqUEu4VxMhtZAHtubgVGjctOz090y+cSLMuQllDQDDYvhATNjjcT2041if wZQDNEsTi2d8174PVrFJEfi4pQlugK528tFgbW62jHCC83c27bDqO24VH1PWvQ8iDmrC nmwPE2E9Sq4V0nz1CIaNQpfI9yQ0Bq9rwGwuGHHTGJa2ygRVk0nO5Qs56KSTmvTDwLRw iMWeNa0C+CFoQY4a5SvwDPvERQDh9cPLpvD/6N86ouYAKHUkhG4zARROHhH/GXzdOOZA hRaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738335803; x=1738940603; 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=vOG04vmKwSpyueEe3IB81azzOYNf9nZXosv7oYLCah0=; b=XYrfjZ6mcmRKuVzKo0yw6mp2MRPPO917DmEBARYEc0Beuy7AWdeMvqsFxtZot43Cju 7F73KDLfxXdqyNBZ34dpe8vedV15NtfIfpnUEPlpK0bb6X0ZrnrCR5NGIIMM7ZgEc0U/ HugM7ufxnUZ7UBDVGRssfOrggqjbUE5bs42bHxrcS8GcaCEMVxEe3juaUP4I+sg4SlKM mgVdjK6mO0ttAeqRKzJUHJ2YnwtqHOWWtZz796JE+TFo0Dnjj9vKKXIPG2pli5wj/WFR s9Np/r3xWO2vE9bOEuEXVF1+lIsRqQ/hjiefGKGixC2vcuo2skHZqo1/PRfJk9KTH2NW AvYA== X-Gm-Message-State: AOJu0YwdWhCdFZeeny1nK+9DtjkJcXK+UTYTeHNG8BJCdLPyXT1TDn1Q oyeQ74msdGN5Um+j6N19GPAEXOJJwyq5gNDK6B6ipcBqcFGB5zn5m/xRSBM/Np4= X-Gm-Gg: ASbGnctwYlUfiDjp6qI+521OvwFWB3W2CFKAynFfJnNjZLMdaIfa4tRmaRBdK5oB+Pi JMkt6ZIKZqID0I6C+Awg6Eeqpn29mVzPvAQLJM0usZ9HmGqZIqbRTNukJ7yNwMf5Ps4qwP9bo/Y 3YsDZA2ISQoBHW9GKsdRSff2c07gMcDUH7a58TJKKNBI35INY8/jbpoiNgwDQ/MGW+dWxMpT0tD GN8pUQDaibNAoaRaQnIzGPYHzSm7Xfb7I6xdVwryzZbi/2kV8DNj6QL93V+Gxm2otv6HpVuLiIG QlxUfjV58zVlYSEP0VbmCjfFPlx9FrY= X-Google-Smtp-Source: AGHT+IG0gOzbonjy401fUUBUdELzQ5desAwbmNzSYkgOdCuyLIAiMWn9cUJeegXo09KdZBWlNYXK9Q== X-Received: by 2002:a05:600c:19d2:b0:42c:bfd6:9d2f with SMTP id 5b1f17b1804b1-438dc3a3ea6mr39897945e9.1.1738335801194; Fri, 31 Jan 2025 07:03:21 -0800 (PST) Received: from [127.0.1.1] ([178.197.218.144]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438e245efbcsm56679925e9.33.2025.01.31.07.03.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jan 2025 07:03:20 -0800 (PST) From: Krzysztof Kozlowski Date: Fri, 31 Jan 2025 16:02:50 +0100 Subject: [PATCH 1/3] 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: <20250131-drm-msm-phy-pll-cfg-reg-v1-1-3b99efeb2e8d@linaro.org> References: <20250131-drm-msm-phy-pll-cfg-reg-v1-0-3b99efeb2e8d@linaro.org> In-Reply-To: <20250131-drm-msm-phy-pll-cfg-reg-v1-0-3b99efeb2e8d@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=1993; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=TQMpX2q60ioSuYRUXxHVBxFSOpUM+v7zvcx6K2VHOjQ=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnnOYym0KBKDhMEN2wb8SIxsqakbhU9C7pTdPul yz5WkWsN/yJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ5zmMgAKCRDBN2bmhouD 15kHD/9c4oyVXwtyotRJmwCneKgUX+w0FoSrMVh89THMgyOyMr/F9oOKG+hFzLDrr9Tt7BIba7P ykIF48LWVhx4yn/ctm1lBWtwPD7P196DQaJLivIfdcuKtAwG9KSTyA5HbzkgTIG+6T44bWISYTx g0TxXJTBAq7vDi2c/Rnv60NnamXCNqS8psx33J/HtTlFF1Hz9OaSeWE1wwyYRU2IM3iDlrhB9dg 8ddut5dznzY+PrJPjGpEgvLTJ056GurYKFqxxlJLxk740r4Um+U2N5Cq7qc+H5L8M5vme+uogvP mGfFCPmb9mp0Dy6kWxlYmSSzrEDUgciS62FVLDTbrlrTPD7oj65t/FuLviN8h48VrafC/d+FGqL 8kQLvT4zziEXkUdqYQ/oOPMxWm2jY2zi+kHsPwPsMs+FqsJvx208/fqefI9NjHNAJMxE98yq6/P iDt8/JHX2agVgHiSzRhy/AIGG5tWgXL1LcSoRhTaLV9cj5D15Oow+r1Ufyssoq/G+lc3y8kmMgo 5lGItK0HilEYpKIUyzF69EUhbEhRY0CYYgVk5eN0TJF/4r0korrYa7A+QjDh1rysioGwp33AeY8 15Vuj6Wk1T+VUAcLh8epJ/EcDyA1lErfvu9NZWjw+mUtJ6AztohP2NsnHv0FQv0oFzaAULba9fg ceHjFl4uHXMW6Eg== 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. 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 Fri Jan 31 15:02:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 13955444 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.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 2B0321E882F for ; Fri, 31 Jan 2025 15:03:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738335808; cv=none; b=HpLnBp8KYooOb8C2Hh8zKxHJZEOjFqKge36wVu42QZwpcvoa8KtWoVGapMOxQMtXYO3j3nTannZhloPKfXXL32V8bGVjfoyMcg0BjJPt2GEBb902BbA+PSkX0FRlBo0hzLsoeqHsRTgf7nplaxnZOvg34255WBX4LPJpJpOXDng= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738335808; c=relaxed/simple; bh=MzjWwbzWIs8H1LDVE5c7k4kuxK5nlvhG1DNnOpxI2Ws=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hiAYFWLmbAkOJ/q/wbomnkC2RRYGel9jv3teSF//CkshzJVujdqnIUxhUpeZ8JIlSIvjBNpYbuzWFSg/ePKx2J4n1nqSnNNmEmR8M3ikr/VjUN0sawDw06ZE67Kwnk8MGhq0p2EE1DTfAftpRe6pJj24qzAwIvCEfaRiVcV+XN8= 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=auodjU7F; arc=none smtp.client-ip=209.85.128.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="auodjU7F" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-43658c452f5so2849595e9.0 for ; Fri, 31 Jan 2025 07:03:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738335804; x=1738940604; 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=4h/tBpBjpFYt6cfG0kP8Ocw563Sweo8KNaY+K0HOhqg=; b=auodjU7Fgm4xIeAbRsNuuMzfHIbb5/oTDYiuB/yA0GXenEK9ZsQhiVXBtR834V9NWQ 9AJVdpEHzvNZhxcwtBNSlkkQ0k1esqTy/elWzykYsTLsnCRH/BAEwTaLvEaXRQYXRHYJ Pa9rkytyJUGSTjb1HqYvylcIrM5fYbIHMtS1eJaDuNu1R3xt/eco3ZAmAqVCHjnyaP4C s+umbFxqu0+DagEAginZ8c3VtXm0uU0FqgEwjMS7s8kZyr1+Bze6X9C29UNIEn2PTyfL TZpVF/LPDfEG9hQGLrvXBEjoHK6OdsYOlfNZvvabwumpsZHLU+qufWvzJuGcVG0/mx+l ZoCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738335804; x=1738940604; 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=4h/tBpBjpFYt6cfG0kP8Ocw563Sweo8KNaY+K0HOhqg=; b=C6JqKWlWk1ozdvCeSzfbwZR+yzHqTpSXSX1SP2Qr3KST52jEJ1olO2sSn5zxZzLAjb b4tz+bfEl0D11xoNuH4s84IJ3Y3XMe+oMW1F6lKDd2vCiNHKdi3yoYi4ZxiwwDqQeKaK bsL25r5UsOBX7sqC4QSznv663DBh0gdAuWVb+QWmT0VfIKnzI6TbeOgAgJ6hN9GlrofR uKeOqaMcxIZYFsDyYkI+zfB8i/USImoBd/3i+ZWknh5YwGlxCZCXIsyvAgyVLBhbhmv1 q64duxMRYnp+eiJdRa51myVViddA+oFUTDKBr+DmSRWxWcG/ncZ7Fui0nbllVo2HsEqR C5QA== X-Gm-Message-State: AOJu0Yw58mit3B3efjcyTdIrc8VtKzJ7quJYWhRzpy2Jg4B4w/c1zjky kc+qg88q29Ylhm5L1FALsbuIkXWsz5N9uhRoTyY6kw2ZZroIScuIMDYpXy5tTnw= X-Gm-Gg: ASbGncspLqcRQ8ItZuInv4lr+t6cxA4wcS/b1RN/QdhGkBwUXA4LR/3kl8/p7ntrTF2 WJ2fWIynsddV+/HrvIcr/s7PtVgp3DB1Roaz1UU+yZzd7tctzopQBmkYayMyLHHcAb1WYzfwrbX fjw1Utf8+pGgBtn4vTd1GEK6wZRbob5PD6S0mHBpoZjRIPQ4Z9f+hnFnjNjFHG151IdkZwXNEyg gAz3w/a+4fPbdKf+IVeKK/5ggjloMNlGJqj8HyrtVpuwGd/a7iLOtBFKy1S0ZtiwEu2X0xYvnVq CmZLDaP5Xfc4O8D2FIFQ8VlydVJJtDA= X-Google-Smtp-Source: AGHT+IGt/Ma1+xcecSjAs+tIN0S9176VFMEJoZh0tWzQpjFDOP83vGEsqq8F/1t/+/uO38xWoiotQQ== X-Received: by 2002:a05:600c:1c94:b0:42c:aeee:80a with SMTP id 5b1f17b1804b1-438e183fecfmr30041345e9.7.1738335802809; Fri, 31 Jan 2025 07:03:22 -0800 (PST) Received: from [127.0.1.1] ([178.197.218.144]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438e245efbcsm56679925e9.33.2025.01.31.07.03.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jan 2025 07:03:22 -0800 (PST) From: Krzysztof Kozlowski Date: Fri, 31 Jan 2025 16:02:51 +0100 Subject: [PATCH 2/3] 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: <20250131-drm-msm-phy-pll-cfg-reg-v1-2-3b99efeb2e8d@linaro.org> References: <20250131-drm-msm-phy-pll-cfg-reg-v1-0-3b99efeb2e8d@linaro.org> In-Reply-To: <20250131-drm-msm-phy-pll-cfg-reg-v1-0-3b99efeb2e8d@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=3807; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=MzjWwbzWIs8H1LDVE5c7k4kuxK5nlvhG1DNnOpxI2Ws=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnnOYz5iDHf4Qp20YJL5Udj223hj4lS787xPTNp gaRdf1GgciJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ5zmMwAKCRDBN2bmhouD 14m0D/0TkOdX7O2JJNLdgRDCRNTqbqeEHBXzU2CW4U2CqKnMqlYR11fm4SNRjb2lGhLO6uReKsp XtbxR9n8y7E41NScMxHH1OhgTZ1PCjPA4j74nMRVl4NnATy/HjnM5viCLZVTtDOizYXTELLmR5n RjW7EWK/RVgGGcrFmpiWKOFHPsYVm6OP0ifu/9nwMSHUnoJPCTb+bTnPHxFunDh953Yq4bKZQNv aFUE3jCtlt7mW1wN/rWFZ2YkMgUBzocomJ2vGw5yKBm2fMA7LsuEXbguVTfkcQsN5LwzUHiW/us pBgwU5Gbc3NKrQRwRd7Om3LTx9+kLRGgJtp7CoTL8FzOQooEV3eklb767VX6nKJcVJXw23Uia22 4EMD6j1zjIcyN35Cl4NDiGoPVcY55CwBJfplyYePtrtLyII6wnlQvUWu+lLOcThXcWmUAgMzUIm 0aV0CyY1MRbo8low9GeH99bNc3XQc4uqtPvPGwy9acLUX6PiduZbF+UJUTfMbP8fw6/fu6+ks1Y bJwYEPwZ/U+ZRGl0m0eKMUw4vR8Mcm9WvAmxTwqrXJM3tJQpUjpZTyz6LJX3VwctKQaEioCgJa7 NMrQ7cDPK4GrtzOx3mM5ZGTuQ/1tKKuJZm21addbAJvQoBxpq4Jf5wNcyjBIBVYWPswBumI49hB W4ZFi7pu8eAncyg== 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. Signed-off-by: Krzysztof Kozlowski --- drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c | 34 +++++++++++++++++++------------ 1 file changed, 21 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..6c18b9c0e1903bbd0090aceef13ae8c6f2e080ce 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,31 @@ 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; - 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, BIT(5) | BIT(4), BIT(5) | BIT(4)); } static void dsi_pll_phy_dig_reset(struct dsi_pll_7nm *pll) @@ -574,7 +586,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 +596,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 +749,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 +794,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 Fri Jan 31 15:02:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 13955443 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.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 15E771E7C3B for ; Fri, 31 Jan 2025 15:03:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738335807; cv=none; b=RD6m9GYxWnijvONd94roowPLz4Lv1LJUjdXquv6GOZNSW2/SaFoO1pKpRwrb1KSs5Xphndhyy/eR/aW+SHJjoP5JGdmnzSVAAzapX/Mn6AzzV8Js2PfgttFkjw9zoPX9oQvG82xEzLCsGewxJe427nnPFT7v9qg/0YCs7vEOtZA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738335807; c=relaxed/simple; bh=1sAXbb7jAADLo71PpFTSGgQtXDD+l/u76NbI+0/GtkM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=juBRxr9x/wXuoD+oKuK6ildLQ9aBkVsvpbszvijDMuwUp9gI8uOUzWoa0OLg6ybCXFwJo8OZoAX97lmioVoqhq0N1JLZV/gcLySAPTLS7oYZOBsdHsazunJxz2KqMR519D2lkgHL6poVnTdiFAThhVX3YZB30kiZ2zbcIN4nzHM= 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=U2sXtMx0; arc=none smtp.client-ip=209.85.128.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="U2sXtMx0" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-43616bf3358so2907845e9.3 for ; Fri, 31 Jan 2025 07:03:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738335804; x=1738940604; 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=m17uzmB00GT6kEfgwcoMSj/iyd95VX3uS9lZYb28L7c=; b=U2sXtMx0Y2Tyrn7V+9GXzRdB5jYjyygT3ZHlk1a5gZmkcDA51SNyuPb1ah/rEZpeTb H0RhDouABgw2TkW77NTK62t9qSOXRYUsThlG76yH0ByS6un1G2YNjQMRi4XQoJtd7Fxx LeRs747DJ8h/MeFxFkJBxz4brWxRaYhWlLwxdmMWjvIVHXY+VDZH/BPy1JyKql7er9q+ +UnyAiUvcgn5aU8IqgiwWL17OSdmVESZhv7oka37iRhO9PdrtOlmkclZbrTD/Fx+TnWt /DnYVL3aYh+FlquQwJHSmCj2xHCIv04YLX4IdVgjxRKpmxmLMORPupi9UMwn3CRtu+n7 8tCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738335804; x=1738940604; 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=m17uzmB00GT6kEfgwcoMSj/iyd95VX3uS9lZYb28L7c=; b=Cq0JwiRm+k4lXB359QFsXEXhlY0lNLdtUV+RuZkGqZF4tN/4JqWFPsIQ8QYwdwth0k +nObdgE2Rmx6uv9nfi1TclFn+k8yD7bnWfJc0WuPcIJdHWmCVB2FLjAWs+w/WJZxxmbj R+vrmVwDDqUOAvM3MuPvCVsSMroStXtSguy92woAjeOZSLpfPkzp78PVVLvReQcFxu8o W7+JNH3ATSAGl7hNKExqmubaxmQfuLSBLgJKFsLLzj9+UOjz+GPztXGNiKeZSaF0kLB2 6EIe81EDrYNSsYL2whNKIw4pilstMTIQTQr53q9G+hmhitaXDQihyBmqKbmgmOxQ+rS2 N2mA== X-Gm-Message-State: AOJu0YxdOdIWP5X0G3uS7/WRp2kc9Dc8WKzgwTTNDT3aYrhdxUqAEoxJ 2FtFnjUBM2lklKYRYDEGhkPtciFb46iNR8tU+rQHH4CyYut4Btk6vH6jMSatrv4= X-Gm-Gg: ASbGncu+YTuiE+Wf+xbigRg5qwocWBJmmfiEijLAxLcxUIcMwdlWhvXjSKoONv6YCyA dOJmDMf79Up2Pt3ZWD6/5nkd6ZACnS1ARZAvNQ+igOicUz4H1eYaGQ29sFLi7yjAWEn87NYGS4P gRE1oeJ76Vi2f9+ShS2rQ6MAZU0pSNBkOArTCaYORUsTURng9a+l675El79HUTMAcup6cSFEg3+ ZmfM96MBtLZctRbIvn1jAzAZd3IYJ0I6NJyEq780iHc+UV6CiMK0AAHECgxVgzBYaskwisiQTqG vyGuvrmoeEOgPC7+C4wyfsg/Dmp3eWk= X-Google-Smtp-Source: AGHT+IHa61acfT+KyNQENNAEd0Nj8SRxrL3nqrV5AysWz0NDU8+NBDLu7wkd4aqJgwMag9OUt64tTA== X-Received: by 2002:a05:600c:4455:b0:438:a240:c62 with SMTP id 5b1f17b1804b1-438dc43c9ffmr39701365e9.8.1738335804305; Fri, 31 Jan 2025 07:03:24 -0800 (PST) Received: from [127.0.1.1] ([178.197.218.144]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438e245efbcsm56679925e9.33.2025.01.31.07.03.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jan 2025 07:03:23 -0800 (PST) From: Krzysztof Kozlowski Date: Fri, 31 Jan 2025 16:02:52 +0100 Subject: [PATCH 3/3] 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: <20250131-drm-msm-phy-pll-cfg-reg-v1-3-3b99efeb2e8d@linaro.org> References: <20250131-drm-msm-phy-pll-cfg-reg-v1-0-3b99efeb2e8d@linaro.org> In-Reply-To: <20250131-drm-msm-phy-pll-cfg-reg-v1-0-3b99efeb2e8d@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=1421; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=1sAXbb7jAADLo71PpFTSGgQtXDD+l/u76NbI+0/GtkM=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBnnOY0/nyLoJ3CPnbjVkTxAPwcTEhEifYYAuKXJ U1YeJo4wEOJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ5zmNAAKCRDBN2bmhouD 16DhEACNy8BVbPJXOrrzsVVDwnau+ETcAxY7IIdQ9JObd8TVWIMy3PeuM3eKAEJCJ37CFfep3nY +ebDoCgMut6CmEcOP57zdy+YnCV+Caseuc20ifRjLKQAsta8OJ2iyjTVL3nH6d/ROUGfYaMfOfR rfJoce88n0/sCN0G3aeBwvk8kFGdm0zPxIIljWdg7/1lt99vmRDDo9O3XB1aZhrPPelmbEKPXph QQsZDu5MYnHYhiZCwpQ4OvAXR5DpVhxhXMjk079rDgFE8FBCjaDeUFOZGgwhlVOHwXoR5CvQBkm iHY/1HMqJVhK58xQhgygIQ4SSjGpuU/HKDpdWpy7f6F2FCdEKZk6VGP4NYTWPjkB0v21sHGUw0t NEAeQZXh0N49sV2IvJK+hBSJaDecQdFsBcl8T3mEMAJOmv1dcR/fqX/8jEF3cFWZR0UfcLtV4HA JtRNxMKk5z9W7uy3ox0nPytAEqWoIPu4PpT4QuF0bi/BhKh5QhKh/w3lfsoz4LXAS5nlet1sd8B mbD1GpB3aZxJizYxmAIBXabsVnAaL4mnJ0ZsFM0gdPAcfB7zdWXd9umiaubK4aef6KMvIcnO60O CBQd6oPxVjBwecf6pO2TSDYaiM6xUFiP2XjbEOF9af9kHs9mR6rFaAspq/qxYGVUPU7ZfTkqGLo O/y6v+ThTBtjsLw== 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. 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 6c18b9c0e1903bbd0090aceef13ae8c6f2e080ce..8a9ee308ccffc3b9d112a994a064d8be06d9c42e 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c @@ -615,7 +615,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); @@ -634,7 +633,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; }