]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - sound/soc/samsung/speyside.c
ASoC: wm8996: Call _POST_PMU callback for CPVDD
[karo-tx-linux.git] / sound / soc / samsung / speyside.c
index 4b8e35410eb1962623cc31882967397747e5b3e7..f9ab7707a3e46674d464be23f36e9775df82169d 100644 (file)
@@ -19,6 +19,7 @@
 #include "../codecs/wm9081.h"
 
 #define WM8996_HPSEL_GPIO 214
+#define MCLK_AUDIO_RATE (512 * 48000)
 
 static int speyside_set_bias_level(struct snd_soc_card *card,
                                   struct snd_soc_dapm_context *dapm,
@@ -67,7 +68,7 @@ static int speyside_set_bias_level_post(struct snd_soc_card *card,
                if (card->dapm.bias_level == SND_SOC_BIAS_STANDBY) {
                        ret = snd_soc_dai_set_pll(codec_dai, 0,
                                                  WM8996_FLL_MCLK2,
-                                                 32768, 48000 * 256);
+                                                 32768, MCLK_AUDIO_RATE);
                        if (ret < 0) {
                                pr_err("Failed to start FLL\n");
                                return ret;
@@ -75,7 +76,7 @@ static int speyside_set_bias_level_post(struct snd_soc_card *card,
 
                        ret = snd_soc_dai_set_sysclk(codec_dai,
                                                     WM8996_SYSCLK_FLL,
-                                                    48000 * 256,
+                                                    MCLK_AUDIO_RATE,
                                                     SND_SOC_CLOCK_IN);
                        if (ret < 0)
                                return ret;
@@ -222,11 +223,9 @@ static struct snd_soc_dai_link speyside_dai[] = {
 
 static int speyside_wm9081_init(struct snd_soc_dapm_context *dapm)
 {
-       snd_soc_dapm_nc_pin(dapm, "LINEOUT");
-
        /* At any time the WM9081 is active it will have this clock */
        return snd_soc_codec_set_sysclk(dapm->codec, WM9081_SYSCLK_MCLK, 0,
-                                       48000 * 256, 0);
+                                       MCLK_AUDIO_RATE, 0);
 }
 
 static struct snd_soc_aux_dev speyside_aux_dev[] = {
@@ -292,6 +291,7 @@ static struct snd_soc_dapm_route audio_paths[] = {
 
 static struct snd_soc_card speyside = {
        .name = "Speyside",
+       .owner = THIS_MODULE,
        .dai_link = speyside_dai,
        .num_links = ARRAY_SIZE(speyside_dai),
        .aux_dev = speyside_aux_dev,
@@ -308,6 +308,7 @@ static struct snd_soc_card speyside = {
        .num_dapm_widgets = ARRAY_SIZE(widgets),
        .dapm_routes = audio_paths,
        .num_dapm_routes = ARRAY_SIZE(audio_paths),
+       .fully_routed = true,
 
        .late_probe = speyside_late_probe,
 };
@@ -348,17 +349,7 @@ static struct platform_driver speyside_driver = {
        .remove = __devexit_p(speyside_remove),
 };
 
-static int __init speyside_audio_init(void)
-{
-       return platform_driver_register(&speyside_driver);
-}
-module_init(speyside_audio_init);
-
-static void __exit speyside_audio_exit(void)
-{
-       platform_driver_unregister(&speyside_driver);
-}
-module_exit(speyside_audio_exit);
+module_platform_driver(speyside_driver);
 
 MODULE_DESCRIPTION("Speyside audio support");
 MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>");