[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d614d8e3-963d-4d34-9b15-1544c7a22cf0@oss.qualcomm.com>
Date: Tue, 22 Jul 2025 16:26:38 +0530
From: Mohammad Rafi Shaik <mohammad.rafi.shaik@....qualcomm.com>
To: Krzysztof Kozlowski <krzk@...nel.org>
Cc: Srinivas Kandagatla <srini@...nel.org>,
Liam Girdwood <lgirdwood@...il.com>, Mark Brown <broonie@...nel.org>,
Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>, Jaroslav Kysela <perex@...ex.cz>,
Takashi Iwai <tiwai@...e.com>, Philipp Zabel <p.zabel@...gutronix.de>,
Linus Walleij <linus.walleij@...aro.org>,
Bartosz Golaszewski
<brgl@...ev.pl>, linux-arm-msm@...r.kernel.org,
linux-sound@...r.kernel.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-gpio@...r.kernel.org,
quic_pkumpatl@...cinc.com, kernel@....qualcomm.com
Subject: Re: [PATCH v2 2/2] ASoC: codecs: wsa883x: Handle shared reset GPIO
for WSA883x speakers
On 7/21/2025 1:53 PM, Krzysztof Kozlowski wrote:
> On Fri, Jul 18, 2025 at 04:16:28PM +0530, Mohammad Rafi Shaik wrote:
>> On some Qualcomm platforms such as QCS6490-RB3Gen2, the multiple
>> WSA8830/WSA8835 speakers share a common reset (shutdown) GPIO.
>> To handle such cases, use the reset controller framework along
>> with the "reset-gpio" driver.
>>
>> Register devm action to safely disable the regulator on device removal
>> to prevents a potential release warning from _regulator_put().
>
> It is not possible to remove the device - suppress bind attrs. How did
> you trigger that?
>
Ack,
I encountered the warning as regulator was being released unexpectedly,
triggering _regulator_put() warnings. While the device itself isn't
removed, Registering the devm action ensures safe cleanup without
triggering warnings.
Please check the below logs.
I could use some suggestions for this issue. please help with some
suggestions how i can approve this design.
Thanks,
Rafi.
>>
>> Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@....qualcomm.com>
>> ---
>> sound/soc/codecs/wsa883x.c | 93 +++++++++++++++++++++++++++++---------
>> 1 file changed, 71 insertions(+), 22 deletions(-)
>
> ...
>
>> static int wsa883x_probe(struct sdw_slave *pdev,
>> const struct sdw_device_id *id)
>> {
>> @@ -1566,13 +1615,18 @@ static int wsa883x_probe(struct sdw_slave *pdev,
>> if (ret)
>> return dev_err_probe(dev, ret, "Failed to enable vdd regulator\n");
>>
>> - wsa883x->sd_n = devm_gpiod_get_optional(dev, "powerdown",
>> - GPIOD_FLAGS_BIT_NONEXCLUSIVE | GPIOD_OUT_HIGH);
>> - if (IS_ERR(wsa883x->sd_n)) {
>> - ret = dev_err_probe(dev, PTR_ERR(wsa883x->sd_n),
>> - "Shutdown Control GPIO not found\n");
>> - goto err;
>> - }
>> + ret = wsa883x_get_reset(dev, wsa883x);
>> + if (ret)
>> + return ret;
>> +
>> + /*
>> + * Register devm action to safely disable the regulator on device removal.
>> + * This prevents a potential release warning from _regulator_put().
>> + */
>> + ret = devm_add_action_or_reset(dev, wsa883x_regulator_disable,
>> + wsa883x);
>
> If removal is possible (but then explain in commit msg how), then this
> should be separate commit with fixes and cc-stable, because you are
> fixing actual bug - lack of regulator release on unbind.
>
Ack,
The Reason to introduced this change in same patch,
without devm_add_action_or_reset(dev, wsa883x_regulator_disable, wsa883x);
if i try to enable ->devm_reset_control_get_optional_shared_deasserted()
seeing below crash logs. _regulator_put() release warning.
logs
-----
[ 10.679294][ T90] ------------[ cut here ]------------
[ 10.684772][ T90] WARNING: CPU: 1 PID: 90 at
/drivers/regulator/core.c:2450 _regulator_put+0x50/0x60
[ 10.694344][ T90] Modules linked in: snd_soc_hdmi_codec
phy_qcom_edp venus_dec venus_enc videobuf2_dma_contig rpmsg_ctrl
qrtr_smd fastrpc rpmsg_char videobuf2_memops qcom_pd_mapper nb7vpq904m
msm lontium_lt9611uxc ucsi_glink typec_ucsi pmic_glink_altmode
qcom_battmgr aux_hpd_bridge ath11k_ahb ath11k hci_uart rtc_pm8xxx btqca
coresight_stm bluetooth qcom_pon stm_core venus_core pwrseq_qcom_wcn
drm_exec mac80211 ocmem v4l2_mem2mem gpu_sched videobuf2_v4l2 videodev
nvmem_qcom_spmi_sdam qcom_spmi_adc_tm5 snd_soc_sc8280xp
drm_display_helper qcom_vadc_common snd_soc_qcom_sdw coresight_tmc
snd_soc_qcom_common videobuf2_common qcom_stats coresight_etm4x
qcom_q6v5_pas phy_qcom_qmp_combo usb_f_qdss mc drm_dp_aux_bus
ecdh_generic qcom_pil_info qcom_q6v5 ecc coresight_replicator aux_bridge
coresight_csr qcom_sysmon coresight_funnel pwrseq_core gpi typec
i2c_qcom_geni qcom_common coresight icc_bwmon llcc_qcom qcom_glink_smem
qcrypto pinctrl_sc7280_lpass_lpi mdt_loader snd_soc_lpass_wsa_macro
sha256_generic pinctrl_lpass_lpi
[ 10.694524][ T90] snd_soc_lpass_va_macro display_connector
snd_soc_lpass_macro_common authenc drm_kms_helper libdes qrtr libarc4
icc_osm_l3 qcom_rng pmic_glink cfg80211 rfkill drm fuse ipv6
[ 10.804083][ T90] CPU: 1 UID: 0 PID: 90 Comm: kworker/u32:4 Not
tainted 6.14.0 #1
[ 10.811959][ T90] Hardware name: Qualcomm Technologies, Inc.
Robotics RB3gen2 (DT)
[ 10.819920][ T90] Workqueue: events_unbound deferred_probe_work_func
[ 10.826643][ T90] pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT
-SSBS BTYPE=--)
[ 10.834510][ T90] pc : _regulator_put+0x50/0x60
[ 10.839362][ T90] lr : regulator_put+0x30/0x48
[ 10.844118][ T90] sp : ffff8000809e3670
[ 10.848244][ T90] x29: ffff8000809e3670 x28: 0000000000000000 x27:
ffff70941a04a080
[ 10.856300][ T90] x26: 0000000000000000 x25: ffffbfa860a9bee8 x24:
ffffbfa860e79cb0
[ 10.864354][ T90] x23: ffff709406e62640 x22: ffff709418668808 x21:
ffff8000809e3710
[ 10.872409][ T90] x20: ffff709415e81840 x19: ffffbfa86119b680 x18:
00000000ffffffff
[ 10.880462][ T90] x17: ffffbfa86013d058 x16: ffffbfa8601cbac4 x15:
ffff709419a70b48
[ 10.888517][ T90] x14: 0000000000000000 x13: ffff709400032b10 x12:
0000000000000000
[ 10.896573][ T90] x11: 0000000000000000 x10: ffffbfa85fdbcc60 x9 :
ffffbfa85fdbc7e0
[ 10.904627][ T90] x8 : ffff709418668ab0 x7 : ffff709418668ab0 x6 :
ffff709418668ab0
[ 10.912676][ T90] x5 : ffff709418668ab0 x4 : ffff709418668ab0 x3 :
ffff709415e807c0
[ 10.920727][ T90] x2 : ffff709406e62640 x1 : 0000000000000001 x0 :
ffff709415e81840
[ 10.928781][ T90] Call trace:
[ 10.932024][ T90] _regulator_put+0x50/0x60 (P)
[ 10.936877][ T90] regulator_put+0x30/0x48
-----------
Thanks & Regards,
Rafi.
> Best regards,
> Krzysztof
>
Powered by blists - more mailing lists