aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/samsung/bells.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/samsung/bells.c')
-rw-r--r--sound/soc/samsung/bells.c40
1 files changed, 30 insertions, 10 deletions
diff --git a/sound/soc/samsung/bells.c b/sound/soc/samsung/bells.c
index e5f05e62fa3c..3dd246fa0059 100644
--- a/sound/soc/samsung/bells.c
+++ b/sound/soc/samsung/bells.c
@@ -58,11 +58,16 @@ static int bells_set_bias_level(struct snd_soc_card *card,
58 struct snd_soc_dapm_context *dapm, 58 struct snd_soc_dapm_context *dapm,
59 enum snd_soc_bias_level level) 59 enum snd_soc_bias_level level)
60{ 60{
61 struct snd_soc_dai *codec_dai = card->rtd[DAI_DSP_CODEC].codec_dai; 61 struct snd_soc_pcm_runtime *rtd;
62 struct snd_soc_codec *codec = codec_dai->codec; 62 struct snd_soc_dai *codec_dai;
63 struct snd_soc_codec *codec;
63 struct bells_drvdata *bells = card->drvdata; 64 struct bells_drvdata *bells = card->drvdata;
64 int ret; 65 int ret;
65 66
67 rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_DSP_CODEC].name);
68 codec_dai = rtd->codec_dai;
69 codec = codec_dai->codec;
70
66 if (dapm->dev != codec_dai->dev) 71 if (dapm->dev != codec_dai->dev)
67 return 0; 72 return 0;
68 73
@@ -99,11 +104,16 @@ static int bells_set_bias_level_post(struct snd_soc_card *card,
99 struct snd_soc_dapm_context *dapm, 104 struct snd_soc_dapm_context *dapm,
100 enum snd_soc_bias_level level) 105 enum snd_soc_bias_level level)
101{ 106{
102 struct snd_soc_dai *codec_dai = card->rtd[DAI_DSP_CODEC].codec_dai; 107 struct snd_soc_pcm_runtime *rtd;
103 struct snd_soc_codec *codec = codec_dai->codec; 108 struct snd_soc_dai *codec_dai;
109 struct snd_soc_codec *codec;
104 struct bells_drvdata *bells = card->drvdata; 110 struct bells_drvdata *bells = card->drvdata;
105 int ret; 111 int ret;
106 112
113 rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_DSP_CODEC].name);
114 codec_dai = rtd->codec_dai;
115 codec = codec_dai->codec;
116
107 if (dapm->dev != codec_dai->dev) 117 if (dapm->dev != codec_dai->dev)
108 return 0; 118 return 0;
109 119
@@ -137,14 +147,22 @@ static int bells_set_bias_level_post(struct snd_soc_card *card,
137static int bells_late_probe(struct snd_soc_card *card) 147static int bells_late_probe(struct snd_soc_card *card)
138{ 148{
139 struct bells_drvdata *bells = card->drvdata; 149 struct bells_drvdata *bells = card->drvdata;
140 struct snd_soc_codec *wm0010 = card->rtd[DAI_AP_DSP].codec; 150 struct snd_soc_pcm_runtime *rtd;
141 struct snd_soc_codec *codec = card->rtd[DAI_DSP_CODEC].codec; 151 struct snd_soc_codec *wm0010;
142 struct snd_soc_dai *aif1_dai = card->rtd[DAI_DSP_CODEC].codec_dai; 152 struct snd_soc_codec *codec;
153 struct snd_soc_dai *aif1_dai;
143 struct snd_soc_dai *aif2_dai; 154 struct snd_soc_dai *aif2_dai;
144 struct snd_soc_dai *aif3_dai; 155 struct snd_soc_dai *aif3_dai;
145 struct snd_soc_dai *wm9081_dai; 156 struct snd_soc_dai *wm9081_dai;
146 int ret; 157 int ret;
147 158
159 rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_AP_DSP].name);
160 wm0010 = rtd->codec;
161
162 rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_DSP_CODEC].name);
163 codec = rtd->codec;
164 aif1_dai = rtd->codec_dai;
165
148 ret = snd_soc_codec_set_sysclk(codec, ARIZONA_CLK_SYSCLK, 166 ret = snd_soc_codec_set_sysclk(codec, ARIZONA_CLK_SYSCLK,
149 ARIZONA_CLK_SRC_FLL1, 167 ARIZONA_CLK_SRC_FLL1,
150 bells->sysclk_rate, 168 bells->sysclk_rate,
@@ -181,7 +199,8 @@ static int bells_late_probe(struct snd_soc_card *card)
181 return ret; 199 return ret;
182 } 200 }
183 201
184 aif2_dai = card->rtd[DAI_CODEC_CP].cpu_dai; 202 rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_CODEC_CP].name);
203 aif2_dai = rtd->cpu_dai;
185 204
186 ret = snd_soc_dai_set_sysclk(aif2_dai, ARIZONA_CLK_ASYNCCLK, 0, 0); 205 ret = snd_soc_dai_set_sysclk(aif2_dai, ARIZONA_CLK_ASYNCCLK, 0, 0);
187 if (ret != 0) { 206 if (ret != 0) {
@@ -192,8 +211,9 @@ static int bells_late_probe(struct snd_soc_card *card)
192 if (card->num_rtd == DAI_CODEC_SUB) 211 if (card->num_rtd == DAI_CODEC_SUB)
193 return 0; 212 return 0;
194 213
195 aif3_dai = card->rtd[DAI_CODEC_SUB].cpu_dai; 214 rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_CODEC_SUB].name);
196 wm9081_dai = card->rtd[DAI_CODEC_SUB].codec_dai; 215 aif3_dai = rtd->cpu_dai;
216 wm9081_dai = rtd->codec_dai;
197 217
198 ret = snd_soc_dai_set_sysclk(aif3_dai, ARIZONA_CLK_SYSCLK, 0, 0); 218 ret = snd_soc_dai_set_sysclk(aif3_dai, ARIZONA_CLK_SYSCLK, 0, 0);
199 if (ret != 0) { 219 if (ret != 0) {