diff options
Diffstat (limited to 'sound/soc/codecs/ad1836.c')
-rw-r--r-- | sound/soc/codecs/ad1836.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sound/soc/codecs/ad1836.c b/sound/soc/codecs/ad1836.c index 919322daf6dd..982d201c2e86 100644 --- a/sound/soc/codecs/ad1836.c +++ b/sound/soc/codecs/ad1836.c | |||
@@ -341,7 +341,8 @@ static int __devinit ad1836_spi_probe(struct spi_device *spi) | |||
341 | struct ad1836_priv *ad1836; | 341 | struct ad1836_priv *ad1836; |
342 | int ret; | 342 | int ret; |
343 | 343 | ||
344 | ad1836 = kzalloc(sizeof(struct ad1836_priv), GFP_KERNEL); | 344 | ad1836 = devm_kzalloc(&spi->dev, sizeof(struct ad1836_priv), |
345 | GFP_KERNEL); | ||
345 | if (ad1836 == NULL) | 346 | if (ad1836 == NULL) |
346 | return -ENOMEM; | 347 | return -ENOMEM; |
347 | 348 | ||
@@ -351,17 +352,15 @@ static int __devinit ad1836_spi_probe(struct spi_device *spi) | |||
351 | 352 | ||
352 | ret = snd_soc_register_codec(&spi->dev, | 353 | ret = snd_soc_register_codec(&spi->dev, |
353 | &soc_codec_dev_ad1836, &ad183x_dais[ad1836->type], 1); | 354 | &soc_codec_dev_ad1836, &ad183x_dais[ad1836->type], 1); |
354 | if (ret < 0) | ||
355 | kfree(ad1836); | ||
356 | return ret; | 355 | return ret; |
357 | } | 356 | } |
358 | 357 | ||
359 | static int __devexit ad1836_spi_remove(struct spi_device *spi) | 358 | static int __devexit ad1836_spi_remove(struct spi_device *spi) |
360 | { | 359 | { |
361 | snd_soc_unregister_codec(&spi->dev); | 360 | snd_soc_unregister_codec(&spi->dev); |
362 | kfree(spi_get_drvdata(spi)); | ||
363 | return 0; | 361 | return 0; |
364 | } | 362 | } |
363 | |||
365 | static const struct spi_device_id ad1836_ids[] = { | 364 | static const struct spi_device_id ad1836_ids[] = { |
366 | { "ad1835", AD1835 }, | 365 | { "ad1835", AD1835 }, |
367 | { "ad1836", AD1836 }, | 366 | { "ad1836", AD1836 }, |