[alsa-devel] Notebook Toshiba satellite x200-21g with realtek snd-hda-intel audio device still not supported (codec ALC268)
Takashi Iwai
tiwai at suse.de
Mon Feb 11 17:09:14 CET 2008
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;
More information about the Alsa-devel
mailing list