From nobody Mon Jun 8 08:53:39 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 8031F47CC6F for ; Thu, 4 Jun 2026 12:48:45 +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=1780577329; cv=none; b=Oz7IhijmTjWdWSYHVa5rmGUOIYH4LDOhfBhvXPkDZIy72WQ39d1nyNrLAwyqOzXuptPunAuF0Z0JjI5jq/mm5O8MFQGVaFNJvDfJkiTIeRFLb6HniTf05LtJLb7ZhACFYsN83LJkgp+V/YdgS/gKelg+w6xNy6Su1+u6S9FDZEQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780577329; c=relaxed/simple; bh=LYlQL8slJT2X3TsQrVJGOcIURgOr7EAYfQdBwvHGCbM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hYURHnrzi4t1zXMQzmjyXqnGZMYC9u5F4XiP0ybjTxTm2240O7AscH+9r/W0IMLCly4ThZ1lNOH95Fwj62hj61BfWg4gJHHbpa1Kh3sQ+5+JVSKYeJZMg04/5LeRY9B1396qshlefuJzh3Kqa+Esst9vJ/G16drYqw3xRjmXAg8= 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=eyKcdI9k; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Q5qBgIBC; 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="eyKcdI9k"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Q5qBgIBC" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6546uqPi2477822 for ; Thu, 4 Jun 2026 12:48:45 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=g3+Ward7dHQ 7AzvjxSqcPJkFYwCD8AMq1fWcD6KwA/s=; b=eyKcdI9kbP8lRGFUMD6l1oNBrja 1BIspPSONk33sTK3NAs7W2zBeVExNakfQyt4yUgiFtYugv3zmNrgqyXtcGyedzXC K865Oa1rHTMKxgXsFFaTpD4VF04ASVfWOEo69ltTnHIFhy56LrHIADAIT7Ygymju Tk9ZVoYZVgaI/7JKJXaafd80uFrxPzW5ADn2Bh/lKu1wv8btt8WZci+mEp6WTKet fSj1R7kV2ju8RwgOr0shAfxTEKTOZXvOCuiZOHhQ/ceaUe+j4KhupYbaSFeI1GTk jp1HaYwpZrnohDxhxR5DJ6trNnu9bozdlPTqdYcCLal4mNOnJz6BV8FrMDA== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ek4hvha6x-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 04 Jun 2026 12:48:44 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c85807671b1so412209a12.2 for ; Thu, 04 Jun 2026 05:48:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780577324; x=1781182124; 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=g3+Ward7dHQ7AzvjxSqcPJkFYwCD8AMq1fWcD6KwA/s=; b=Q5qBgIBCJXBhA0nrbKMvvFayCL13H8bo2kANmq/8aaJ2+W3NdCkgoBKwiXgm3NOu/7 LjG3JcmDBFrW7ce+IRKfFd4JUDvCkV20eAcKQT//4UwdpWCms3mlQgeuTMHeeZTRuyZ5 /cK8TYrI1wv6XxfWhxduC6rlZz82YcNYzBXDIXraQFTBUFy2OHhG1+Lq4O3BmfSo9KeI fWJXXYMpheMtoCxbtCFmq8bGwx8Oz8VZxL564LNvvstP7OA+BGBs5cTdYoCR3OCmGPIj 9bJwZCH4EojIuHnPIsaxaoYxCo4Acm6whSRKOAQul9ivU6LMH75hiLBhHvs0jx3iGBUk 0t/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780577324; x=1781182124; 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=g3+Ward7dHQ7AzvjxSqcPJkFYwCD8AMq1fWcD6KwA/s=; b=WoSriL5VYVDzoKQEX+k02r0xyT7Lf2xaNe9H4XYNYndtJFU6Rp3FOVLkzx2AHcgDU7 p/Ez13mtwzsyQXxbHNgPSOL17z7ViH3cmGJr/bEm3hkZrfOE58n5HCm84BRHqdz8dUES MDKxZrfUWxygp6TQ/25kWbCa9A05UtLNeu3GCQsoBCQNQHfHsaGNw6HzxmOCtu9H5yB4 kUtNuknGArSR5rMTEWhVs1aVPpVQGmb/T3rz7qgqIlTrPNiXNP6eMHbKOJIBFmh3pz6F RqNyMP1v/UT/1y7VadBgU9QCDuUEhYB/z/dtj1NH0CgvKqwYhZW8Rmj7zpVAPZJ5x3L9 +DEA== X-Forwarded-Encrypted: i=1; AFNElJ8a5l/zPLWBYmF8Cj6amlTxDZWNvhAWxtvQcHtXpB6hxwRLVwmwipoEhUgYeyrQDz2eGyF5dnyTMKm4JkY=@vger.kernel.org X-Gm-Message-State: AOJu0YwNJHJ6BbAO+n4iUh3JOUXQl+AfaJWI76NO3KoNlmY4Xr/HNTJT hl6HNP76cPkb78nJ7XNtD4aFptWBSmzLDucUxnehrGSLkFCD9c2TkoHB/w47pM7HDXnKMSZ0GEi J9AoYwZzUAOPFtcTLPUwQqA5MdnOI/TAptWEnQlJVRPNgieVoBpw51SKA21gEkceByKE= X-Gm-Gg: Acq92OEKeofSnGNsZCqLnoF0Nmw1nxyhM/L+ylbwEJrrqXHCga7b3LLbspJIpOCs6DO Z+U+2bHaNy++L+uhVfGE/nQ1SwrhGhmCwoh6skewPvdR5joUaAVGWh0rfEnE/Ztoloo/SrB6IPT gTpvOWSa68ie7gbeeVzL5aMqr3l6HPZOm6ix2W+wi2qypTIY2HtKy8GexwGmKgBCA6QNivLomXs nRVO/0G6zMY9pgtv5OC9Hh5n6GifPsXKzp10KksHPFBkejKajjJgMfizVoEyN4xg2ugKMsowl7D jrcTpUmVj2N8Gm6xX6OPkNU5T8CT9Y9s3ZYRGV8iSnvqRARY8ODM5yl4RoQcAoPp09J1Q3BtVbV j8NgmcBmqeae7IcrH0rsYGb6keiWyGOS7G4VOL+9u/NuRleWY7MVmO3hf+XU+ X-Received: by 2002:a05:6a20:d80d:b0:3b3:e05:7fc4 with SMTP id adf61e73a8af0-3b4979a261amr8468714637.30.1780577324066; Thu, 04 Jun 2026 05:48:44 -0700 (PDT) X-Received: by 2002:a05:6a20:d80d:b0:3b3:e05:7fc4 with SMTP id adf61e73a8af0-3b4979a261amr8468679637.30.1780577323518; Thu, 04 Jun 2026 05:48:43 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c85df04311bsm4911811a12.9.2026.06.04.05.48.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 05:48:43 -0700 (PDT) From: Ajay Kumar Nandam To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Srinivas Kandagatla Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, mohammad.rafi.shaik@oss.qualcomm.com, ajay.nandam@oss.qualcomm.com Subject: [PATCH v6 1/3] ASoC: codecs: lpass-wsa-macro: Switch to PM clock framework for runtime PM Date: Thu, 4 Jun 2026 18:18:21 +0530 Message-Id: <20260604124823.3467457-2-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260604124823.3467457-1-ajay.nandam@oss.qualcomm.com> References: <20260604124823.3467457-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: PoQzKOzq1lqcJMPG3SipxyjmjPQH0oII X-Proofpoint-ORIG-GUID: PoQzKOzq1lqcJMPG3SipxyjmjPQH0oII X-Authority-Analysis: v=2.4 cv=Zp/d7d7G c=1 sm=1 tr=0 ts=6a21742c cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=0L53WUX8MMYAS1EgRPIA:9 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA0MDEyNCBTYWx0ZWRfX32Hx/+X9lDgm hMtGvttNoBUwVhflL2fNa0G5bDKZzcjtMM5UBMkAisz+LNTUEzS+j0zaC/n8T1XmHibURd2QWt2 t9DCGex42yRVgzoi3Z5sjQpBvVtlXdixZZX5zIB1MUucdg2D4fNRNcgCG/SIlXYFdAq5FGPWIcx UxkAEz1nCaifhBHhLjlS2m3zNU+PfGPzhTH12EFrm64T4a5kDYhM3o2ZK4boWLiBbWwsTByEulq ScKftR32FRgpT/f6xmTdl3uO8wvzGmqBIT1OvgA2XtEqghARKKkAOTI1Ukmk6zqd7WNk3n7kpFl AlckoAprN7ji9LW7fvFcZwLHdA/J/KCgRkUXQxdfLqDiJaM1YL2gr8+Q7wPad89EiNDRUq/DKei s2NqRAw/2VUzRQUgpJ+QvefW+o0XQzSD0/obU9kwcEO02qJHYmziM5c62Zlh/k9VIsa/KmlqVmQ rrys1hQhJeF+GnSPFqw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-04_04,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 phishscore=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 bulkscore=0 adultscore=0 suspectscore=0 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606040124 Content-Type: text/plain; charset="utf-8" Convert the LPASS WSA macro codec driver to runtime PM clock management by using the PM clock framework. Replace manual macro/dcodec/mclk/npl/fsgen clock toggling with PM clock helpers and runtime PM callbacks. Keep the SWR gate runtime PM reference from SWR clock enable until disable so autosuspend does not gate clocks while SWR is still prepared. Set autosuspend delay to 100 ms so PM-clock-managed votes are dropped soon after idle while still avoiding suspend/resume churn on short gaps. Add a PM_CLK dependency to SND_SOC_LPASS_WSA_MACRO since this patch introduces PM clock APIs. Tighten error unwind by checking pm_runtime_put_sync_suspend() in probe and by restoring regcache state if pm_clk_resume()/regcache_sync() fails. Signed-off-by: Ajay Kumar Nandam --- sound/soc/codecs/Kconfig | 1 + sound/soc/codecs/lpass-wsa-macro.c | 126 ++++++++++++----------------- 2 files changed, 53 insertions(+), 74 deletions(-) diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index a7c61f7c7f4c..458ea62ad983 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -2889,6 +2889,7 @@ config SND_SOC_LPASS_MACRO_COMMON =20 config SND_SOC_LPASS_WSA_MACRO depends on COMMON_CLK + depends on PM_CLK select REGMAP_MMIO select SND_SOC_LPASS_MACRO_COMMON tristate "Qualcomm WSA Macro in LPASS(Low Power Audio SubSystem)" diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-ws= a-macro.c index 5ad0448af649..5952bd6638ae 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); + ret =3D devm_pm_clk_create(dev); if (ret) - goto err; - - ret =3D clk_prepare_enable(wsa->dcodec); - 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,41 @@ 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: + if (pm_runtime_put_sync_suspend(dev) < 0) + dev_warn(dev, "runtime PM sync suspend failed in probe unwind\n"); 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; } @@ -2866,36 +2851,29 @@ static int wsa_macro_runtime_suspend(struct device = *dev) static int wsa_macro_runtime_resume(struct device *dev) { struct wsa_macro *wsa =3D dev_get_drvdata(dev); - int ret; + int ret, sret; =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); + regcache_mark_dirty(wsa->regmap); 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); + regcache_mark_dirty(wsa->regmap); + sret =3D pm_clk_suspend(dev); + if (sret) + dev_err(dev, + "failed to suspend clocks after regcache sync failure: %d\n", + sret); + 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 Jun 8 08:53:39 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 963FF43E4BD for ; Thu, 4 Jun 2026 12:48:49 +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=1780577333; cv=none; b=OTCIAWLWmnBY4kAJClz6kzKL+xr8tXimGibkaqSxACPITOqRrWHh8YW60A6IsTAGsOzEtqZUSvBk00P/ZGsY8xOhyJGvweJtD37QuhQn9yfHzbGWLN/2mScvF8/jcpFW/HGCT6xpV82GZc3S8MoolI2ehR03/8X0i1BJ4j2Patg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780577333; c=relaxed/simple; bh=iyY+y5TN9IyHjJokwttza0905vWxKzcVubpcRLTFUdE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KaqS4J2PqkbKCH0flrrWJYiPDZ/m5v7lzgwBS0X2kKKSVop7Se+kbccHPvmadhZq4OKKfn0JTFpjNiWoIeUCETUC3nXbbYQ8rUmR2WFT4YSiQ4k8cAUutFdkPnfxlaLK9qOJroLGbaZuMspl3WAKmFZBxTUBAY+WoSbn4qN0uAw= 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=NisBJmnx; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=A8Xs14AF; 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="NisBJmnx"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="A8Xs14AF" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 654BaIoY994913 for ; Thu, 4 Jun 2026 12:48:48 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=ROJ6IfZLONl Qgvg7ILGZbruv22ROJsbV5xSXg8JtFPo=; b=NisBJmnxU7Ta2KBNqRHoueFgzZd e5G4PLRBGFDrrrHbZl4Fniv5HS9MSK0VihBRsUlBuOzgtjB7mJ85ZaUq5O74N/DN BeXIMO16SGu1XNGl75T9vDKttaVTCWvEjmDhmsNtlLh2PyMyW9UUQOd9VSQy2EVY EsxS+7NPCazA2NMK2CIgvvFKAOmqJBWoRnl/3VzQEIbeSZxBsF++68J6TdCYJxob rmOasfnSblC2iFq5FBf+3iG6Q7IXet+SJNnHn73YGBWE5a64vf8C0Hr0aGhJwuHb NvEq9n6lITphXuayDwLjGBMCRv4hW9UWMY54E/5wSt06niwKR1UFEz8H+4w== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ek374sk4j-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 04 Jun 2026 12:48:48 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c85a329928dso1116540a12.3 for ; Thu, 04 Jun 2026 05:48:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780577328; x=1781182128; 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=ROJ6IfZLONlQgvg7ILGZbruv22ROJsbV5xSXg8JtFPo=; b=A8Xs14AFU6sRuJ+9iKwepFMZMSSoMEdWlyQE8DmQZ1kAM1iYhyxLBLNz6DX232/l8P sPK34JvNQS+ig/HN07imzav+EP06uqK7Iohovogjacc+G0FQZG2HmvflfMa7Te6eiBP9 M2/TZQk5YjcthNLorsjbJDz7XjYe4xTGF55QcALFSyD8aMlqzXyLJx/wKBolwE/3r1Ug bcW90cDTNC9yke3X+B7pjVRwkqpsetFHx2ajNENZB2DsPwK1dl20cWVp74rO0e14nTvZ kqg5XA1pxJ60B22Sde9GLs+A+FwBGN+/5pCX7Ceue9GU04DJhp2BI8kVhtYdrCHnR8Rm GANA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780577328; x=1781182128; 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=ROJ6IfZLONlQgvg7ILGZbruv22ROJsbV5xSXg8JtFPo=; b=sPXJmjiF3e+PgQotAGXhUzl+vCYiRdblYYiG1k6+7dpOagCb25LHIouHFd+KSr2x33 GwtbfkJyV2442XHRvN8CtM0Bjv7eYABlpwlTnfR1bJTi96fJ7Bi8nH2QawJ6bHRIEOQx MnWX9NM4HJzgRKFi/McdwrsKyte72FJyCIyFnMftB4rIa6QbzqWQlgy5Av7hoz4vp4k9 Uh1FeFzK2TV3HGSdX11zsLXhGwPFF+5Hhj4R7n9x8sqAzk2JpzXC6RRJJq17mPETOCZ9 uFA1Vui/GlqXI2Xlb9TYHXNYDBVpLsCDTM3y+M50ppTCGaS0D7aLRKBkxzWXWuFXDXAg dY6Q== X-Forwarded-Encrypted: i=1; AFNElJ90t/4f4Rt2TmB+/nk0BhWnRgeDErpPJ2B/x8v5H7PURmKcmQNg4LT0eECIa2MaR5SbMNq0FdPGf5trJ7E=@vger.kernel.org X-Gm-Message-State: AOJu0YxCHudJNziQa/vjt6mCh0q7XjfnlQ1EBQl9Ly6sdb7doUUdgNWK 01SZTl0SS/MLQcY17at/EaANoXjTCgEHWi+cZL2VxZyx+qOSIOSjgk1LrYtfi0LuAFIzE2j+oDN SNSEFdDseFHv7exSDcoQDs3nr3BQzhKcMgjE75WeO5H7U4TRbx9ZhZzRF2+6l8dPb/3A= X-Gm-Gg: Acq92OHK9kNejLdMA/A+RHW3CT2H7UrcEPXceeUzjRkHYdyiODxP+NTaMiOrq0hxBf5 zLFb9DlgwwFVCNYF1iylqRzdnaFx/iAE4wye6wnrncxWFy3TOoo199LrujwFx7wSBL79MCJdcYn 59V7LAUbno/f8a5zvgOhoTYJ2lZ7aIy66nOnyBIvm/xbG/LLhOI9mnW7KQX0NstWRUXC4g2c6Nf Odz8tG7tEULCC+F9A2JROIPXcheXoD5AbqyTiWOgqBFrcX9ug+qpHH9FtGicKkmP32WvEE2c1w5 cyl8BPRXy0hKZl7fgaxxcOwRw9c9msgRb4ZnsLXjyz1fiKENDi9FhF1D9/mFS0VzvQ4c1eH+HpT O3lF1FXy125B44SQTu8tu6Qgyu+MTdgnCceQpfpMIibXr+cmEgq1+uyaNkQny X-Received: by 2002:a05:6a21:3b89:b0:3b3:1b38:d9cd with SMTP id adf61e73a8af0-3b49769d5c6mr8863889637.28.1780577327797; Thu, 04 Jun 2026 05:48:47 -0700 (PDT) X-Received: by 2002:a05:6a21:3b89:b0:3b3:1b38:d9cd with SMTP id adf61e73a8af0-3b49769d5c6mr8863852637.28.1780577327300; Thu, 04 Jun 2026 05:48:47 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c85df04311bsm4911811a12.9.2026.06.04.05.48.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 05:48:46 -0700 (PDT) From: Ajay Kumar Nandam To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Srinivas Kandagatla Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, mohammad.rafi.shaik@oss.qualcomm.com, ajay.nandam@oss.qualcomm.com Subject: [PATCH v6 2/3] ASoC: codecs: lpass-va-macro: Switch to PM clock framework for runtime PM Date: Thu, 4 Jun 2026 18:18:22 +0530 Message-Id: <20260604124823.3467457-3-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260604124823.3467457-1-ajay.nandam@oss.qualcomm.com> References: <20260604124823.3467457-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: AW1haW4tMjYwNjA0MDEyNCBTYWx0ZWRfX1rInKtEpHkMV CenQ/NhttrlXZ0scZeMsNv99zKfqtmU5IHVke2bdS5DVPx5ne42JNpfpRQQNoF6sP12pOiq84v2 05p82xoZNRS7t+KS8Edv2vp088x96UuJ2ov3ZIwMkBqrX2AU7l1FNUQaCR5xrfQ+vGU1/Yx0VAD 3mH5Dr6ZrjwBq10l5jR/wkig1iZanj6Ixm4xO5ftSUkRDyXR8G4bUcv4/1Kn9fNdK4LcjCafTjH febN0Hqlv2Nm/0wZTSycCC9GQ8QmIH6Ddd9UAoQwXaeiqi5lP6w2SZoJQ6r2QTwNexPcB3UC36x QfhpRvbVdrfDcouRLzHUNdvK+3E9p7Y4HaaXHO7thzJS6gUVTGoxHjAidYn7n1iOi5vcZE9F7wA /FHqsyta7CriDM4ZdkAOfipyHkHE4p6CW1n7F7l8b9ugwL9BnYOSwUVEXn5barYpUucz8QfBiRz ixhRMgCHQqtcjf+xVzQ== X-Proofpoint-GUID: bY0DeM-1ROsR-ORqDug7PV0hfhgmgtnJ X-Proofpoint-ORIG-GUID: bY0DeM-1ROsR-ORqDug7PV0hfhgmgtnJ X-Authority-Analysis: v=2.4 cv=eJsjSnp1 c=1 sm=1 tr=0 ts=6a217430 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=tLfOVjUU_VM9_-uA5fIA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-04_04,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 phishscore=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 priorityscore=1501 clxscore=1015 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606040124 Content-Type: text/plain; charset="utf-8" Convert the LPASS VA macro codec driver to runtime PM clock management by using the PM clock framework. Replace manual macro/dcodec/mclk/npl clock handling with PM clock helpers and runtime PM callbacks, and keep runtime PM references around fsgen clock gating so PM-clock-managed clocks remain active while fsgen is enabled. Set autosuspend delay to 100 ms so PM-clock-managed votes are dropped soon after idle while still avoiding suspend/resume churn on short gaps. Add a PM_CLK dependency to SND_SOC_LPASS_VA_MACRO since this patch introduces PM clock APIs. Improve failure unwind paths: handle runtime PM put errors in probe/fsgen paths and restore regcache state correctly on resume failure. Signed-off-by: Ajay Kumar Nandam --- sound/soc/codecs/Kconfig | 1 + sound/soc/codecs/lpass-va-macro.c | 142 +++++++++++++++++------------- 2 files changed, 80 insertions(+), 63 deletions(-) diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index 458ea62ad983..72a973dab84d 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -2896,6 +2896,7 @@ config SND_SOC_LPASS_WSA_MACRO =20 config SND_SOC_LPASS_VA_MACRO depends on COMMON_CLK + depends on PM_CLK select REGMAP_MMIO select SND_SOC_LPASS_MACRO_COMMON tristate "Qualcomm VA Macro in LPASS(Low Power Audio SubSystem)" diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-= macro.c index 528d5b167ecf..6e822e47c863 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 @@ -1346,34 +1347,58 @@ static int fsgen_gate_enable(struct clk_hw *hw) { struct va_macro *va =3D to_va_macro(hw); struct regmap *regmap =3D va->regmap; - int ret; + int ret, rpm_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) { + rpm_ret =3D pm_runtime_put_autosuspend(va->dev); + if (rpm_ret < 0) + dev_warn(va->dev, + "runtime PM put failed in fsgen enable unwind: %d\n", + rpm_ret); + 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 +1559,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 +1627,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 +1653,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 +1683,28 @@ 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: + rpm_ret =3D pm_runtime_put_sync_suspend(dev); + if (rpm_ret < 0) + dev_warn(dev, "runtime PM sync suspend failed in probe unwind: %d\n", rp= m_ret); err: lpass_macro_pds_exit(va->pds); =20 @@ -1698,27 +1715,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; } @@ -1726,25 +1739,28 @@ static int va_macro_runtime_suspend(struct device *= dev) static int va_macro_runtime_resume(struct device *dev) { struct va_macro *va =3D dev_get_drvdata(dev); - int ret; + int ret, sret; =20 - ret =3D clk_prepare_enable(va->mclk); + ret =3D pm_clk_resume(dev); if (ret) { - dev_err(va->dev, "unable to prepare mclk\n"); + regcache_cache_only(va->regmap, true); + regcache_mark_dirty(va->regmap); return ret; } =20 - 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; - } - } - regcache_cache_only(va->regmap, false); - regcache_sync(va->regmap); + + ret =3D regcache_sync(va->regmap); + if (ret) { + regcache_cache_only(va->regmap, true); + regcache_mark_dirty(va->regmap); + sret =3D pm_clk_suspend(dev); + if (sret) + dev_err(va->dev, + "failed to suspend clocks after regcache sync failure: %d\n", + sret); + return ret; + } =20 return 0; } --=20 2.34.1 From nobody Mon Jun 8 08:53:39 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 B498447CC9A for ; Thu, 4 Jun 2026 12:48:53 +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=1780577336; cv=none; b=PLHUypEhGHLqHFA4hKgJHRDBn0JmLM+HHD/o9Is6bWKdciL9L0X3avM6tut8vcdFZjdrLcmoQvTdmlVBxhKqbFHQte9RYUx4bOE3uS42wyCT/VzFHuYArvffZb7+QgQEVw4oha8fpg4AOXvcaMm7s8OxDfTZ8KMI4Amo0mlsHzw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780577336; c=relaxed/simple; bh=thq9wo4DnffvLwfPbwYBFKtMetFuKw6slUjFLdQaF7s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dhenE9LLsFuZDMbbZnWvE9iijbvtOwGCyC2c7XdxA+3XMdCR1XvA4etqT8/a7XOrgmn9ry0KNzGJuN3GrJ0dIdp5zRjB1fbAzvb3eC4z2y0qGHVcA4w2/jZcATGzEzaLeDd/y7JgNo+wMSC0Hej38JouTubZGFSdxdyN5q4eB4Q= 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=GvvLNtCq; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ay0IC5Nv; 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="GvvLNtCq"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ay0IC5Nv" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 654BJr9k944517 for ; Thu, 4 Jun 2026 12:48:53 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=Ny3IMUpPlVW GWfkNkYBzSUcjD2sWlp5f6IKTe+H4Ymw=; b=GvvLNtCqomW9SATf27g8vvmLvvq hXH9ygma/LchhFLGkXGJnCe/tdY53y2OkqTJJv9k6bAJLoM4Jcob4xzzNkKjOdnn 6Vzw8jIsCOcrnSID43cazIDlA1hM9o4O6w2Kz8wY+yFvM2578ndv8TznLZYj8W2M ssf3xb/skpPIVqtZHLr1WwS1sD8CPcJ0XxPHp9LNiC8n6SfDzxOFl6QWc6o7zir4 0Q3zofqVpwt9ogRaHurdmjnkbwjSX5vGrrwW0Ydf7+lNqA7nV8/GVUU9gc2VWkTA 9OtRO9uX5BmNeWyY6z6btjAQeGPHJU7RUkdRYcz8UUPcOqY+sCmKHKXBhRA== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ek8d50bhp-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 04 Jun 2026 12:48:52 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c85dc345ac8so431504a12.1 for ; Thu, 04 Jun 2026 05:48:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780577332; x=1781182132; 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=Ny3IMUpPlVWGWfkNkYBzSUcjD2sWlp5f6IKTe+H4Ymw=; b=ay0IC5Nvr8o9rp+8BvJP98d8U22a6k8cicP3PJoMAaHfDAuE/xPlmFJxZnF40c99jy gntjJeEPTTrgG1B7bQCyeBllhkxwmPUb5ewBV+MfWKpOy+erfL2lp08c8ARztpU0OJhW fWXqrEPB5HHrDMlhdFzeb8Fh9ihuir2q+QPXlqa6BeHAUWCOQcHIu4bUExRAhifFg+go XrvO9Bmz51pSkWRT5VBTeOkl1Q2j3YrxYdWKVC/vcsguog4XYBcVY4La8QnoWcwayvAl RzOJS+tz7p7ZUqbGMwtkwQ8ufEuF2WCLlo7pnVcmFwsnSfjXhCeXp2Uho5FEdNx34mfG DzSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780577332; x=1781182132; 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=Ny3IMUpPlVWGWfkNkYBzSUcjD2sWlp5f6IKTe+H4Ymw=; b=VqeDoUUVk3iUV1InIYH6ii32Svn9XACffVkTdn6TGdO355B025uSrVtpx1KJC4tY2Q djTRVqQg+v3pGdJlgoggAdMv47fjBQAHGLcxP7vipGzfnqZyVKSRC4o210NIdKAzRQ5W a7t+ZGTSD3dgcvn8beGg8s1+8u9smD/jI/d9Dg80xVE8l3l5X6g/sZCASa6KU6cS6gIu wgJ5Gng1Ft9eU4TQlVnNlddmcRhikbUhoTa7LWbCDUD/yBhM7ceJG0/0J479fPaMd05P TZS6EHLHpqJI+BTw8UCkUt7h/HSHEAQfc88d2wEqDe5kl1pG3iJOtX1C8kJeci6Fze1E EdYw== X-Forwarded-Encrypted: i=1; AFNElJ/WNgMkLyKdWzRFj1RLkltkmT3F96Ys6uZnl0noOU5G303ZCwTUMl5Os+U48F2udte/mHSpQj2SyoSFKqw=@vger.kernel.org X-Gm-Message-State: AOJu0YwURQTB9J19VuOop9/72QAsKhjVMJwoPU5Y1zoojA8q4TLrt+ZI 4dwjo9fk5cnIseHk6KYvCYZpRauDdLZBhO2kCLleYCXUWHk8KXox6Leo4s+nrysz+s2sKA+LJJ9 1Z9oiKX65yzuefxYyfIVC9/z2B6NpAgAgAYP9AnF6Qsp21GoXYwSAB0yjXaVdURi5ucw= X-Gm-Gg: Acq92OF1Qa9eAzZ+H5G6mhh3qTBH5Um0CSTu+N0urzriJ1oF7ggifavmpGjULjIp97X UvffI94ENKi4ymHiiNzJ8vZgRxP0eABROeQ9LpQ/v6oV245OsQieVJS+0m/0VeBGPpu54tAaQPL tiFjROuKkCL4HKbz0r5qrZl7bz07Nao/jzjA1BRZk0NOE9791C9WChcNjNKrmm7cmGXZlVCS+y7 9hhN7It6C6cx46cx2fxkVvA5+X22DNZKDpxP6mKPXnEH1UXGfnjQkUQk3HGM4Bjg34gOdeeNRQW XwOQuOVZUvw5OXSKp2tvGlQak82f2tuog+LNW4mW6r+4nTWAKXES6eLQHzt0m5iyNkRvzU8R65b nySvzLQwP5yc3MaDB14jL82wvOhs83kbVA+6bUZk33aqQNtLZW2Rbven/8R1/ X-Received: by 2002:a05:6a21:50e:b0:3a8:1350:ba47 with SMTP id adf61e73a8af0-3b4977b58e6mr8944148637.47.1780577332196; Thu, 04 Jun 2026 05:48:52 -0700 (PDT) X-Received: by 2002:a05:6a21:50e:b0:3a8:1350:ba47 with SMTP id adf61e73a8af0-3b4977b58e6mr8944108637.47.1780577331731; Thu, 04 Jun 2026 05:48:51 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c85df04311bsm4911811a12.9.2026.06.04.05.48.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 05:48:51 -0700 (PDT) From: Ajay Kumar Nandam To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Srinivas Kandagatla Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, mohammad.rafi.shaik@oss.qualcomm.com, ajay.nandam@oss.qualcomm.com, Konrad Dybcio Subject: [PATCH v6 3/3] ASoC: codecs: lpass-wsa-macro: Use devm_clk_hw_register() for MCLK output Date: Thu, 4 Jun 2026 18:18:23 +0530 Message-Id: <20260604124823.3467457-4-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260604124823.3467457-1-ajay.nandam@oss.qualcomm.com> References: <20260604124823.3467457-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: PKA0Ke6lzHDRbXhVPe6N8MJSykEoNGH6 X-Authority-Analysis: v=2.4 cv=IZG3n2qa c=1 sm=1 tr=0 ts=6a217434 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=3zrE_5izju647JJH3MQA:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA0MDEyNCBTYWx0ZWRfX+xVbAj0dwf2r 7hPTLB3T8ywAbz5ItQrBUTttzyvSow17//W6HSeKhwhQShwNC59PeQY/bQ21tk5PMu9Fq496y/M 8Sp84bVaV9REZl+9XkCHkeAEISO4AP5N2dju2BmzBgAk50WihDhUAMWLvdj/CJrhKR71o0PtUax KTLkwtxRT6PcNn2VUSPaCIxFWVnh1v+RdzdfwS16QShdlDS3cgczZwMcDo7NCueZ1XoeVGaS7hG 9MUNG8Z/YVB0XRBp6q04HiQaULTc8kJaB/MwWsc86IAOqMV3DBrAz8PVZtePlVvSDBZkWmRmfU4 s1NQ7T5RdaToy3PFCzaFE/t7hfxV5+OsUF3BQZcOfTpjbkb/v2qbtatPFwwJSgDGFpUawz29nQV sRAo0CFc5UbAl1WxoPJgxvH68KPaF72VJAx2vUkL24ZWOGR+qjubyNCjPIo8qrYq47LsmpqgWD1 rk8/luitLlj4t+3v/oA== X-Proofpoint-GUID: PKA0Ke6lzHDRbXhVPe6N8MJSykEoNGH6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-04_04,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 suspectscore=0 bulkscore=0 malwarescore=0 phishscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606040124 Content-Type: text/plain; charset="utf-8" Switch WSA MCLK output registration to devm_clk_hw_register() so the clk hw is automatically unregistered on probe failure and remove. 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 5952bd6638ae..97e917338d58 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