From: phucduc.bui@gmail.com
To: Shengjiu Wang <shengjiu.wang@gmail.com>,
Shengjiu Wang <shengjiu.wang@nxp.com>,
Xiubo Li <Xiubo.Lee@gmail.com>,
Fabio Estevam <festevam@gmail.com>,
Nicolin Chen <nicoleotsuka@gmail.com>,
Mark Brown <broonie@kernel.org>
Cc: Liam Girdwood <lgirdwood@gmail.com>,
Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
linuxppc-dev@lists.ozlabs.org, linux-sound@vger.kernel.org,
linux-kernel@vger.kernel.org,
bui duc phuc <phucduc.bui@gmail.com>
Subject: [PATCH v2 06/10] ASoC: fsl_sai: Warn if TE/RE does not clear on disable
Date: Thu, 5 Nov 2026 17:42:33 +0700 [thread overview]
Message-ID: <20261105104237.38542-7-phucduc.bui@gmail.com> (raw)
In-Reply-To: <20261105104237.38542-1-phucduc.bui@gmail.com>
From: bui duc phuc <phucduc.bui@gmail.com>
fsl_sai_config_disable() polls TE/RE with an open-coded loop and
continues silently if the bit does not clear within 1ms. Also, if
regmap_read() fails, the loop condition evaluates xcsr uninitialized.
Use regmap_read_poll_timeout_atomic() and warn on timeout.
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
sound/soc/fsl/fsl_sai.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c
index 8315a0d8893b..f75a1d61d7b7 100644
--- a/sound/soc/fsl/fsl_sai.c
+++ b/sound/soc/fsl/fsl_sai.c
@@ -849,7 +849,8 @@ static void fsl_sai_config_disable(struct fsl_sai *sai, int dir)
{
unsigned int ofs = sai->soc_data->reg_offset;
bool tx = dir == TX;
- u32 xcsr, count = 100, mask;
+ u32 xcsr, mask;
+ int ret;
if (sai->soc_data->mclk_with_tere && sai->mclk_direction_output)
mask = FSL_SAI_CSR_TERE;
@@ -860,10 +861,15 @@ static void fsl_sai_config_disable(struct fsl_sai *sai, int dir)
mask, 0);
/* TERE will remain set till the end of current frame */
- do {
- udelay(10);
- regmap_read(sai->regmap, FSL_SAI_xCSR(tx, ofs), &xcsr);
- } while (--count && xcsr & FSL_SAI_CSR_TERE);
+ ret = regmap_read_poll_timeout_atomic(sai->regmap, FSL_SAI_xCSR(tx, ofs),
+ xcsr, !(xcsr & FSL_SAI_CSR_TERE),
+ 10, 1000);
+ if (ret == -ETIMEDOUT)
+ dev_warn(&sai->pdev->dev, "%cx not disabled at frame end\n",
+ tx ? 'T' : 'R');
+ else if (ret)
+ dev_err(&sai->pdev->dev, "failed to read %cSCR : %d\n",
+ tx ? 'T' : 'R', ret);
regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs),
FSL_SAI_CSR_FR, FSL_SAI_CSR_FR);
--
2.43.0
next prev parent reply other threads:[~2026-11-05 10:43 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-05 10:42 [PATCH v2 00/10] ASoC: fsl_sai: Address several issues in the driver phucduc.bui
2026-11-05 10:42 ` [PATCH v2 01/10] ASoC: fsl_sai: Fix PM QoS cleanup on resume failure phucduc.bui
2026-11-05 10:42 ` [PATCH v2 02/10] ASoC: fsl_sai: Use optional clock getter for MCLKs phucduc.bui
2026-11-05 10:42 ` [PATCH v2 03/10] ASoC: fsl_sai: Remove redundant error messages phucduc.bui
2026-11-06 14:18 ` Mark Brown
2026-11-09 4:08 ` Bui Duc Phuc
2026-11-09 16:23 ` Mark Brown
2026-11-05 10:42 ` [PATCH v2 04/10] ASoC: fsl_sai: Propagate device tree property read errors phucduc.bui
2026-11-05 10:42 ` [PATCH v2 05/10] ASoC: fsl_sai: Drop redundant dataline mask AND phucduc.bui
2026-11-05 10:42 ` phucduc.bui [this message]
2026-11-06 14:18 ` [PATCH v2 06/10] ASoC: fsl_sai: Warn if TE/RE does not clear on disable Mark Brown
2026-11-09 2:27 ` Bui Duc Phuc
2026-11-05 10:42 ` [PATCH v2 07/10] ASoC: fsl_sai: Clarify fsl_sai_dir_is_synced() documentation phucduc.bui
2026-11-05 10:42 ` [PATCH v2 08/10] ASoC: fsl_sai: Check regmap_read() return value in ISR phucduc.bui
2026-11-05 10:42 ` [PATCH v2 09/10] ASoC: fsl_sai: Reject bclk ratio smaller than slot width phucduc.bui
2026-11-05 10:42 ` [PATCH v2 10/10] ASoC: fsl_sai: Don't write CHMOD to the other direction's xCR4 phucduc.bui
2026-11-06 9:33 ` [PATCH v2 00/10] ASoC: fsl_sai: Address several issues in the driver Shengjiu Wang
2026-11-06 11:35 ` Bui Duc Phuc
2026-11-06 14:19 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261105104237.38542-7-phucduc.bui@gmail.com \
--to=phucduc.bui@gmail.com \
--cc=Xiubo.Lee@gmail.com \
--cc=broonie@kernel.org \
--cc=festevam@gmail.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=nicoleotsuka@gmail.com \
--cc=perex@perex.cz \
--cc=shengjiu.wang@gmail.com \
--cc=shengjiu.wang@nxp.com \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.