Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[deliverable/linux.git] / sound / soc / codecs / max9850.c
index 208d2ee618558c980df83b9ad0b35de9920bd145..a1913091f56ca5641fd58a4066890065deb0d5d6 100644 (file)
@@ -86,7 +86,7 @@ SND_SOC_DAPM_INPUT("INL"),
 SND_SOC_DAPM_INPUT("INR"),
 };
 
-static const struct snd_soc_dapm_route intercon[] = {
+static const struct snd_soc_dapm_route max9850_dapm_routes[] = {
        /* output mixer */
        {"Output Mixer", NULL, "DAC"},
        {"Output Mixer", "Line In Switch", "Line Input"},
@@ -254,7 +254,7 @@ static int max9850_set_bias_level(struct snd_soc_codec *codec,
 #define MAX9850_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
        SNDRV_PCM_FMTBIT_S24_LE)
 
-static struct snd_soc_dai_ops max9850_dai_ops = {
+static const struct snd_soc_dai_ops max9850_dai_ops = {
        .hw_params      = max9850_hw_params,
        .set_sysclk     = max9850_set_dai_sysclk,
        .set_fmt        = max9850_set_dai_fmt,
@@ -273,7 +273,7 @@ static struct snd_soc_dai_driver max9850_dai = {
 };
 
 #ifdef CONFIG_PM
-static int max9850_suspend(struct snd_soc_codec *codec, pm_message_t state)
+static int max9850_suspend(struct snd_soc_codec *codec)
 {
        max9850_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
@@ -293,7 +293,6 @@ static int max9850_resume(struct snd_soc_codec *codec)
 
 static int max9850_probe(struct snd_soc_codec *codec)
 {
-       struct snd_soc_dapm_context *dapm = &codec->dapm;
        int ret;
 
        ret = snd_soc_codec_set_cache_io(codec, 8, 8, SND_SOC_I2C);
@@ -309,13 +308,6 @@ static int max9850_probe(struct snd_soc_codec *codec)
        /* set slew-rate 125ms */
        snd_soc_update_bits(codec, MAX9850_CHARGE_PUMP, 0xff, 0xc0);
 
-       snd_soc_dapm_new_controls(dapm, max9850_dapm_widgets,
-                                 ARRAY_SIZE(max9850_dapm_widgets));
-       snd_soc_dapm_add_routes(dapm, intercon, ARRAY_SIZE(intercon));
-
-       snd_soc_add_controls(codec, max9850_controls,
-                       ARRAY_SIZE(max9850_controls));
-
        return 0;
 }
 
@@ -328,6 +320,13 @@ static struct snd_soc_codec_driver soc_codec_dev_max9850 = {
        .reg_word_size = sizeof(u8),
        .reg_cache_default = max9850_reg,
        .volatile_register = max9850_volatile_register,
+
+       .controls = max9850_controls,
+       .num_controls = ARRAY_SIZE(max9850_controls),
+       .dapm_widgets = max9850_dapm_widgets,
+       .num_dapm_widgets = ARRAY_SIZE(max9850_dapm_widgets),
+       .dapm_routes = max9850_dapm_routes,
+       .num_dapm_routes = ARRAY_SIZE(max9850_dapm_routes),
 };
 
 static int __devinit max9850_i2c_probe(struct i2c_client *i2c,
@@ -336,7 +335,8 @@ static int __devinit max9850_i2c_probe(struct i2c_client *i2c,
        struct max9850_priv *max9850;
        int ret;
 
-       max9850 = kzalloc(sizeof(struct max9850_priv), GFP_KERNEL);
+       max9850 = devm_kzalloc(&i2c->dev, sizeof(struct max9850_priv),
+                              GFP_KERNEL);
        if (max9850 == NULL)
                return -ENOMEM;
 
@@ -344,15 +344,12 @@ static int __devinit max9850_i2c_probe(struct i2c_client *i2c,
 
        ret = snd_soc_register_codec(&i2c->dev,
                        &soc_codec_dev_max9850, &max9850_dai, 1);
-       if (ret < 0)
-               kfree(max9850);
        return ret;
 }
 
 static __devexit int max9850_i2c_remove(struct i2c_client *client)
 {
        snd_soc_unregister_codec(&client->dev);
-       kfree(i2c_get_clientdata(client));
        return 0;
 }
 
This page took 0.027592 seconds and 5 git commands to generate.