aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/wm9712.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/codecs/wm9712.c')
-rw-r--r--sound/soc/codecs/wm9712.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/sound/soc/codecs/wm9712.c b/sound/soc/codecs/wm9712.c
index 36c6a38a0f9..b2d2d03b954 100644
--- a/sound/soc/codecs/wm9712.c
+++ b/sound/soc/codecs/wm9712.c
@@ -692,10 +692,8 @@ static int wm9712_soc_probe(struct platform_device *pdev)
692 codec->reg_cache = 692 codec->reg_cache =
693 kzalloc(sizeof(u16) * ARRAY_SIZE(wm9712_reg), GFP_KERNEL); 693 kzalloc(sizeof(u16) * ARRAY_SIZE(wm9712_reg), GFP_KERNEL);
694 if (codec->reg_cache == NULL) { 694 if (codec->reg_cache == NULL) {
695 kfree(codec->ac97); 695 ret = -ENOMEM;
696 kfree(socdev->codec); 696 goto cache_err;
697 socdev->codec = NULL;
698 return -ENOMEM;
699 } 697 }
700 memcpy(codec->reg_cache, wm9712_reg, sizeof(u16) * ARRAY_SIZE(wm9712_reg)); 698 memcpy(codec->reg_cache, wm9712_reg, sizeof(u16) * ARRAY_SIZE(wm9712_reg));
701 codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm9712_reg); 699 codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm9712_reg);
@@ -712,8 +710,10 @@ static int wm9712_soc_probe(struct platform_device *pdev)
712 INIT_LIST_HEAD(&codec->dapm_paths); 710 INIT_LIST_HEAD(&codec->dapm_paths);
713 711
714 ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0); 712 ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
715 if (ret < 0) 713 if (ret < 0) {
716 goto err; 714 printk(KERN_ERR "wm9712: failed to register AC97 codec\n");
715 goto codec_err;
716 }
717 717
718 /* register pcms */ 718 /* register pcms */
719 ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1); 719 ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
@@ -733,8 +733,10 @@ static int wm9712_soc_probe(struct platform_device *pdev)
733 wm9712_add_controls(codec); 733 wm9712_add_controls(codec);
734 wm9712_add_widgets(codec); 734 wm9712_add_widgets(codec);
735 ret = snd_soc_register_card(socdev); 735 ret = snd_soc_register_card(socdev);
736 if (ret < 0) 736 if (ret < 0) {
737 printk(KERN_ERR "wm9712: failed to register card\n");
737 goto reset_err; 738 goto reset_err;
739 }
738 740
739 return 0; 741 return 0;
740 742
@@ -744,8 +746,10 @@ reset_err:
744pcm_err: 746pcm_err:
745 snd_soc_free_ac97_codec(codec); 747 snd_soc_free_ac97_codec(codec);
746 748
747err: 749codec_err:
748 kfree(socdev->codec->reg_cache); 750 kfree(codec->reg_cache);
751
752cache_err:
749 kfree(socdev->codec); 753 kfree(socdev->codec);
750 socdev->codec = NULL; 754 socdev->codec = NULL;
751 return ret; 755 return ret;