ASoC: alc5632: Convert to devm_regmap_init_i2c()
[deliverable/linux.git] / sound / soc / codecs / alc5632.c
index e2111e0ccad7eedad086e5bc791d690f86388a15..7dd02420b36d3976f21b86ac8e50f0af0372a36f 100644 (file)
@@ -861,8 +861,7 @@ static int alc5632_set_dai_fmt(struct snd_soc_dai *codec_dai,
 static int alc5632_pcm_hw_params(struct snd_pcm_substream *substream,
                struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
 {
-       struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_codec *codec = rtd->codec;
+       struct snd_soc_codec *codec = dai->codec;
        int coeff, rate;
        u16 iface;
 
@@ -1131,7 +1130,7 @@ static __devinit int alc5632_i2c_probe(struct i2c_client *client,
 
        i2c_set_clientdata(client, alc5632);
 
-       alc5632->regmap = regmap_init_i2c(client, &alc5632_regmap);
+       alc5632->regmap = devm_regmap_init_i2c(client, &alc5632_regmap);
        if (IS_ERR(alc5632->regmap)) {
                ret = PTR_ERR(alc5632->regmap);
                dev_err(&client->dev, "regmap_init() failed: %d\n", ret);
@@ -1143,7 +1142,6 @@ static __devinit int alc5632_i2c_probe(struct i2c_client *client,
        if (ret1 != 0 || ret2 != 0) {
                dev_err(&client->dev,
                "Failed to read chip ID: ret1=%d, ret2=%d\n", ret1, ret2);
-               regmap_exit(alc5632->regmap);
                return -EIO;
        }
 
@@ -1152,14 +1150,12 @@ static __devinit int alc5632_i2c_probe(struct i2c_client *client,
        if ((vid1 != 0x10EC) || (vid2 != id->driver_data)) {
                dev_err(&client->dev,
                "Device is not a ALC5632: VID1=0x%x, VID2=0x%x\n", vid1, vid2);
-               regmap_exit(alc5632->regmap);
                return -EINVAL;
        }
 
        ret = alc5632_reset(alc5632->regmap);
        if (ret < 0) {
                dev_err(&client->dev, "Failed to issue reset\n");
-               regmap_exit(alc5632->regmap);
                return ret;
        }
 
@@ -1177,7 +1173,6 @@ static __devinit int alc5632_i2c_probe(struct i2c_client *client,
 
        if (ret < 0) {
                dev_err(&client->dev, "Failed to register codec: %d\n", ret);
-               regmap_exit(alc5632->regmap);
                return ret;
        }
 
@@ -1186,9 +1181,7 @@ static __devinit int alc5632_i2c_probe(struct i2c_client *client,
 
 static __devexit int alc5632_i2c_remove(struct i2c_client *client)
 {
-       struct alc5632_priv *alc5632 = i2c_get_clientdata(client);
        snd_soc_unregister_codec(&client->dev);
-       regmap_exit(alc5632->regmap);
        return 0;
 }
 
@@ -1209,25 +1202,7 @@ static struct i2c_driver alc5632_i2c_driver = {
        .id_table = alc5632_i2c_table,
 };
 
-static int __init alc5632_modinit(void)
-{
-       int ret;
-
-       ret = i2c_add_driver(&alc5632_i2c_driver);
-       if (ret != 0) {
-               printk(KERN_ERR "%s: can't add i2c driver", __func__);
-               return ret;
-       }
-
-       return ret;
-}
-module_init(alc5632_modinit);
-
-static void __exit alc5632_modexit(void)
-{
-       i2c_del_driver(&alc5632_i2c_driver);
-}
-module_exit(alc5632_modexit);
+module_i2c_driver(alc5632_i2c_driver);
 
 MODULE_DESCRIPTION("ASoC ALC5632 driver");
 MODULE_AUTHOR("Leon Romanovsky <leon@leon.nu>");
This page took 0.031547 seconds and 5 git commands to generate.