From nobody Sat Jun 20 16:31:45 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 A3C0D3C3C0F for ; Mon, 13 Apr 2026 12:18:50 +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=1776082732; cv=none; b=Jzjy3SDrK9918cmHMGLhrboISyJauugCX/wQeJpQ7V0VNLoHPFbdXEGIsEkCgW/KME/ujhwbe6+k3IBGJBn/EeGNtIuXImLJ68mi//AICC+otL9f0r1p+3n5F1ho7hN2BzhAFnpXiRC9M9nsnGyRMitP2H4whR4bTS+Tv8wF/8s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776082732; c=relaxed/simple; bh=AfHQFN7pDlYelGn7pGidt7m5AGz7WK9db5mV0zs3nzU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WSPxnnc2nOZqc14DhI8TTl43sO+J6gz93Vts+3gt0yCTAkoDBCDRBWVQSgzI8E3mfK7+afvcp06uWNLCBHH0sFpLJGqoV2RVipQK4HSklCKSAz1GqhpTt+KGjiWaeqZe5qsbkWsyp/2zZCyX7+muwwoGXxdmuZ791ulA9YdDvnI= 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=Secgk7Dn; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=WsXQzBDa; 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="Secgk7Dn"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WsXQzBDa" 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 63D76x7F1780819 for ; Mon, 13 Apr 2026 12:18:49 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=6AnTcThYSkI vK40nziJKZU5G9UJ5bYtnDXyYQeU7520=; b=Secgk7Dno1JE6HqpokJWKzR+xmu m4r4nYNTQqOPANXi6mIdXCaJ1T/FAN0ExUt1P/eoZXE/gBoHtpveAPAIS24v9szD nStdwlFLVbtI3C61ur9IUsjq57envogMLkBqWMpgeXelsoDG8MN/jiRuSfxGAAt8 Y0VWg83GeVhMCeMTzMbrnSqz0ujhnaGR2NTzYxGdXucTwO4p4Ow/EeKLJ2GM85sF V/ReX5F6vRE1IcQbqvmRQdZWRT6GsyYrPol5AJxvJuKufAOfYVWwNGpwkqhq/DId Li1Tz5RRJtV4bYAfeBIn18FwWvESdpspJrGYIAwylNAhP+ghI95Lm5se4Xg== Received: from mail-vs1-f69.google.com (mail-vs1-f69.google.com [209.85.217.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dff0jw5je-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Apr 2026 12:18:49 +0000 (GMT) Received: by mail-vs1-f69.google.com with SMTP id ada2fe7eead31-60521f54387so1845088137.1 for ; Mon, 13 Apr 2026 05:18:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776082729; x=1776687529; 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=6AnTcThYSkIvK40nziJKZU5G9UJ5bYtnDXyYQeU7520=; b=WsXQzBDa1oM19VI+vt3+Buwgch1R3voWd2IvfKXsoOojRBZrz/+xHgW4XlS+pHvYNK viIfIva6WjVrGF8sGzv+FRSF3uQIcV2ebFw+raoWWSheUXTqEIHJ0bxHB2IHcrXzGyiU OQmcbw/eaGxbVB3eAKtrnJcpPShOvXIsKzVTgwrnvB3LSuWGE6tQwBe7adBFbqXmUkrK CFeKJ0lriEbP2tMS36IxGTjxq78M8EOV7GDXqZzir24EXDRdAqTFDVJ2oZgBM3Il6ve5 RTpwh5Xu9GdsAQ4HTp6ptNDd3g+Hhhn9LDrbab/eJPTjX+4hx1lF2r1uNXaWFJF+XvSL 45Mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776082729; x=1776687529; 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=6AnTcThYSkIvK40nziJKZU5G9UJ5bYtnDXyYQeU7520=; b=Qlqdt5PROldk02RP/yvEamcu7jX2w7HqsgHA+jIh9LVB8BBOJsKpxWOiUEatak7y4v 0DFx6nSD8y6iGps59TKs2SspUgCvl9KtToDdGTmAeEUYbBRwBC6juhwFfjiCH9TuSNJX CT6ssdBrqHICxaFB4imegILEVBDGrmpQGgjwAXPp56oDW0vj0TM/NokiQLpRz5jDshRk BLvhhSuqRWayLtQ8zo/RYhtjrdOOujqigei4laxHTQxfGmnoUH9n5/UWknBGc7unyCZ6 F+qk57ElQrByfioyGEPyyfqVK3aYok6SZULTXXYG4jLAjEq2i4qIfgOqmIRxRpRhlAj5 dp2g== X-Forwarded-Encrypted: i=1; AFNElJ8jrDPA4vQca2fsjGBg5UkiQERJfvqLIcnz9zvGJlH2MHe0FG4DXikXrpuKL4dJJbnxfQGd166uUhSsGNI=@vger.kernel.org X-Gm-Message-State: AOJu0Yy7uYMDstPmvOyd0JvnEMDBYaBZgTSFda+OQRTUqy47EJNryU0j ymLyw0bqW3PSNlkTykxHkpKj+ILKrY5+i2jtv/F/FrOT6XKq7xjNaHt9qHOWwYTp3kKtBoOQ6H/ bmnkjpFGAKcXdSbGRkl3uf9mPIIS5rBPue/P6ginLCMi/mKF1oKpk6vWeYFbR0tHvC6g= X-Gm-Gg: AeBDievKj7QDs+cEt653ZYGJizuBtnlnfMXYneGaUFKxfTVJq+X8jQNOibsXnXMkN40 YbbsdDX7ZmmJ4LGgXlgFnXOrOSJdoSV5QopvwlnLmoJ0LilyPLgqZHuB06n0nkPRykcOY2DmFmS hDphWpPGTLAEEailGnK4mDNavUnSdKxeAq7YJDX08d/zQiWGqZ9e5AcqKlUOA0gPyQC07NSPLqA 5p27m1ECc59WKEyPjkwk84m5W2NtEsyr9wY4IRJh5BJ4u3MLvC2qeNWYl/W6kI6nH6/DO/d34Pw Jwg1CLk0sYwQVn+KhSrB2c1y3cehBLzxhzK79ijbTYRb+8nt1DF5jSnF7gaQTNs8Y7gcuetE09L LTDimwbVOlcFl/8lS2sHXq4ftbXDKGyT96km3b1wJBXA2pM6rRA== X-Received: by 2002:a05:6102:5708:b0:601:f386:9ed2 with SMTP id ada2fe7eead31-609fe89d49cmr4713618137.7.1776082728851; Mon, 13 Apr 2026 05:18:48 -0700 (PDT) X-Received: by 2002:a05:6102:5708:b0:601:f386:9ed2 with SMTP id ada2fe7eead31-609fe89d49cmr4713606137.7.1776082728430; Mon, 13 Apr 2026 05:18:48 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-9568c185a71sm1449231241.7.2026.04.13.05.18.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 05:18:48 -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, srinivas.kandagatla@oss.qualcomm.com Subject: [PATCH v1 1/3] ASoC: codecs: lpass-wsa-macro: Switch to PM clock framework for runtime PM Date: Mon, 13 Apr 2026 17:48:22 +0530 Message-Id: <20260413121824.375473-2-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260413121824.375473-1-ajay.nandam@oss.qualcomm.com> References: <20260413121824.375473-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: AW1haW4tMjYwNDEzMDEyMSBTYWx0ZWRfXwtiiFF+PhWUT 8HJMC2t8wTocCi4X79l+RZGImwDeKk+rutAmSxDuN8CoFaQzFd/GsbrGUJPi2tbWt83GO4LvWn+ o69H4Q/9f23Gqxf0Y5ViiqTy66ecN2e5kRbr4k9Z6zpq2Jou9UlviBXQmvHxGQDeTAY2Xv3Jb4e 9ZP/qhNCUIlr/+r+h2Dxm/RZIBk1x4xecMOXuTvHuBqiRKRnDPn4Rf5vxlL5yo/sANM6Wv3CFf/ tskEnrrVWOEOZKcPDWPEmQrzziEO4yKF3NUuNVHVj/rZ3SKYcacCCq2hbf9s4icYOTR6PmQXCii HiscwWdL/rffWYA8MX+qLveetdpYH+fT51bd0qEznSv7L+Bq/39TFdCdwyZjw8+Glc7VvHbjt6y rVJ0E9H16XN3V5wGRIWn2yw512ucy1juYdWx70tHtItUKetoytb4C8kIpiMq0Cd5aV5Tq6MJ8nD jXptGKeRWQemHwlJiEA== X-Proofpoint-ORIG-GUID: l9sSycwkSeUfPC21l2LucdNj55z38J9o X-Proofpoint-GUID: l9sSycwkSeUfPC21l2LucdNj55z38J9o X-Authority-Analysis: v=2.4 cv=d/LFDxjE c=1 sm=1 tr=0 ts=69dcdf29 cx=c_pps a=5HAIKLe1ejAbszaTRHs9Ug==: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=6iqXw53aW0HuLngz8iAA:9 a=gYDTvv6II1OnSo0itH1n: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-13_03,2026-04-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 malwarescore=0 phishscore=0 priorityscore=1501 bulkscore=0 suspectscore=0 adultscore=0 lowpriorityscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604130121 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 | 118 +++++++++-------------------- 1 file changed, 37 insertions(+), 81 deletions(-) diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-ws= a-macro.c index 5ad0448af..6aa6c4d95 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,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); } =20 + pm_runtime_mark_last_busy(wsa->dev); + pm_runtime_put_autosuspend(wsa->dev); return 0; } =20 @@ -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; + 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, 3000); + 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, @@ -2809,44 +2809,26 @@ 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_mark_last_busy(dev); + 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) @@ -2856,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) @@ -2868,34 +2846,12 @@ 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); - if (ret) { - dev_err(dev, "unable to prepare mclk\n"); - return ret; - } - - 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); - if (ret) { - dev_err(dev, "unable to prepare fsgen\n"); - goto err_fsgen; - } - 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); + ret =3D pm_clk_resume(dev); + if (ret) + return ret; =20 - return ret; + return regcache_sync(wsa->regmap); } =20 static const struct dev_pm_ops wsa_macro_pm_ops =3D { --=20 2.34.1 From nobody Sat Jun 20 16:31:45 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 CC6453C3C1B for ; Mon, 13 Apr 2026 12:18:54 +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=1776082736; cv=none; b=l2RA6qxrKD/aSki6DTgnhdtiXdC+htJ0aldW7yz1os8YLTgAufDgBysKGUSe88yj5YIrbQHarHvRHPCI+NcP5h3yn/rDJbcr8Sdkvq3dr5YLaYddFTLy2kGdVKpIGL8uyr9lcXWgAFs2LXKId0gG3wUoGIMCbzmuvk1osZgWvPQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776082736; c=relaxed/simple; bh=YcwoMzxukF7+UWLUh7ShFeHrKILX3C2ELlT1tETBD3Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EpdtAlFy3xNjYZGS5AupqakRk3W1mejpwi3UKcYwCjPBJpaLQ4WO33rXvbi7H0Aoses4RzZXtk2r4PL/knL7ihgP33v96XxiW2UswL69XbIRfHHinu6t/DRIdpKJjQs27ZM8R2E8iISTQapDlvaWSpvDbO6WKfz7d5MBVB3sQaA= 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=cSM9Nixu; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hGG1NNQk; 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="cSM9Nixu"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hGG1NNQk" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63D82R13605319 for ; Mon, 13 Apr 2026 12:18:54 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=hPUdOBqvPU6 WASDP0dE6MPIvij1WDI+uBqfXimGLyo4=; b=cSM9NixuuQx0xWwwrUCGCu0WVlm iFY1gHp8jqQo+O/IIKAzD1cS6dOe7DZRg3/UBv8FQx7a11OyH1XvjiR/boDbraPO HTcnb3t3Uc3PY9yKnxpPxWglx9KLYgQZ/02Z7FrtGACpeW0bVv3WnCN0S18z/Ge/ DZXqnr1yDs1eCBs66haLvG2PtKi4tc0LzMR4n8o9I/S/26uWsi//8fMnrS74Alwc HO2XAXLnJK4iHGkqlbbjTSUOIdsJkrsRDub9nv+RLwOZWqfG48tyFtHUZaIxjg1W Xxz2tegAlxB3o2ETEfUG1r12fO9yHmwLGTkTOjb2Oi+BZMrA0Ian6Kmr7zA== Received: from mail-vk1-f197.google.com (mail-vk1-f197.google.com [209.85.221.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dfffhw5x2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Apr 2026 12:18:54 +0000 (GMT) Received: by mail-vk1-f197.google.com with SMTP id 71dfb90a1353d-56aa6d6bb5bso4194289e0c.1 for ; Mon, 13 Apr 2026 05:18:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776082733; x=1776687533; 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=hPUdOBqvPU6WASDP0dE6MPIvij1WDI+uBqfXimGLyo4=; b=hGG1NNQkoN6QW5FKg/PSTL6RrQBHPQPGnA6wasqeDVHuVih1yX5NUJUec0jkHJ7Otj WAhX8RfXnovvD9YG3un1/LgsTC4JRX4XDm0f4oyyRjTnl+W/d6wh0c9Cj3BeEh3276GF zwXUiSVsflDWzeTwTZuzvFuibJsyyQOtKm0vizcyDJq1/keyZ2wV0Gxtf5mQFmwH1EWO 0zUxRWXtOz1opmzxJ8HXPEz332tG/1Mq1TYHp6/uX72CiVlQdiaPoeEyUxdkdRZDwlFb wb5icp9OeN1iNAdl+bMhWTij8J9qPXEfxOik35VHxWLQqeKLI1cyr7axf0IugW+/PaOI dv5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776082733; x=1776687533; 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=hPUdOBqvPU6WASDP0dE6MPIvij1WDI+uBqfXimGLyo4=; b=B1OjwQKkX58MZeACIGOjaepWfyUvSOBWFM7hRB9NEC6Erzm6R0KTX6HgjHkblcK4yn j5qgyFfpzO9oiWGxWPGsZDGH11gjFuW1QzYArKy4YkJNh3WRnc9AVdB1FnTjiKz0IAli sbcV4830D9E3oaryXkP+h2WI6oonKTMeAzlVyA/T3OOpm6YV44bPp6oEPAgNbgFoKBDB cff9g8TxJMvNGvxwTArU+0uXJ/F9MWYbge0IvWqWQ6/4/L9WeFuk1tDu/ik8h7V4vev+ Jd8b2NveiDnlCHOwkFuQYu3WZFTJvQ3UKvDXlz5kDmYTfnCHlSVXVOJls4F+SEA998JC 3F7g== X-Forwarded-Encrypted: i=1; AFNElJ9U4B2cfuaIFLIhEoBLeaw4fJ4zvFKYs1lqyDMuTnR22Psg5Tov5m/yiDreWlw39kvXJTrG4MZzqaGiD1U=@vger.kernel.org X-Gm-Message-State: AOJu0YxGRxgweT3vSWyLsQg+0KLi3iIyGlVlUNAjHji/TocwsYSZSB6X 76tGmSDq0Nnt1Q3VEWngXJnLDd+Dbj/ppaTGNJn6kB1Z65erTxVZseEjvZdUoxw6BDi3c9m1G2T R/H7YZg7LPrLdeBYx4UEHbRlAaAxS98tViwgJxI7uFpleyehFbspW2ecCOLn6mQEAKTP9/TxGwp M= X-Gm-Gg: AeBDietVQJ1C1eL0bDR2BA8JIPL/TQ1+tO0pq7pp+k3lg/i8u7DVRg8lgnAHUsybV11 2sxCshAvCWNrvK07c5EVo51zGvCu5Vcv+6bCSmd01lpoB1712hKKcnOded8OkZT3CAL0V1eN0/1 cBghBf/Fj2ueiRcIXJe29DNwe+MBEmMwgrVfsJ34exQBelFZe1vJltc343oiE8tdimcELox2pMu isJmJ3Z3GpyEXGgkkwPKijXS/mqSEYdYF3PD/C+up79hNejDKPuVB1A2kfL7jx1ksVo0nF1Nko0 fa5/X4M6HOf745YKX9jmicpvfxgwg3GOawZgpqDC8wI4lOgnPRVvyX0KjWY/JMQDG+zGjufv0rW M9gKnUs3IIUlenYe/VEzSmXQxXj8TR9sxDOb4nzPlZskXN1xWSQ== X-Received: by 2002:a05:6122:788:b0:56b:8e1c:582d with SMTP id 71dfb90a1353d-56f3bcb0843mr5016043e0c.14.1776082733032; Mon, 13 Apr 2026 05:18:53 -0700 (PDT) X-Received: by 2002:a05:6122:788:b0:56b:8e1c:582d with SMTP id 71dfb90a1353d-56f3bcb0843mr5016023e0c.14.1776082732482; Mon, 13 Apr 2026 05:18:52 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-9568c185a71sm1449231241.7.2026.04.13.05.18.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 05:18:52 -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, srinivas.kandagatla@oss.qualcomm.com Subject: [PATCH v1 2/3] ASoC: codecs: lpass-va-macro: Switch to PM clock framework for runtime PM Date: Mon, 13 Apr 2026 17:48:23 +0530 Message-Id: <20260413121824.375473-3-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260413121824.375473-1-ajay.nandam@oss.qualcomm.com> References: <20260413121824.375473-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: AW1haW4tMjYwNDEzMDEyMSBTYWx0ZWRfXzDfLZZ5Hc6TI pgjzhiwwqFcFvxmN+D4ELT4bVtsujoobexuarev151Ae80XGtyy9HtnCUPZ9lqieQoTidftULJ8 TjjHUnziYomFRqLw6ua851lYDPK+kqiIf/JpuZb1sAkcBv2lqBecqkxYVjb6fO9fcG1KMHWjnja S/IOJcBHMaXMkIYMriYOdp3T4j9fquqCSggvpXSdmqK2/ocxne+Me7fpKgqm33SgB1Y+VQBO5Z+ zA0ygxHEtP4xhNwzkvEvWyC386slYsf2mQyuCszZ6qyO3w67TVoMk7epdNanU/MjW3L94Nid6G0 Q8ITaUgOqNtQ4NdEXCMJp7MxKv9vg6WZ4iBxU4IIEkbBcFnQClSrbjvwoRqwkczpLzJQbh1Kjyb ye2Iin+e+fkpq/NDJt/P+hvaPJZnJoorRdxIm2EuBM0kr9Lp+jpzcFOZCQSinHk9/bjk3e5zULI 9rrlEaBaVzIkKgakkwA== X-Proofpoint-ORIG-GUID: XEyRpPgg_BLEUnqcv_0Pr6X0ExrBYIgs X-Authority-Analysis: v=2.4 cv=FOkrAeos c=1 sm=1 tr=0 ts=69dcdf2e cx=c_pps a=JIY1xp/sjQ9K5JH4t62bdg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=YBVk55sqNhi4ukaP828A:9 a=tNoRWFLymzeba-QzToBc:22 X-Proofpoint-GUID: XEyRpPgg_BLEUnqcv_0Pr6X0ExrBYIgs 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-13_03,2026-04-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 impostorscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 spamscore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604130121 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 | 120 ++++++++++++++---------------- 1 file changed, 54 insertions(+), 66 deletions(-) diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-= macro.c index 528d5b167..b909f8bef 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_get_sync(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,24 @@ 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_mark_last_busy(va->dev); + 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 +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,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, 3000); + 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 +1647,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 +1677,27 @@ 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_mark_last_busy(dev); + 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 +1708,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 +1720,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,25 +1728,13 @@ 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); =20 - return 0; + return regcache_sync(va->regmap); } =20 =20 --=20 2.34.1 From nobody Sat Jun 20 16:31:45 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 C37E23C4559 for ; Mon, 13 Apr 2026 12:18:58 +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=1776082739; cv=none; b=T3prpZZ5tatwYuYVuhBnCqDLZ4SqMfCWj5LXrDDsHm1Qppt0fW16ZKlLprfwjaFyB1la1tVPPZ59rG6bg5WFwWONuZRUraJad6gGd/2P5VLwsG+OTyamOVzmtxWKdXekXz5JQfuss/Utne+DjQzoKzAd070kuI1ar3StpBfobis= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776082739; c=relaxed/simple; bh=+XVvtrOb6sUd4M1mjXM60gdJnIjDO3h6AAaRAM6nC4Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DY0iGlPgcJwf0TF2YQFXudcgnuUmBdTwcM8EoPCHF71AqQ1zHEA7d4Fx+Ek3Z2cUNbxienn7vE8hBfN3kY0btT9L3MWu2ZIQx7P9/RAoiZlSWlv/FV9h2ZPawwhtK1aKGzFpISJ71vT6Rx3hRpx0ZZ/0dIQeE0vvsMPeUX1QEzo= 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=j5VxvLgZ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=b/2eqdUl; 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="j5VxvLgZ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="b/2eqdUl" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63D7S1lw625247 for ; Mon, 13 Apr 2026 12:18:58 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=Yns9nvbNXPM 4TrtSu4abBOXjoeDxYcQDqoClmO9sAno=; b=j5VxvLgZFgUqhJ5DuLBmnI14xiM 2084BIyrJ5+g4XkDiFu9CgEDXLeetRzHM6qBSLTCOmJqVz9sJkHbQkYLSwdamdbz MhmiHctx9ZYteKyNrrp4TH1n2CeMdGikix3v1CnbF4nffn+TMxJEdPZvoUsxWJsy iqsO/WaJlqKP+8QJg+9jGGXUtgaQLgMODPdwm/PeXe2fz3nPKha895sgs1dGzF/2 Ato6GcJTtsDpSw7ZaIzDt6V1uvqSfRrKsIpjYIrXuayQZiRysVgDbwIU7LC3ekly pv58xFHALYeA0ztNF4uK/JGsKokcofp5kb9YJ8zDpJGWCaoGZj0tJ+KffGw== Received: from mail-vs1-f72.google.com (mail-vs1-f72.google.com [209.85.217.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dfffhw5x8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Apr 2026 12:18:57 +0000 (GMT) Received: by mail-vs1-f72.google.com with SMTP id ada2fe7eead31-610478c6ba8so85882137.2 for ; Mon, 13 Apr 2026 05:18:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776082737; x=1776687537; 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=Yns9nvbNXPM4TrtSu4abBOXjoeDxYcQDqoClmO9sAno=; b=b/2eqdUlJyVaduoR0Sjq4z1/BWKRCcP1lOToIyB7RlIcogzJAzMxZA0wNmpBbJiklX e4IutgEC6NB+vQEuhG17OS5but7so1mabI4iYR97LhO02yTQdi4d49Acv04KGKZpYU4O HkO4bsITKreJct1a+OTv+P2w25KK2HB3Jk2zjJp+FYQENB9tyhnXHfvfMM7ZXowMuT7D TXKZnaaEDLl20wxyZ28RwN/3qn2ON/wvcFNCfPpPXii4J8Gpfd63lAmUBkBY6RcBJiRg zCm8XXhks7PEKHqoMXXmKlCY1o7VqbLsgowHq9HjiF7TLVrIjFQg55pP0g9CJvj7vmmj zOjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776082737; x=1776687537; 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=Yns9nvbNXPM4TrtSu4abBOXjoeDxYcQDqoClmO9sAno=; b=HQJPuJ7BJI9+bcxzXu4IyUE/CBWxb5VVcmpOHyOrVN8ElDKxdfUlar82TtoLgb5Psu 8brZmsPJaZ0GusCzi1y9h1fPXHVMLcOWiMZJHujtWQUkky16YQuP7PnW3eQ/JNjsYZz0 vXXSIImKN3I4B/VIuT2VInKcKHi2ftMfYgSsjxR+18XLfPR1fanapArJzfZHNr7NBz91 eFS+SiZ5sNLGSezUPluC675spXXKwnt1D7fvEqtcag0kZt1zyu4f3LpyiTe11TepYse6 EsdU5tEUPe137GrB3YirZJ2Mc8EbHZEzuHsqlF9IxKRq3SXKlT090RKPhrnIxjJ6m7YY lmLw== X-Forwarded-Encrypted: i=1; AFNElJ8WFGS9UrJseIKoreDxXexz3wJPMX/BS5azk8VX04lwg3BfRm60SaoH08t2tfxH9EzXoiOMjwoYnn+oozg=@vger.kernel.org X-Gm-Message-State: AOJu0Yxas6gQ0J1SjQOPFErvyKdZyByvtfIAi/cCOjW8ZdcsUuGQoT2i kadfAN2vkNA/zJaf/sSybYvU1s1lnbPY5QgL8nXdtgnPOnMpTPdYrSfqaxwHvlzTE29bpQ0eiHw elbc7BzV5Nx8T5gQtvKkV2tKv342lZZ1FM+/HDgeduQVGfGUkRtnKwnkeXCp/7H1tFxQ= X-Gm-Gg: AeBDieviSEcm+oxeiNpY96B6IW7sLWPAJPnGdzM+ACOrZBhUjaEM6LIQ69n2lVWbqL9 hLHiZM3XDQK0C4dgjOqifAh47r2rmfL0ekZG1FqqeWsmiRIAUArJKmmFNCIsA+eRdVbhoR9U3NN 9HGpWZzluz6hCh831CKVFQGJRiQm7nzG9uosRo/6MUg6wOIyVMdLx4Oq8skWLPb5fUhEDWbROTb Vy058EMGp+1t8rS85695tkT1LNcSS60k4crxS1anCjayHtZDHxEyzn6n/sy7ncD9ZfVxeWfUBnJ 82+NWHeLS8fqcA213ZvtwxKPjcCl3aKAy3bTdyEdbPpwobAWd/f6sbneX7QKCWCJwrH/vXDyjIy vI7bwIbY4BtiILngVPMfhPWi5rOXMMjBsY8s2uxcNuuUAI+SIxw== X-Received: by 2002:a05:6102:3a0c:b0:610:1239:f6d7 with SMTP id ada2fe7eead31-610123a0b70mr437421137.18.1776082736831; Mon, 13 Apr 2026 05:18:56 -0700 (PDT) X-Received: by 2002:a05:6102:3a0c:b0:610:1239:f6d7 with SMTP id ada2fe7eead31-610123a0b70mr437408137.18.1776082736416; Mon, 13 Apr 2026 05:18:56 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-9568c185a71sm1449231241.7.2026.04.13.05.18.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 05:18:56 -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, srinivas.kandagatla@oss.qualcomm.com Subject: [PATCH v1 3/3] ASoC: codecs: lpass-wsa-macro: Guard optional NPL clock rate programming Date: Mon, 13 Apr 2026 17:48:24 +0530 Message-Id: <20260413121824.375473-4-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260413121824.375473-1-ajay.nandam@oss.qualcomm.com> References: <20260413121824.375473-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: AW1haW4tMjYwNDEzMDEyMSBTYWx0ZWRfXwhvHeSiDQwlp bgZNeBIivDA+wuZab6o3Vi2Yjskb2kH1G1ueqqaxQRMFqGvKH4b8271UPNGhoIhWR2DnjNlMF27 oTaDZWc1d04XjG25izMdf1RgpRBeq5gjTkzAMT13PUZ5wvXgqaSmowiOl+veIHZ9KBXAvA5WqUU BirAChziDqi1oP0KGOLNDXl2jU8x0Vqpsg80+N/S+vEaN68CmRJ9TlMzqelyMFpLWku+IoHVHRl yLqNYPLP1QSIdNCprYxFlAxudNgSylUpZ4Lg4iFhm/IJSevJGZGcHWCRmvl19oE1aqf52IzLGhJ DoyCYplGghqGkkXHUCAUqnmxhaLL/LoLzCNpPuwCgce+9IVKmgFMtdE600J1UXCRmpz10ynakRr Gkly7t/3B8IWY8g2deZreDY83auQxjz0T9wRY8zOuumxaj4H/iA3IaSKzOTP76j0Mr/4NzKSD9M TCjcQUqhdr8x47goH7Q== X-Proofpoint-ORIG-GUID: NJQFVoko0_eQ4iSdu7Z-vP2Sm7mMFZPS X-Authority-Analysis: v=2.4 cv=FOkrAeos c=1 sm=1 tr=0 ts=69dcdf31 cx=c_pps a=DUEm7b3gzWu7BqY5nP7+9g==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=EF9g5WYaJUPSkAj6upQA:9 a=ZXulRonScM0A:10 a=zZCYzV9kfG8A:10 a=-aSRE8QhW-JAV6biHavz:22 X-Proofpoint-GUID: NJQFVoko0_eQ4iSdu7Z-vP2Sm7mMFZPS 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-13_03,2026-04-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 impostorscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 spamscore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604130121 Content-Type: text/plain; charset="utf-8" The NPL clock is only present on some platforms. When it is absent, wsa->npl remains NULL, but the driver unconditionally programs its rate. Guard clk_set_rate() for the NPL clock so platforms without NPL do not attempt to access it. No functional change on platforms that provide the NPL clock. Signed-off-by: Ajay Kumar Nandam --- sound/soc/codecs/lpass-wsa-macro.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-ws= a-macro.c index 6aa6c4d95..8c8c50a63 100644 --- a/sound/soc/codecs/lpass-wsa-macro.c +++ b/sound/soc/codecs/lpass-wsa-macro.c @@ -2774,7 +2774,8 @@ static int wsa_macro_probe(struct platform_device *pd= ev) =20 /* set MCLK and NPL rates */ clk_set_rate(wsa->mclk, WSA_MACRO_MCLK_FREQ); - clk_set_rate(wsa->npl, WSA_MACRO_MCLK_FREQ); + if (wsa->npl) + clk_set_rate(wsa->npl, WSA_MACRO_MCLK_FREQ); =20 ret =3D devm_pm_clk_create(dev); if (ret) --=20 2.34.1