mirror of
https://github.com/torvalds/linux.git
synced 2024-12-22 19:01:37 +00:00
ASoC: TWL4030: Check the interface format for 4 channel mode
In addition to the operating mode check, also check the codec's interface format in case of four channel mode. If the codec is not in TDM (DSP_A) mode, return with error. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
16a30fbb0d
commit
eaf1ac8bb5
@ -1608,9 +1608,15 @@ static int twl4030_hw_params(struct snd_pcm_substream *substream,
|
||||
|
||||
/* If the substream has 4 channel, do the necessary setup */
|
||||
if (params_channels(params) == 4) {
|
||||
/* Safety check: are we in the correct operating mode? */
|
||||
if ((twl4030_read_reg_cache(codec, TWL4030_REG_CODEC_MODE) &
|
||||
TWL4030_OPTION_1))
|
||||
u8 format, mode;
|
||||
|
||||
format = twl4030_read_reg_cache(codec, TWL4030_REG_AUDIO_IF);
|
||||
mode = twl4030_read_reg_cache(codec, TWL4030_REG_CODEC_MODE);
|
||||
|
||||
/* Safety check: are we in the correct operating mode and
|
||||
* the interface is in TDM mode? */
|
||||
if ((mode & TWL4030_OPTION_1) &&
|
||||
((format & TWL4030_AIF_FORMAT) == TWL4030_AIF_FORMAT_TDM))
|
||||
twl4030_tdm_enable(codec, substream->stream, 1);
|
||||
else
|
||||
return -EINVAL;
|
||||
|
Loading…
Reference in New Issue
Block a user