diff options
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/codecs/twl4030.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c index df474a5dd357..c53c7cabbd27 100644 --- a/sound/soc/codecs/twl4030.c +++ b/sound/soc/codecs/twl4030.c | |||
@@ -1608,9 +1608,15 @@ static int twl4030_hw_params(struct snd_pcm_substream *substream, | |||
1608 | 1608 | ||
1609 | /* If the substream has 4 channel, do the necessary setup */ | 1609 | /* If the substream has 4 channel, do the necessary setup */ |
1610 | if (params_channels(params) == 4) { | 1610 | if (params_channels(params) == 4) { |
1611 | /* Safety check: are we in the correct operating mode? */ | 1611 | u8 format, mode; |
1612 | if ((twl4030_read_reg_cache(codec, TWL4030_REG_CODEC_MODE) & | 1612 | |
1613 | TWL4030_OPTION_1)) | 1613 | format = twl4030_read_reg_cache(codec, TWL4030_REG_AUDIO_IF); |
1614 | mode = twl4030_read_reg_cache(codec, TWL4030_REG_CODEC_MODE); | ||
1615 | |||
1616 | /* Safety check: are we in the correct operating mode and | ||
1617 | * the interface is in TDM mode? */ | ||
1618 | if ((mode & TWL4030_OPTION_1) && | ||
1619 | ((format & TWL4030_AIF_FORMAT) == TWL4030_AIF_FORMAT_TDM)) | ||
1614 | twl4030_tdm_enable(codec, substream->stream, 1); | 1620 | twl4030_tdm_enable(codec, substream->stream, 1); |
1615 | else | 1621 | else |
1616 | return -EINVAL; | 1622 | return -EINVAL; |