aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/atmel/sam9g20_wm8731.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/atmel/sam9g20_wm8731.c')
-rw-r--r--sound/soc/atmel/sam9g20_wm8731.c35
1 files changed, 10 insertions, 25 deletions
diff --git a/sound/soc/atmel/sam9g20_wm8731.c b/sound/soc/atmel/sam9g20_wm8731.c
index ba93df79f265..130b12118d4f 100644
--- a/sound/soc/atmel/sam9g20_wm8731.c
+++ b/sound/soc/atmel/sam9g20_wm8731.c
@@ -65,29 +65,6 @@
65 65
66static struct clk *mclk; 66static struct clk *mclk;
67 67
68static int at91sam9g20ek_startup(struct snd_pcm_substream *substream)
69{
70 struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
71 struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
72 int ret;
73
74 ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK,
75 MCLK_RATE, SND_SOC_CLOCK_IN);
76 if (ret < 0) {
77 clk_disable(mclk);
78 return ret;
79 }
80
81 return 0;
82}
83
84static void at91sam9g20ek_shutdown(struct snd_pcm_substream *substream)
85{
86 struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
87
88 dev_dbg(rtd->socdev->dev, "shutdown");
89}
90
91static int at91sam9g20ek_hw_params(struct snd_pcm_substream *substream, 68static int at91sam9g20ek_hw_params(struct snd_pcm_substream *substream,
92 struct snd_pcm_hw_params *params) 69 struct snd_pcm_hw_params *params)
93{ 70{
@@ -112,9 +89,7 @@ static int at91sam9g20ek_hw_params(struct snd_pcm_substream *substream,
112} 89}
113 90
114static struct snd_soc_ops at91sam9g20ek_ops = { 91static struct snd_soc_ops at91sam9g20ek_ops = {
115 .startup = at91sam9g20ek_startup,
116 .hw_params = at91sam9g20ek_hw_params, 92 .hw_params = at91sam9g20ek_hw_params,
117 .shutdown = at91sam9g20ek_shutdown,
118}; 93};
119 94
120static int at91sam9g20ek_set_bias_level(struct snd_soc_card *card, 95static int at91sam9g20ek_set_bias_level(struct snd_soc_card *card,
@@ -163,10 +138,20 @@ static const struct snd_soc_dapm_route intercon[] = {
163 */ 138 */
164static int at91sam9g20ek_wm8731_init(struct snd_soc_codec *codec) 139static int at91sam9g20ek_wm8731_init(struct snd_soc_codec *codec)
165{ 140{
141 struct snd_soc_dai *codec_dai = &codec->dai[0];
142 int ret;
143
166 printk(KERN_DEBUG 144 printk(KERN_DEBUG
167 "at91sam9g20ek_wm8731 " 145 "at91sam9g20ek_wm8731 "
168 ": at91sam9g20ek_wm8731_init() called\n"); 146 ": at91sam9g20ek_wm8731_init() called\n");
169 147
148 ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK,
149 MCLK_RATE, SND_SOC_CLOCK_IN);
150 if (ret < 0) {
151 printk(KERN_ERR "Failed to set WM8731 SYSCLK: %d\n", ret);
152 return ret;
153 }
154
170 /* Add specific widgets */ 155 /* Add specific widgets */
171 snd_soc_dapm_new_controls(codec, at91sam9g20ek_dapm_widgets, 156 snd_soc_dapm_new_controls(codec, at91sam9g20ek_dapm_widgets,
172 ARRAY_SIZE(at91sam9g20ek_dapm_widgets)); 157 ARRAY_SIZE(at91sam9g20ek_dapm_widgets));