From nobody Tue Jun 16 14:56:33 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 26C2E19E992 for ; Mon, 20 Apr 2026 12:30:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776688246; cv=none; b=rh+fxFhTyDEjp9FV3fxNtN/3hl5eLyEEcwoK6bzXrb42UoCfeRi+XNpPG/+P1MNAG8vHLLpRRmPEMWRWk6OebltdanB7z7kw3LNayFC/Rc56+5NCjUWIhSIUaFV0lmFkHdzrD9dUu7tTTOkjzB10Z0cvqEhTngAm4Qej25YPzqo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776688246; c=relaxed/simple; bh=qhPi/8Cw47sntmr35BWUgrKmvQGOUQjqOqJsQcufebg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ARf5zJnlvxFrLilkMOmnrbUK0wR2/nWWSvkV1ltBhEzk1as6u60mbFyUi3U9yD955zzJmSOsd1cHzor+2ZABlSYFNiycchtee4HL7UUlVqpXyPoBQ3qU+2KnTJkOUcc1X8fQNN3R98wDh+NUxLp6vfddI3fmPIBfyA4DuvQAMio= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=BssFsHvr; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Itcl89We; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="BssFsHvr"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Itcl89We" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63KBmbDG3212120 for ; Mon, 20 Apr 2026 12:30:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=yDqkVlDESOE DMcULEWWfYAZBcnFAo0NPM57qDmlT4ek=; b=BssFsHvrzC4fjmIbguNU9nCgImw 9WgwtO7F5BJB584QkSnCG6j8rcGpgfrhVkvEEnh4l1PyPs0xVsBL8R4b1/kg621Q Ah+LG+x45oWIE0xLspiORWm0VFTSZNLfy18z5ZbmqnE9m9eWPMFEZjCIC9yO3d2r Tt0Wxur7I9+mi3TpAUfiLMn2ei3SEo1amV2bhi8Is81RbAlxdBe+M5fEh/rXo0QE LSFW/gx1l/1nny+jvhfl2K/++zBdW1Vu+Hpm3Tqo+dRdct7gaLVPw46A+Po8Inds +8+JIb38n74z3joMjJ5YINLar0GzLW9VVBSggmL8bFSbElDALix55AhC0kg== Received: from mail-yw1-f200.google.com (mail-yw1-f200.google.com [209.85.128.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dnfcfhd32-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Apr 2026 12:30:43 +0000 (GMT) Received: by mail-yw1-f200.google.com with SMTP id 00721157ae682-7aa1e8734d4so51232657b3.0 for ; Mon, 20 Apr 2026 05:30:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776688242; x=1777293042; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yDqkVlDESOEDMcULEWWfYAZBcnFAo0NPM57qDmlT4ek=; b=Itcl89WefbnTve2mWlaTXgInaKIDF+b8T12Xhbed1LGp7K9/Z2cHR/UZnlgUkEbg0h jLKMP5HIDGLQkzbV+LWNnfNlLu9e/MvrcItAbVAO8VCVap8zqUGX+ZFqQB+Pj59971E5 CeyDmRvAf0AecEWTibv+9FHXujiurLcNvhj142PwMJMhTrj7FEODUkx7V13stQmkfPU1 YJFCnBCfRqdMhRISqh6JxA/Eejo8pzZXJ03z7GFwVv9mXDMLW5+qfoBjtb8s8PHBueN6 Uh9PEMwJLiUuRLs/IavyvpFffwbrWK3XG4K+xIXNSvbwnQWAsdjxSU2IQoAYu0Ua0vkF zuCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776688242; x=1777293042; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=yDqkVlDESOEDMcULEWWfYAZBcnFAo0NPM57qDmlT4ek=; b=YhGjfIb+5ocSbpYJqHnokByGFqlILOAeGvtZjPaRhNPaE7suumbPPfYHMrNsZOo6ES Z/NGNLpqC2x+9zbb98GbJxsw4fWMgwrxDdmRk+4RKd1iGFK6+imzHKaBPkGl+yuR0v26 JOEQb0XFjSPssisQFsZWCnfPhEX9sWpMV6FfxtfPFtDIFgac7UIN2VLh6uA6oOtpfx6I Z0zSaqxO0tUn3oCG2Q6viZO8Ys7N96vw8J0XxemcLEi8mWqClXzrnGzLTgj9QLxz/hof VHfByr7usnLcTJNA7H7CMMyeSz4K0yt0OIH1uEbPZhmzM/Cl6LoBnLaWTuox9rWCSRbv qrEA== X-Forwarded-Encrypted: i=1; AFNElJ/ciBc9ANlolT5qaMRfGL/mAeorh2HshYOVOC2UTi4ematR5hW/lTRGYZyseIjGzfGQ3ZmWZKYuZXAbJKc=@vger.kernel.org X-Gm-Message-State: AOJu0YykZwcJDajnHfwb+ELrjJvHbgc9kcbvmWc6XEwbQK+Wz9770A+t bTgR4K66owRJtZktKFENY+cRhi6DytKR2nApRwqIoGwTDj/XLT59ndfJVBUnjXm2vMm9SvPaOyU G/uUDTHC8FhXbYbWTHU06JqG5vhZMFyys6JchtgDaTQBNfHgrbz595O/kGQgoX7syv+U= X-Gm-Gg: AeBDietzsTSOKYNixtWdBTxbX0bPGgfv1GWswHhAYzMHYn6FeAjZznXMCtn5BKjKG6z 9RSabvGGHBgqGcXx4APxtaZlI5QVp/v+156G300dQxS2d3L+iaeGGD8ZFk6dM0mh8vvQIfy11Y4 cFfHgO+mWUDmaJUL8Ic075gD0pT89xJ97GwW9LjQURWh30ddCpJVCLUOJ0EgBsr8Z13jtThC/pW 7tvMcX6RH5r5HoqXXhK9fDjM6SsR++8kxckOUbQ3DUYuJq2ul3bXk5TEjttKkQAFa7la6yLcheE NbX5ecnsqpjqtRypCsw59kZ3N2bem8bG1/8QBxTX/ibOmD3wDRwqlQ0XVqOhtk0dddi4NXatJfl jvHK0wiERKhE7EGaqWCxvnAby9rYgj+vAfu0kP18yge4LIBCZa1gbfAUgoRxp X-Received: by 2002:a05:690c:112:b0:79d:67bd:53ed with SMTP id 00721157ae682-7b9ed00b858mr136993577b3.49.1776688242541; Mon, 20 Apr 2026 05:30:42 -0700 (PDT) X-Received: by 2002:a05:690c:112:b0:79d:67bd:53ed with SMTP id 00721157ae682-7b9ed00b858mr136993247b3.49.1776688242144; Mon, 20 Apr 2026 05:30:42 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7b9ee89aa91sm42785177b3.6.2026.04.20.05.30.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 05:30:41 -0700 (PDT) From: Ajay Kumar Nandam To: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai Cc: linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, mohammad.rafi.shaik@oss.qualcomm.com, ajay.nandam@oss.qualcomm.com Subject: [PATCH v2 1/3] ASoC: codecs: lpass-wsa-macro: Switch to PM clock framework for runtime PM Date: Mon, 20 Apr 2026 17:58:41 +0530 Message-Id: <20260420122843.327171-2-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260420122843.327171-1-ajay.nandam@oss.qualcomm.com> References: <20260420122843.327171-1-ajay.nandam@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDIwMDEyMyBTYWx0ZWRfX8zdB34FmjARX U2DoUV5x4RVPz7x3pz5qDLocujzELdsUggiJbfRsmUax+TD7YzsywzNWzl46GUewJ+qrUf5NlgI 7l2/DnUrse7uFh+rrMyntiD78NKHb+1heAKnWekD0ejJr6inJC4X9y3qfIeA33qK4seSMf2G3a5 1cmq8oIsVYZThA9gyh8WJBrartuXj8zlpFgUfowHn9O+cn6IBXnHENemWuEKtJmb12gg8icinwv qkKpK89AnvcIPJEQga8lPQrKj8Id8AhPzeOEpi2ZBIx70M4ILqNBz5mcGhzzpbFJw6eeJZ1/bKV nkKQcDAmHFKMI/rmkMga6Oc9n0Ihmg1oJyf+w30C+ie6yejyDDt2rmhURntI7cHEb+L5sEYBFKb JzM1GpGr9KM0mFd9VHkL75rAU/1b+lXnd3Xk26KBHUMJujYgbDJiisEevD+0xPYRXWjiMceUKmL L5Ho/bWs3ejnoOgNK5Q== X-Proofpoint-ORIG-GUID: 8Rfb19R6uB3F9h7OJxXyaXOrP_VXj4M4 X-Proofpoint-GUID: 8Rfb19R6uB3F9h7OJxXyaXOrP_VXj4M4 X-Authority-Analysis: v=2.4 cv=L+ItheT8 c=1 sm=1 tr=0 ts=69e61c73 cx=c_pps a=NMvoxGxYzVyQPkMeJjVPKg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=6iqXw53aW0HuLngz8iAA:9 a=kLokIza1BN8a-hAJ3hfR:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-20_02,2026-04-17_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 impostorscore=0 malwarescore=0 spamscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604200123 Content-Type: text/plain; charset="utf-8" Convert the LPASS WSA macro codec driver to use the PM clock framework for runtime power management. The driver now relies on pm_clk helpers and runtime PM instead of manually enabling and disabling macro, dcodec, mclk, npl, and fsgen clocks. Runtime suspend and resume handling is delegated to the PM core via pm_clk_suspend() and pm_clk_resume(), while existing runtime PM callbacks continue to manage regcache state. This ensures clocks are enabled only when the WSA macro is active, improves power efficiency on LPASS platforms supporting LPI/island modes, and aligns the driver with common ASoC runtime PM patterns used across Qualcomm LPASS codec drivers. Signed-off-by: Ajay Kumar Nandam --- sound/soc/codecs/lpass-wsa-macro.c | 113 ++++++++++------------------- 1 file changed, 38 insertions(+), 75 deletions(-) diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-ws= a-macro.c index b695c77c18ac..ded1cd8db831 100644 --- a/sound/soc/codecs/lpass-wsa-macro.c +++ b/sound/soc/codecs/lpass-wsa-macro.c @@ -14,6 +14,7 @@ #include #include #include +#include #include =20 #include "lpass-macro-common.h" @@ -2529,15 +2530,15 @@ static const struct snd_soc_dapm_route wsa_audio_ma= p[] =3D { static int wsa_swrm_clock(struct wsa_macro *wsa, bool enable) { struct regmap *regmap =3D wsa->regmap; + int ret; =20 - if (enable) { - int ret; + ret =3D pm_runtime_get_sync(wsa->dev); + if (ret < 0) { + pm_runtime_put_noidle(wsa->dev); + return ret; + } =20 - ret =3D clk_prepare_enable(wsa->mclk); - if (ret) { - dev_err(wsa->dev, "failed to enable mclk\n"); - return ret; - } + if (enable) { wsa_macro_mclk_enable(wsa, true); =20 regmap_update_bits(regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL, @@ -2548,9 +2549,9 @@ static int wsa_swrm_clock(struct wsa_macro *wsa, bool= enable) regmap_update_bits(regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL, CDC_WSA_SWR_CLK_EN_MASK, 0); wsa_macro_mclk_enable(wsa, false); - clk_disable_unprepare(wsa->mclk); } =20 + pm_runtime_put_autosuspend(wsa->dev); return 0; } =20 @@ -2776,25 +2777,23 @@ static int wsa_macro_probe(struct platform_device *= pdev) clk_set_rate(wsa->mclk, WSA_MACRO_MCLK_FREQ); clk_set_rate(wsa->npl, WSA_MACRO_MCLK_FREQ); =20 - ret =3D clk_prepare_enable(wsa->macro); + ret =3D devm_pm_clk_create(dev); if (ret) - goto err; + return ret; =20 - ret =3D clk_prepare_enable(wsa->dcodec); - if (ret) - goto err_dcodec; + ret =3D of_pm_clk_add_clks(dev); + if (ret < 0) + return ret; =20 - ret =3D clk_prepare_enable(wsa->mclk); - if (ret) - goto err_mclk; + pm_runtime_set_autosuspend_delay(dev, 100); + pm_runtime_use_autosuspend(dev); + pm_runtime_enable(dev); =20 - ret =3D clk_prepare_enable(wsa->npl); - if (ret) - goto err_npl; =20 - ret =3D clk_prepare_enable(wsa->fsgen); - if (ret) - goto err_fsgen; + ret =3D pm_runtime_resume_and_get(dev); + if (ret < 0) { + goto err_rpm_disable; + } =20 /* reset swr ip */ regmap_update_bits(wsa->regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL, @@ -2811,44 +2810,25 @@ static int wsa_macro_probe(struct platform_device *= pdev) wsa_macro_dai, ARRAY_SIZE(wsa_macro_dai)); if (ret) - goto err_clkout; - - pm_runtime_set_autosuspend_delay(dev, 3000); - pm_runtime_use_autosuspend(dev); - pm_runtime_mark_last_busy(dev); - pm_runtime_set_active(dev); - pm_runtime_enable(dev); + goto err_rpm_put; =20 ret =3D wsa_macro_register_mclk_output(wsa); if (ret) - goto err_clkout; + goto err_rpm_put; =20 - return 0; + pm_runtime_put_autosuspend(dev); =20 -err_clkout: - clk_disable_unprepare(wsa->fsgen); -err_fsgen: - clk_disable_unprepare(wsa->npl); -err_npl: - clk_disable_unprepare(wsa->mclk); -err_mclk: - clk_disable_unprepare(wsa->dcodec); -err_dcodec: - clk_disable_unprepare(wsa->macro); -err: + return 0; +err_rpm_put: + pm_runtime_put_noidle(dev); +err_rpm_disable: + pm_runtime_disable(dev); return ret; - } =20 static void wsa_macro_remove(struct platform_device *pdev) { - struct wsa_macro *wsa =3D dev_get_drvdata(&pdev->dev); - - clk_disable_unprepare(wsa->macro); - clk_disable_unprepare(wsa->dcodec); - clk_disable_unprepare(wsa->mclk); - clk_disable_unprepare(wsa->npl); - clk_disable_unprepare(wsa->fsgen); + pm_runtime_disable(&pdev->dev); } =20 static int wsa_macro_runtime_suspend(struct device *dev) @@ -2858,11 +2838,7 @@ static int wsa_macro_runtime_suspend(struct device *= dev) regcache_cache_only(wsa->regmap, true); regcache_mark_dirty(wsa->regmap); =20 - clk_disable_unprepare(wsa->fsgen); - clk_disable_unprepare(wsa->npl); - clk_disable_unprepare(wsa->mclk); - - return 0; + return pm_clk_suspend(dev); } =20 static int wsa_macro_runtime_resume(struct device *dev) @@ -2870,34 +2846,21 @@ static int wsa_macro_runtime_resume(struct device *= dev) struct wsa_macro *wsa =3D dev_get_drvdata(dev); int ret; =20 - ret =3D clk_prepare_enable(wsa->mclk); + ret =3D pm_clk_resume(dev); if (ret) { - dev_err(dev, "unable to prepare mclk\n"); + regcache_cache_only(wsa->regmap, true); return ret; } + regcache_cache_only(wsa->regmap, false); =20 - ret =3D clk_prepare_enable(wsa->npl); - if (ret) { - dev_err(dev, "unable to prepare mclkx2\n"); - goto err_npl; - } - - ret =3D clk_prepare_enable(wsa->fsgen); + ret =3D regcache_sync(wsa->regmap); if (ret) { - dev_err(dev, "unable to prepare fsgen\n"); - goto err_fsgen; + regcache_cache_only(wsa->regmap, true); + pm_clk_suspend(dev); + return ret; } =20 - regcache_cache_only(wsa->regmap, false); - regcache_sync(wsa->regmap); - return 0; -err_fsgen: - clk_disable_unprepare(wsa->npl); -err_npl: - clk_disable_unprepare(wsa->mclk); - - return ret; } =20 static const struct dev_pm_ops wsa_macro_pm_ops =3D { --=20 2.34.1 From nobody Tue Jun 16 14:56:33 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5ADDF288D0 for ; Mon, 20 Apr 2026 12:30:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776688249; cv=none; b=jBNXxBnab+SxAvGoI3EymIxIyOBh4lQnISacnfJ2AbB0eqKnKHxhiQhaSPl1CuyeIDsLJf10K/rIaccOKuc4kAqDxHU8PKsjlXf3Ps87HmdAcks85JhQ1XhYXs/saWpnGK+pM5Cd18brHryBrWm841JyJAkiAGyLwFgDmbGBEyg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776688249; c=relaxed/simple; bh=I/pefbqSETmnZNPMeq5NEVntkaBKgRJaMe2Xo98cXlo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MXRlPw3BwySuGeDa1Opn9fV0En7TpFzs2ybIp+1vrwPTJn9PhVV7rYnLWWDcpzhHcJZu5sxZp6S9Rce6wV1P71+S6l39vKQ1sON84nYcwdKEeBRzUljfQXzEtA1ck5wp0PG65AX8Cd/cbIw+SHvY0zUzC9+3QdQE3i5rqz+SECk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=cnzgp/aR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GOQYP7I7; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="cnzgp/aR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GOQYP7I7" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63K97SJP084498 for ; Mon, 20 Apr 2026 12:30:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=HisKd0+ZQuB MbBHyrnZU+sXN057JWjOAmVpbH/jgtuI=; b=cnzgp/aRm02KpmDsJsmI1acUS7t UfK2Z05cFRPzRzNS3HRULoLyv8M9cFoyggJAi9z7sagKVRBAg1jYbTSUIuQDSEIu wXW8L44g4VL8JOlVT6c8Gku2gpreGYYCgOcmMPubaN64QU0LQ61AfUqvApj6CuSe 5nFLSnVnoRKRD97W/SzMEBL+c8sagsba3M4xeyPaTvvFh87atNNMFQ8mlpdO31CR F9aC26Woc3yDvEQWjnHC4MUkI9ceqtX8jF3dK9R3EzMFrz/enfkD4TwgnVqnmPQF 7cUsJGQVVvI41jHSqEoAHJwmSUTpuRxuRhQGWEk3FO4NtCR2XoWyPZZFcvg== Received: from mail-yw1-f200.google.com (mail-yw1-f200.google.com [209.85.128.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dnh81gnsf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Apr 2026 12:30:47 +0000 (GMT) Received: by mail-yw1-f200.google.com with SMTP id 00721157ae682-7b6fea89dd7so58927547b3.1 for ; Mon, 20 Apr 2026 05:30:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776688247; x=1777293047; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HisKd0+ZQuBMbBHyrnZU+sXN057JWjOAmVpbH/jgtuI=; b=GOQYP7I7i11E7mECCJnl4a9AG7og8LA7dfZouxoQshNp0PDkb+5Kocg/NRK+7o0TVm c+4LbgRMVwRpMmHC7GplXdWYFK8F0KyNQ21IoTttF3RN9A47cM6U06catLasi1qOamv5 wuqQ3yuH63d9lnWZML8nTbadBo7eLGIXyDDV/gt4VlGg1fCr3kRMt99HrCEES62RamRL LbNNxNqzaYyR1l3LSfFOsmQh0xuWugr/GX7w1mhcLKcjMAEWuUbnOPtlZHp8f7w9JdAy /BA677arnR4IdVS8iekQ17We2wNnCrvWWg6SDzTWNFQpBuKQlLS54VgZCUqC/NUIk9A9 H5nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776688247; x=1777293047; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=HisKd0+ZQuBMbBHyrnZU+sXN057JWjOAmVpbH/jgtuI=; b=HAljh5xAuOlI6f8sxtlZhHV8qjmEHEjmWcBOTYNhmUMt8zNk4/sFYPcxArw5fbEPEn YxccyEk7ExlY5mxhBa94DWKe1B1uV7R9YPiCC5CHK7snRmKrG84WbMNIpfbwbCKESUWP kKOx2d3FKJJ9Yu2vy8/FPSchX5Kkr7LFxVIYDHv3mMaguP3xZ5ndtoQbXOcA4GWZm5dA wiMJstHO9RC6gmj1Xjydry0jJljhhM0eNhDxcutYjggRCNtPbVMRQlo5VpLJPG59We4W txvGnWyQ4I/g3/UXR2zdALN/EVut2CyB/R9wRobLBzixifLtZOttZrzzJ8lKqCtjmNDk 32SQ== X-Forwarded-Encrypted: i=1; AFNElJ/nZPw6nRMDBpflRj0MR7mKXsNcrE6yaLZTYmZICirlGnn2QzcV0uofMViUJHmFiJHRJKzqAyFoYcy4lRE=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0acCRxyLsFq0A5K8aIVKz6pM/dtInp3lVNs7lKmoyhVOxQKKF 3a4q64PYTUkOd885O2u+YqXk/DoUoznUQnDtdxBuwTVLVRmjINqR8Z1gPKIhjxfXHpIl37eEKJX JXeaWd/brdRyuLlfyG7LvCynF8FTSs4qrOKbAQGqUWXiPbkIlFQYPsJIu1GrGeXSeljI= X-Gm-Gg: AeBDiev28VHSoarDSDWTjiN4NKREwvvShzq90GoUac3zmvSd8I5LQQVfnaj2r7C1sL/ kwrpYWSiDpwnupFu5Rpe6swNMs00PdG1/hKZJaiVbwrkFcLYgYUyuHwoeFldnRqW+9idzEjF+kJ 6+Ut07zD2H4eOXzx94yJMqii8vx6hXglwEtr2SvTv2+pYxXynxsapOrRGInITKkVbRYkruCkUB2 8YhWJIBMoYQQHrIxUgqb56H//mJyMcCn5pZu8eynPjcYq7HycmVMtq1nNxipIxVTpVSQlZHynCP x6qCh4QCjU6AMuZfJgdNgmbqU4HiZAO1N7baaxWm+ZB5qPXrfTJ5QaH8Ez/p/8UgcDMmAr1oSBd kjxQPhWmcwMyrpw2kwxn8GM1Pv2r53XPnRyjUL44Nfe7CBgvXKO09RgiXhiaA X-Received: by 2002:a05:690c:388:b0:7ba:f2f1:86c0 with SMTP id 00721157ae682-7baf2f192a3mr24413377b3.12.1776688246818; Mon, 20 Apr 2026 05:30:46 -0700 (PDT) X-Received: by 2002:a05:690c:388:b0:7ba:f2f1:86c0 with SMTP id 00721157ae682-7baf2f192a3mr24412937b3.12.1776688246262; Mon, 20 Apr 2026 05:30:46 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7b9ee89aa91sm42785177b3.6.2026.04.20.05.30.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 05:30:45 -0700 (PDT) From: Ajay Kumar Nandam To: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai Cc: linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, mohammad.rafi.shaik@oss.qualcomm.com, ajay.nandam@oss.qualcomm.com Subject: [PATCH v2 2/3] ASoC: codecs: lpass-va-macro: Switch to PM clock framework for runtime PM Date: Mon, 20 Apr 2026 17:58:42 +0530 Message-Id: <20260420122843.327171-3-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260420122843.327171-1-ajay.nandam@oss.qualcomm.com> References: <20260420122843.327171-1-ajay.nandam@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDIwMDEyMyBTYWx0ZWRfX1JyDytnVOCIe 2b23ND8uhyNWutUh8ctwxCieiArfnz92lECrS851z8S1rlAoK0piAafOcyQTLPZ+LsrMeP2qjkC HNzGjCh/tQAZGH9gc3OwD/pJq04ApdvVM5KRZ/5lRFZrcmy+TbTXHqIEYHWl5yf5msy1xzahXkQ tW/8N4EUFh4UvLBwH3fTv39DnD3+ahXM4cMgaMnnbdW3fzbAsBS4Jh3lXHrhBjY7bAOl/8PE7Zd NcUpgaBx8yriANAuI+FKk/jAibWW31/4jFX1CXBTQP64kUtJ9yOCj2bKvPA+RoBWPzPgk+t5l7P x/T1/1XsKU/B9/NsqVZ+ftMl+8aUN8aMci58EjapnqqEc7TqkQZIV4pgmvktxmVRppNz9gPWK20 avWDTdPHrQiDkkAumJ5lDkKoo/EkQB7X9UG/e9H4vWU3vpva8UkCguT8PRgUKcFXvCAWhlF60kE mEdiuMs10Jffas4UgNw== X-Proofpoint-GUID: px_pa8b6loZMYNNnlR3npC1QxNyfJO8X X-Proofpoint-ORIG-GUID: px_pa8b6loZMYNNnlR3npC1QxNyfJO8X X-Authority-Analysis: v=2.4 cv=PsKjqQM3 c=1 sm=1 tr=0 ts=69e61c77 cx=c_pps a=NMvoxGxYzVyQPkMeJjVPKg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=YBVk55sqNhi4ukaP828A:9 a=kLokIza1BN8a-hAJ3hfR:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-20_02,2026-04-17_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 suspectscore=0 phishscore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604200123 Content-Type: text/plain; charset="utf-8" Convert the LPASS VA macro codec driver to use the PM clock framework for runtime power management. The driver now relies on pm_clk helpers and runtime PM instead of manually enabling and disabling macro, dcodec, mclk, and npl clocks. All clock control during runtime suspend and resume is delegated to the PM core via pm_clk_suspend() and pm_clk_resume(). This change ensures clocks are only enabled when the VA macro is active, improves power efficiency on LPASS platforms supporting LPI/island modes, and aligns the driver with common ASoC runtime PM patterns used across Qualcomm LPASS codec drivers. Signed-off-by: Ajay Kumar Nandam --- sound/soc/codecs/lpass-va-macro.c | 123 ++++++++++++++---------------- 1 file changed, 58 insertions(+), 65 deletions(-) diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-= macro.c index 528d5b167ecf..949275f1dfac 100644 --- a/sound/soc/codecs/lpass-va-macro.c +++ b/sound/soc/codecs/lpass-va-macro.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -1348,18 +1349,22 @@ static int fsgen_gate_enable(struct clk_hw *hw) struct regmap *regmap =3D va->regmap; int ret; =20 - if (va->has_swr_master) { - ret =3D clk_prepare_enable(va->mclk); - if (ret) - return ret; + ret =3D pm_runtime_resume_and_get(va->dev); + if (ret < 0) { + pm_runtime_put_noidle(va->dev); + return ret; } =20 ret =3D va_macro_mclk_enable(va, true); + if (ret) { + pm_runtime_put_noidle(va->dev); + return ret; + } if (va->has_swr_master) regmap_update_bits(regmap, CDC_VA_CLK_RST_CTRL_SWR_CONTROL, CDC_VA_SWR_CLK_EN_MASK, CDC_VA_SWR_CLK_ENABLE); =20 - return ret; + return 0; } =20 static void fsgen_gate_disable(struct clk_hw *hw) @@ -1372,8 +1377,23 @@ static void fsgen_gate_disable(struct clk_hw *hw) CDC_VA_SWR_CLK_EN_MASK, 0x0); =20 va_macro_mclk_enable(va, false); - if (va->has_swr_master) - clk_disable_unprepare(va->mclk); + + pm_runtime_put_autosuspend(va->dev); +} + +static int va_macro_setup_pm_clocks(struct device *dev, struct va_macro *v= a) +{ + int ret; + + ret =3D devm_pm_clk_create(dev); + if (ret) + return ret; + + ret =3D of_pm_clk_add_clks(dev); + if (ret < 0) + return ret; + + return 0; } =20 static int fsgen_gate_is_enabled(struct clk_hw *hw) @@ -1534,6 +1554,7 @@ static int va_macro_probe(struct platform_device *pde= v) void __iomem *base; u32 sample_rate =3D 0; int ret; + int rpm_ret; =20 va =3D devm_kzalloc(dev, sizeof(*va), GFP_KERNEL); if (!va) @@ -1601,22 +1622,18 @@ static int va_macro_probe(struct platform_device *p= dev) clk_set_rate(va->npl, 2 * VA_MACRO_MCLK_FREQ); } =20 - ret =3D clk_prepare_enable(va->macro); - if (ret) - goto err; - - ret =3D clk_prepare_enable(va->dcodec); + ret =3D va_macro_setup_pm_clocks(dev, va); if (ret) - goto err_dcodec; + goto err_rpm_disable; =20 - ret =3D clk_prepare_enable(va->mclk); - if (ret) - goto err_mclk; + pm_runtime_set_autosuspend_delay(dev, 100); + pm_runtime_use_autosuspend(dev); + pm_runtime_enable(dev); =20 - if (va->has_npl_clk) { - ret =3D clk_prepare_enable(va->npl); - if (ret) - goto err_npl; + rpm_ret =3D pm_runtime_resume_and_get(dev); + if (rpm_ret < 0) { + ret =3D rpm_ret; + goto err_rpm_disable; } =20 /** @@ -1629,7 +1646,7 @@ static int va_macro_probe(struct platform_device *pde= v) /* read version from register */ ret =3D va_macro_set_lpass_codec_version(va); if (ret) - goto err_clkout; + goto err_rpm_put; } =20 if (va->has_swr_master) { @@ -1659,35 +1676,26 @@ static int va_macro_probe(struct platform_device *p= dev) va_macro_dais, ARRAY_SIZE(va_macro_dais)); if (ret) - goto err_clkout; - - pm_runtime_set_autosuspend_delay(dev, 3000); - pm_runtime_use_autosuspend(dev); - pm_runtime_mark_last_busy(dev); - pm_runtime_set_active(dev); - pm_runtime_enable(dev); + goto err_rpm_put; =20 ret =3D va_macro_register_fsgen_output(va); if (ret) - goto err_clkout; + goto err_rpm_put; =20 va->fsgen =3D devm_clk_hw_get_clk(dev, &va->hw, "fsgen"); if (IS_ERR(va->fsgen)) { ret =3D PTR_ERR(va->fsgen); - goto err_clkout; + goto err_rpm_put; } =20 + pm_runtime_put_autosuspend(dev); + return 0; =20 -err_clkout: - if (va->has_npl_clk) - clk_disable_unprepare(va->npl); -err_npl: - clk_disable_unprepare(va->mclk); -err_mclk: - clk_disable_unprepare(va->dcodec); -err_dcodec: - clk_disable_unprepare(va->macro); +err_rpm_put: + pm_runtime_put_noidle(dev); +err_rpm_disable: + pm_runtime_disable(dev); err: lpass_macro_pds_exit(va->pds); =20 @@ -1698,12 +1706,7 @@ static void va_macro_remove(struct platform_device *= pdev) { struct va_macro *va =3D dev_get_drvdata(&pdev->dev); =20 - if (va->has_npl_clk) - clk_disable_unprepare(va->npl); - - clk_disable_unprepare(va->mclk); - clk_disable_unprepare(va->dcodec); - clk_disable_unprepare(va->macro); + pm_runtime_disable(&pdev->dev); =20 lpass_macro_pds_exit(va->pds); } @@ -1715,12 +1718,7 @@ static int va_macro_runtime_suspend(struct device *d= ev) regcache_cache_only(va->regmap, true); regcache_mark_dirty(va->regmap); =20 - if (va->has_npl_clk) - clk_disable_unprepare(va->npl); - - clk_disable_unprepare(va->mclk); - - return 0; + return pm_clk_suspend(dev); } =20 static int va_macro_runtime_resume(struct device *dev) @@ -1728,23 +1726,18 @@ static int va_macro_runtime_resume(struct device *d= ev) struct va_macro *va =3D dev_get_drvdata(dev); int ret; =20 - ret =3D clk_prepare_enable(va->mclk); - if (ret) { - dev_err(va->dev, "unable to prepare mclk\n"); + ret =3D pm_clk_resume(dev); + if (ret) return ret; - } - - if (va->has_npl_clk) { - ret =3D clk_prepare_enable(va->npl); - if (ret) { - clk_disable_unprepare(va->mclk); - dev_err(va->dev, "unable to prepare npl\n"); - return ret; - } - } =20 regcache_cache_only(va->regmap, false); - regcache_sync(va->regmap); + + ret =3D regcache_sync(va->regmap); + if (ret) { + regcache_cache_only(va->regmap, true); + pm_clk_suspend(dev); + return ret; + } =20 return 0; } --=20 2.34.1 From nobody Tue Jun 16 14:56:33 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D9613A8F7 for ; Mon, 20 Apr 2026 12:30:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776688253; cv=none; b=SrX5i5foh2zLDDoIv6K1DKEybS2wEMLvORafZAQYyzME/Mm+kBkQnnRPYa7lC+2AKIkNPP9Euy17F2dY/fl24QXG41nC3OuZVkQW+ygrv8ByW8/Q9gy/+UBQ0gb9publargtlPGK+/OhAgpk11XPYR4EOBXUKiuVtjqMTfACX+k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776688253; c=relaxed/simple; bh=PA/QvOlsC0u0/qbxAcT5gkNdGywkpZrUjPHFiDBLqbA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tkZmoiaRt7c0ALS9w+klsSV+LhvljDgy1xk1TUOu7M/LHEc3OLRZnJG/YKNtOzhDbV+2aaOa+dLZbY5IMq9qynF5p26l/nKP3Xw01kkx99FZcxDtSohY6voTVx7QBceeEH0ymTfDrf+pE/CrGe7m9jbgaNLDmRmQlLg215Cnazs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=dZVnKx6g; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bvQJTcqT; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="dZVnKx6g"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bvQJTcqT" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63KAtJoJ1598115 for ; Mon, 20 Apr 2026 12:30:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=S/Qeg3RgPaB xLYXsfip8wmrQzxBx8ciePjzK0KBJRGQ=; b=dZVnKx6gR+f3uTBkOGa7lWvTbrL nw8nVHpSkdmMsYf8o1hmDDow8x5W+XaFQnKQQV7mGCU79sZzNFKJd7iouOWNzPtb /X0D6zv+siqaNYLtDaEueSawkpUy1QaSJRIkIX1v2nvLk3KtpPGLJ4mZbeKR9Om8 +JxwKqXb+VbPkayDCpl/gzaIJxHNd2/IulGXIuoPu6DRcJq1yQIqVQn/fuSmDeI2 bkqIaB+KRFOg1u+bI8LFTJGhwqP7LbKvvdnyT4dIEgc0ZCA2v5zmtgXHZuaboRqO mWZjoWvk6q4zefKO2ao9DXsrn55k3QzAT8n+2j1VZBES8PBm0fwNgEDX1kA== Received: from mail-yw1-f198.google.com (mail-yw1-f198.google.com [209.85.128.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dnfgnhdkt-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Apr 2026 12:30:51 +0000 (GMT) Received: by mail-yw1-f198.google.com with SMTP id 00721157ae682-794b240c0d3so86176247b3.0 for ; Mon, 20 Apr 2026 05:30:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776688251; x=1777293051; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=S/Qeg3RgPaBxLYXsfip8wmrQzxBx8ciePjzK0KBJRGQ=; b=bvQJTcqTi1o2uZPgcR/QDXlFXuudy8NNchYER071yVXXdXR63CpcrGlvn0gXFf7oet T3WrYHzREdll/wIF/HNtjrONrv9AaZN0KxAltvmP3XJwjX/FQVydYM6FG+O3p5W1VfAA 7f643xYdfyITzSqd1v54KOpdYyyffWIqoXhqBap2Moktxb+fjXc9KOpYP7uTYzM0O90U xUpuYUFOmW5rXkLwNwYSuUdCidA4PoeG9DAF1RxNCbb53sMbb6JhjmFSad4BxuBVLRj6 93Ksjqn9yAG650rX1oErSkCOP9FLojYc+CKkBdW0mZHL9iOVrNh4Vd4BPLTLISJwh4Xp EIjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776688251; x=1777293051; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=S/Qeg3RgPaBxLYXsfip8wmrQzxBx8ciePjzK0KBJRGQ=; b=o0+vUBeTylOd9AFO4r7GekT+ulXPwB8VW+ga5TOF815Psv1Un+0qMV66BFLgdHUmR1 7atYVPFmtW2Z/NnSrT7QwMcRq+6LBwPNGusgdNoS61BeaZAhsfjX5ObatP5KBIzxakdQ w+3BO3V3N1C8sNRvtoGuUQLiU2zfYENHA+7gDsraHWoGTrj+4ol7UzXn5JCvuormaZMk A0fRb37aWYY/soUvZ2hQv4o8mXJxc/ZlXcxn9t5jRjosWEyvdPdbflA86l3w3euKzY2L ukIZKi3MOfcdtI3dcjO+B+LVNDKN++GeyCzGuoh4EbAFjZJBfmzHPfEZCohGeLvTPjeU E0ug== X-Forwarded-Encrypted: i=1; AFNElJ8rTD8LAnv/b7kEoqoSCkN7NFVm27VIG9pF7X0cp4XvmjJ9YP5Fb5ILwnOAdqPHUWSVC3SK3RAticPoQbg=@vger.kernel.org X-Gm-Message-State: AOJu0YywKp3Joyjua+Y6eg5JYFbpFwbQ6ZSHP1ialEyT+vcuVyhvzro3 oVE+u5KwYYRtNLfPb8JIvSC/8Wpkwi+WvM/BbKwAVDpVmUYb9yjdo2YzBLrOtSdp/OuY6Q32nYZ pE5EUK829APFDC+SvdmwpQowR8wBMYbBQOv2CpmZVIxmhIqdgAwqoiWNSS3f1z3LnHhA= X-Gm-Gg: AeBDiesvO8AHLJsKIczVc76eyiG0DE8lVy8O9nu+bNP+gIXK4kciwV7MPSvMvI1yacO 1hRflWnp8j63VDNRmipR0AwT93TR1Pgr//GQG3VsRGbjanIu4+iV5Wi/1pZg1S/In1mTLhsXHb1 D1OY1jGshClKcnUpGc/pnM5rW4EjWccZPRSj9p/Cfr67aP5Ba91JBgLu4dhSU9OFBBWpJ7GoMwm xWwVA2WlsCCw74lcF2VVnc2Q86okukRAtqYc+cwtEbBcHu77CNkGA7s3t0vFkKH6Re8XEz9VFFL oTcX33cNdj1023XKDqrQrwuUWcsdzyS2cYWlOSXsKygWXZkCVJddFdI4TYAMak8m5lmAmFmONwp f0TvL2M3SBLbVENTDaL3kOr54cA41PFKSkR8x+szbC2T0sNHaUbC5GriUtFwX X-Received: by 2002:a05:690c:60c5:b0:7b0:4bc1:d713 with SMTP id 00721157ae682-7b9ed44c8d7mr108157457b3.23.1776688250839; Mon, 20 Apr 2026 05:30:50 -0700 (PDT) X-Received: by 2002:a05:690c:60c5:b0:7b0:4bc1:d713 with SMTP id 00721157ae682-7b9ed44c8d7mr108157207b3.23.1776688250442; Mon, 20 Apr 2026 05:30:50 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7b9ee89aa91sm42785177b3.6.2026.04.20.05.30.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 05:30:50 -0700 (PDT) From: Ajay Kumar Nandam To: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai Cc: linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, mohammad.rafi.shaik@oss.qualcomm.com, ajay.nandam@oss.qualcomm.com Subject: [PATCH v2 3/3] ASoC: codecs: lpass-wsa-macro: Use devm_clk_hw_register() for MCLK output Date: Mon, 20 Apr 2026 17:58:43 +0530 Message-Id: <20260420122843.327171-4-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260420122843.327171-1-ajay.nandam@oss.qualcomm.com> References: <20260420122843.327171-1-ajay.nandam@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: HmgbmtytbRzhqf2WoEuJBuZMhWuDPFzV X-Proofpoint-GUID: HmgbmtytbRzhqf2WoEuJBuZMhWuDPFzV X-Authority-Analysis: v=2.4 cv=TK11jVla c=1 sm=1 tr=0 ts=69e61c7b cx=c_pps a=g1v0Z557R90hA0UpD/5Yag==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=E7064k5JgmqFsk_8azIA:9 a=MFSWADHSvvjO3QEy5MdX:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDIwMDEyMyBTYWx0ZWRfX7mzDhI02Fqxy 9/SNTGqsiWW26mCiDyUZaZXao5AFEyN5xVCP1yowxivJBt5LUb+RAJ1U2fPaEYK4JCek7TqAjtE LHYoctimZRZMkyhdMH3olnX0BDG8mGDEDYjdfWji+r9F8f82hpbT1stJxkSNgyues5r6N7US0+R iFDsaYTwwj/1HO5kjAmmVQPKVJ0+CxQWXfoMjgR6xjdjPt2riuOBVHS0WAkFiAacqBH9Sf6MwDn jR9O84o5/DWZOujO0NtXR9BEPVLtM43rQv1I1h/JaXd690XlWeNx2udmuxpPyqdBaoA4o/6qSxE 86jCqKEwmXUIUwfNw3k7XTzkl1z+KkxyXdgzVsNVpxoIA92LxI3ntR8Zg20gg1qorrmoVlWWkC6 xlClD0Hvms13pE4kz38H09WEZFl6LQuQjrmP6EjxMYogahwqXKNZ1CtCrsPUdgMiWTot2nA89am UkrlcrUoKZgk9lXt3lg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-20_02,2026-04-17_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 priorityscore=1501 suspectscore=0 adultscore=0 phishscore=0 spamscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604200123 Content-Type: text/plain; charset="utf-8" The WSA macro driver registers the MCLK output clock using clk_hw_register(), but does not explicitly unregister it in the remove path or on probe failure. Switch to devm_clk_hw_register() to make the registration resource-managed so the clk_hw is automatically unregistered when the device is unbound or probe fails. This avoids lifetime and cleanup issues and simplifies error handling. No functional change intended. Signed-off-by: Ajay Kumar Nandam --- sound/soc/codecs/lpass-wsa-macro.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-ws= a-macro.c index ded1cd8db831..29c8edfa739d 100644 --- a/sound/soc/codecs/lpass-wsa-macro.c +++ b/sound/soc/codecs/lpass-wsa-macro.c @@ -2657,7 +2657,7 @@ static int wsa_macro_register_mclk_output(struct wsa_= macro *wsa) init.num_parents =3D 1; wsa->hw.init =3D &init; hw =3D &wsa->hw; - ret =3D clk_hw_register(wsa->dev, hw); + ret =3D devm_clk_hw_register(wsa->dev, hw); if (ret) return ret; =20 --=20 2.34.1