aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-12-01 23:35:30 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-12-01 23:35:30 -0500
commitd7ba2556a0f74076eaac6187f0dd8806a81563df (patch)
tree181d6edb7163b5e7396ae6f84b3ae557dfd19906 /sound/soc/codecs
parentfaa9c2a798d4be0d15b1e685c4da4be3e2782089 (diff)
parentd2d1fe9028a65009ccc035026fc0fba51e80cc55 (diff)
Merge remote-tracking branch 'asoc/topic/wm8995' into asoc-next
Diffstat (limited to 'sound/soc/codecs')
-rw-r--r--sound/soc/codecs/wm8995.c40
1 files changed, 7 insertions, 33 deletions
diff --git a/sound/soc/codecs/wm8995.c b/sound/soc/codecs/wm8995.c
index 28c89b094c6e..f1a7cf147af0 100644
--- a/sound/soc/codecs/wm8995.c
+++ b/sound/soc/codecs/wm8995.c
@@ -2261,41 +2261,28 @@ static int __devinit wm8995_spi_probe(struct spi_device *spi)
2261 struct wm8995_priv *wm8995; 2261 struct wm8995_priv *wm8995;
2262 int ret; 2262 int ret;
2263 2263
2264 wm8995 = kzalloc(sizeof *wm8995, GFP_KERNEL); 2264 wm8995 = devm_kzalloc(&spi->dev, sizeof(*wm8995), GFP_KERNEL);
2265 if (!wm8995) 2265 if (!wm8995)
2266 return -ENOMEM; 2266 return -ENOMEM;
2267 2267
2268 spi_set_drvdata(spi, wm8995); 2268 spi_set_drvdata(spi, wm8995);
2269 2269
2270 wm8995->regmap = regmap_init_spi(spi, &wm8995_regmap); 2270 wm8995->regmap = devm_regmap_init_spi(spi, &wm8995_regmap);
2271 if (IS_ERR(wm8995->regmap)) { 2271 if (IS_ERR(wm8995->regmap)) {
2272 ret = PTR_ERR(wm8995->regmap); 2272 ret = PTR_ERR(wm8995->regmap);
2273 dev_err(&spi->dev, "Failed to register regmap: %d\n", ret); 2273 dev_err(&spi->dev, "Failed to register regmap: %d\n", ret);
2274 goto err_alloc; 2274 return ret;
2275 } 2275 }
2276 2276
2277 ret = snd_soc_register_codec(&spi->dev, 2277 ret = snd_soc_register_codec(&spi->dev,
2278 &soc_codec_dev_wm8995, wm8995_dai, 2278 &soc_codec_dev_wm8995, wm8995_dai,
2279 ARRAY_SIZE(wm8995_dai)); 2279 ARRAY_SIZE(wm8995_dai));
2280 if (ret < 0)
2281 goto err_regmap;
2282
2283 return ret;
2284
2285err_regmap:
2286 regmap_exit(wm8995->regmap);
2287err_alloc:
2288 kfree(wm8995);
2289
2290 return ret; 2280 return ret;
2291} 2281}
2292 2282
2293static int __devexit wm8995_spi_remove(struct spi_device *spi) 2283static int __devexit wm8995_spi_remove(struct spi_device *spi)
2294{ 2284{
2295 struct wm8995_priv *wm8995 = spi_get_drvdata(spi);
2296 snd_soc_unregister_codec(&spi->dev); 2285 snd_soc_unregister_codec(&spi->dev);
2297 regmap_exit(wm8995->regmap);
2298 kfree(wm8995);
2299 return 0; 2286 return 0;
2300} 2287}
2301 2288
@@ -2316,44 +2303,31 @@ static __devinit int wm8995_i2c_probe(struct i2c_client *i2c,
2316 struct wm8995_priv *wm8995; 2303 struct wm8995_priv *wm8995;
2317 int ret; 2304 int ret;
2318 2305
2319 wm8995 = kzalloc(sizeof *wm8995, GFP_KERNEL); 2306 wm8995 = devm_kzalloc(&i2c->dev, sizeof(*wm8995), GFP_KERNEL);
2320 if (!wm8995) 2307 if (!wm8995)
2321 return -ENOMEM; 2308 return -ENOMEM;
2322 2309
2323 i2c_set_clientdata(i2c, wm8995); 2310 i2c_set_clientdata(i2c, wm8995);
2324 2311
2325 wm8995->regmap = regmap_init_i2c(i2c, &wm8995_regmap); 2312 wm8995->regmap = devm_regmap_init_i2c(i2c, &wm8995_regmap);
2326 if (IS_ERR(wm8995->regmap)) { 2313 if (IS_ERR(wm8995->regmap)) {
2327 ret = PTR_ERR(wm8995->regmap); 2314 ret = PTR_ERR(wm8995->regmap);
2328 dev_err(&i2c->dev, "Failed to register regmap: %d\n", ret); 2315 dev_err(&i2c->dev, "Failed to register regmap: %d\n", ret);
2329 goto err_alloc; 2316 return ret;
2330 } 2317 }
2331 2318
2332 ret = snd_soc_register_codec(&i2c->dev, 2319 ret = snd_soc_register_codec(&i2c->dev,
2333 &soc_codec_dev_wm8995, wm8995_dai, 2320 &soc_codec_dev_wm8995, wm8995_dai,
2334 ARRAY_SIZE(wm8995_dai)); 2321 ARRAY_SIZE(wm8995_dai));
2335 if (ret < 0) { 2322 if (ret < 0)
2336 dev_err(&i2c->dev, "Failed to register CODEC: %d\n", ret); 2323 dev_err(&i2c->dev, "Failed to register CODEC: %d\n", ret);
2337 goto err_regmap;
2338 }
2339
2340 return ret;
2341
2342err_regmap:
2343 regmap_exit(wm8995->regmap);
2344err_alloc:
2345 kfree(wm8995);
2346 2324
2347 return ret; 2325 return ret;
2348} 2326}
2349 2327
2350static __devexit int wm8995_i2c_remove(struct i2c_client *client) 2328static __devexit int wm8995_i2c_remove(struct i2c_client *client)
2351{ 2329{
2352 struct wm8995_priv *wm8995 = i2c_get_clientdata(client);
2353
2354 snd_soc_unregister_codec(&client->dev); 2330 snd_soc_unregister_codec(&client->dev);
2355 regmap_exit(wm8995->regmap);
2356 kfree(wm8995);
2357 return 0; 2331 return 0;
2358} 2332}
2359 2333