Message ID | 409ab77432bd0553502b75ab98089bb7ecdb5018.1442394728.git.Adam.Thomson.Opensource@diasemi.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hello, Please apply. this kind of patch is here for a long time (I have posted one similar in the past) and is a requirement to make DSP_A/B working on freescale. regards, arnaud Le 16/09/2015 11:13, Adam Thomson a écrit : > Current code incorrectly treats dai format for AC97 as bit mask > whereas it's actually an integer value. This causes DAI formats > other than AC97 (e.g. DSP_B) to trigger AC97 related code, > which is incorrect and breaks functionality. This patch fixes > the code to correctly compare values to determine AC97 or not. > > Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> > --- > > Patch based on v4.3-rc1. > > sound/soc/fsl/fsl_ssi.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c > index 8ec6fb2..37c5cd4 100644 > --- a/sound/soc/fsl/fsl_ssi.c > +++ b/sound/soc/fsl/fsl_ssi.c > @@ -249,7 +249,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_FORMAT_MASK) == > + SND_SOC_DAIFMT_AC97; > } > > static bool fsl_ssi_is_i2s_master(struct fsl_ssi_private *ssi_private) > @@ -947,7 +948,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_FORMAT_MASK) == SND_SOC_DAIFMT_AC97) > fsl_ssi_setup_ac97(ssi_private); > > return 0;
Adam Thomson wrote: > Current code incorrectly treats dai format for AC97 as bit mask > whereas it's actually an integer value. This causes DAI formats > other than AC97 (e.g. DSP_B) to trigger AC97 related code, > which is incorrect and breaks functionality. This patch fixes > the code to correctly compare values to determine AC97 or not. > > Signed-off-by: Adam Thomson<Adam.Thomson.Opensource@diasemi.com> Acked-by: Timur Tabi <timur@tabi.org>
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index 8ec6fb2..37c5cd4 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c @@ -249,7 +249,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_FORMAT_MASK) == + SND_SOC_DAIFMT_AC97; } static bool fsl_ssi_is_i2s_master(struct fsl_ssi_private *ssi_private) @@ -947,7 +948,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_FORMAT_MASK) == SND_SOC_DAIFMT_AC97) fsl_ssi_setup_ac97(ssi_private); return 0;
Current code incorrectly treats dai format for AC97 as bit mask whereas it's actually an integer value. This causes DAI formats other than AC97 (e.g. DSP_B) to trigger AC97 related code, which is incorrect and breaks functionality. This patch fixes the code to correctly compare values to determine AC97 or not. Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> --- Patch based on v4.3-rc1. sound/soc/fsl/fsl_ssi.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)