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 - 2026 Red Hat, Inc.