From nobody Mon Feb 9 00:46:54 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0F1E8C761AF for ; Tue, 21 Mar 2023 17:58:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230145AbjCUR6c (ORCPT ); Tue, 21 Mar 2023 13:58:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56176 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230416AbjCUR6Z (ORCPT ); Tue, 21 Mar 2023 13:58:25 -0400 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7493D1C5AF for ; Tue, 21 Mar 2023 10:58:07 -0700 (PDT) Received: by mail-ed1-x535.google.com with SMTP id x3so62969217edb.10 for ; Tue, 21 Mar 2023 10:58:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1679421485; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=beQg10Ver7dN23IwCsKB//20vr3DygviG7yoTEe+FxY=; b=QYAinkUisZBUcqo8VDaVOtNZcE9iFdEWTyzmy+5Vslhmfcvc2PXM46b3gIzf8PAWNg wk0cuUkFBYCNPNdWsdLs75cyRkOfwGriVmanTFGFlETNqFqo+vVRhE22syEXMoAc9YT+ l3W4AOQF/7195XmOmm9TRVJ+f2Iu1nTZ/mW+CJZRAfSzResa+vuByUXUjgjkMWReRX2N /28pe7mcY0it3eefC1NF6gAxt+MYwlGEE+fSDAhzvXVeyFDiq2H3jJst7I1sJOOOSlWl H587CiPo+Mczy397Hvvc6VZ3O8LQZHVzD6AmcNx5XrHWiMLMVuVgF1gRtnWi3rhlBEcB go3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679421485; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=beQg10Ver7dN23IwCsKB//20vr3DygviG7yoTEe+FxY=; b=4ZAq+Bk3m+rfrKk/Z1V2xFvzt6bGAHQhB0SoA9VWUUwgpFM5/hmlj3icLGQof0WFW8 rnDMsvNHYj50fbcupAIJ2HOy8jpbRWkuXTa+rIhnGhDKZ7B6zQhASONIoqsVfMwPFk/f 88Jclz0mcJ/q/jNauaWGKeH+PT/wCQWHynr7n0Gm/wBgqdfs66o6tuDyK4UH7m0ul09t gTmZmszKVdIwbScGXdPwUtwUhjqWJR7FkqIb2nujOKDfISpEbqDbcz31lAdTSt4ILDXK RGtjFRuZPhNEpmcD7WKpTzcGTs2xb0h1zZGjqCdrmUtJ1ZQePblZPWu5d24uZvAxuvoC QZbg== X-Gm-Message-State: AO0yUKXhvhAz2TzYLw9pYXBi+hBK+/pDunwF9Yr3SttXsNItn1utOF0m euBNuH7GG8xLMq86ubIjupgBbg== X-Google-Smtp-Source: AK7set8gOMiqKZ8ghAMrSL9tsj+E0T5/dhTV2S9V9Tjnei/fZr6elg7a8benpEtAOLJHv9tHtR9fcA== X-Received: by 2002:a17:906:2855:b0:92a:7178:ab56 with SMTP id s21-20020a170906285500b0092a7178ab56mr3498973ejc.39.1679421485742; Tue, 21 Mar 2023 10:58:05 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id p9-20020a1709060e8900b0093313f4fc3csm4887360ejf.70.2023.03.21.10.58.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Mar 2023 10:58:04 -0700 (PDT) From: Srinivas Kandagatla To: andersson@kernel.org, agross@kernel.org Cc: konrad.dybcio@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Kandagatla , stable@vger.kernel.org, Amit Pundir Subject: [PATCH] clk: qcom: gfm-mux: use runtime pm while accessing registers Date: Tue, 21 Mar 2023 17:57:58 +0000 Message-Id: <20230321175758.26738-1-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" gfm mux driver does support runtime pm but we never use it while accessing registers. Looks like this driver was getting lucky and totally depending on other drivers to leave the clk on. Fix this by doing runtime pm while accessing registers. Fixes: a2d8f507803e ("clk: qcom: Add support to LPASS AUDIO_CC Glitch Free = Mux clocks") Cc: stable@vger.kernel.org Reported-by: Amit Pundir Signed-off-by: Srinivas Kandagatla Tested-by: Amit Pundir --- drivers/clk/qcom/lpass-gfm-sm8250.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/drivers/clk/qcom/lpass-gfm-sm8250.c b/drivers/clk/qcom/lpass-g= fm-sm8250.c index 96f476f24eb2..bcf0ea534f7f 100644 --- a/drivers/clk/qcom/lpass-gfm-sm8250.c +++ b/drivers/clk/qcom/lpass-gfm-sm8250.c @@ -38,14 +38,37 @@ struct clk_gfm { static u8 clk_gfm_get_parent(struct clk_hw *hw) { struct clk_gfm *clk =3D to_clk_gfm(hw); + int ret; + u8 parent; + + ret =3D pm_runtime_resume_and_get(clk->priv->dev); + if (ret < 0 && ret !=3D -EACCES) { + dev_err_ratelimited(clk->priv->dev, + "pm_runtime_resume_and_get failed in %s, ret %d\n", + __func__, ret); + return ret; + } + + parent =3D readl(clk->gfm_mux) & clk->mux_mask; + + pm_runtime_mark_last_busy(clk->priv->dev); =20 - return readl(clk->gfm_mux) & clk->mux_mask; + return parent; } =20 static int clk_gfm_set_parent(struct clk_hw *hw, u8 index) { struct clk_gfm *clk =3D to_clk_gfm(hw); unsigned int val; + int ret; + + ret =3D pm_runtime_resume_and_get(clk->priv->dev); + if (ret < 0 && ret !=3D -EACCES) { + dev_err_ratelimited(clk->priv->dev, + "pm_runtime_resume_and_get failed in %s, ret %d\n", + __func__, ret); + return ret; + } =20 val =3D readl(clk->gfm_mux); =20 @@ -57,6 +80,8 @@ static int clk_gfm_set_parent(struct clk_hw *hw, u8 index) =20 writel(val, clk->gfm_mux); =20 + pm_runtime_mark_last_busy(clk->priv->dev); + return 0; } =20 @@ -251,6 +276,8 @@ static int lpass_gfm_clk_driver_probe(struct platform_d= evice *pdev) if (IS_ERR(cc->base)) return PTR_ERR(cc->base); =20 + cc->dev =3D dev; + err =3D devm_pm_runtime_enable(dev); if (err) return err; --=20 2.21.0