mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
Merge remote-tracking branch 'asoc/topic/pcm1792a' into asoc-next
This commit is contained in:
commit
3b93f0598c
@ -107,24 +107,35 @@ static int pcm1792a_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_soc_codec *codec = dai->codec;
|
||||
struct pcm1792a_private *priv = snd_soc_codec_get_drvdata(codec);
|
||||
int val = 0, ret;
|
||||
int pcm_format = params_format(params);
|
||||
|
||||
priv->rate = params_rate(params);
|
||||
|
||||
switch (priv->format & SND_SOC_DAIFMT_FORMAT_MASK) {
|
||||
case SND_SOC_DAIFMT_RIGHT_J:
|
||||
if (pcm_format == SNDRV_PCM_FORMAT_S24_LE ||
|
||||
pcm_format == SNDRV_PCM_FORMAT_S32_LE)
|
||||
val = 0x02;
|
||||
else if (pcm_format == SNDRV_PCM_FORMAT_S16_LE)
|
||||
val = 0x00;
|
||||
switch (params_width(params)) {
|
||||
case 24:
|
||||
case 32:
|
||||
val = 2;
|
||||
break;
|
||||
case 16:
|
||||
val = 0;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
case SND_SOC_DAIFMT_I2S:
|
||||
if (pcm_format == SNDRV_PCM_FORMAT_S24_LE ||
|
||||
pcm_format == SNDRV_PCM_FORMAT_S32_LE)
|
||||
val = 0x05;
|
||||
else if (pcm_format == SNDRV_PCM_FORMAT_S16_LE)
|
||||
val = 0x04;
|
||||
switch (params_width(params)) {
|
||||
case 24:
|
||||
case 32:
|
||||
val = 5;
|
||||
break;
|
||||
case 16:
|
||||
val = 4;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
dev_err(codec->dev, "Invalid DAI format\n");
|
||||
|
Loading…
Reference in New Issue
Block a user