snd_soc_component_update_bits returns 1 on a successful update, and we were returning from tas2770_set_dai_tdm_idle early on any nonzero return code. Change this so that only negative return codes are treated as errors. Fixes: af176d0787d2 ("ASoC: tas2770: expose SDOUT bus keeper via set_tdm_idle") Cc: stable@vger.kernel.org Signed-off-by: James Calligeros --- Changes in v2: - Make commit header more concise - CC stable - Link to v1: https://patch.msgid.link/20261024-tas2770-idle-fix-v1-1-07b02d46ec2e@gmail.com To: Shenghao Ding To: Kevin Lu To: Baojun Xu To: Sen Wang To: Liam Girdwood To: Mark Brown To: Jaroslav Kysela To: Takashi Iwai To: James Calligeros Cc: linux-sound@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- sound/soc/codecs/tas2770.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 882e19857697..6b9ec8f630fe 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -513,7 +513,7 @@ static int tas2770_set_dai_tdm_idle(struct snd_soc_dai *dai, ret = snd_soc_component_update_bits(component, TAS2770_DIN_PD, TAS2770_DIN_PD_SDOUT, TAS2770_DIN_PD_SDOUT); - if (ret) + if (ret < 0) return ret; break; @@ -521,12 +521,12 @@ static int tas2770_set_dai_tdm_idle(struct snd_soc_dai *dai, ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, TAS2770_TDM_CFG_REG4_TX_KEEPER, TAS2770_TDM_CFG_REG4_TX_KEEPER); - if (ret) + if (ret < 0) return ret; ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, TAS2770_TDM_CFG_REG4_TX_FILL, 0); - if (ret) + if (ret < 0) return ret; break; @@ -534,25 +534,25 @@ static int tas2770_set_dai_tdm_idle(struct snd_soc_dai *dai, ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, TAS2770_TDM_CFG_REG4_TX_KEEPER, TAS2770_TDM_CFG_REG4_TX_KEEPER); - if (ret) + if (ret < 0) return ret; ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, TAS2770_TDM_CFG_REG4_TX_FILL, TAS2770_TDM_CFG_REG4_TX_FILL); - if (ret) + if (ret < 0) return ret; break; case SND_SOC_DAI_TDM_IDLE_OFF: ret = snd_soc_component_update_bits(component, TAS2770_DIN_PD, TAS2770_DIN_PD_SDOUT, 0); - if (ret) + if (ret < 0) return ret; ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, TAS2770_TDM_CFG_REG4_TX_KEEPER, 0); - if (ret) + if (ret < 0) return ret; break; --- base-commit: cc3fc99f1bce93c3ae3771ef98cb91a566da857e change-id: 20261024-tas2770-idle-fix-b0104e591578 Best regards, -- James Calligeros