[PATCH v1 2/2] ASoC: qcom: audioreach: Fix default WS source assignment for I2S interface

Mohammad Rafi Shaik posted 2 patches 1 month, 1 week ago
[PATCH v1 2/2] ASoC: qcom: audioreach: Fix default WS source assignment for I2S interface
Posted by Mohammad Rafi Shaik 1 month, 1 week ago
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
Re: [PATCH v1 2/2] ASoC: qcom: audioreach: Fix default WS source assignment for I2S interface
Posted by Srinivas Kandagatla 1 month ago

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;
Re: [PATCH v1 2/2] ASoC: qcom: audioreach: Fix default WS source assignment for I2S interface
Posted by Mohammad Rafi Shaik 1 month ago

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;
>