From nobody Sat Jun 13 08:32: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 E0D563D647B for ; Fri, 8 May 2026 11:35:23 +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=1778240125; cv=none; b=ELTvkoZTlS1W56WWO2piTv12VFBSDCGJyqA+2mn5xZkiC5e3OYZj7bK9jJpnx+ZVmTnxrMjegKLYfTVjJi6eskOGix34143ww5oBLndBRI0Va01pA3DqvdkaUIa6JdEa6WVQrFobhNMQd7DyuA7aIendr/h1PpOExtjjlmyYtu0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778240125; c=relaxed/simple; bh=knynDHER1f1lxrDhbhKfo3pasNup4E37od6/VAZTOR4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EON8oO60t9Ep19h/sH4Uqvv5whSe6fpiK87nZj+PWGR1O5F+fezr4rVOvDC4WKJ9LinHTO5rDQDlUn0SQM73XfqpX53d/PP5Ys6J8uNA3vMf23tLd8QJHFHX6YVVkfl2K+J6jWBp4KjygpBh5yA09jrXDC6R+Q5tNGaP3x+7XX0= 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=UuE3a4zk; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Rm9jiA13; 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="UuE3a4zk"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Rm9jiA13" 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 6486GfTB1174043 for ; Fri, 8 May 2026 11:35:23 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=d5K3SJ3TnI0 83StGhp81ic4knbiTAAh8lrfQK8duyCc=; b=UuE3a4zkUK4Bw8U48Mbp+xeW4NH +7S4gZkbe+FIQmGk57A+n5zMl/5nyJwrELoUjjRnrbNu2Y1kpKdY/PVp5/M1/qpR NtGBKSezWj6AkrSkflFJmRC7RRU7eOYtC/fPAXeYB7TCBIVVIgzPblGmjnEj6TM3 viXIt3iIOEq70BAfaaC6gbtMScpUxouMZHY4a20pZyxNOSS6eDQ8pjIcpNODKaKr rLu4PqAavNl+TY3EQVIG1eDcUu+0tZvgeYfBTBis+v3M5i09Du94btCSKWBIV0gR P3HZcGpG1s/P9q8id6opY0s4598/FRLhjzYUb5QoVmfnoejJGaDjZqBTd5g== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e132hap9f-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 08 May 2026 11:35:22 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2b9b8137828so21568185ad.0 for ; Fri, 08 May 2026 04:35:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778240122; x=1778844922; 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=d5K3SJ3TnI083StGhp81ic4knbiTAAh8lrfQK8duyCc=; b=Rm9jiA13/gzofiLOjb8LYxUMmYqQRY2LivqbHLUULvbA2eJLS+LJamZeQdg6o7bDaR 5E5UOwiTTJy+0C/g+mlZJe02KD4tecLC8k3SBfkbb4PC/I17+4QMr9YmIwnWxHVSPAzY A3uG+a6qRw9Tvwkrp0PHx9cvD+kMkTzlFxf2sdwAxHEVg5W56LB8nlAXn6DSnAatjhjg Z9lRhsEGcRe2qsIbCTzGbfLILkal9VwPgkzr/NeUZ+Iegnd84CK9xyFMFaXwaPyMt/WY N/BkegXpiahILOjVCRGATVg9cXMEBXU43JLj2P2SVaIqkCe0SlQMruo3k/nDrLfEm6Be eUdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778240122; x=1778844922; 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=d5K3SJ3TnI083StGhp81ic4knbiTAAh8lrfQK8duyCc=; b=JpYbT2CAH11igP3RBlSyTNz5IM1hg8BUXaii4SLq9Ql4iYIa1UDaMFLMPcC2uQfx1U orWKjq5XaqjGmXlinieAgZA/TWw1yyUpbh0FdekVHRcW5VeHzkjEiADIThmKAaCC/int 7wNv0sdwLtYjyrijKGhwkxY+gxJ5YiY8cJ4RB6hZPdzaYc2YcBTOJsjrEdvFC5w5jOpv Ts1YtLKVpq8qCt4yJtRTsBMRQp9MNVnbi3mD8gK+Q0VBorUX510EgJ+gNn3YRgkAYKGq 4lhXPmjfR1zmlB84rbjnF0Q7kbR1PcjuP2By/xuwBbbwp0+DkJuC+YNys/4xW6xRIrPd OUDQ== X-Forwarded-Encrypted: i=1; AFNElJ9dyfKHfXcW+7PmfjBKCpsQ3vYjwEA3oMwu8FvuP2MdO2/Jz/qeWV57WePrC52cLzvPZH0Ec3AOPQoBNnE=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0BXUbzD82ehu3NGWuZhBy4TX8E9rXoXfEU6vEn0S4pLgxwRWO A6XWXohb0t5UfunSaXxKIU6viPq+9hhVMiwgcIB/T9ZPPjPdRgEtaPzutUWq+p3z2zqGEa/G9Ts BLi5+F8nlrUgHatGw+YhcTfNKlY+s+Rh/D3sUrLzq1Ae/XCyEG/wm/v/i318IxQwz+os= X-Gm-Gg: Acq92OHpDpEzSPQsweI0vCjawClUZSPXY4gv6NMLL/q+7tgmHSo7NZsdjakfgHXBpdG 77+pXzQ9s9cZx5ec9mLZMvOzOmN8MInI4zGW56/OgJJu/PFz2Z4t9CyhwjT2i8whUyEw/oKT8Ac RJMi4+nO4MazDsWoc6mXJXZtc2ITKmVhqbyjyuWbMA5IPF5w6c1H0OnCkrSGdh1VIUGnnkNGxUQ aBmch9W5sfxqYu6pWYEVkzpCvOxco9qD6S90+emFhtEpcLfSXS3eokDM7UpkUKGS7ulzycW/qMY TcvmH/4u0iP6fK88T+Qs5mJ2VEb6Vkq92k12D2GmHWeAxU409R8tBnJpY1QaoKM0doUqb+Ra7pq xNF+jdsyVS+dBJw0qm5X2oJvX66IPJW3QaZpSmoxZvvT4A7roeKVFxImdsTZq X-Received: by 2002:a17:903:1d2:b0:2b2:539b:d2b1 with SMTP id d9443c01a7336-2ba78f63e3fmr136464415ad.16.1778240121728; Fri, 08 May 2026 04:35:21 -0700 (PDT) X-Received: by 2002:a17:903:1d2:b0:2b2:539b:d2b1 with SMTP id d9443c01a7336-2ba78f63e3fmr136463845ad.16.1778240121040; Fri, 08 May 2026 04:35:21 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2baf1d52f27sm26616005ad.36.2026.05.08.04.35.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 04:35:20 -0700 (PDT) From: Ajay Kumar Nandam To: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org Subject: [PATCH v3 1/3] ASoC: codecs: lpass-wsa-macro: Switch to PM clock framework for runtime PM Date: Fri, 8 May 2026 17:05:01 +0530 Message-Id: <20260508113503.3550647-2-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260508113503.3550647-1-ajay.nandam@oss.qualcomm.com> References: <20260508113503.3550647-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: AW1haW4tMjYwNTA4MDExOSBTYWx0ZWRfX03cvfZOh9yew Dk/+SFM7MCgA4xJI29JF2eINRJDveEmiSzy0k86i1AT5kMNyTFefdUSXwRcw4N6JWtJ64Aaj/7A iPhwROfRJ8FOMqYIxiuf64KNGTC+D5ZtbLuMPQuEa/WL3nV1Xfz0z8TgKo8zv5fZiIG9mK+yUM5 N7YVaWGAOJqTA5jTib+bU0tNfTKnQMF+irayFn1wiymZic+ylGu53RiH0n2qzjrI1jyvdXqofK+ TzADhoZmdM/N/87fQCqBxUXgcS3lJb9YFpx3ZFGLgygk4441GBKaUzJmqzkxp3wjpxqoI4SgiOF jaRbQDP6rQyEoFQst8VCoP2PTzrcmp2bxjqEb2c2syg7sKu4b793iLl1OXGG0GLEExdea3Ksiwu e3OhOLSoV7dxKk2TWvxTodVK12qM7cN+pF2ISeRKKExzB0v96T7kNLNo/WqfgQ3Zl7lwKnE6OSC 876bn3fI8e2xE0CLGvQ== X-Proofpoint-ORIG-GUID: kmx78kiC2b4iQYk0LMgDJ9t4G65RKWsQ X-Proofpoint-GUID: kmx78kiC2b4iQYk0LMgDJ9t4G65RKWsQ X-Authority-Analysis: v=2.4 cv=McxcfZ/f c=1 sm=1 tr=0 ts=69fdca7a cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=6iqXw53aW0HuLngz8iAA:9 a=GvdueXVYPmCkWapjIL-Q: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-05-07_02,2026-05-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 suspectscore=0 spamscore=0 bulkscore=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605080119 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 | 111 ++++++++++------------------- 1 file changed, 36 insertions(+), 75 deletions(-) diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-ws= a-macro.c index 5ad0448af649..6148de1d0da0 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 pm_runtime_resume_and_get(wsa->dev); + if (ret < 0) + 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 +2547,9 @@ static int wsa_swrm_clock(struct wsa_macro *wsa, bool= enable) regmap_update_bits(regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL, CDC_WSA_SWR_CLK_EN_MASK, 0); wsa_macro_mclk_enable(wsa, false); - clk_disable_unprepare(wsa->mclk); } =20 + pm_runtime_put_autosuspend(wsa->dev); return 0; } =20 @@ -2774,25 +2773,23 @@ static int wsa_macro_probe(struct platform_device *= pdev) clk_set_rate(wsa->mclk, WSA_MACRO_MCLK_FREQ); clk_set_rate(wsa->npl, WSA_MACRO_MCLK_FREQ); =20 - ret =3D clk_prepare_enable(wsa->macro); + ret =3D devm_pm_clk_create(dev); if (ret) - goto err; + return ret; =20 - ret =3D clk_prepare_enable(wsa->dcodec); - if (ret) - goto err_dcodec; + ret =3D of_pm_clk_add_clks(dev); + if (ret < 0) + return ret; =20 - ret =3D clk_prepare_enable(wsa->mclk); - if (ret) - goto err_mclk; + pm_runtime_set_autosuspend_delay(dev, 100); + pm_runtime_use_autosuspend(dev); + pm_runtime_enable(dev); =20 - ret =3D clk_prepare_enable(wsa->npl); - if (ret) - goto err_npl; =20 - ret =3D clk_prepare_enable(wsa->fsgen); - if (ret) - goto err_fsgen; + ret =3D pm_runtime_resume_and_get(dev); + if (ret < 0) { + goto err_rpm_disable; + } =20 /* reset swr ip */ regmap_update_bits(wsa->regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL, @@ -2809,44 +2806,25 @@ static int wsa_macro_probe(struct platform_device *= pdev) wsa_macro_dai, ARRAY_SIZE(wsa_macro_dai)); if (ret) - goto err_clkout; - - pm_runtime_set_autosuspend_delay(dev, 3000); - pm_runtime_use_autosuspend(dev); - pm_runtime_mark_last_busy(dev); - pm_runtime_set_active(dev); - pm_runtime_enable(dev); + goto err_rpm_put; =20 ret =3D wsa_macro_register_mclk_output(wsa); if (ret) - goto err_clkout; + goto err_rpm_put; =20 - return 0; + pm_runtime_put_autosuspend(dev); =20 -err_clkout: - clk_disable_unprepare(wsa->fsgen); -err_fsgen: - clk_disable_unprepare(wsa->npl); -err_npl: - clk_disable_unprepare(wsa->mclk); -err_mclk: - clk_disable_unprepare(wsa->dcodec); -err_dcodec: - clk_disable_unprepare(wsa->macro); -err: + return 0; +err_rpm_put: + pm_runtime_put_sync_suspend(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 +2834,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 +2842,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 Sat Jun 13 08:32: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 5A6633D47A5 for ; Fri, 8 May 2026 11:35:27 +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=1778240128; cv=none; b=VNrgbyodvAN8sxaFLHJ3MFbPFV8rp5mgognx41JjTIeDJr1izL31TwSTkPi4zajouyMtCaIYBZ9M/r1K2Tfx/RDQ33MoBYCpOr3LpOdtyujXAyddJJS+GDrtsKaNHbWskvlwflTMOJMYOlAhU/9YBJAfOw3mt+jp5lvkBkbV/Qg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778240128; c=relaxed/simple; bh=6Bao6ldnZVFtz4MObX4+zB0URlU9DNOPyzrPJEwQEqE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Y2TqPlrQqqTWY6f7ShSo8fDMaq/SOm0UtUy4ceT+GqMBm9IGyLlrnSkApXSya9tdkGW97KLx7CV+ZwQYCygO4OsEEdBr/+BFPQKpx1zPSYxeQaBpmHFZpr1DmwtXIoA3tke9JhvxlnuZe7vDiedddtREhr9VpxrscPh3lQbbEeY= 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=Ol6nyoSh; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=T/eVktqW; 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="Ol6nyoSh"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="T/eVktqW" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 648BAG4A2198887 for ; Fri, 8 May 2026 11:35:26 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=amVdIFBe8i4 qduqKVQlXrpoHfnV9p6Zr6XtF24FGwho=; b=Ol6nyoShJcY6I8x9CIbSwlZFOUj jwNTZFwW0/0AQu69P8fXZGvLit7rIKbD9OeQx5JwaBz+7lQdbu8Zqt68lziTgBsb gROAN9qz4peIPXyuxu8kke5zO/BoUpq9zF8Ret62biZm6DvfbeJa+9fVrSU8Abgo 7G514MKFHr9KZbvpbkDAN3sXNvt/1sHlQM/rJMPkkgM/LrfIOVtxS5MCMwRRt0EI PO33L3BmTTp5WqbGoYlCCvdH3yMd7glG4i9+RFSE1isoW+pR1YDEHit6fK0Zpnhi CEuP5uNFI5L7bqHiCs0hm3SAChP5y84u53yLNGPbnSkTiSkTmBy5t5gQKdw== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e119sk464-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 08 May 2026 11:35:26 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2b2e8bba2e6so25165865ad.1 for ; Fri, 08 May 2026 04:35:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778240125; x=1778844925; 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=amVdIFBe8i4qduqKVQlXrpoHfnV9p6Zr6XtF24FGwho=; b=T/eVktqWQ+pspTpTrH4210SejTZ4sFZL5sVYe5q/m238nK8sGPTDS3hR1OxXi1JKXU 4aFlaWCur/Ck4SjtQEAt+ceWVR0hRC2zGAOW3wLoN01cjLwFZ/eLmLPx0CKecBDVn6iR rBKVJf9SONHpVus8vXgkjlAcyow42UhMSdbhTP3Tgtv0W3A29CGdDRPm61EEpsmjrTx6 FLYBtZlFBIqAvZyF8gmRNftajd3SHmY+3Xo0eYOm6xVXT0GtlO9UQhMWqwZJzxTfdZ1L 8th2JVoOrCw+zcIkoIrSPbFx9N9KSBiF5bhs/OpEaG+EhLLE+4yajCMcwXfJtloOsVpN O6Tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778240125; x=1778844925; 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=amVdIFBe8i4qduqKVQlXrpoHfnV9p6Zr6XtF24FGwho=; b=PQfLP4vdEFuIYr/bwUl8jpM82bmM/lyZeFBx+JgeO+ZH4gEnwkmq8L9C0RZr/02X9D SJUvGgQ7JtBq5tXcO/7nLtPDSpadBAKovWqHEQNH0MnqjU1zkxUrQFNxNfB39k/WvoaP XgHarDgKH0J3n0kq2Vtb8xfQX5/ltzC9Wb8mEFnXp1s3lV8wD0psTDqTM2ZdeQOw6Jq6 jUD9tAjo8ybqbb00SOZYDVXrXPenwwlepL1fUrFB/M+YV8zhDzfEy3sYIGMpaSZW7/Fk lZNrYFoRAAsKuAxfNwTdiJos5JRvwcP6umFYDyNUQ6MMl2KX7oSEXaLTk5e8N5pJ8cIc 7hgA== X-Forwarded-Encrypted: i=1; AFNElJ+9R/T0VeAQQIygkBleG079W0hDFfSApmZksKezgRTRd7lp9RCInaWzNyM7XUocy0hFtcaJkBhrgXi5rFE=@vger.kernel.org X-Gm-Message-State: AOJu0Yz9atRxRepMw6erls8UNQWfOmSMdNQA9qVzF0A/jZIQJcHeDjn+ UYlxkrkaM32LctCA+exYYUp06HJDuYXW2aIOPzuhk/UFFgQQkAWUn2qL6M3gQTGux6hZS7Dt/KQ Le/Ufn6+Zxr6Sg77Jl1yg4zPDBXyuCkXj/EYnDTXZhEZ2yirbLl2q3IHBe0FqkEB3DSm5RCvtiZ s= X-Gm-Gg: Acq92OEF4dNIPs1OqB+an5IbIrXLvtIj11MoC0DNKG7CttRgMix7xdLeFrUCUldorwo BY0M8ONcuFFcntj8p5m/6xP8GZReq6w78S7ybVxm63cB6M6WVIV3/xf841vuO64KKq+A4Bg8+GI 4G90lBlK9LNa8xYNQja/t4n8mPv50nReLMBBOkg6gguG1xU5ua/gL+vEfoTUmj+KVIVc54OwggS NPhx2mdL0mapZyPRay9ju3qvE3bHc4iVMcU8Zc5+oSEFZKAsXpy1fEOBWF9FmllNOC4DweC9u2f I/GA2alYSCBD8XRbZ82mFfYCU0Yd5qgGHVXvSUPQfrpo9JN+E9Gi2XI4Ffp9dch4/Fx01SsxtPo Gh5jHWIyoNARWfXNi8w4iaDncE93r0vNRU5xvKYG2OpmAHeroMQ== X-Received: by 2002:a17:903:13c8:b0:2b9:8d39:5e87 with SMTP id d9443c01a7336-2ba78f4589bmr125182095ad.10.1778240124786; Fri, 08 May 2026 04:35:24 -0700 (PDT) X-Received: by 2002:a17:903:13c8:b0:2b9:8d39:5e87 with SMTP id d9443c01a7336-2ba78f4589bmr125181725ad.10.1778240124273; Fri, 08 May 2026 04:35:24 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2baf1d52f27sm26616005ad.36.2026.05.08.04.35.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 04:35:24 -0700 (PDT) From: Ajay Kumar Nandam To: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org Subject: [PATCH v3 2/3] ASoC: codecs: lpass-va-macro: Switch to PM clock framework for runtime PM Date: Fri, 8 May 2026 17:05:02 +0530 Message-Id: <20260508113503.3550647-3-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260508113503.3550647-1-ajay.nandam@oss.qualcomm.com> References: <20260508113503.3550647-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: AW1haW4tMjYwNTA4MDExOSBTYWx0ZWRfXzyxTfr19H8gP JpY24HdR4EI2DGWxOxs1BN1Ekyos5ebo019jh3VMBJL7ZjnRSpzUDxhBTRJIIcSvv4vyFJhC1yn S1HslGUaNf4ubY3/FCQkFDZZAePy9ECT03cGtvlEI4+np7orx0zrYQHt1l/NIsdtBRoUoZWxzbJ whF+F9EcKfrs89Rg2+I0BCCdiDM1ZXu9xEocx4hD3oPm1YkdUrXJTggi0/m9B0H19B+syl1GnH0 Oo50G0UsSBlt3XRtMSdxJ/03eqBgxxQLkxoCYIEOZkMKDhA860thieO7Of3D6uMolgsW0a1uHOQ 4Klq5jQkA2KkHqp/GJgmmlNcSI8rI6VrloLJuIx4QTOdO4di55bxDCmKxDZj/okk1Hj9UcLoV4F V1r8BxgSz3UeOvwb9b7a+hGBUTA3o5U3/IVFDvehSSJYD682Ev1/6OGkcKuxoXuIrnbs61fXiEd LYrWFiZSL1cjNTJaC7g== X-Proofpoint-ORIG-GUID: bJpbIndhgjmzoOY97Jed17-y3uvcockL X-Proofpoint-GUID: bJpbIndhgjmzoOY97Jed17-y3uvcockL X-Authority-Analysis: v=2.4 cv=Dd4nbPtW c=1 sm=1 tr=0 ts=69fdca7e cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=YBVk55sqNhi4ukaP828A:9 a=uG9DUKGECoFWVXl0Dc02: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-05-07_02,2026-05-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 clxscore=1015 adultscore=0 lowpriorityscore=0 suspectscore=0 spamscore=0 impostorscore=0 phishscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605080119 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 | 121 ++++++++++++++---------------- 1 file changed, 57 insertions(+), 64 deletions(-) diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-= macro.c index 528d5b167ecf..44dc7f91bd40 100644 --- a/sound/soc/codecs/lpass-va-macro.c +++ b/sound/soc/codecs/lpass-va-macro.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -1348,18 +1349,22 @@ static int fsgen_gate_enable(struct clk_hw *hw) struct regmap *regmap =3D va->regmap; int ret; =20 - if (va->has_swr_master) { - ret =3D clk_prepare_enable(va->mclk); - if (ret) - return ret; + ret =3D pm_runtime_resume_and_get(va->dev); + if (ret < 0) { + /* pm_runtime_resume_and_get() already dropped usage count */ + return ret; } =20 ret =3D va_macro_mclk_enable(va, true); + if (ret) { + pm_runtime_put_sync_suspend(va->dev); + return ret; + } if (va->has_swr_master) regmap_update_bits(regmap, CDC_VA_CLK_RST_CTRL_SWR_CONTROL, CDC_VA_SWR_CLK_EN_MASK, CDC_VA_SWR_CLK_ENABLE); =20 - return ret; + return 0; } =20 static void fsgen_gate_disable(struct clk_hw *hw) @@ -1372,8 +1377,23 @@ static void fsgen_gate_disable(struct clk_hw *hw) CDC_VA_SWR_CLK_EN_MASK, 0x0); =20 va_macro_mclk_enable(va, false); - if (va->has_swr_master) - clk_disable_unprepare(va->mclk); + + pm_runtime_put_autosuspend(va->dev); +} + +static int va_macro_setup_pm_clocks(struct device *dev) +{ + int ret; + + ret =3D devm_pm_clk_create(dev); + if (ret) + return ret; + + ret =3D of_pm_clk_add_clks(dev); + if (ret < 0) + return ret; + + return 0; } =20 static int fsgen_gate_is_enabled(struct clk_hw *hw) @@ -1534,6 +1554,7 @@ static int va_macro_probe(struct platform_device *pde= v) void __iomem *base; u32 sample_rate =3D 0; int ret; + int rpm_ret; =20 va =3D devm_kzalloc(dev, sizeof(*va), GFP_KERNEL); if (!va) @@ -1601,22 +1622,18 @@ static int va_macro_probe(struct platform_device *p= dev) clk_set_rate(va->npl, 2 * VA_MACRO_MCLK_FREQ); } =20 - ret =3D clk_prepare_enable(va->macro); + 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); - if (ret) - goto err_mclk; + pm_runtime_set_autosuspend_delay(dev, 100); + pm_runtime_use_autosuspend(dev); + pm_runtime_enable(dev); =20 - if (va->has_npl_clk) { - ret =3D clk_prepare_enable(va->npl); - if (ret) - goto err_npl; + rpm_ret =3D pm_runtime_resume_and_get(dev); + if (rpm_ret < 0) { + ret =3D rpm_ret; + goto err_rpm_disable; } =20 /** @@ -1629,7 +1646,7 @@ static int va_macro_probe(struct platform_device *pde= v) /* read version from register */ ret =3D va_macro_set_lpass_codec_version(va); if (ret) - goto err_clkout; + goto err_rpm_put; } =20 if (va->has_swr_master) { @@ -1659,35 +1676,26 @@ static int va_macro_probe(struct platform_device *p= dev) va_macro_dais, ARRAY_SIZE(va_macro_dais)); if (ret) - goto err_clkout; - - pm_runtime_set_autosuspend_delay(dev, 3000); - pm_runtime_use_autosuspend(dev); - pm_runtime_mark_last_busy(dev); - pm_runtime_set_active(dev); - pm_runtime_enable(dev); + goto err_rpm_put; =20 ret =3D va_macro_register_fsgen_output(va); if (ret) - goto err_clkout; + goto err_rpm_put; =20 va->fsgen =3D devm_clk_hw_get_clk(dev, &va->hw, "fsgen"); if (IS_ERR(va->fsgen)) { ret =3D PTR_ERR(va->fsgen); - goto err_clkout; + goto err_rpm_put; } =20 + pm_runtime_put_autosuspend(dev); + return 0; =20 -err_clkout: - if (va->has_npl_clk) - clk_disable_unprepare(va->npl); -err_npl: - clk_disable_unprepare(va->mclk); -err_mclk: - clk_disable_unprepare(va->dcodec); -err_dcodec: - clk_disable_unprepare(va->macro); +err_rpm_put: + pm_runtime_put_sync_suspend(dev); +err_rpm_disable: + pm_runtime_disable(dev); err: lpass_macro_pds_exit(va->pds); =20 @@ -1698,12 +1706,7 @@ static void va_macro_remove(struct platform_device *= pdev) { struct va_macro *va =3D dev_get_drvdata(&pdev->dev); =20 - if (va->has_npl_clk) - clk_disable_unprepare(va->npl); - - clk_disable_unprepare(va->mclk); - clk_disable_unprepare(va->dcodec); - clk_disable_unprepare(va->macro); + pm_runtime_disable(&pdev->dev); =20 lpass_macro_pds_exit(va->pds); } @@ -1715,12 +1718,7 @@ static int va_macro_runtime_suspend(struct device *d= ev) regcache_cache_only(va->regmap, true); regcache_mark_dirty(va->regmap); =20 - if (va->has_npl_clk) - clk_disable_unprepare(va->npl); - - clk_disable_unprepare(va->mclk); - - return 0; + return pm_clk_suspend(dev); } =20 static int va_macro_runtime_resume(struct device *dev) @@ -1728,23 +1726,18 @@ static int va_macro_runtime_resume(struct device *d= ev) struct va_macro *va =3D dev_get_drvdata(dev); int ret; =20 - ret =3D clk_prepare_enable(va->mclk); - if (ret) { - dev_err(va->dev, "unable to prepare mclk\n"); + ret =3D pm_clk_resume(dev); + if (ret) return ret; - } - - if (va->has_npl_clk) { - ret =3D clk_prepare_enable(va->npl); - if (ret) { - clk_disable_unprepare(va->mclk); - dev_err(va->dev, "unable to prepare npl\n"); - return ret; - } - } =20 regcache_cache_only(va->regmap, false); - regcache_sync(va->regmap); + + ret =3D regcache_sync(va->regmap); + if (ret) { + regcache_cache_only(va->regmap, true); + pm_clk_suspend(dev); + return ret; + } =20 return 0; } --=20 2.34.1 From nobody Sat Jun 13 08:32: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 1BEFF3859D7 for ; Fri, 8 May 2026 11:35:29 +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=1778240131; cv=none; b=I4fgHxALGXH+NAAYguktt4/itmSxVlB19pBjCG8C/piZGH0MALX/jRFQlFexVXxvz02j903yfHqBAH2ILWcikOSgSYcgOehucmyGPnvZrlg3vGvWl+rM526yV6KSoE5Z07cG6i/yK/bt3tUcRIidTMEWXckeuMFK1ouQVcLRRW0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778240131; c=relaxed/simple; bh=NlQZtn8DstSzwn5GfF6MCPKiJ3wQUfF2KdGszpPbtHc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SCrf9VaZinWB0QAo3VAClcLg2xD9RJkBZfCCbDxNaXpwfcbjpjzTzmIqUHITpnNnz/KmwK4+ZnQx1dfPK5EVvxebfd/Cp2Z9oQXdAG5QcnQjs+cR6jS3ki9o1ZXAbP/fWRXBSLMv/3U7S2jjvbtK8rU1PnLnQPw8xwMigjdzr+s= 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=lpr721N9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=QxLWERQN; 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="lpr721N9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="QxLWERQN" 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 64863cGD1173965 for ; Fri, 8 May 2026 11:35:29 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=JDnZkDYkQHa 2ZUxRXFBjMCxswhOtEBVuTzGFMevyzBM=; b=lpr721N9HQ46g6uRpBntDNQRvs3 5/q9xR9QM5STLeiFqc+OY338vIxWaxcHWEUScN/V+ne27xYL9QqpTprEmnh+x3FZ 766LndK3Rz8AbfVNISJJ26ISruo5+A26Wif+dZHQxLbQOTSpAcldq4JB10vw4b3F IVLP323ixmGDtC5+oevvxtnTR1pbgI2EBOwE2JaeUbhH3YURNbkdRMLgNLFLyTO6 ZgzzvvDHZYL10NDBwa77kEjbCSyHRQwojCJacd0RV3IcHP0BogRDHm54moGAPqb3 qqnhyetjIjGDib0ZnIWenldI6uI/sMoslVJ/xG2Pr2AWrhZ7yJlgR8zes2A== 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 4e132hap9v-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 08 May 2026 11:35:29 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2babc42244aso37726205ad.3 for ; Fri, 08 May 2026 04:35:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778240128; x=1778844928; 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=JDnZkDYkQHa2ZUxRXFBjMCxswhOtEBVuTzGFMevyzBM=; b=QxLWERQNdelnPRmk5/CdjH4qDZjyNRYdVte/5KfnBe4Rklce7JgX49fRVCYQw+efMy 26WDcO/DllIM0ckcggNBewYffkazf1BVH9vO/K6BnmjpUrUtY+UDI4u+84XjyvmYViXp f6/IlaOM4XETtxip5ID1avotckgqoL5RM4sC5pQalMKznwjMXyaPFxbdXRH9aiFwm1Ar Te5+yn2avzA3VbLpNGbZ5995vu2+cLe5NVHk4tDEB80r/Wb6SZ+MqKY+FA1UPgR6cX+4 GG3qJbWLFkgbfR8C6IE/S7pfcyw97bWgVOTEbPH8ahwE1nnHqB/9Sr7wipQuGtv63ijO O3Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778240128; x=1778844928; 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=JDnZkDYkQHa2ZUxRXFBjMCxswhOtEBVuTzGFMevyzBM=; b=NDCR9Yokj5E4H228hb6E71ZQwWBDM6qOpqHJJ0CSCPuDm4KTpxT+jv3bOnrQbS4uI6 diFjQZyDnGyfLkxGD6gdDskL0kDT16Eu9HlH7z1eyeEej4RSc2jlT14rmqwOiNvr9I5o H4DLxd/K8/opGODpzuE5Zp9LynLe4BDqg19cXBME2inrFuBGvl90MQbnzNcrLACTYRtV WT4ReauffTn/Gk+LKIVqfHIRlTfaSBDLEO2ViqdofDH5V6UJNvNmTZ2zkW9KvsmKGdUg TeUzdTwMn8rzICQ4krSfCDMU9jid8hFb+YOU2kyoIAgagV4JPz0/IJMSTngDcnDOLd1C siJg== X-Forwarded-Encrypted: i=1; AFNElJ/qYqvGdhCg/2VETKJMeEp81M+ZwUUdhNhVVvKBBbQ8j4nn3kIookWhYl+3UGMCixLfvCrDL0u9CbgAdSE=@vger.kernel.org X-Gm-Message-State: AOJu0YwB7/aaQ5tpOhQ23zQcdLlxgmyL4YJ2H7BRoPj3QlRXFyl1++Qm nXJoKNNP/zCnL+sIm3ezAfvG6XcgkAwkB9RdTaAW/zB6/Fy7PY1QVJw9gBzTydYvYZ7zVOHoDzb HVp+SYAWQ2nXVyPAb7JPt15+6dE7QIfFTcEAHOODgVkLGQdhgFcyogphL8fg/GLrFAumwnxdYEn A= X-Gm-Gg: Acq92OHJj/HNJZ8FpR8OHKoieVHxwPGg1/Eht46vdazVusQJMpWMfu96B79x29NBqhl dOFz3Q5yBCZ9xnDE7Vrutegoe3MWlTw2jujDvKA4npLSj7UYBJWWUdk9riLkwlPZcMz4thY3vFU /RBwWLq8K31eHWPnv2tE0LXynS2lxvLvYPVMYgx/aax/lcXWykOwX62L/RuM/a/6Ma+Jw52p/T5 fwfcI2oX+xbUUSgg58AOYjmqbKUbTALnnwYuo4jEJz1wa/RoxbAlXCn+9ojMnraW7GgQmWgznaE JzmdF7gUOILUOXtWGsH6NjQeR1VDgxZGTp/v7grPrzOEMhMdRdWV2fDyHxVbgMbSXFg/PMuolxy EQpISCjsTIg1zjhU/SaB14Pt3rw3wLNm4PIYAWB9MWVJ4aE5cXu0ra9TV/OuB X-Received: by 2002:a17:903:280e:b0:2b2:50e1:f104 with SMTP id d9443c01a7336-2ba78f63defmr94486075ad.3.1778240127827; Fri, 08 May 2026 04:35:27 -0700 (PDT) X-Received: by 2002:a17:903:280e:b0:2b2:50e1:f104 with SMTP id d9443c01a7336-2ba78f63defmr94485835ad.3.1778240127353; Fri, 08 May 2026 04:35:27 -0700 (PDT) Received: from hu-nandam-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2baf1d52f27sm26616005ad.36.2026.05.08.04.35.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 04:35:27 -0700 (PDT) From: Ajay Kumar Nandam To: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org Subject: [PATCH v3 3/3] ASoC: codecs: lpass-wsa-macro: Use devm_clk_hw_register() for MCLK output Date: Fri, 8 May 2026 17:05:03 +0530 Message-Id: <20260508113503.3550647-4-ajay.nandam@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260508113503.3550647-1-ajay.nandam@oss.qualcomm.com> References: <20260508113503.3550647-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: AW1haW4tMjYwNTA4MDEyMCBTYWx0ZWRfX+kVTlQZskaeo s0ePi1OhLFEBTggW4WRRY09wUXtwxvs5v5hWG+j+WC2jhIzLCb4GWW8kC4E5InpJhzAzaTfI5lM FSNLQX5KOZ9GwhLkeKNKmGf9ioC7AOzF8+rZdqDoFESSRtMsMYLbNmvGVHFXzx+uSWJN70vpYDT iRfokpb1xYYfN+SqAkQ1AmK5VMokX0W1vbHqja+Ft/pBMlYr0wZjCu9BXAL/LnbcIQOaynYk1jE 4rwhQSWFeBi2dZg8okkVaFusT2Tg7xV80uXRi8STphSgjHj1J/bOuxLCuDQa7Ioz2sLzMNxoYA3 E1IcwSXAcgxICyztFEBfruIDrxamo+vv4dnZTIfdb5UGC68y8tZfEbvdwnEUsrNAZwVWC5q0wq8 lChlr7QwKv7BuTdZfV0dfMPpvVB595/97DhXc91C9w6JCAAbiE/myaqTTLJxXhtyimfHTFGv+Fv UR7URp4i5hgciwlWZuw== X-Proofpoint-ORIG-GUID: BQYBkakjrrP7VdZN3wkmwdOh4I8-ePPt X-Proofpoint-GUID: BQYBkakjrrP7VdZN3wkmwdOh4I8-ePPt X-Authority-Analysis: v=2.4 cv=McxcfZ/f c=1 sm=1 tr=0 ts=69fdca81 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=E7064k5JgmqFsk_8azIA:9 a=1OuFwYUASf3TG4hYMiVC: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-05-07_02,2026-05-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 suspectscore=0 spamscore=0 bulkscore=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605080120 Content-Type: text/plain; charset="utf-8" The WSA macro driver registers the MCLK output clock using clk_hw_register(), but does not explicitly unregister it in the remove path or on probe failure. Switch to devm_clk_hw_register() to make the registration resource-managed so the clk_hw is automatically unregistered when the device is unbound or probe fails. This avoids lifetime and cleanup issues and simplifies error handling. No functional change intended. Signed-off-by: Ajay Kumar Nandam Reviewed-by: Konrad Dybcio --- 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 6148de1d0da0..ed442863f4fc 100644 --- a/sound/soc/codecs/lpass-wsa-macro.c +++ b/sound/soc/codecs/lpass-wsa-macro.c @@ -2655,7 +2655,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