Merge remote-tracking branch 'asoc/topic/rcar' into asoc-next
[sfrench/cifs-2.6.git] / sound / soc / codecs / wm8997.c
index 52404d7bc79047443fff2fecfdcd362bcfd3d3be..4134dc7e12434cb1a1e43b723eb43a9e23bcee52 100644 (file)
@@ -106,11 +106,13 @@ static int wm8997_sysclk_ev(struct snd_soc_dapm_widget *w,
                                regmap_write_async(regmap, patch[i].reg,
                                                   patch[i].def);
                break;
-       default:
+       case SND_SOC_DAPM_PRE_PMD:
                break;
+       default:
+               return 0;
        }
 
-       return 0;
+       return arizona_dvfs_sysclk_ev(w, kcontrol, event);
 }
 
 static const char *wm8997_osr_text[] = {
@@ -409,7 +411,8 @@ static const struct snd_kcontrol_new wm8997_aec_loopback_mux =
 
 static const struct snd_soc_dapm_widget wm8997_dapm_widgets[] = {
 SND_SOC_DAPM_SUPPLY("SYSCLK", ARIZONA_SYSTEM_CLOCK_1, ARIZONA_SYSCLK_ENA_SHIFT,
-                   0, wm8997_sysclk_ev, SND_SOC_DAPM_POST_PMU),
+                   0, wm8997_sysclk_ev,
+                   SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
 SND_SOC_DAPM_SUPPLY("ASYNCCLK", ARIZONA_ASYNC_CLOCK_1,
                    ARIZONA_ASYNC_CLK_ENA_SHIFT, 0, NULL, 0),
 SND_SOC_DAPM_SUPPLY("OPCLK", ARIZONA_OUTPUT_SYSTEM_CLOCK,
@@ -1127,6 +1130,8 @@ static int wm8997_probe(struct platform_device *pdev)
        wm8997->core.arizona = arizona;
        wm8997->core.num_inputs = 4;
 
+       arizona_init_dvfs(&wm8997->core);
+
        for (i = 0; i < ARRAY_SIZE(wm8997->fll); i++)
                wm8997->fll[i].vco_mult = 1;