All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Improve error reporting for Audigy2 cards.
@ 2005-02-27 18:14 James Courtier-Dutton
  0 siblings, 0 replies; only message in thread
From: James Courtier-Dutton @ 2005-02-27 18:14 UTC (permalink / raw)
  To: alsa development

[-- Attachment #1: Type: text/plain, Size: 334 bytes --]

Hi,

This is a small patch to help with error reporting when the probe of the 
sound card fails. It just tells us in dmesg why it failed, instead of 
failing quietly. This is particularly helpful for diagnosing problems 
with new sound cards. e.g. the as yet unsupported Audigy 2 PCMCIA card.

Signed off: James@superbug.demon.co.uk


[-- Attachment #2: audigy2-error-reporting.diff.txt --]
[-- Type: text/plain, Size: 2937 bytes --]

Index: alsa-driver/alsa-kernel/pci/emu10k1/emu10k1.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/emu10k1/emu10k1.c,v
retrieving revision 1.31
diff -u -r1.31 emu10k1.c
--- alsa-driver/alsa-kernel/pci/emu10k1/emu10k1.c	16 Feb 2005 10:25:36 -0000	1.31
+++ alsa-driver/alsa-kernel/pci/emu10k1/emu10k1.c	27 Feb 2005 18:10:15 -0000
@@ -106,16 +106,21 @@
 #endif
 	int err;
 
-	if (dev >= SNDRV_CARDS)
+	if (dev >= SNDRV_CARDS) {
+		snd_printk("Probe failed. Too many cards.\n");
         	return -ENODEV;
+	}
 	if (!enable[dev]) {
 		dev++;
+		snd_printk("Probe failed. Administatively disabled.\n");
 		return -ENOENT;
 	}
 
 	card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);
-	if (card == NULL)
+	if (card == NULL) {
+		snd_printk("Probe failed. Not enough memory for snd_card_new().\n");
 		return -ENOMEM;
+	}
 	if (max_buffer_size[dev] < 32)
 		max_buffer_size[dev] = 32;
 	else if (max_buffer_size[dev] > 1024)
@@ -125,48 +130,58 @@
 				      enable_ir[dev],
 				      &emu)) < 0) {
 		snd_card_free(card);
+		snd_printk("Probe failed. Error during snd_emu10k1_create().\n");
 		return err;
 	}		
 	if ((err = snd_emu10k1_pcm(emu, 0, NULL)) < 0) {
 		snd_card_free(card);
+		snd_printk("Probe failed. Error during snd_emu10k1_pcm().\n");
 		return err;
 	}		
 	if ((err = snd_emu10k1_pcm_mic(emu, 1, NULL)) < 0) {
 		snd_card_free(card);
+		snd_printk("Probe failed. Error during snd_emu10k1_pcm_mic().\n");
 		return err;
 	}		
 	if ((err = snd_emu10k1_pcm_efx(emu, 2, NULL)) < 0) {
 		snd_card_free(card);
+		snd_printk("Probe failed. Error during snd_emu10k1_pcm_efx().\n");
 		return err;
 	}		
 	if ((err = snd_emu10k1_mixer(emu)) < 0) {
 		snd_card_free(card);
+		snd_printk("Probe failed. Error during snd_emu10k1_mixer().\n");
 		return err;
 	}
 	
 	if ((err = snd_emu10k1_timer(emu, 0)) < 0) {
 		snd_card_free(card);
+		snd_printk("Probe failed. Error during snd_emu10k1_timer().\n");
 		return err;
 	}
 
 	if ((err = snd_emu10k1_pcm_multi(emu, 3, NULL)) < 0) {
 		snd_card_free(card);
+		snd_printk("Probe failed. Error during snd_emu10k1_pcm_multi().\n");
 		return err;
 	}		
 
 	if (emu->audigy) {
 		if ((err = snd_emu10k1_audigy_midi(emu)) < 0) {
 			snd_card_free(card);
+			snd_printk("Probe failed. Error during snd_emu10k1_audigy_midi().\n");
 			return err;
 		}
 	} else {
 		if ((err = snd_emu10k1_midi(emu)) < 0) {
 			snd_card_free(card);
+			snd_printk("Probe failed. Error during snd_emu10k1_midi().\n");
 			return err;
 		}
 	}
 	if ((err = snd_emu10k1_fx8010_new(emu, 0, NULL)) < 0) {
 		snd_card_free(card);
+		snd_printk("Probe failed. Error during snd_emu10k1_fx8010_new().\n");
 		return err;
 	}
 #ifdef ENABLE_SYNTH
@@ -205,6 +220,7 @@
 
 	if ((err = snd_card_register(card)) < 0) {
 		snd_card_free(card);
+		snd_printk("Probe failed. Error during snd_card_register().\n");
 		return err;
 	}
 	pci_set_drvdata(pci, card);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-02-27 18:14 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-27 18:14 [PATCH] Improve error reporting for Audigy2 cards James Courtier-Dutton

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.