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 ---