[PATCH] ASoC codec error reporting.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch improves the codec probe() error reporting by printing error
messages when the card or pcms fail to register.

Signed-off-by: Liam Girdwood <lg@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
 
diff -r 3be2f03501ef soc/codecs/wm8731.c
--- a/soc/codecs/wm8731.c	Tue Jan 30 17:30:55 2007 +0100
+++ b/soc/codecs/wm8731.c	Tue Jan 30 18:25:07 2007 +0000
@@ -696,8 +696,8 @@ static int wm8731_init(struct snd_soc_de
 	/* register pcms */
 	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
 	if (ret < 0) {
-		kfree(codec->reg_cache);
-		return ret;
+		printk(KERN_ERR "wm8731: failed to create pcms\n");
+		goto pcm_err;
 	}
 
 	/* power on device */
@@ -717,10 +717,17 @@ static int wm8731_init(struct snd_soc_de
 	wm8731_add_widgets(codec);
 	ret = snd_soc_register_card(socdev);
 	if (ret < 0) {
-		snd_soc_free_pcms(socdev);
-		snd_soc_dapm_free(socdev);
-	}
-
+		printk(KERN_ERR "wm8731: failed to register card\n");
+		goto card_err;
+	}
+
+	return ret;
+
+card_err:
+	snd_soc_free_pcms(socdev);
+	snd_soc_dapm_free(socdev);
+pcm_err:
+	kfree(codec->reg_cache);
 	return ret;
 }
 
diff -r 3be2f03501ef soc/codecs/wm8750.c
--- a/soc/codecs/wm8750.c	Tue Jan 30 17:30:55 2007 +0100
+++ b/soc/codecs/wm8750.c	Tue Jan 30 18:20:31 2007 +0000
@@ -1075,8 +1075,8 @@ static int wm8750_init(struct snd_soc_de
 	/* register pcms */
 	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
 	if (ret < 0) {
-		kfree(codec->reg_cache);
-		return ret;
+		printk(KERN_ERR "wm8750: failed to create pcms\n");
+		goto pcm_err;
 	}
 
 	/* charge output caps */
@@ -1106,10 +1106,16 @@ static int wm8750_init(struct snd_soc_de
 	wm8750_add_widgets(codec);
 	ret = snd_soc_register_card(socdev);
 	if (ret < 0) {
-		snd_soc_free_pcms(socdev);
-		snd_soc_dapm_free(socdev);
-	}
-
+		printk(KERN_ERR "wm8750: failed to register card\n");
+		goto card_err;
+	}
+	return ret;
+
+card_err:
+	snd_soc_free_pcms(socdev);
+	snd_soc_dapm_free(socdev);
+pcm_err:
+	kfree(codec->reg_cache);
 	return ret;
 }
 
diff -r 3be2f03501ef soc/codecs/wm9712.c
--- a/soc/codecs/wm9712.c	Tue Jan 30 17:30:55 2007 +0100
+++ b/soc/codecs/wm9712.c	Tue Jan 30 18:15:06 2007 +0000
@@ -692,10 +692,8 @@ static int wm9712_soc_probe(struct platf
 	codec->reg_cache =
 		kzalloc(sizeof(u16) * ARRAY_SIZE(wm9712_reg), GFP_KERNEL);
 	if (codec->reg_cache == NULL) {
-		kfree(codec->ac97);
-		kfree(socdev->codec);
-		socdev->codec = NULL;
-		return -ENOMEM;
+		ret = -ENOMEM;
+		goto cache_err;
 	}
 	memcpy(codec->reg_cache, wm9712_reg, sizeof(u16) * ARRAY_SIZE(wm9712_reg));
 	codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm9712_reg);
@@ -712,8 +710,10 @@ static int wm9712_soc_probe(struct platf
 	INIT_LIST_HEAD(&codec->dapm_paths);
 
 	ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
-	if (ret < 0)
-		goto err;
+	if (ret < 0) {
+		printk(KERN_ERR "wm9712: failed to register AC97 codec\n");
+		goto codec_err;
+	}
 
 	/* register pcms */
 	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
@@ -733,8 +733,10 @@ static int wm9712_soc_probe(struct platf
 	wm9712_add_controls(codec);
 	wm9712_add_widgets(codec);
 	ret = snd_soc_register_card(socdev);
-	if (ret < 0)
+	if (ret < 0) {
+		printk(KERN_ERR "wm9712: failed to register card\n");
 		goto reset_err;
+	}
 
 	return 0;
 
@@ -744,8 +746,10 @@ pcm_err:
 pcm_err:
 	snd_soc_free_ac97_codec(codec);
 
-err:
-	kfree(socdev->codec->reg_cache);
+codec_err:
+	kfree(codec->reg_cache);
+
+cache_err:
 	kfree(socdev->codec);
 	socdev->codec = NULL;
 	return ret;
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux