Merge remote-tracking branches 'asoc/topic/ac97', 'asoc/topic/ak4104', 'asoc/topic...
[cascardo/linux.git] / sound / soc / codecs / da7219.c
index 50ea943..1671c61 100644 (file)
@@ -1767,13 +1767,14 @@ static struct snd_soc_codec_driver soc_codec_dev_da7219 = {
        .resume                 = da7219_resume,
        .set_bias_level         = da7219_set_bias_level,
 
-       .controls               = da7219_snd_controls,
-       .num_controls           = ARRAY_SIZE(da7219_snd_controls),
-
-       .dapm_widgets           = da7219_dapm_widgets,
-       .num_dapm_widgets       = ARRAY_SIZE(da7219_dapm_widgets),
-       .dapm_routes            = da7219_audio_map,
-       .num_dapm_routes        = ARRAY_SIZE(da7219_audio_map),
+       .component_driver = {
+               .controls               = da7219_snd_controls,
+               .num_controls           = ARRAY_SIZE(da7219_snd_controls),
+               .dapm_widgets           = da7219_dapm_widgets,
+               .num_dapm_widgets       = ARRAY_SIZE(da7219_dapm_widgets),
+               .dapm_routes            = da7219_audio_map,
+               .num_dapm_routes        = ARRAY_SIZE(da7219_audio_map),
+       },
 };
 
 
@@ -1937,6 +1938,14 @@ static int da7219_i2c_probe(struct i2c_client *i2c,
                return ret;
        }
 
+       /* Software reset codec. */
+       regmap_write_bits(da7219->regmap, DA7219_ACCDET_CONFIG_1,
+                         DA7219_ACCDET_EN_MASK, 0);
+       regmap_write_bits(da7219->regmap, DA7219_CIF_CTRL,
+                         DA7219_CIF_REG_SOFT_RESET_MASK, 0);
+       regmap_write_bits(da7219->regmap, DA7219_SYSTEM_ACTIVE,
+                         DA7219_SYSTEM_ACTIVE_MASK, 0);
+
        ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_da7219,
                                     &da7219_dai, 1);
        if (ret < 0) {