pcm1681.c (41be702a542a0d14bb0b1c16e824fa9ed27616ec) | pcm1681.c (50a68fb4bc2516f593ceffa6617c93090d335f31) |
---|---|
1/* 2 * PCM1681 ASoC codec driver 3 * 4 * Copyright (c) StreamUnlimited GmbH 2013 5 * Marek Belisko <marek.belisko@streamunlimited.com> 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License --- 158 unchanged lines hidden (view full) --- 167 168static int pcm1681_hw_params(struct snd_pcm_substream *substream, 169 struct snd_pcm_hw_params *params, 170 struct snd_soc_dai *dai) 171{ 172 struct snd_soc_codec *codec = dai->codec; 173 struct pcm1681_private *priv = snd_soc_codec_get_drvdata(codec); 174 int val = 0, ret; | 1/* 2 * PCM1681 ASoC codec driver 3 * 4 * Copyright (c) StreamUnlimited GmbH 2013 5 * Marek Belisko <marek.belisko@streamunlimited.com> 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License --- 158 unchanged lines hidden (view full) --- 167 168static int pcm1681_hw_params(struct snd_pcm_substream *substream, 169 struct snd_pcm_hw_params *params, 170 struct snd_soc_dai *dai) 171{ 172 struct snd_soc_codec *codec = dai->codec; 173 struct pcm1681_private *priv = snd_soc_codec_get_drvdata(codec); 174 int val = 0, ret; |
175 int pcm_format = params_format(params); | |
176 177 priv->rate = params_rate(params); 178 179 switch (priv->format & SND_SOC_DAIFMT_FORMAT_MASK) { 180 case SND_SOC_DAIFMT_RIGHT_J: | 175 176 priv->rate = params_rate(params); 177 178 switch (priv->format & SND_SOC_DAIFMT_FORMAT_MASK) { 179 case SND_SOC_DAIFMT_RIGHT_J: |
181 if (pcm_format == SNDRV_PCM_FORMAT_S24_LE) 182 val = 0x00; 183 else if (pcm_format == SNDRV_PCM_FORMAT_S16_LE) 184 val = 0x03; | 180 switch (params_width(params)) { 181 case 24: 182 val = 0; 183 break; 184 case 16: 185 val = 3; 186 break; 187 default: 188 return -EINVAL; 189 } |
185 break; 186 case SND_SOC_DAIFMT_I2S: 187 val = 0x04; 188 break; 189 case SND_SOC_DAIFMT_LEFT_J: 190 val = 0x05; 191 break; 192 default: --- 148 unchanged lines hidden --- | 190 break; 191 case SND_SOC_DAIFMT_I2S: 192 val = 0x04; 193 break; 194 case SND_SOC_DAIFMT_LEFT_J: 195 val = 0x05; 196 break; 197 default: --- 148 unchanged lines hidden --- |