From nobody Mon May 25 09:58:02 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 9837F3E277D for ; Mon, 18 May 2026 08:18:00 +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=1779092284; cv=none; b=Ol2Ae0/948j5PcA9Fg1gjxvjLeuW/B5ExqTUmBJ3+MAFzZMpf4v3nqUlxMZ5AuIHvyVX4yQM/gt6z4VvBmxTIV2bjV5p1sjFZFNKx551LO8we8wXM2m32P2GHfIBWcDQJmnpY3hOQfPJ3Ogq83IOw2omspJFDrayvceXzRdxrMg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779092284; c=relaxed/simple; bh=tfty37G3kS3XZdzuIXgzP0j81pOPlMYbCUFjUi8suLk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gFgAJmujwXRfZ8ZIExRjzpYqAKSpIM8fJ67EDZeN4EWjBy2mSenstKQvNL32l4sfFgyqytcpG9itJgCnTbDD0Pv+mLs7ADEq7C9qFW9iZLlSxuS7/leeHZrexPdLWTB+U8yPTHHLo/Uhu7DY5uRnjcOAMNBl8+IMWdmj0XCJRoM= 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=okWsT5sC; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CG72DRgo; 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="okWsT5sC"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CG72DRgo" 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 64I5bIhA1696624 for ; Mon, 18 May 2026 08:17:59 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=/b148M+Rew5 DR1NQMjhg5HZ9UktJcPXNPN3d+hPUBbk=; b=okWsT5sCOJvV5oOLOTa8t7WTw74 0FmGkP7iysWoNTDogkrNcs8sOCL4Wh1OuGIdARHQduB+9rwHi/Brp9absEi6gfGl iMi54WGSy0tfrWTHOCkmf26YNycdlVjTWP9eS0twOaXan6PddLLPbHNkShKqnIsU X9F9fjf2pV0nV1xytw6A1tuWOrfjZrRRUdwgok+pIZ/n1Xy9H2oNlLlaSIbpyMNt x9vPVHlYH9Xm8t9uyU2wN5K4TAslVWVWrBFrbs0fHcM6e26DVXr07wbSLlHXsJmx qrH5Ykz0gmUhE1PIpPyir1rOgKqT1wANFAykz+YzRVXiMcDI13PYVJHW48Q== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e7vsk0pgm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 18 May 2026 08:17:59 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2baf7748d0aso19779165ad.1 for ; Mon, 18 May 2026 01:17:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779092278; x=1779697078; 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=/b148M+Rew5DR1NQMjhg5HZ9UktJcPXNPN3d+hPUBbk=; b=CG72DRgo6oqh6u2STdTlMIMSjWps67ydtVZfyr5pZkNEkmSNj+Gj3z3VnBjp7vFihH K8UBu9peqNXMT2tlbGbfQrc4D1w6FfrgNK3pRLlFBo7cnVh9zRSPzYS3mv6BS1l3avRn VEw0wp1TktRerG3v+2tj6AGwj4ZOfc+w8T6Cl6Xv+ZU5uB0uIzThRw14riqI69+lXUDB K/RDXLqBEry5DUNMl9uEwS3XKSnfjDZP00X7ok3nVf0qREugPa3ZED1PqpGQU9qZ6q1Q 2f/VjC1j8zz60aVw3JcK3z1JDwfUlbn4+Ogwd2/FjDlht4ZvMytwBNcELgQMDOO2tD3L 79kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779092278; x=1779697078; 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=/b148M+Rew5DR1NQMjhg5HZ9UktJcPXNPN3d+hPUBbk=; b=TaDXRSjhWqqH+y+gp9A/ZptU5u8G0iAzHUofS3x3zreQW74+u3w48icyFwmTmfTWyy 1cHMC5Taa3T1Ol+a3LpbrOq3mDlcq124A4lbaDqLDa4KSygUhk3vjbBt2tMDDno4wVGk Jh/FdTwjMNZM+j7JXetCAZh0m9XLQ3HubgbnqXfdP33BLsPJADx2ObIx9aq5vtnB2jpn d7NrQ5gZq98rhVO862A9ujSlSRPxVUZpxW1RjD3Gyrt3x01qG+6VlLJlouUthQufeIxF ovAa3On/N3GIlW19o6fpuBcnZI8G/zH6hF5cdGxkalfYxXEyri8hOp3nP3H+GCOa94yD NBKw== X-Forwarded-Encrypted: i=1; AFNElJ9ND84OBLBEWJnrxDaw+IMsrV58i3W8uNrdMw+kPV9aEaofErrMeG5Ac/wUOtNlwBBLTuOcaRTco4LvFaM=@vger.kernel.org X-Gm-Message-State: AOJu0YyyNnv8Ju1vC0+B+Enk3fUl6T/PvDgXSy6K/6S8mdRFPxshXIPQ UDKq21ILtwQGxnzVwNqGrJhi/FRy1rKrlUyfzDFIwaF4S69+vEHyYSw5aAS9U6/xhPAPbBWrC6F LhhJMNMlsulhZfjVr1UsAPWuXGSNhzS5DstJk1/Zj/JZDsD7NTz0QYJaUGEr6U7cwvg8= X-Gm-Gg: Acq92OF48mwF53Er/nbf+LEMpNj6ZcHVjQBD56rCI6ChL+SGqhVWLehTTMpka1cVB6K 8AFJiL86Vu2Gmlrv4NP9PhyI8ujG+IdC45msLz1ORmW+/aAzu9EbLmCWtUjxJ6T/fks9XnhuhIF O1dowXEqJSIhBUSp2qlzGduiE/kejlSY9FlEEyCOD17OxWpJ+n8vLy6Zo3eLIbxf22UdWXWIQvC a06B3CBg2zxdcWnQpP0jK3N8Vz8ArVIcpDzljRYJELV+/bfCf8x2lcGZ3TQdhmuVIi1JRgCuo7P mFjctnsaDMbmpckSA0AfmbS+xt6u4iiq1il1dXe1LyowLfAM4TcynuvjPtOq3+Eqb6RTNGdZXIj 5y5B7KJBUbqmWYZCXQlm5sJ6BHtXrB6vKBEYodJr80/y7DJN93w== X-Received: by 2002:a17:903:1b4c:b0:2ba:7610:3f21 with SMTP id d9443c01a7336-2bd7e802964mr147985175ad.5.1779092278038; Mon, 18 May 2026 01:17:58 -0700 (PDT) X-Received: by 2002:a17:903:1b4c:b0:2ba:7610:3f21 with SMTP id d9443c01a7336-2bd7e802964mr147984715ad.5.1779092277343; Mon, 18 May 2026 01:17:57 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bd5c2631basm136620755ad.34.2026.05.18.01.17.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 01:17:57 -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 v4 1/3] ASoC: codecs: lpass-wsa-macro: Switch to PM clock framework for runtime PM Date: Mon, 18 May 2026 13:47:36 +0530 Message-Id: <20260518081738.2453957-2-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260518081738.2453957-1-ajay.nandam@oss.qualcomm.com> References: <20260518081738.2453957-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: AW1haW4tMjYwNTE4MDA3OSBTYWx0ZWRfX6vniu24XdXNL OxjOUpH+8yoFiFzQNiNADi2tP7QyxhNbfdCZI7Fk/H108kuaTrq0/8wXtbOOjsUGaKAE8Q06VFS cu8tyElnKDiIbuBJ8wF+kKx5FMqgQu1DMiKaceZSXFFCD4ICzO65a/d597G8JSZl1oCeOF5ah4V h5WYZ+zM4a6IX2eTJ6fBhefbhlC7MWxZCd2y12MTHEcP+5J8+38M3Jitlja1PlhyidGdYH4Easw JDUTJMaYdEJ5/H+IrUQ47s3Mb6p1Kv9rA6q3JRZODYGNpPB7kkultsVBOTn+TNQHRMZWA/CI3zo 2iohWhty3XWevJlbyOiuN8B9OEQ1xDRfBsJEgM2pSfweWDW/MGQIAv7BfIiVFLs0L/xW/YZBWN4 vQ8q1ztYABkaIizokxMqW0beSGP4Mcyd9cgPxVmm0U0ccFcy5Kl176FHXcttGWsCEOWo4tisKgB ayt/tEkOmIMVe9u4abg== X-Authority-Analysis: v=2.4 cv=Bq+tB4X5 c=1 sm=1 tr=0 ts=6a0acb37 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=6iqXw53aW0HuLngz8iAA:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-GUID: lP710FHEIZof9F3o6_IQ5Vr7ClKpw5tp X-Proofpoint-ORIG-GUID: lP710FHEIZof9F3o6_IQ5Vr7ClKpw5tp 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-05-18_02,2026-05-15_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 phishscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605130000 definitions=main-2605180079 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. Keep the SWR gate runtime-PM reference from SWR clock enable until disable so autosuspend does not gate clocks while SWR is prepared. Signed-off-by: Ajay Kumar Nandam --- sound/soc/codecs/lpass-wsa-macro.c | 117 +++++++++++------------------ 1 file changed, 44 insertions(+), 73 deletions(-) diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-ws= a-macro.c index 5ad0448af649..598292fe3219 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,13 @@ 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 clk_prepare_enable(wsa->mclk); - if (ret) { - dev_err(wsa->dev, "failed to enable mclk\n"); + ret =3D pm_runtime_resume_and_get(wsa->dev); + if (ret < 0) return ret; - } + wsa_macro_mclk_enable(wsa, true); =20 regmap_update_bits(regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL, @@ -2548,7 +2547,10 @@ static int wsa_swrm_clock(struct wsa_macro *wsa, boo= l 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); + + ret =3D pm_runtime_put_autosuspend(wsa->dev); + if (ret < 0) + dev_warn(wsa->dev, "runtime PM put failed: %d\n", ret); } =20 return 0; @@ -2774,25 +2776,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); - if (ret) - goto err; - - ret =3D clk_prepare_enable(wsa->dcodec); + ret =3D devm_pm_clk_create(dev); if (ret) - goto err_dcodec; + return ret; =20 - ret =3D clk_prepare_enable(wsa->mclk); - if (ret) - goto err_mclk; + ret =3D of_pm_clk_add_clks(dev); + if (ret < 0) + return ret; =20 - ret =3D clk_prepare_enable(wsa->npl); + pm_runtime_set_autosuspend_delay(dev, 100); + pm_runtime_use_autosuspend(dev); + ret =3D devm_pm_runtime_enable(dev); if (ret) - goto err_npl; + return ret; =20 - ret =3D clk_prepare_enable(wsa->fsgen); - if (ret) - goto err_fsgen; + ret =3D pm_runtime_resume_and_get(dev); + if (ret < 0) + return ret; =20 /* reset swr ip */ regmap_update_bits(wsa->regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL, @@ -2809,56 +2809,40 @@ 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; + ret =3D pm_runtime_put_autosuspend(dev); + if (ret < 0) + dev_warn(dev, "runtime PM put failed after probe: %d\n", ret); =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_sync_suspend(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); } =20 static int wsa_macro_runtime_suspend(struct device *dev) { struct wsa_macro *wsa =3D dev_get_drvdata(dev); + int ret; =20 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); + ret =3D pm_clk_suspend(dev); + if (ret) { + regcache_cache_only(wsa->regmap, false); + return ret; + } + + regcache_mark_dirty(wsa->regmap); =20 return 0; } @@ -2868,34 +2852,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 Mon May 25 09:58:02 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 EBCA33E1CF7 for ; Mon, 18 May 2026 08:18:03 +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=1779092285; cv=none; b=GKGtYnwlL8/m8PfogonDn8mzJ37ZSbxGT0kB8jr7XaM3Zixsdu83eg430Xa+kfG+lczgpzthG/I/XjyZXaoYwI4fdd/QJ+ROtXZf4byDNm7iFPrUdzTLqN7PVNkmo6gQCDTS64J9k+ooDOZV37JtnSZoTvKZV/O495PFYospHhk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779092285; c=relaxed/simple; bh=IBdjoJCkldAi1l7W7IesQKsrx4QqX49b2fX1Xw90/IM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EyyxFu067gfdZDIqZrLdGUxzIati1A88Rv13khiT//rNEtvUQ3/Lk1K+OdCj0BPomc6zJKJkj/LucIPpqOnpIE9zEdjQbCft0PH4Ll6YZXaNSN4tfqR9D8ctDBY+Ity8XLPeoc8HidNkhVUW/FXaoWzcMV1CncPt/Te3d6QNJGM= 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=hgV88T92; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=E0e3eg6D; 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="hgV88T92"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="E0e3eg6D" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64I5HVRJ3237809 for ; Mon, 18 May 2026 08:18:03 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=5sRVeYMxBRb B3S6B199Lb1hv2zwBoow5QgQ7y16qGoM=; b=hgV88T921rDX3qFKn/h07HGkrQD cZ+wQe94uSuVeoQ3iMuWY8AND4QnwxrMLzgG+2t0kOqUH0E4J7uUF3k9bijfAkcG DZgKfsgtvpzyTMx5vP6dz+cN8Z9CAakxHBxTndDVrjF8vgyadlgK4/ulVc7bSAqP IzpbAYvr/vMJ9Li3RyV3Qe1oHQum5HEaZ0RateUSfH46CXFo5nQ0XGxodoy+x+oT aCiPkG7+QVOBglEbjEpsUjp7bZn52B1Qbg1WDPNK6TzfiqtAIIqGQ+IpkzYMMrSm xtFtJw57y3DAWYHyXq+bLC0LzcjbMxvPTq/53uN5k9uDFGWtyOHPhO0khMQ== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e6gvqwfr0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 18 May 2026 08:18:02 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2bdaf8567f3so11984285ad.1 for ; Mon, 18 May 2026 01:18:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779092282; x=1779697082; 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=5sRVeYMxBRbB3S6B199Lb1hv2zwBoow5QgQ7y16qGoM=; b=E0e3eg6DX06rUN+kVSuMzOqwuYSbGRviIm7cgTpQR4PNhgw9v1gT6jsqn+PogX1fcR ka5JsgDCIY1jyTIAoDab9d4Lo0gdoFKO6Gc4xtGGnaopSqdW8SIHo1jDbDIdfKre47Gx BGMS0cAf9+XKGpW0IdhjMAceCopad5CSwgpg2EcoXau0lkW/aVPLZW61Zh/JJLpHn16m kuG8EfEBuaxoC+H15RA38ukd1p+TwEG4ynp2LGjgMWfzW+MNBisWK8v7/3dExWP/8O6o NrjS+NlsA6ho+WUxSRLljiWKIuJ2U5mnqsz3ryfnhm3zFi/919bCjQ0xjiNJt/l4j1pP mXlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779092282; x=1779697082; 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=5sRVeYMxBRbB3S6B199Lb1hv2zwBoow5QgQ7y16qGoM=; b=aB1W0e2iwCYOE+PIhvL4bmIK9TtlyjrmZgSWFToDXuk3dPsSTmsBNlBJnSj4pMvgj6 fSNl771LbtrD29sZ/VL0IoIPlgtdrq3C5VKS2G/t95R/vDD5dL7ikgoPZP/JElXVBFNE yFUAkdUUg9FEmrq10pjfff6QAAEsskcK+wdgjq0qBnxkCVb0GZTcZeF2UFtP9x/c4c72 5thBUi1F0ol4J8Au5kEWskdvuRIs586bsexYxVezqKFMqgUMfIVgoReNC0AyjizrlkBu 6Y1Yv6cD96+XN8czHBPRqcnC1btYPM0qtJVlpCrHhvujmMB69Lvxzg0KYY3M1rozwcpH bRDg== X-Forwarded-Encrypted: i=1; AFNElJ+3sCxFiA4wNZF2QuvsSJmOIFWSHhY5NhwKsDeGtJ0+vnTUlr1nolpRJc0piQ9rQE8B9MwV1knCFfOyAL0=@vger.kernel.org X-Gm-Message-State: AOJu0YwbB9HN2J49S+0c1ztIE0eYBxVysKSiW93GDNGJAFGE9aMmM3uO kIBHU+8yKcARRBvMZ1O5N2lefhTfckfroKAi7mIOzMdRWuHEz9pFxFlB0TiSBiauOdoFfrBfVUk 0BthHLw4GAsCxOXgU72w3iQOVNGbR/Pck6ivPTHBfdRl0ixh8BNcQPpkbJz8O3biFguw= X-Gm-Gg: Acq92OEa5GAG4T1wzvJ1pEK5Ca/03lRI6lsh0wGmKiv+llHLXkWbzD9kuT6/vuUPShl mLDAN5tyJ5fO9/OUH5938oxbAEfj7gij4H8E0w0DInrja9JUgjwyKZsThCHe2iqfhcrd7Di+UBT FTbiKsIyp7FurebSVFbzAssBLbJR+JjMJlKWJzTeAbmQT7tC2up7US/cOCRFV593uz/9HfBFizV 53YNaWniLZiteapn3WXgvhS4kaYqdb+zMvbx5ISZD/k1tG+0jlNfBAwJXOs2xaX3hU0FViAWPIV d+tV5zAeRsWXjRzknMCFBMjR6EV0VHm8CpN2cX/AwUvXn9ho2r6zAMZv6o54ojpjzHR8c1Znk0u 5IpqTmq9RgnoiRFcg4ixbqRloqQ3dd/m5GPaOGoHa4zbX/zQCeg== X-Received: by 2002:a17:903:3850:b0:2bd:6327:b507 with SMTP id d9443c01a7336-2bd6327b69bmr153260155ad.18.1779092281788; Mon, 18 May 2026 01:18:01 -0700 (PDT) X-Received: by 2002:a17:903:3850:b0:2bd:6327:b507 with SMTP id d9443c01a7336-2bd6327b69bmr153259855ad.18.1779092281262; Mon, 18 May 2026 01:18:01 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bd5c2631basm136620755ad.34.2026.05.18.01.17.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 01:18:00 -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 v4 2/3] ASoC: codecs: lpass-va-macro: Switch to PM clock framework for runtime PM Date: Mon, 18 May 2026 13:47:37 +0530 Message-Id: <20260518081738.2453957-3-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260518081738.2453957-1-ajay.nandam@oss.qualcomm.com> References: <20260518081738.2453957-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-GUID: VcW6QIV6S44wS2kRoU5dEvhR003EXugT X-Proofpoint-ORIG-GUID: VcW6QIV6S44wS2kRoU5dEvhR003EXugT X-Authority-Analysis: v=2.4 cv=LKJWhpW9 c=1 sm=1 tr=0 ts=6a0acb3b cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=YBVk55sqNhi4ukaP828A:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE4MDA3OSBTYWx0ZWRfX4cFb4SF7bQcJ cVDvNC+NG15eMV5hcDFeSB0ddLF4NvgDvKIzNNrycnBbdxpS+mA0ahJXX7pZ/Tx0cFNZkVAbY3S 1MDQZOMgtXmeWv64h3ntI6263zFZI4D1invWOP/1YLQTWvJa/TrMx9oSBK5c17EXpBVfEWp12/8 Ij2G9MFEpdoD28g0WO4rGg+tCiM1Al17Ai/YFLqy2M0BztBnxk+8WcFyX7uOcNqHHo4uAGh3yp5 tzToe6UFVSpjgfESrgz72Kad9F40rfEQz/JM+8LKyo2MslgLVxLexdH0DXhawP07hflGc47nRoy yjT9TbCJwS8C2OdnGIycHsfvvGGFIjJ0KRu5Z8R3ooaXsSSpGKiqLY/cfCHZfKCo6OQr/IpaMns JzO+vw5ybQh+zxhvxOgyU1Sms7DEWY3QGqDMJuqJhSGuajpcFyHieV3hnRIEIhjZg9MBBS/qqN2 MhiYb2cjsvoGoHgGH5A== 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-05-18_02,2026-05-15_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 spamscore=0 adultscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 suspectscore=0 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605130000 definitions=main-2605180079 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 | 128 +++++++++++++++--------------- 1 file changed, 65 insertions(+), 63 deletions(-) diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-= macro.c index 528d5b167ecf..64a06d9ed6c8 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,32 +1349,52 @@ 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) + 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) { struct va_macro *va =3D to_va_macro(hw); struct regmap *regmap =3D va->regmap; + int ret; =20 if (va->has_swr_master) regmap_update_bits(regmap, CDC_VA_CLK_RST_CTRL_SWR_CONTROL, CDC_VA_SWR_CLK_EN_MASK, 0x0); =20 va_macro_mclk_enable(va, false); - if (va->has_swr_master) - clk_disable_unprepare(va->mclk); + + ret =3D pm_runtime_put_autosuspend(va->dev); + if (ret < 0) + dev_warn(va->dev, "runtime PM put failed in fsgen disable: %d\n", ret); +} + +static int va_macro_setup_pm_clocks(struct device *dev) +{ + 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 +1555,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 +1623,20 @@ 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); + ret =3D va_macro_setup_pm_clocks(dev); if (ret) goto err; =20 - ret =3D clk_prepare_enable(va->dcodec); - if (ret) - goto err_dcodec; - - ret =3D clk_prepare_enable(va->mclk); + pm_runtime_set_autosuspend_delay(dev, 100); + pm_runtime_use_autosuspend(dev); + ret =3D devm_pm_runtime_enable(dev); if (ret) - goto err_mclk; + goto err; =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; } =20 /** @@ -1629,7 +1649,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 +1679,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 + rpm_ret =3D pm_runtime_put_autosuspend(dev); + if (rpm_ret < 0) + dev_warn(dev, "runtime PM put failed after probe: %d\n", rpm_ret); + 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_sync_suspend(dev); err: lpass_macro_pds_exit(va->pds); =20 @@ -1698,27 +1709,23 @@ 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); - lpass_macro_pds_exit(va->pds); } =20 static int va_macro_runtime_suspend(struct device *dev) { struct va_macro *va =3D dev_get_drvdata(dev); + int ret; =20 regcache_cache_only(va->regmap, true); - regcache_mark_dirty(va->regmap); =20 - if (va->has_npl_clk) - clk_disable_unprepare(va->npl); + ret =3D pm_clk_suspend(dev); + if (ret) { + regcache_cache_only(va->regmap, false); + return ret; + } =20 - clk_disable_unprepare(va->mclk); + regcache_mark_dirty(va->regmap); =20 return 0; } @@ -1728,23 +1735,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 Mon May 25 09:58:02 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 380823E1CF9 for ; Mon, 18 May 2026 08:18:06 +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=1779092288; cv=none; b=d3kuahFTwJo54TIMWYR4yIQJrIHx4+H+hyfbwGxDERX+lIH32jmMIyqC+k5y/6U1D/4RanX9i8ia7tORI6R0BywdJjyJuSrCqZ+oit4E97IZJTndg82kzKTmhde0UrZFQrRS1Ku2AWnVMu2+qlB4uFkkPrQpSRaMEjj6UeD63+o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779092288; c=relaxed/simple; bh=TZ5Gbdy8MpD0BkDYauXmi2P3QUkOwpzPVQi/b1SuMMU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=X9TI02BqwA17obC/3YH+69LZM8MBWpd5uq8dwAKgBv/BGFgHwMwD+09ktEWVyQCefOJk/CPNh5RxVYg3NaTPUVSdOT2BFQ5FWdsckEr5dOOZjhuvhtOL1hEC2JkFHY5rhmCjZQ/+WBbsxa3xJZHq6b+rwvrtuVE5tbPiATvwgQg= 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=OWtZY5vP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MxEAUTux; 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="OWtZY5vP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MxEAUTux" 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 64I7OYWY221510 for ; Mon, 18 May 2026 08:18:06 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=LU+3o0EUymr NGBvYnnfmtFWJLYjR5wRDEMuCtrEycf4=; b=OWtZY5vP8CWtrDxnQeurdLvohLu GHEuqAVqgXDEoKB+Mj5PCpXx9oA8zsZZGuCOelrKBfc5Lua6Ue8e7RYYy7Pf05Kk cCZuSUStCSUKMgcR71VkELH+vL2CeUgUte/qSlbKKstZ+VPYDss4h+weBe7G5ikS uYqPlpJr/LJ5zytzskGt/A+dnYeAlcusR1lJkdZCOT4xH+NOCzPNlvWjhPCU3ALG 9J4/N1PvSb5r1iy72oX4dAtRfV2Nk4BQfZZzegi/+nkvoIFGZfBjEwW8nha5QyIz KgXp7Z5xWJuJyevPhemKlFhpOrmc3u+5Cpg/DJt9IEOS9i9x+BrzgmmNaKg== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e6h0g5dku-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 18 May 2026 08:18:06 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2ba054e0304so23812085ad.0 for ; Mon, 18 May 2026 01:18:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779092286; x=1779697086; 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=LU+3o0EUymrNGBvYnnfmtFWJLYjR5wRDEMuCtrEycf4=; b=MxEAUTuxlp5byTbE8lEGuD8jkN3bzFZglh3KGeDC65VuzKwRjmGtTknmC2FsKaRDae Bbov9cA9Ftng4VZ3AJ9YDKCp42Vt1NEOi1Z6nXd/dnrfBX67xgKm7DBB7k1LQ8BAXdrM ol1pt+Rxc9UBdNZs/GX1X4P4eyoDM2BLVXm5MDqRsPdyjh10xusewxEzGb++/Tie4bfy IvnQklcArlo7zJ+Kj9OpA/MzrOjWv4pK/eYJwCqZu3QhkZDamGRIc/zKL3AbzIvf440y 5p7RnQIPBpPdD35fwP2hEqDssLNoD7u6Ifr1z1XS200S0DHYDRMt4vZIfAOMML8Yfp3H BZJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779092286; x=1779697086; 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=LU+3o0EUymrNGBvYnnfmtFWJLYjR5wRDEMuCtrEycf4=; b=KElPCv9L/Wv1JG4vfd0AEiPUfU5PAM57/C1nkl3de/4HLY4nouYeBWMUyiQaysJQnS L00KQjPs4Zs7nKjcLbQ6Z2zvuzmrNq8dl/Kjpf6kKjtwJ/j6cDMle4bDrQgECaDLe6u+ pzfz8m56uM1gyOceeRQlVtp2d7fZkCpyp/A+jE5n1yi8+gQQ1LJQ3cabHES6UZWXvtAP mcx43/FtdvDVYk/f0MlyrnwUThW3A0ntQt0ONeJCPj2BHXWMRZLHy64TNRHODPP2+qcX 7SL2+hfjZDCUe+XH9ownss8qIEk8dzTMKnuBk8IXqhCcLG4Ky6C2oJV8/dCCsIqA0xVT BYng== X-Forwarded-Encrypted: i=1; AFNElJ/DlNYIrYz6b9eZidc1kNdXjGCB/cRY42Dr0wG0OUE58ClpEWuerkPMqcTAKsrpgnDuDyzFkKxSC0tLpOQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwLAci95ypyw8anAI0QB+HH/cJ00aC3PKruqGWIEw/UZbrNw7+8 lk8DP7/5TMQmoTLDnWIkdIWv8toMgFA2wRrFuu6mswqhl/yd3Gj4ugXpPZlPjpXaCTBm1L3v8NA QnTN17NfvHPIPnvKE4tprijrlvzmhZIgsgN2hrYRRk4+ts8AfNjdtgyCxnqSoVABqktM= X-Gm-Gg: Acq92OE6zLC4qduWgFTzVb8OYBgDV8GYUGDrYRsicz2ORXWEDuaECQdwOBw7Kq6OVlD P/r4A54OHF13xp5Pi+KlRE0aJ2XyLL5K2anHCizJHrQAB9oEVMP3bNiFbopevb2SUUTuxtMSIKW Lr6BkBAoKBhHfT/au7uT7tsreWcWsSi7j4asxQ9+0IJcnMuGorAXK6RSX+w7GlIbANa3L57Y1pE DtWqkD7OlcBeDoBI9zdrpUrPkjHAqCq3LYxRhT6g2LcjuKUXQ+Pl72qxDVOXQdrzxC8RsZwUq2b mLL0Oq6eYiZEkLpqREaZxB3NhmSNTZnjMKf93mYcxTZeejxJ1rK2QDPw7X2EhcEnapdIR2iHKxO v8//aOQN2ZJagEVJ5XjnZgXxAPYLoE5iXDfuesuwH1MoU+GAZdA== X-Received: by 2002:a17:903:4501:b0:2b0:ac1e:9730 with SMTP id d9443c01a7336-2bd5277cb20mr112546845ad.14.1779092285725; Mon, 18 May 2026 01:18:05 -0700 (PDT) X-Received: by 2002:a17:903:4501:b0:2b0:ac1e:9730 with SMTP id d9443c01a7336-2bd5277cb20mr112546505ad.14.1779092285243; Mon, 18 May 2026 01:18:05 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bd5c2631basm136620755ad.34.2026.05.18.01.18.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 01:18:05 -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, Konrad Dybcio Subject: [PATCH v4 3/3] ASoC: codecs: lpass-wsa-macro: Use devm_clk_hw_register() for MCLK output Date: Mon, 18 May 2026 13:47:38 +0530 Message-Id: <20260518081738.2453957-4-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260518081738.2453957-1-ajay.nandam@oss.qualcomm.com> References: <20260518081738.2453957-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: AW1haW4tMjYwNTE4MDA3OSBTYWx0ZWRfX/epwYe3m2iiH ZB/QltZyQe7giiXrmI+fikEHoxxAHpxPTg5ldFujvMkveWV8llikgRs3PxbRBTxT7S6R4EMgnnV qESY5ROh/lq1RxOzf4AB18ucg0NnlrQBLIo871yDfw/YcwwMSCG4k54PeylXSkJk8wEu7be+DBZ 6UdcKk4tgDZwDm9BHft5CmOLQfetW0r0VN+MTL8QiNAfejOJTowNpD4BRbZ2ZNh2DVzsumCQsvm 2XShsDQbBFzfr/IRm5nxo73jxZW/fEdONQKFByT3nmbuwwQpeMSnRgwD5RUs8cv3g/iLoozcJ+f iXCSeYpqrVthZE/d3se2gFXCAFuMKQxHJnAuaUzhT1huOLGA9ruy5GlaImSWrisOkJfkovq792Y psEeF6WBzTiYfNOy0YjLWMOOphtKSbTmUQKEDQgGFBk2QIUaU1Y6Jx8uBuNoaETEHqvX7qBxwps 3Z9WUr8Jb61Porh84Wg== X-Authority-Analysis: v=2.4 cv=W7gIkxWk c=1 sm=1 tr=0 ts=6a0acb3e cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=E7064k5JgmqFsk_8azIA:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-GUID: 5zwrNCc1XzEv0YlHFJMnKoCJPoANdtYN X-Proofpoint-ORIG-GUID: 5zwrNCc1XzEv0YlHFJMnKoCJPoANdtYN 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-05-18_02,2026-05-15_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 adultscore=0 phishscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605130000 definitions=main-2605180079 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 fixes the missing unregister cleanup in remove/probe-fail paths and simplifies error handling. Reviewed-by: Konrad Dybcio 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 598292fe3219..3081c115d584 100644 --- a/sound/soc/codecs/lpass-wsa-macro.c +++ b/sound/soc/codecs/lpass-wsa-macro.c @@ -2658,7 +2658,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