aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/ux500/ux500_pcm.c
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2013-04-03 05:02:55 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-04-07 14:51:05 -0400
commit69b6f19622ce0aef41df884b75e3f789c64b89c0 (patch)
treed813286bb381387fb8a1e5fc0fcdee0da352ffa3 /sound/soc/ux500/ux500_pcm.c
parente6451c3ff8c99a8c171a30f20b4234687b35712c (diff)
ASoC: ux500_pcm: Use the same snd_pcm_hardware for playback and capture
The snd_pcm_hardware structs for playback and capture in the ux500 PCM are identical, so remove one of them and use the same snd_pcm_hardware struct for both playback and capture. Also move the defines used to initialize the snd_pcm_hardware fields from ux500_pcm.h to ux500_pcm.c since that's the only place where they are used. Also drop the assignment of the snd_pcm_hardware struct to runtime->hw since that is what the call to snd_soc_set_runtime_hwparams() right above it already does, so the second assignment is redundant. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/ux500/ux500_pcm.c')
-rw-r--r--sound/soc/ux500/ux500_pcm.c51
1 files changed, 15 insertions, 36 deletions
diff --git a/sound/soc/ux500/ux500_pcm.c b/sound/soc/ux500/ux500_pcm.c
index 1ab36fa845cd..09b5364e5095 100644
--- a/sound/soc/ux500/ux500_pcm.c
+++ b/sound/soc/ux500/ux500_pcm.c
@@ -28,28 +28,19 @@
28#include "ux500_msp_i2s.h" 28#include "ux500_msp_i2s.h"
29#include "ux500_pcm.h" 29#include "ux500_pcm.h"
30 30
31static struct snd_pcm_hardware ux500_pcm_hw_playback = { 31#define UX500_PLATFORM_MIN_RATE 8000
32 .info = SNDRV_PCM_INFO_INTERLEAVED | 32#define UX500_PLATFORM_MAX_RATE 48000
33 SNDRV_PCM_INFO_MMAP | 33
34 SNDRV_PCM_INFO_RESUME | 34#define UX500_PLATFORM_MIN_CHANNELS 1
35 SNDRV_PCM_INFO_PAUSE, 35#define UX500_PLATFORM_MAX_CHANNELS 8
36 .formats = SNDRV_PCM_FMTBIT_S16_LE | 36
37 SNDRV_PCM_FMTBIT_U16_LE | 37#define UX500_PLATFORM_PERIODS_BYTES_MIN 128
38 SNDRV_PCM_FMTBIT_S16_BE | 38#define UX500_PLATFORM_PERIODS_BYTES_MAX (64 * PAGE_SIZE)
39 SNDRV_PCM_FMTBIT_U16_BE, 39#define UX500_PLATFORM_PERIODS_MIN 2
40 .rates = SNDRV_PCM_RATE_KNOT, 40#define UX500_PLATFORM_PERIODS_MAX 48
41 .rate_min = UX500_PLATFORM_MIN_RATE_PLAYBACK, 41#define UX500_PLATFORM_BUFFER_BYTES_MAX (2048 * PAGE_SIZE)
42 .rate_max = UX500_PLATFORM_MAX_RATE_PLAYBACK,
43 .channels_min = UX500_PLATFORM_MIN_CHANNELS,
44 .channels_max = UX500_PLATFORM_MAX_CHANNELS,
45 .buffer_bytes_max = UX500_PLATFORM_BUFFER_BYTES_MAX,
46 .period_bytes_min = UX500_PLATFORM_PERIODS_BYTES_MIN,
47 .period_bytes_max = UX500_PLATFORM_PERIODS_BYTES_MAX,
48 .periods_min = UX500_PLATFORM_PERIODS_MIN,
49 .periods_max = UX500_PLATFORM_PERIODS_MAX,
50};
51 42
52static struct snd_pcm_hardware ux500_pcm_hw_capture = { 43static struct snd_pcm_hardware ux500_pcm_hw = {
53 .info = SNDRV_PCM_INFO_INTERLEAVED | 44 .info = SNDRV_PCM_INFO_INTERLEAVED |
54 SNDRV_PCM_INFO_MMAP | 45 SNDRV_PCM_INFO_MMAP |
55 SNDRV_PCM_INFO_RESUME | 46 SNDRV_PCM_INFO_RESUME |
@@ -59,8 +50,8 @@ static struct snd_pcm_hardware ux500_pcm_hw_capture = {
59 SNDRV_PCM_FMTBIT_S16_BE | 50 SNDRV_PCM_FMTBIT_S16_BE |
60 SNDRV_PCM_FMTBIT_U16_BE, 51 SNDRV_PCM_FMTBIT_U16_BE,
61 .rates = SNDRV_PCM_RATE_KNOT, 52 .rates = SNDRV_PCM_RATE_KNOT,
62 .rate_min = UX500_PLATFORM_MIN_RATE_CAPTURE, 53 .rate_min = UX500_PLATFORM_MIN_RATE,
63 .rate_max = UX500_PLATFORM_MAX_RATE_CAPTURE, 54 .rate_max = UX500_PLATFORM_MAX_RATE,
64 .channels_min = UX500_PLATFORM_MIN_CHANNELS, 55 .channels_min = UX500_PLATFORM_MIN_CHANNELS,
65 .channels_max = UX500_PLATFORM_MAX_CHANNELS, 56 .channels_max = UX500_PLATFORM_MAX_CHANNELS,
66 .buffer_bytes_max = UX500_PLATFORM_BUFFER_BYTES_MAX, 57 .buffer_bytes_max = UX500_PLATFORM_BUFFER_BYTES_MAX,
@@ -90,8 +81,6 @@ static void ux500_pcm_dma_hw_free(struct device *dev,
90 81
91static int ux500_pcm_open(struct snd_pcm_substream *substream) 82static int ux500_pcm_open(struct snd_pcm_substream *substream)
92{ 83{
93 int stream_id = substream->pstr->stream;
94 struct snd_pcm_runtime *runtime = substream->runtime;
95 struct snd_soc_pcm_runtime *rtd = substream->private_data; 84 struct snd_soc_pcm_runtime *rtd = substream->private_data;
96 struct snd_soc_dai *dai = rtd->cpu_dai; 85 struct snd_soc_dai *dai = rtd->cpu_dai;
97 struct device *dev = dai->dev; 86 struct device *dev = dai->dev;
@@ -104,17 +93,7 @@ static int ux500_pcm_open(struct snd_pcm_substream *substream)
104 snd_pcm_stream_str(substream)); 93 snd_pcm_stream_str(substream));
105 94
106 dev_dbg(dev, "%s: Set runtime hwparams.\n", __func__); 95 dev_dbg(dev, "%s: Set runtime hwparams.\n", __func__);
107 if (stream_id == SNDRV_PCM_STREAM_PLAYBACK) 96 snd_soc_set_runtime_hwparams(substream, &ux500_pcm_hw);
108 snd_soc_set_runtime_hwparams(substream,
109 &ux500_pcm_hw_playback);
110 else
111 snd_soc_set_runtime_hwparams(substream,
112 &ux500_pcm_hw_capture);
113
114 dev_dbg(dev, "%s: Set hw-struct for %s.\n", __func__,
115 snd_pcm_stream_str(substream));
116 runtime->hw = (stream_id == SNDRV_PCM_STREAM_PLAYBACK) ?
117 ux500_pcm_hw_playback : ux500_pcm_hw_capture;
118 97
119 mem_data_width = STEDMA40_HALFWORD_WIDTH; 98 mem_data_width = STEDMA40_HALFWORD_WIDTH;
120 99