summaryrefslogtreecommitdiff
path: root/sound/soc
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/codecs/wm8962.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
index 018257c69bc..8810988522e 100644
--- a/sound/soc/codecs/wm8962.c
+++ b/sound/soc/codecs/wm8962.c
@@ -4150,7 +4150,8 @@ static __devinit int wm8962_i2c_probe(struct i2c_client *i2c,
unsigned int reg;
int ret, i;
- wm8962 = kzalloc(sizeof(struct wm8962_priv), GFP_KERNEL);
+ wm8962 = devm_kzalloc(&i2c->dev, sizeof(struct wm8962_priv),
+ GFP_KERNEL);
if (wm8962 == NULL)
return -ENOMEM;
@@ -4167,7 +4168,7 @@ static __devinit int wm8962_i2c_probe(struct i2c_client *i2c,
wm8962->supplies);
if (ret != 0) {
dev_err(&i2c->dev, "Failed to request supplies: %d\n", ret);
- goto err_alloc;
+ goto err;
}
ret = regulator_bulk_enable(ARRAY_SIZE(wm8962->supplies),
@@ -4241,8 +4242,7 @@ err_enable:
regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
err_get:
regulator_bulk_free(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
-err_alloc:
- kfree(wm8962);
+err:
return ret;
}
@@ -4253,7 +4253,6 @@ static __devexit int wm8962_i2c_remove(struct i2c_client *client)
snd_soc_unregister_codec(&client->dev);
regmap_exit(wm8962->regmap);
regulator_bulk_free(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
- kfree(i2c_get_clientdata(client));
return 0;
}