Resolve an issue where the I2S Word Select (WS) source could remain unset,
leading to misconfiguration of the I2S interface. A default WS source is
assigned when not explicitly configured by the AudioReach module.
For HS MI2S interface, the DSP need proper WS settings to set
appropriate endpoint configuration.
Fixes: 25ab80db6b133 ("ASoC: qdsp6: audioreach: add module configuration command helpers")
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
---
sound/soc/qcom/qdsp6/audioreach.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sound/soc/qcom/qdsp6/audioreach.c b/sound/soc/qcom/qdsp6/audioreach.c
index 6d7b1a4b0b2a..d4397f75e310 100644
--- a/sound/soc/qcom/qdsp6/audioreach.c
+++ b/sound/soc/qcom/qdsp6/audioreach.c
@@ -999,6 +999,12 @@ static int audioreach_i2s_set_media_format(struct q6apm_graph *graph,
intf_cfg->cfg.intf_idx = module->hw_interface_idx;
intf_cfg->cfg.sd_line_idx = module->sd_line_idx;
+ /* Set default WS source if not already configured */
+ if (!module->ws_src)
+ intf_cfg->cfg.ws_src = CONFIG_I2S_WS_SRC_INTERNAL;
+ else
+ intf_cfg->cfg.ws_src = module->ws_src;
+
switch (cfg->fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) {
case SND_SOC_DAIFMT_BP_FP:
intf_cfg->cfg.ws_src = CONFIG_I2S_WS_SRC_INTERNAL;
--
2.34.1
On 8/22/25 6:14 PM, Mohammad Rafi Shaik wrote: > Resolve an issue where the I2S Word Select (WS) source could remain unset, > leading to misconfiguration of the I2S interface. A default WS source is > assigned when not explicitly configured by the AudioReach module. > > For HS MI2S interface, the DSP need proper WS settings to set > appropriate endpoint configuration. > Sorry this is not the right way to do this, machine driver should select the correct configuration via snd_soc_dai_set_fmt. who supplies the frame clock is decided by that configuration, we should not be assuming any default as this is totally board depended. --srini > Fixes: 25ab80db6b133 ("ASoC: qdsp6: audioreach: add module configuration command helpers") > Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com> > --- > sound/soc/qcom/qdsp6/audioreach.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/sound/soc/qcom/qdsp6/audioreach.c b/sound/soc/qcom/qdsp6/audioreach.c > index 6d7b1a4b0b2a..d4397f75e310 100644 > --- a/sound/soc/qcom/qdsp6/audioreach.c > +++ b/sound/soc/qcom/qdsp6/audioreach.c > @@ -999,6 +999,12 @@ static int audioreach_i2s_set_media_format(struct q6apm_graph *graph, > intf_cfg->cfg.intf_idx = module->hw_interface_idx; > intf_cfg->cfg.sd_line_idx = module->sd_line_idx; > > + /* Set default WS source if not already configured */ > + if (!module->ws_src) > + intf_cfg->cfg.ws_src = CONFIG_I2S_WS_SRC_INTERNAL; > + else > + intf_cfg->cfg.ws_src = module->ws_src; > + > switch (cfg->fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) { > case SND_SOC_DAIFMT_BP_FP: > intf_cfg->cfg.ws_src = CONFIG_I2S_WS_SRC_INTERNAL;
On 8/31/2025 2:07 PM, Srinivas Kandagatla wrote: > > > On 8/22/25 6:14 PM, Mohammad Rafi Shaik wrote: >> Resolve an issue where the I2S Word Select (WS) source could remain unset, >> leading to misconfiguration of the I2S interface. A default WS source is >> assigned when not explicitly configured by the AudioReach module. >> >> For HS MI2S interface, the DSP need proper WS settings to set >> appropriate endpoint configuration. >> > Sorry this is not the right way to do this, machine driver should select > the correct configuration via snd_soc_dai_set_fmt. > > who supplies the frame clock is decided by that configuration, we should > not be assuming any default as this is totally board depended. > Ack, will use the snd_soc_dai_set_fmt api to set correct configuration. Thanks & Regards, Rafi. > --srini > >> Fixes: 25ab80db6b133 ("ASoC: qdsp6: audioreach: add module configuration command helpers") >> Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com> >> --- >> sound/soc/qcom/qdsp6/audioreach.c | 6 ++++++ >> 1 file changed, 6 insertions(+) >> >> diff --git a/sound/soc/qcom/qdsp6/audioreach.c b/sound/soc/qcom/qdsp6/audioreach.c >> index 6d7b1a4b0b2a..d4397f75e310 100644 >> --- a/sound/soc/qcom/qdsp6/audioreach.c >> +++ b/sound/soc/qcom/qdsp6/audioreach.c >> @@ -999,6 +999,12 @@ static int audioreach_i2s_set_media_format(struct q6apm_graph *graph, >> intf_cfg->cfg.intf_idx = module->hw_interface_idx; >> intf_cfg->cfg.sd_line_idx = module->sd_line_idx; >> >> + /* Set default WS source if not already configured */ >> + if (!module->ws_src) >> + intf_cfg->cfg.ws_src = CONFIG_I2S_WS_SRC_INTERNAL; >> + else >> + intf_cfg->cfg.ws_src = module->ws_src; >> + >> switch (cfg->fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) { >> case SND_SOC_DAIFMT_BP_FP: >> intf_cfg->cfg.ws_src = CONFIG_I2S_WS_SRC_INTERNAL; >
© 2016 - 2025 Red Hat, Inc.