ASoC : fsl_ssi : Correct the condition to check AC97 mode
diff mbox

Message ID 20161228110636.GA14768@ubuntu
State New
Headers show

Commit Message

Harisangam, Sharvari (S.) Dec. 28, 2016, 11:06 a.m. UTC
Corrected the condition to check if ssi is configured for AC97
 mode. Other modes like dsp_a also satisfy the ANDing condition.

Signed-off-by: Sharvari Harisangam <sharvari.harisangam@visteon.com>
---
 sound/soc/fsl/fsl_ssi.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Timur Tabi Dec. 28, 2016, 3:48 p.m. UTC | #1
Andreas Schwab wrote:
>> > +	return !!(ssi_private->dai_fmt & SND_SOC_DAIFMT_AC97) ==
>> > +		SND_SOC_DAIFMT_AC97;
> This is never true.

I think the right parenthesis should be at the end of the expression.
Harisangam, Sharvari (S.) Dec. 28, 2016, 3:53 p.m. UTC | #2
On Wed, Dec 28, 2016 at 03:50:57PM +0100, Andreas Schwab wrote:
> On Dez 28 2016, "Harisangam, Sharvari (S.)" <sharvari.harisangam@visteon.com> wrote:
> 
> > +	return !!(ssi_private->dai_fmt & SND_SOC_DAIFMT_AC97) ==
> > +		SND_SOC_DAIFMT_AC97;
> 
> This is never true.
> 
> Andreas.
> 
> -- 
> Andreas Schwab, schwab@linux-m68k.org
> GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
> "And now for something completely different."

Ok. I missed the braces there. I will modify and resubmit the patch

-Thanks
Sharvari
Andreas Schwab Dec. 28, 2016, 4:52 p.m. UTC | #3
On Dez 28 2016, Timur Tabi <timur@tabi.org> wrote:

> Andreas Schwab wrote:
>>> > +	return !!(ssi_private->dai_fmt & SND_SOC_DAIFMT_AC97) ==
>>> > +		SND_SOC_DAIFMT_AC97;
>> This is never true.
>
> I think the right parenthesis should be at the end of the expression.

That would still test the wrong bitfield.

And all that is obsolete anyway since commit 5b64c173cd (of Sep 2015).

Andreas.
Fabio Estevam Dec. 28, 2016, 5:53 p.m. UTC | #4
On Wed, Dec 28, 2016 at 9:06 AM, Harisangam, Sharvari (S.)
<sharvari.harisangam@visteon.com> wrote:
>  Corrected the condition to check if ssi is configured for AC97
>  mode. Other modes like dsp_a also satisfy the ANDing condition.
>
> Signed-off-by: Sharvari Harisangam <sharvari.harisangam@visteon.com>

This has been fixed in 4.3 kernel by commit:

5b64c173cdea211 ("ASoC: fsl_ssi: Fix checking of dai format for AC97 mode")
David Laight Jan. 4, 2017, 12:22 p.m. UTC | #5
From: Harisangam, Sharvari (S.)
> Sent: 28 December 2016 11:07
>  Corrected the condition to check if ssi is configured for AC97
>  mode. Other modes like dsp_a also satisfy the ANDing condition.

Under the assumption that the constants have 1 bit set nothing is wrong.

	David

...
> -	return !!(ssi_private->dai_fmt & SND_SOC_DAIFMT_AC97);
...
> -	if (fmt & SND_SOC_DAIFMT_AC97)
...

Patch
diff mbox

diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c
index ca6f6b1..4fbb7a2 100644
--- a/sound/soc/fsl/fsl_ssi.c
+++ b/sound/soc/fsl/fsl_ssi.c
@@ -317,7 +317,8 @@  MODULE_DEVICE_TABLE(of, fsl_ssi_ids);
 
 static bool fsl_ssi_is_ac97(struct fsl_ssi_private *ssi_private)
 {
-	return !!(ssi_private->dai_fmt & SND_SOC_DAIFMT_AC97);
+	return !!(ssi_private->dai_fmt & SND_SOC_DAIFMT_AC97) ==
+		SND_SOC_DAIFMT_AC97;
 }
 
 static bool fsl_ssi_is_i2s_master(struct fsl_ssi_private *ssi_private)
@@ -1016,7 +1017,7 @@  static int _fsl_ssi_set_dai_fmt(struct device *dev,
 				CCSR_SSI_SCR_TCH_EN);
 	}
 
-	if (fmt & SND_SOC_DAIFMT_AC97)
+	if ((fmt & SND_SOC_DAIFMT_AC97) == SND_SOC_DAIFMT_AC97)
 		fsl_ssi_setup_ac97(ssi_private);
 
 	return 0;