mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-04 18:19:28 +09:00
ASoC: max98090: remove 24-bit format support if RJ is 0
[ Upstream commit 5628c89796 ]
The supported formats are S16_LE and S24_LE now. However, by datasheet
of max98090, S24_LE is only supported when it is in the right justified
mode. We should remove 24-bit format if it is not in that mode to avoid
triggering error.
Signed-off-by: Yu-Hsuan Hsu <yuhsuan@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
3421d82039
commit
c930b3bca6
@@ -1924,6 +1924,21 @@ static int max98090_configure_dmic(struct max98090_priv *max98090,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int max98090_dai_startup(struct snd_pcm_substream *substream,
|
||||
struct snd_soc_dai *dai)
|
||||
{
|
||||
struct snd_soc_component *component = dai->component;
|
||||
struct max98090_priv *max98090 = snd_soc_component_get_drvdata(component);
|
||||
unsigned int fmt = max98090->dai_fmt;
|
||||
|
||||
/* Remove 24-bit format support if it is not in right justified mode. */
|
||||
if ((fmt & SND_SOC_DAIFMT_FORMAT_MASK) != SND_SOC_DAIFMT_RIGHT_J) {
|
||||
substream->runtime->hw.formats = SNDRV_PCM_FMTBIT_S16_LE;
|
||||
snd_pcm_hw_constraint_msbits(substream->runtime, 0, 16, 16);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int max98090_dai_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params,
|
||||
struct snd_soc_dai *dai)
|
||||
@@ -2331,6 +2346,7 @@ EXPORT_SYMBOL_GPL(max98090_mic_detect);
|
||||
#define MAX98090_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
|
||||
|
||||
static const struct snd_soc_dai_ops max98090_dai_ops = {
|
||||
.startup = max98090_dai_startup,
|
||||
.set_sysclk = max98090_dai_set_sysclk,
|
||||
.set_fmt = max98090_dai_set_fmt,
|
||||
.set_tdm_slot = max98090_set_tdm_slot,
|
||||
|
||||
Reference in New Issue
Block a user