diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-09-05 13:52:16 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-09-05 13:52:16 -0400 |
commit | 85488037bb9b533b064be66412dbe1dbcd2734d9 (patch) | |
tree | 844445f441b716130aaa4ba08d02a8ec3ba04e72 | |
parent | 367da1527aff2a4f789d03082f9fb191cdf332c4 (diff) |
ASoC: Add source argument to PLL configuration
More and more devices feature PLLs and FLLs with the ability to select
between multiple input clocks. In order to better support these devices
a new argument, source, has been added to the set_pll() configuration
API. Using set_clkdiv() is often difficult due to the need to stop the
PLL/FLL before any reconfiguration can be done.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r-- | include/sound/soc-dai.h | 6 | ||||
-rw-r--r-- | sound/soc/atmel/playpaq_wm8510.c | 2 | ||||
-rw-r--r-- | sound/soc/codecs/wm8350.c | 2 | ||||
-rw-r--r-- | sound/soc/codecs/wm8400.c | 3 | ||||
-rw-r--r-- | sound/soc/codecs/wm8510.c | 4 | ||||
-rw-r--r-- | sound/soc/codecs/wm8580.c | 4 | ||||
-rw-r--r-- | sound/soc/codecs/wm8753.c | 4 | ||||
-rw-r--r-- | sound/soc/codecs/wm8900.c | 4 | ||||
-rw-r--r-- | sound/soc/codecs/wm8940.c | 4 | ||||
-rw-r--r-- | sound/soc/codecs/wm8960.c | 4 | ||||
-rw-r--r-- | sound/soc/codecs/wm8974.c | 4 | ||||
-rw-r--r-- | sound/soc/codecs/wm8990.c | 4 | ||||
-rw-r--r-- | sound/soc/codecs/wm8993.c | 2 | ||||
-rw-r--r-- | sound/soc/codecs/wm9713.c | 4 | ||||
-rw-r--r-- | sound/soc/imx/mx27vis_wm8974.c | 2 | ||||
-rw-r--r-- | sound/soc/pxa/magician.c | 2 | ||||
-rw-r--r-- | sound/soc/pxa/pxa-ssp.c | 4 | ||||
-rw-r--r-- | sound/soc/pxa/zylonite.c | 5 | ||||
-rw-r--r-- | sound/soc/s3c24xx/neo1973_gta02_wm8753.c | 2 | ||||
-rw-r--r-- | sound/soc/s3c24xx/neo1973_wm8753.c | 2 | ||||
-rw-r--r-- | sound/soc/soc-core.c | 8 |
21 files changed, 40 insertions, 36 deletions
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h index 97ca9af414dc..16963d4d5df2 100644 --- a/include/sound/soc-dai.h +++ b/include/sound/soc-dai.h | |||
@@ -106,7 +106,7 @@ int snd_soc_dai_set_clkdiv(struct snd_soc_dai *dai, | |||
106 | int div_id, int div); | 106 | int div_id, int div); |
107 | 107 | ||
108 | int snd_soc_dai_set_pll(struct snd_soc_dai *dai, | 108 | int snd_soc_dai_set_pll(struct snd_soc_dai *dai, |
109 | int pll_id, unsigned int freq_in, unsigned int freq_out); | 109 | int pll_id, int source, unsigned int freq_in, unsigned int freq_out); |
110 | 110 | ||
111 | /* Digital Audio interface formatting */ | 111 | /* Digital Audio interface formatting */ |
112 | int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt); | 112 | int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt); |
@@ -136,8 +136,8 @@ struct snd_soc_dai_ops { | |||
136 | */ | 136 | */ |
137 | int (*set_sysclk)(struct snd_soc_dai *dai, | 137 | int (*set_sysclk)(struct snd_soc_dai *dai, |
138 | int clk_id, unsigned int freq, int dir); | 138 | int clk_id, unsigned int freq, int dir); |
139 | int (*set_pll)(struct snd_soc_dai *dai, | 139 | int (*set_pll)(struct snd_soc_dai *dai, int pll_id, int source, |
140 | int pll_id, unsigned int freq_in, unsigned int freq_out); | 140 | unsigned int freq_in, unsigned int freq_out); |
141 | int (*set_clkdiv)(struct snd_soc_dai *dai, int div_id, int div); | 141 | int (*set_clkdiv)(struct snd_soc_dai *dai, int div_id, int div); |
142 | 142 | ||
143 | /* | 143 | /* |
diff --git a/sound/soc/atmel/playpaq_wm8510.c b/sound/soc/atmel/playpaq_wm8510.c index 9eb610c2ba91..9df4c68ef000 100644 --- a/sound/soc/atmel/playpaq_wm8510.c +++ b/sound/soc/atmel/playpaq_wm8510.c | |||
@@ -268,7 +268,7 @@ static int playpaq_wm8510_hw_params(struct snd_pcm_substream *substream, | |||
268 | #endif /* CONFIG_SND_AT32_SOC_PLAYPAQ_SLAVE */ | 268 | #endif /* CONFIG_SND_AT32_SOC_PLAYPAQ_SLAVE */ |
269 | 269 | ||
270 | 270 | ||
271 | ret = snd_soc_dai_set_pll(codec_dai, 0, | 271 | ret = snd_soc_dai_set_pll(codec_dai, 0, 0, |
272 | clk_get_rate(CODEC_CLK), pll_out); | 272 | clk_get_rate(CODEC_CLK), pll_out); |
273 | if (ret < 0) { | 273 | if (ret < 0) { |
274 | pr_warning("playpaq_wm8510: Failed to set CODEC DAI PLL (%d)\n", | 274 | pr_warning("playpaq_wm8510: Failed to set CODEC DAI PLL (%d)\n", |
diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c index 71c9c4bb2632..0ebd99b7493e 100644 --- a/sound/soc/codecs/wm8350.c +++ b/sound/soc/codecs/wm8350.c | |||
@@ -1101,7 +1101,7 @@ static inline int fll_factors(struct _fll_div *fll_div, unsigned int input, | |||
1101 | } | 1101 | } |
1102 | 1102 | ||
1103 | static int wm8350_set_fll(struct snd_soc_dai *codec_dai, | 1103 | static int wm8350_set_fll(struct snd_soc_dai *codec_dai, |
1104 | int pll_id, unsigned int freq_in, | 1104 | int pll_id, int source, unsigned int freq_in, |
1105 | unsigned int freq_out) | 1105 | unsigned int freq_out) |
1106 | { | 1106 | { |
1107 | struct snd_soc_codec *codec = codec_dai->codec; | 1107 | struct snd_soc_codec *codec = codec_dai->codec; |
diff --git a/sound/soc/codecs/wm8400.c b/sound/soc/codecs/wm8400.c index b9ef4d915221..9cb8e50f0fbb 100644 --- a/sound/soc/codecs/wm8400.c +++ b/sound/soc/codecs/wm8400.c | |||
@@ -1011,7 +1011,8 @@ static int fll_factors(struct wm8400_priv *wm8400, struct fll_factors *factors, | |||
1011 | } | 1011 | } |
1012 | 1012 | ||
1013 | static int wm8400_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, | 1013 | static int wm8400_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, |
1014 | unsigned int freq_in, unsigned int freq_out) | 1014 | int source, unsigned int freq_in, |
1015 | unsigned int freq_out) | ||
1015 | { | 1016 | { |
1016 | struct snd_soc_codec *codec = codec_dai->codec; | 1017 | struct snd_soc_codec *codec = codec_dai->codec; |
1017 | struct wm8400_priv *wm8400 = codec->private_data; | 1018 | struct wm8400_priv *wm8400 = codec->private_data; |
diff --git a/sound/soc/codecs/wm8510.c b/sound/soc/codecs/wm8510.c index 060d5d06ba95..5702435af81b 100644 --- a/sound/soc/codecs/wm8510.c +++ b/sound/soc/codecs/wm8510.c | |||
@@ -271,8 +271,8 @@ static void pll_factors(unsigned int target, unsigned int source) | |||
271 | pll_div.k = K; | 271 | pll_div.k = K; |
272 | } | 272 | } |
273 | 273 | ||
274 | static int wm8510_set_dai_pll(struct snd_soc_dai *codec_dai, | 274 | static int wm8510_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, |
275 | int pll_id, unsigned int freq_in, unsigned int freq_out) | 275 | int source, unsigned int freq_in, unsigned int freq_out) |
276 | { | 276 | { |
277 | struct snd_soc_codec *codec = codec_dai->codec; | 277 | struct snd_soc_codec *codec = codec_dai->codec; |
278 | u16 reg; | 278 | u16 reg; |
diff --git a/sound/soc/codecs/wm8580.c b/sound/soc/codecs/wm8580.c index 6bded8c78150..3be5c0b2552c 100644 --- a/sound/soc/codecs/wm8580.c +++ b/sound/soc/codecs/wm8580.c | |||
@@ -407,8 +407,8 @@ static int pll_factors(struct _pll_div *pll_div, unsigned int target, | |||
407 | return 0; | 407 | return 0; |
408 | } | 408 | } |
409 | 409 | ||
410 | static int wm8580_set_dai_pll(struct snd_soc_dai *codec_dai, | 410 | static int wm8580_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, |
411 | int pll_id, unsigned int freq_in, unsigned int freq_out) | 411 | int source, unsigned int freq_in, unsigned int freq_out) |
412 | { | 412 | { |
413 | int offset; | 413 | int offset; |
414 | struct snd_soc_codec *codec = codec_dai->codec; | 414 | struct snd_soc_codec *codec = codec_dai->codec; |
diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c index d80d414cfbbd..f60f3a02d1f8 100644 --- a/sound/soc/codecs/wm8753.c +++ b/sound/soc/codecs/wm8753.c | |||
@@ -723,8 +723,8 @@ static void pll_factors(struct _pll_div *pll_div, unsigned int target, | |||
723 | pll_div->k = K; | 723 | pll_div->k = K; |
724 | } | 724 | } |
725 | 725 | ||
726 | static int wm8753_set_dai_pll(struct snd_soc_dai *codec_dai, | 726 | static int wm8753_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, |
727 | int pll_id, unsigned int freq_in, unsigned int freq_out) | 727 | int source, unsigned int freq_in, unsigned int freq_out) |
728 | { | 728 | { |
729 | u16 reg, enable; | 729 | u16 reg, enable; |
730 | int offset; | 730 | int offset; |
diff --git a/sound/soc/codecs/wm8900.c b/sound/soc/codecs/wm8900.c index 5e9c855c0036..882604ef768c 100644 --- a/sound/soc/codecs/wm8900.c +++ b/sound/soc/codecs/wm8900.c | |||
@@ -814,8 +814,8 @@ reenable: | |||
814 | return 0; | 814 | return 0; |
815 | } | 815 | } |
816 | 816 | ||
817 | static int wm8900_set_dai_pll(struct snd_soc_dai *codec_dai, | 817 | static int wm8900_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, |
818 | int pll_id, unsigned int freq_in, unsigned int freq_out) | 818 | int source, unsigned int freq_in, unsigned int freq_out) |
819 | { | 819 | { |
820 | return wm8900_set_fll(codec_dai->codec, pll_id, freq_in, freq_out); | 820 | return wm8900_set_fll(codec_dai->codec, pll_id, freq_in, freq_out); |
821 | } | 821 | } |
diff --git a/sound/soc/codecs/wm8940.c b/sound/soc/codecs/wm8940.c index da97aae475a2..914d788a2b76 100644 --- a/sound/soc/codecs/wm8940.c +++ b/sound/soc/codecs/wm8940.c | |||
@@ -536,8 +536,8 @@ static void pll_factors(unsigned int target, unsigned int source) | |||
536 | } | 536 | } |
537 | 537 | ||
538 | /* Untested at the moment */ | 538 | /* Untested at the moment */ |
539 | static int wm8940_set_dai_pll(struct snd_soc_dai *codec_dai, | 539 | static int wm8940_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, |
540 | int pll_id, unsigned int freq_in, unsigned int freq_out) | 540 | int source, unsigned int freq_in, unsigned int freq_out) |
541 | { | 541 | { |
542 | struct snd_soc_codec *codec = codec_dai->codec; | 542 | struct snd_soc_codec *codec = codec_dai->codec; |
543 | u16 reg; | 543 | u16 reg; |
diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c index f59703be61c8..416fb3c17018 100644 --- a/sound/soc/codecs/wm8960.c +++ b/sound/soc/codecs/wm8960.c | |||
@@ -540,8 +540,8 @@ static int pll_factors(unsigned int source, unsigned int target, | |||
540 | return 0; | 540 | return 0; |
541 | } | 541 | } |
542 | 542 | ||
543 | static int wm8960_set_dai_pll(struct snd_soc_dai *codec_dai, | 543 | static int wm8960_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, |
544 | int pll_id, unsigned int freq_in, unsigned int freq_out) | 544 | int source, unsigned int freq_in, unsigned int freq_out) |
545 | { | 545 | { |
546 | struct snd_soc_codec *codec = codec_dai->codec; | 546 | struct snd_soc_codec *codec = codec_dai->codec; |
547 | u16 reg; | 547 | u16 reg; |
diff --git a/sound/soc/codecs/wm8974.c b/sound/soc/codecs/wm8974.c index d8a013ab3177..fa4d85bd048b 100644 --- a/sound/soc/codecs/wm8974.c +++ b/sound/soc/codecs/wm8974.c | |||
@@ -329,8 +329,8 @@ static void pll_factors(unsigned int target, unsigned int source) | |||
329 | pll_div.k = K; | 329 | pll_div.k = K; |
330 | } | 330 | } |
331 | 331 | ||
332 | static int wm8974_set_dai_pll(struct snd_soc_dai *codec_dai, | 332 | static int wm8974_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, |
333 | int pll_id, unsigned int freq_in, unsigned int freq_out) | 333 | int source, unsigned int freq_in, unsigned int freq_out) |
334 | { | 334 | { |
335 | struct snd_soc_codec *codec = codec_dai->codec; | 335 | struct snd_soc_codec *codec = codec_dai->codec; |
336 | u16 reg; | 336 | u16 reg; |
diff --git a/sound/soc/codecs/wm8990.c b/sound/soc/codecs/wm8990.c index 2d702db4131d..f657e9a5fe26 100644 --- a/sound/soc/codecs/wm8990.c +++ b/sound/soc/codecs/wm8990.c | |||
@@ -972,8 +972,8 @@ static void pll_factors(struct _pll_div *pll_div, unsigned int target, | |||
972 | pll_div->k = K; | 972 | pll_div->k = K; |
973 | } | 973 | } |
974 | 974 | ||
975 | static int wm8990_set_dai_pll(struct snd_soc_dai *codec_dai, | 975 | static int wm8990_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, |
976 | int pll_id, unsigned int freq_in, unsigned int freq_out) | 976 | int source, unsigned int freq_in, unsigned int freq_out) |
977 | { | 977 | { |
978 | u16 reg; | 978 | u16 reg; |
979 | struct snd_soc_codec *codec = codec_dai->codec; | 979 | struct snd_soc_codec *codec = codec_dai->codec; |
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c index d9987999e92c..6b32a2852603 100644 --- a/sound/soc/codecs/wm8993.c +++ b/sound/soc/codecs/wm8993.c | |||
@@ -422,7 +422,7 @@ static int fll_factors(struct _fll_div *fll_div, unsigned int Fref, | |||
422 | return 0; | 422 | return 0; |
423 | } | 423 | } |
424 | 424 | ||
425 | static int wm8993_set_fll(struct snd_soc_dai *dai, int fll_id, | 425 | static int wm8993_set_fll(struct snd_soc_dai *dai, int fll_id, int source, |
426 | unsigned int Fref, unsigned int Fout) | 426 | unsigned int Fref, unsigned int Fout) |
427 | { | 427 | { |
428 | struct snd_soc_codec *codec = dai->codec; | 428 | struct snd_soc_codec *codec = dai->codec; |
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c index abed37acf787..ca3d449ed89e 100644 --- a/sound/soc/codecs/wm9713.c +++ b/sound/soc/codecs/wm9713.c | |||
@@ -800,8 +800,8 @@ static int wm9713_set_pll(struct snd_soc_codec *codec, | |||
800 | return 0; | 800 | return 0; |
801 | } | 801 | } |
802 | 802 | ||
803 | static int wm9713_set_dai_pll(struct snd_soc_dai *codec_dai, | 803 | static int wm9713_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, |
804 | int pll_id, unsigned int freq_in, unsigned int freq_out) | 804 | int source, unsigned int freq_in, unsigned int freq_out) |
805 | { | 805 | { |
806 | struct snd_soc_codec *codec = codec_dai->codec; | 806 | struct snd_soc_codec *codec = codec_dai->codec; |
807 | return wm9713_set_pll(codec, pll_id, freq_in, freq_out); | 807 | return wm9713_set_pll(codec, pll_id, freq_in, freq_out); |
diff --git a/sound/soc/imx/mx27vis_wm8974.c b/sound/soc/imx/mx27vis_wm8974.c index e4dcb539108a..0267d2d91685 100644 --- a/sound/soc/imx/mx27vis_wm8974.c +++ b/sound/soc/imx/mx27vis_wm8974.c | |||
@@ -157,7 +157,7 @@ static int mx27vis_hifi_hw_params(struct snd_pcm_substream *substream, | |||
157 | 157 | ||
158 | 158 | ||
159 | /* codec PLL input is 25 MHz */ | 159 | /* codec PLL input is 25 MHz */ |
160 | ret = codec_dai->ops->set_pll(codec_dai, IGNORED_ARG, | 160 | ret = codec_dai->ops->set_pll(codec_dai, IGNORED_ARG, IGNORED_ARG, |
161 | 25000000, pll_out); | 161 | 25000000, pll_out); |
162 | if (ret < 0) { | 162 | if (ret < 0) { |
163 | printk(KERN_ERR "Error when setting PLL input\n"); | 163 | printk(KERN_ERR "Error when setting PLL input\n"); |
diff --git a/sound/soc/pxa/magician.c b/sound/soc/pxa/magician.c index 9f7c61e23daf..4c8d99a8d386 100644 --- a/sound/soc/pxa/magician.c +++ b/sound/soc/pxa/magician.c | |||
@@ -213,7 +213,7 @@ static int magician_playback_hw_params(struct snd_pcm_substream *substream, | |||
213 | return ret; | 213 | return ret; |
214 | 214 | ||
215 | /* set SSP audio pll clock */ | 215 | /* set SSP audio pll clock */ |
216 | ret = snd_soc_dai_set_pll(cpu_dai, 0, 0, acps); | 216 | ret = snd_soc_dai_set_pll(cpu_dai, 0, 0, 0, acps); |
217 | if (ret < 0) | 217 | if (ret < 0) |
218 | return ret; | 218 | return ret; |
219 | 219 | ||
diff --git a/sound/soc/pxa/pxa-ssp.c b/sound/soc/pxa/pxa-ssp.c index 5b9ed6464789..57f201c94ca8 100644 --- a/sound/soc/pxa/pxa-ssp.c +++ b/sound/soc/pxa/pxa-ssp.c | |||
@@ -305,8 +305,8 @@ static int pxa_ssp_set_dai_clkdiv(struct snd_soc_dai *cpu_dai, | |||
305 | /* | 305 | /* |
306 | * Configure the PLL frequency pxa27x and (afaik - pxa320 only) | 306 | * Configure the PLL frequency pxa27x and (afaik - pxa320 only) |
307 | */ | 307 | */ |
308 | static int pxa_ssp_set_dai_pll(struct snd_soc_dai *cpu_dai, | 308 | static int pxa_ssp_set_dai_pll(struct snd_soc_dai *cpu_dai, int pll_id, |
309 | int pll_id, unsigned int freq_in, unsigned int freq_out) | 309 | int source, unsigned int freq_in, unsigned int freq_out) |
310 | { | 310 | { |
311 | struct ssp_priv *priv = cpu_dai->private_data; | 311 | struct ssp_priv *priv = cpu_dai->private_data; |
312 | struct ssp_device *ssp = priv->dev.ssp; | 312 | struct ssp_device *ssp = priv->dev.ssp; |
diff --git a/sound/soc/pxa/zylonite.c b/sound/soc/pxa/zylonite.c index 9a386b4c4ed1..dd678ae24398 100644 --- a/sound/soc/pxa/zylonite.c +++ b/sound/soc/pxa/zylonite.c | |||
@@ -74,7 +74,8 @@ static const struct snd_soc_dapm_route audio_map[] = { | |||
74 | static int zylonite_wm9713_init(struct snd_soc_codec *codec) | 74 | static int zylonite_wm9713_init(struct snd_soc_codec *codec) |
75 | { | 75 | { |
76 | if (clk_pout) | 76 | if (clk_pout) |
77 | snd_soc_dai_set_pll(&codec->dai[0], 0, clk_get_rate(pout), 0); | 77 | snd_soc_dai_set_pll(&codec->dai[0], 0, 0, |
78 | clk_get_rate(pout), 0); | ||
78 | 79 | ||
79 | snd_soc_dapm_new_controls(codec, zylonite_dapm_widgets, | 80 | snd_soc_dapm_new_controls(codec, zylonite_dapm_widgets, |
80 | ARRAY_SIZE(zylonite_dapm_widgets)); | 81 | ARRAY_SIZE(zylonite_dapm_widgets)); |
@@ -128,7 +129,7 @@ static int zylonite_voice_hw_params(struct snd_pcm_substream *substream, | |||
128 | if (ret < 0) | 129 | if (ret < 0) |
129 | return ret; | 130 | return ret; |
130 | 131 | ||
131 | ret = snd_soc_dai_set_pll(cpu_dai, 0, 0, pll_out); | 132 | ret = snd_soc_dai_set_pll(cpu_dai, 0, 0, 0, pll_out); |
132 | if (ret < 0) | 133 | if (ret < 0) |
133 | return ret; | 134 | return ret; |
134 | 135 | ||
diff --git a/sound/soc/s3c24xx/neo1973_gta02_wm8753.c b/sound/soc/s3c24xx/neo1973_gta02_wm8753.c index 0c52e36ddd87..6ddd1b3b16b3 100644 --- a/sound/soc/s3c24xx/neo1973_gta02_wm8753.c +++ b/sound/soc/s3c24xx/neo1973_gta02_wm8753.c | |||
@@ -119,7 +119,7 @@ static int neo1973_gta02_hifi_hw_params(struct snd_pcm_substream *substream, | |||
119 | return ret; | 119 | return ret; |
120 | 120 | ||
121 | /* codec PLL input is PCLK/4 */ | 121 | /* codec PLL input is PCLK/4 */ |
122 | ret = snd_soc_dai_set_pll(codec_dai, WM8753_PLL1, | 122 | ret = snd_soc_dai_set_pll(codec_dai, WM8753_PLL1, 0, |
123 | iis_clkrate / 4, pll_out); | 123 | iis_clkrate / 4, pll_out); |
124 | if (ret < 0) | 124 | if (ret < 0) |
125 | return ret; | 125 | return ret; |
diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c index 906709e6dd5f..16009eba9cba 100644 --- a/sound/soc/s3c24xx/neo1973_wm8753.c +++ b/sound/soc/s3c24xx/neo1973_wm8753.c | |||
@@ -137,7 +137,7 @@ static int neo1973_hifi_hw_params(struct snd_pcm_substream *substream, | |||
137 | return ret; | 137 | return ret; |
138 | 138 | ||
139 | /* codec PLL input is PCLK/4 */ | 139 | /* codec PLL input is PCLK/4 */ |
140 | ret = snd_soc_dai_set_pll(codec_dai, WM8753_PLL1, | 140 | ret = snd_soc_dai_set_pll(codec_dai, WM8753_PLL1, 0, |
141 | iis_clkrate / 4, pll_out); | 141 | iis_clkrate / 4, pll_out); |
142 | if (ret < 0) | 142 | if (ret < 0) |
143 | return ret; | 143 | return ret; |
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 7ff04ad2a97e..05fdc8023da4 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
@@ -2197,16 +2197,18 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_clkdiv); | |||
2197 | * snd_soc_dai_set_pll - configure DAI PLL. | 2197 | * snd_soc_dai_set_pll - configure DAI PLL. |
2198 | * @dai: DAI | 2198 | * @dai: DAI |
2199 | * @pll_id: DAI specific PLL ID | 2199 | * @pll_id: DAI specific PLL ID |
2200 | * @source: DAI specific source for the PLL | ||
2200 | * @freq_in: PLL input clock frequency in Hz | 2201 | * @freq_in: PLL input clock frequency in Hz |
2201 | * @freq_out: requested PLL output clock frequency in Hz | 2202 | * @freq_out: requested PLL output clock frequency in Hz |
2202 | * | 2203 | * |
2203 | * Configures and enables PLL to generate output clock based on input clock. | 2204 | * Configures and enables PLL to generate output clock based on input clock. |
2204 | */ | 2205 | */ |
2205 | int snd_soc_dai_set_pll(struct snd_soc_dai *dai, | 2206 | int snd_soc_dai_set_pll(struct snd_soc_dai *dai, int pll_id, int source, |
2206 | int pll_id, unsigned int freq_in, unsigned int freq_out) | 2207 | unsigned int freq_in, unsigned int freq_out) |
2207 | { | 2208 | { |
2208 | if (dai->ops && dai->ops->set_pll) | 2209 | if (dai->ops && dai->ops->set_pll) |
2209 | return dai->ops->set_pll(dai, pll_id, freq_in, freq_out); | 2210 | return dai->ops->set_pll(dai, pll_id, source, |
2211 | freq_in, freq_out); | ||
2210 | else | 2212 | else |
2211 | return -EINVAL; | 2213 | return -EINVAL; |
2212 | } | 2214 | } |