aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2009-03-02 04:46:03 -0500
committerTakashi Iwai <tiwai@suse.de>2009-03-02 04:46:30 -0500
commit6e655bf21697d2594243098a14e0699e8d4a4059 (patch)
tree4cae7f4f569afd9e0305b9bc222fd6d519600d82 /sound/pci/hda
parentf93d461bcde6ac3db542361c00a7e4167f88176d (diff)
ALSA: hda - Don't return a fatal error at PCM-creation errors
Don't return a fatal error to the driver but continue to probe when any error occurs at creating PCM streams for each codec. It's often non-fatal and keeping it would help debugging. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda')
-rw-r--r--sound/pci/hda/hda_codec.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 1be34ed9c0eb..7c9ef5c18e77 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -2833,8 +2833,16 @@ int snd_hda_codec_build_pcms(struct hda_codec *codec)
2833 if (!codec->patch_ops.build_pcms) 2833 if (!codec->patch_ops.build_pcms)
2834 return 0; 2834 return 0;
2835 err = codec->patch_ops.build_pcms(codec); 2835 err = codec->patch_ops.build_pcms(codec);
2836 if (err < 0) 2836 if (err < 0) {
2837 return err; 2837 printk(KERN_ERR "hda_codec: cannot build PCMs"
2838 "for #%d (error %d)\n", codec->addr, err);
2839 err = snd_hda_codec_reset(codec);
2840 if (err < 0) {
2841 printk(KERN_ERR
2842 "hda_codec: cannot revert codec\n");
2843 return err;
2844 }
2845 }
2838 } 2846 }
2839 for (pcm = 0; pcm < codec->num_pcms; pcm++) { 2847 for (pcm = 0; pcm < codec->num_pcms; pcm++) {
2840 struct hda_pcm *cpcm = &codec->pcm_info[pcm]; 2848 struct hda_pcm *cpcm = &codec->pcm_info[pcm];
@@ -2846,11 +2854,15 @@ int snd_hda_codec_build_pcms(struct hda_codec *codec)
2846 if (!cpcm->pcm) { 2854 if (!cpcm->pcm) {
2847 dev = get_empty_pcm_device(codec->bus, cpcm->pcm_type); 2855 dev = get_empty_pcm_device(codec->bus, cpcm->pcm_type);
2848 if (dev < 0) 2856 if (dev < 0)
2849 return 0; 2857 continue; /* no fatal error */
2850 cpcm->device = dev; 2858 cpcm->device = dev;
2851 err = snd_hda_attach_pcm(codec, cpcm); 2859 err = snd_hda_attach_pcm(codec, cpcm);
2852 if (err < 0) 2860 if (err < 0) {
2853 return err; 2861 printk(KERN_ERR "hda_codec: cannot attach "
2862 "PCM stream %d for codec #%d\n",
2863 dev, codec->addr);
2864 continue; /* no fatal error */
2865 }
2854 } 2866 }
2855 } 2867 }
2856 return 0; 2868 return 0;