diff options
author | Takashi Iwai <tiwai@suse.de> | 2005-12-06 18:54:31 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-01-03 12:30:32 +0100 |
commit | c5f2ea08fbd8911e2c975094780d2b16e65f27e0 (patch) | |
tree | c26a747e7148487a1faac565c2c49bd7bf801618 | |
parent | a8ee72952bd7bd21df944ef1512a1e582abe0528 (diff) | |
download | blackbird-op-linux-c5f2ea08fbd8911e2c975094780d2b16e65f27e0.tar.gz blackbird-op-linux-c5f2ea08fbd8911e2c975094780d2b16e65f27e0.zip |
[ALSA] hda-codec - Fix ALC codec probing
Modules: HDA Codec driver
- Fix ALC882 BIOS auto-probe
- Fix ALC262 basic model
- Add assert for debugging Oops
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index a98c0e4da0ac..63aeddb731d9 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -1259,6 +1259,8 @@ static int alc_build_pcms(struct hda_codec *codec) codec->num_pcms = 1; codec->pcm_info = info; + snd_assert(spec->stream_analog_playback, return -EINVAL); + snd_assert(spec->stream_analog_capture, return -EINVAL); info->name = spec->stream_name_analog; info->stream[SNDRV_PCM_STREAM_PLAYBACK] = *(spec->stream_analog_playback); info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->multiout.dac_nids[0]; @@ -1277,10 +1279,12 @@ static int alc_build_pcms(struct hda_codec *codec) info++; info->name = spec->stream_name_digital; if (spec->multiout.dig_out_nid) { + snd_assert(spec->stream_digital_playback, return -EINVAL); info->stream[SNDRV_PCM_STREAM_PLAYBACK] = *(spec->stream_digital_playback); info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->multiout.dig_out_nid; } if (spec->dig_in_nid) { + snd_assert(spec->stream_digital_capture, return -EINVAL); info->stream[SNDRV_PCM_STREAM_CAPTURE] = *(spec->stream_digital_capture); info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->dig_in_nid; } @@ -3508,9 +3512,10 @@ static int alc882_parse_auto_config(struct hda_codec *codec) if (err < 0) return err; - /* hack - override the init verbs */ - spec->init_verbs[0] = alc882_auto_init_verbs; - return 0; + else if (err > 0) + /* hack - override the init verbs */ + spec->init_verbs[0] = alc882_auto_init_verbs; + return err; } /* init callback for auto-configuration model -- overriding the default init */ @@ -3605,6 +3610,7 @@ static int patch_alc882(struct hda_codec *codec) #define alc262_adc_nids_alt alc882_adc_nids_alt #define alc262_modes alc260_modes +#define alc262_capture_source alc882_capture_source static struct snd_kcontrol_new alc262_base_mixer[] = { HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), @@ -3921,6 +3927,7 @@ static struct alc_config_preset alc262_presets[] = { .hp_nid = 0x03, .num_channel_mode = ARRAY_SIZE(alc262_modes), .channel_mode = alc262_modes, + .input_mux = alc262_capture_source, }, }; |