Merge remote-tracking branches 'asoc/topic/txx9', 'asoc/topic/wm8750', 'asoc/topic...
[cascardo/linux.git] / sound / soc / codecs / wm8995.c
index 1288ede..66103c2 100644 (file)
@@ -44,7 +44,7 @@ static const char *wm8995_supply_names[WM8995_NUM_SUPPLIES] = {
        "MICVDD"
 };
 
-static struct reg_default wm8995_reg_defaults[] = {
+static const struct reg_default wm8995_reg_defaults[] = {
        { 0, 0x8995 },
        { 5, 0x0100 },
        { 16, 0x000b },
@@ -534,10 +534,11 @@ static void wm8995_update_class_w(struct snd_soc_codec *codec)
 static int check_clk_sys(struct snd_soc_dapm_widget *source,
                         struct snd_soc_dapm_widget *sink)
 {
+       struct snd_soc_codec *codec = snd_soc_dapm_to_codec(source->dapm);
        unsigned int reg;
        const char *clk;
 
-       reg = snd_soc_read(source->codec, WM8995_CLOCKING_1);
+       reg = snd_soc_read(codec, WM8995_CLOCKING_1);
        /* Check what we're currently using for CLK_SYS */
        if (reg & WM8995_SYSCLK_SRC)
                clk = "AIF2CLK";
@@ -560,9 +561,7 @@ static int wm8995_put_class_w(struct snd_kcontrol *kcontrol,
 static int hp_supply_event(struct snd_soc_dapm_widget *w,
                           struct snd_kcontrol *kcontrol, int event)
 {
-       struct snd_soc_codec *codec;
-
-       codec = w->codec;
+       struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
 
        switch (event) {
        case SND_SOC_DAPM_PRE_PMU:
@@ -611,10 +610,9 @@ static void dc_servo_cmd(struct snd_soc_codec *codec,
 static int hp_event(struct snd_soc_dapm_widget *w,
                    struct snd_kcontrol *kcontrol, int event)
 {
-       struct snd_soc_codec *codec;
+       struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
        unsigned int reg;
 
-       codec = w->codec;
        reg = snd_soc_read(codec, WM8995_ANALOGUE_HP_1);
 
        switch (event) {
@@ -761,9 +759,7 @@ static int configure_clock(struct snd_soc_codec *codec)
 static int clk_sys_event(struct snd_soc_dapm_widget *w,
                         struct snd_kcontrol *kcontrol, int event)
 {
-       struct snd_soc_codec *codec;
-
-       codec = w->codec;
+       struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
 
        switch (event) {
        case SND_SOC_DAPM_PRE_PMU:
@@ -2004,7 +2000,6 @@ static int wm8995_remove(struct snd_soc_codec *codec)
        int i;
 
        wm8995 = snd_soc_codec_get_drvdata(codec);
-       wm8995_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
        for (i = 0; i < ARRAY_SIZE(wm8995->supplies); ++i)
                regulator_unregister_notifier(wm8995->supplies[i].consumer,
@@ -2078,8 +2073,6 @@ static int wm8995_probe(struct snd_soc_codec *codec)
                goto err_reg_enable;
        }
 
-       wm8995_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
        /* Latch volume updates (right only; we always do left then right). */
        snd_soc_update_bits(codec, WM8995_AIF1_DAC1_RIGHT_VOLUME,
                            WM8995_AIF1DAC1_VU_MASK, WM8995_AIF1DAC1_VU);
@@ -2102,13 +2095,6 @@ static int wm8995_probe(struct snd_soc_codec *codec)
 
        wm8995_update_class_w(codec);
 
-       snd_soc_add_codec_controls(codec, wm8995_snd_controls,
-                            ARRAY_SIZE(wm8995_snd_controls));
-       snd_soc_dapm_new_controls(&codec->dapm, wm8995_dapm_widgets,
-                                 ARRAY_SIZE(wm8995_dapm_widgets));
-       snd_soc_dapm_add_routes(&codec->dapm, wm8995_intercon,
-                               ARRAY_SIZE(wm8995_intercon));
-
        return 0;
 
 err_reg_enable:
@@ -2200,14 +2186,21 @@ static struct snd_soc_dai_driver wm8995_dai[] = {
        }
 };
 
-static struct snd_soc_codec_driver soc_codec_dev_wm8995 = {
+static const struct snd_soc_codec_driver soc_codec_dev_wm8995 = {
        .probe = wm8995_probe,
        .remove = wm8995_remove,
        .set_bias_level = wm8995_set_bias_level,
        .idle_bias_off = true,
+
+       .controls = wm8995_snd_controls,
+       .num_controls = ARRAY_SIZE(wm8995_snd_controls),
+       .dapm_widgets = wm8995_dapm_widgets,
+       .num_dapm_widgets = ARRAY_SIZE(wm8995_dapm_widgets),
+       .dapm_routes = wm8995_intercon,
+       .num_dapm_routes = ARRAY_SIZE(wm8995_intercon),
 };
 
-static struct regmap_config wm8995_regmap = {
+static const struct regmap_config wm8995_regmap = {
        .reg_bits = 16,
        .val_bits = 16,