diff options
Diffstat (limited to 'sound/soc/codecs/jz4740.c')
-rw-r--r-- | sound/soc/codecs/jz4740.c | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/sound/soc/codecs/jz4740.c b/sound/soc/codecs/jz4740.c index e373f8f0690..4624e752a18 100644 --- a/sound/soc/codecs/jz4740.c +++ b/sound/soc/codecs/jz4740.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
18 | #include <linux/io.h> | ||
18 | 19 | ||
19 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
20 | 21 | ||
@@ -206,7 +207,7 @@ static int jz4740_codec_hw_params(struct snd_pcm_substream *substream, | |||
206 | return 0; | 207 | return 0; |
207 | } | 208 | } |
208 | 209 | ||
209 | static struct snd_soc_dai_ops jz4740_codec_dai_ops = { | 210 | static const struct snd_soc_dai_ops jz4740_codec_dai_ops = { |
210 | .hw_params = jz4740_codec_hw_params, | 211 | .hw_params = jz4740_codec_hw_params, |
211 | }; | 212 | }; |
212 | 213 | ||
@@ -311,7 +312,7 @@ static int jz4740_codec_dev_remove(struct snd_soc_codec *codec) | |||
311 | 312 | ||
312 | #ifdef CONFIG_PM_SLEEP | 313 | #ifdef CONFIG_PM_SLEEP |
313 | 314 | ||
314 | static int jz4740_codec_suspend(struct snd_soc_codec *codec, pm_message_t state) | 315 | static int jz4740_codec_suspend(struct snd_soc_codec *codec) |
315 | { | 316 | { |
316 | return jz4740_codec_set_bias_level(codec, SND_SOC_BIAS_OFF); | 317 | return jz4740_codec_set_bias_level(codec, SND_SOC_BIAS_OFF); |
317 | } | 318 | } |
@@ -352,7 +353,8 @@ static int __devinit jz4740_codec_probe(struct platform_device *pdev) | |||
352 | struct jz4740_codec *jz4740_codec; | 353 | struct jz4740_codec *jz4740_codec; |
353 | struct resource *mem; | 354 | struct resource *mem; |
354 | 355 | ||
355 | jz4740_codec = kzalloc(sizeof(*jz4740_codec), GFP_KERNEL); | 356 | jz4740_codec = devm_kzalloc(&pdev->dev, sizeof(*jz4740_codec), |
357 | GFP_KERNEL); | ||
356 | if (!jz4740_codec) | 358 | if (!jz4740_codec) |
357 | return -ENOMEM; | 359 | return -ENOMEM; |
358 | 360 | ||
@@ -360,14 +362,14 @@ static int __devinit jz4740_codec_probe(struct platform_device *pdev) | |||
360 | if (!mem) { | 362 | if (!mem) { |
361 | dev_err(&pdev->dev, "Failed to get mmio memory resource\n"); | 363 | dev_err(&pdev->dev, "Failed to get mmio memory resource\n"); |
362 | ret = -ENOENT; | 364 | ret = -ENOENT; |
363 | goto err_free_codec; | 365 | goto err_out; |
364 | } | 366 | } |
365 | 367 | ||
366 | mem = request_mem_region(mem->start, resource_size(mem), pdev->name); | 368 | mem = request_mem_region(mem->start, resource_size(mem), pdev->name); |
367 | if (!mem) { | 369 | if (!mem) { |
368 | dev_err(&pdev->dev, "Failed to request mmio memory region\n"); | 370 | dev_err(&pdev->dev, "Failed to request mmio memory region\n"); |
369 | ret = -EBUSY; | 371 | ret = -EBUSY; |
370 | goto err_free_codec; | 372 | goto err_out; |
371 | } | 373 | } |
372 | 374 | ||
373 | jz4740_codec->base = ioremap(mem->start, resource_size(mem)); | 375 | jz4740_codec->base = ioremap(mem->start, resource_size(mem)); |
@@ -393,9 +395,7 @@ err_iounmap: | |||
393 | iounmap(jz4740_codec->base); | 395 | iounmap(jz4740_codec->base); |
394 | err_release_mem_region: | 396 | err_release_mem_region: |
395 | release_mem_region(mem->start, resource_size(mem)); | 397 | release_mem_region(mem->start, resource_size(mem)); |
396 | err_free_codec: | 398 | err_out: |
397 | kfree(jz4740_codec); | ||
398 | |||
399 | return ret; | 399 | return ret; |
400 | } | 400 | } |
401 | 401 | ||
@@ -410,7 +410,6 @@ static int __devexit jz4740_codec_remove(struct platform_device *pdev) | |||
410 | release_mem_region(mem->start, resource_size(mem)); | 410 | release_mem_region(mem->start, resource_size(mem)); |
411 | 411 | ||
412 | platform_set_drvdata(pdev, NULL); | 412 | platform_set_drvdata(pdev, NULL); |
413 | kfree(jz4740_codec); | ||
414 | 413 | ||
415 | return 0; | 414 | return 0; |
416 | } | 415 | } |
@@ -424,17 +423,7 @@ static struct platform_driver jz4740_codec_driver = { | |||
424 | }, | 423 | }, |
425 | }; | 424 | }; |
426 | 425 | ||
427 | static int __init jz4740_codec_init(void) | 426 | module_platform_driver(jz4740_codec_driver); |
428 | { | ||
429 | return platform_driver_register(&jz4740_codec_driver); | ||
430 | } | ||
431 | module_init(jz4740_codec_init); | ||
432 | |||
433 | static void __exit jz4740_codec_exit(void) | ||
434 | { | ||
435 | platform_driver_unregister(&jz4740_codec_driver); | ||
436 | } | ||
437 | module_exit(jz4740_codec_exit); | ||
438 | 427 | ||
439 | MODULE_DESCRIPTION("JZ4740 SoC internal codec driver"); | 428 | MODULE_DESCRIPTION("JZ4740 SoC internal codec driver"); |
440 | MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>"); | 429 | MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>"); |