diff options
Diffstat (limited to 'sound/soc/codecs/wm8995.c')
-rw-r--r-- | sound/soc/codecs/wm8995.c | 40 |
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 | |||
2285 | err_regmap: | ||
2286 | regmap_exit(wm8995->regmap); | ||
2287 | err_alloc: | ||
2288 | kfree(wm8995); | ||
2289 | |||
2290 | return ret; | 2280 | return ret; |
2291 | } | 2281 | } |
2292 | 2282 | ||
2293 | static int __devexit wm8995_spi_remove(struct spi_device *spi) | 2283 | static 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 | |||
2342 | err_regmap: | ||
2343 | regmap_exit(wm8995->regmap); | ||
2344 | err_alloc: | ||
2345 | kfree(wm8995); | ||
2346 | 2324 | ||
2347 | return ret; | 2325 | return ret; |
2348 | } | 2326 | } |
2349 | 2327 | ||
2350 | static __devexit int wm8995_i2c_remove(struct i2c_client *client) | 2328 | static __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 | ||