At Mon, 11 Feb 2008 16:46:55 +0100, Daniele (Mastro) wrote:
Tobin Davis ha scritto:
Ok, I'm going to dive into this one this weekend. I have a test board ready to run.
Daniele, please email me off list to keep the noise level down. I'm also tracking this in bugzilla.
since 16/01 i haven't any news from Tobin Davis in private email..
i sent him 3 mails in 3 weeks waiting for a reply without gettin any one
you can find all the news at the bug report:
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3659
the last time i sent him an email with some remind on what's are, still, my problems..
can someone else take care of this problem? i'll try to help as best as i can... you can find on the bug report the debug ( detect ) info with "test" module parameter
note: things still missing.. microphone don't work in recording, the 56k modem isn't recognized and i've some error in dmesg:
Note that these are no errors but just debug information.
Try the patch below. This should fix the capture source problem on ALC268.
The modem is a different problem. There are only certain model chips that can work with slmodemd. Non si3054-compatible (typically conexant ones) don't work.
Takashi
---
diff -r 29ae582df0ee pci/hda/patch_realtek.c --- a/pci/hda/patch_realtek.c Mon Feb 11 16:35:02 2008 +0100 +++ b/pci/hda/patch_realtek.c Mon Feb 11 17:06:19 2008 +0100 @@ -238,6 +238,7 @@ struct alc_spec { /* capture */ unsigned int num_adc_nids; hda_nid_t *adc_nids; + hda_nid_t *capsrc_nids; hda_nid_t dig_in_nid; /* digital-in NID; optional */
/* capture source */ @@ -291,6 +292,7 @@ struct alc_config_preset { hda_nid_t hp_nid; /* optional */ unsigned int num_adc_nids; hda_nid_t *adc_nids; + hda_nid_t *capsrc_nids; hda_nid_t dig_in_nid; unsigned int num_channel_mode; const struct hda_channel_mode *channel_mode; @@ -337,9 +339,10 @@ static int alc_mux_enum_put(struct snd_k struct alc_spec *spec = codec->spec; unsigned int adc_idx = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id); unsigned int mux_idx = adc_idx >= spec->num_mux_defs ? 0 : adc_idx; + hda_nid_t capsrc = spec->capsrc_nids ? + spec->capsrc_nids[adc_idx] : spec->adc_nids[adc_idx]; return snd_hda_input_mux_put(codec, &spec->input_mux[mux_idx], ucontrol, - spec->adc_nids[adc_idx], - &spec->cur_mux[adc_idx]); + capsrc, &spec->cur_mux[adc_idx]); }
@@ -708,6 +711,7 @@ static void setup_preset(struct alc_spec
spec->num_adc_nids = preset->num_adc_nids; spec->adc_nids = preset->adc_nids; + spec->capsrc_nids = preset->capsrc_nids; spec->dig_in_nid = preset->dig_in_nid;
spec->unsol_event = preset->unsol_event; @@ -9527,6 +9531,10 @@ static hda_nid_t alc268_adc_nids_alt[1] 0x08 };
+static hda_nid_t alc268_capsrc_nids[2] = { + 0x23, 0x24 +}; + static struct snd_kcontrol_new alc268_base_mixer[] = { /* output mixer control */ HDA_CODEC_VOLUME("Front Playback Volume", 0x2, 0x0, HDA_OUTPUT), @@ -10140,6 +10148,7 @@ static struct alc_config_preset alc268_p .dac_nids = alc268_dac_nids, .num_adc_nids = ARRAY_SIZE(alc268_adc_nids_alt), .adc_nids = alc268_adc_nids_alt, + .capsrc_nids = alc268_capsrc_nids, .hp_nid = 0x03, .dig_out_nid = ALC268_DIGOUT_NID, .num_channel_mode = ARRAY_SIZE(alc268_modes), @@ -10154,6 +10163,7 @@ static struct alc_config_preset alc268_p .dac_nids = alc268_dac_nids, .num_adc_nids = ARRAY_SIZE(alc268_adc_nids_alt), .adc_nids = alc268_adc_nids_alt, + .capsrc_nids = alc268_capsrc_nids, .hp_nid = 0x03, .num_channel_mode = ARRAY_SIZE(alc268_modes), .channel_mode = alc268_modes, @@ -10169,6 +10179,7 @@ static struct alc_config_preset alc268_p .dac_nids = alc268_dac_nids, .num_adc_nids = ARRAY_SIZE(alc268_adc_nids_alt), .adc_nids = alc268_adc_nids_alt, + .capsrc_nids = alc268_capsrc_nids, .hp_nid = 0x02, .num_channel_mode = ARRAY_SIZE(alc268_modes), .channel_mode = alc268_modes, @@ -10197,6 +10208,7 @@ static struct alc_config_preset alc268_p .dac_nids = alc268_dac_nids, .num_adc_nids = ARRAY_SIZE(alc268_adc_nids_alt), .adc_nids = alc268_adc_nids_alt, + .capsrc_nids = alc268_capsrc_nids, .hp_nid = 0x03, .dig_out_nid = ALC268_DIGOUT_NID, .num_channel_mode = ARRAY_SIZE(alc268_modes), @@ -10214,6 +10226,7 @@ static struct alc_config_preset alc268_p .dac_nids = alc268_dac_nids, .num_adc_nids = ARRAY_SIZE(alc268_adc_nids_alt), .adc_nids = alc268_adc_nids_alt, + .capsrc_nids = alc268_capsrc_nids, .hp_nid = 0x03, .dig_out_nid = ALC268_DIGOUT_NID, .num_channel_mode = ARRAY_SIZE(alc268_modes), @@ -10289,6 +10302,7 @@ static int patch_alc268(struct hda_codec alc268_capture_mixer; spec->num_mixers++; } + spec->capsrc_nids = alc268_capsrc_nids; }
spec->vmaster_nid = 0x02;