diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2013-04-03 05:02:55 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-04-07 14:51:05 -0400 |
commit | 69b6f19622ce0aef41df884b75e3f789c64b89c0 (patch) | |
tree | d813286bb381387fb8a1e5fc0fcdee0da352ffa3 /sound/soc/ux500/ux500_pcm.c | |
parent | e6451c3ff8c99a8c171a30f20b4234687b35712c (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.c | 51 |
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 | ||
31 | static 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 | ||
52 | static struct snd_pcm_hardware ux500_pcm_hw_capture = { | 43 | static 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 | ||
91 | static int ux500_pcm_open(struct snd_pcm_substream *substream) | 82 | static 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 | ||