Thank-you Takashi, I applied the patch (to the in-kernel version from 2.6.22.1) but sadly it did not fix the problem. I noticed that my XFCE mixer wasn't broken before I plugged the 'phones in this time, not sure if the patch fixed that, but it seems like a step in the right direction! Regards, Andy. --- Takashi Iwai <tiwai@xxxxxxx> wrote: > At Tue, 24 Jul 2007 11:08:29 +0100 (BST), > Andy wrote: > > > > I have a ALC262 hda-intel card which doesn't > function > > quite correctly. Details can be found at > > > https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/110145 > > > > I got bored of waiting for it to be fixed, and had > a > > go myself. My knowledge of ALSA is very limited, > but > > nevertheless it was really simple to add my device > ids > > to the quirks list in the patch_realtek.c file - > eg: > > > > ... > > SND_PCI_QUIRK(0x104d, 0x900e, "Sony ASSAMD", > > ALC262_SONY_ASSAMD), > > SND_PCI_QUIRK(0x104d, 0x1f00, "Sony ASSAMD", > > ALC262_SONY_ASSAMD), > > /* My card... */ > > SND_PCI_QUIRK(0x104d, 0x820f, "Sony ASSAMD", > > ALC262_SONY_ASSAMD), > > ... > > > > I found by trial and error that ALC262_SONY_ASSAMD > > almost works. Connecting headphones disables > built-in > > speakers and unplugging them re-enables them. > > > > However, something does not get initialised until > this > > is done. That is, every bootup using > > ALC262_SONY_ASSAMD, I must plug in and remove my > > headphones before the device is initialised > properly. > > > > Until this is done, I get no sound and the little > GUI > > mixer in XFCE doesn't show the list of supported > > outputs on the device. > > > > I'm posting this to the devel list as I'm more > > interested the code side of things rather than > > actually having working sound :) > > Could you try the patch below? > > > thanks, > > Takashi > > diff -r 2250b8a4b66a pci/hda/patch_realtek.c > --- a/pci/hda/patch_realtek.c Tue Jul 24 12:49:39 > 2007 +0200 > +++ b/pci/hda/patch_realtek.c Tue Jul 24 15:00:15 > 2007 +0200 > @@ -7269,21 +7269,17 @@ static struct hda_verb > alc262_sony_unsol > }; > > /* mute/unmute internal speaker according to the hp > jack and mute state */ > -static void alc262_hippo_automute(struct hda_codec > *codec, int force) > -{ > - struct alc_spec *spec = codec->spec; > +static void alc262_hippo_automute(struct hda_codec > *codec) > +{ > unsigned int mute; > - > - if (force || !spec->sense_updated) { > - unsigned int present; > - /* need to execute and sync at first */ > - snd_hda_codec_read(codec, 0x15, 0, > AC_VERB_SET_PIN_SENSE, 0); > - present = snd_hda_codec_read(codec, 0x15, 0, > - AC_VERB_GET_PIN_SENSE, 0); > - spec->jack_present = (present & 0x80000000) != 0; > - spec->sense_updated = 1; > - } > - if (spec->jack_present) { > + unsigned int present; > + > + /* need to execute and sync at first */ > + snd_hda_codec_read(codec, 0x15, 0, > AC_VERB_SET_PIN_SENSE, 0); > + present = snd_hda_codec_read(codec, 0x15, 0, > + AC_VERB_GET_PIN_SENSE, 0); > + present = (present & 0x80000000) != 0; > + if (present) { > /* mute internal speaker */ > snd_hda_codec_amp_update(codec, 0x14, 0, > HDA_OUTPUT, 0, > 0x80, 0x80); > @@ -7306,24 +7302,19 @@ static void > alc262_hippo_unsol_event(str > { > if ((res >> 26) != ALC880_HP_EVENT) > return; > - alc262_hippo_automute(codec, 1); > -} > - > -static void alc262_hippo1_automute(struct hda_codec > *codec, int force) > -{ > - struct alc_spec *spec = codec->spec; > + alc262_hippo_automute(codec); > +} > + > +static void alc262_hippo1_automute(struct hda_codec > *codec) > +{ > unsigned int mute; > - > - if (force || !spec->sense_updated) { > - unsigned int present; > - /* need to execute and sync at first */ > - snd_hda_codec_read(codec, 0x1b, 0, > AC_VERB_SET_PIN_SENSE, 0); > - present = snd_hda_codec_read(codec, 0x1b, 0, > - AC_VERB_GET_PIN_SENSE, 0); > - spec->jack_present = (present & 0x80000000) != 0; > - spec->sense_updated = 1; > - } > - if (spec->jack_present) { > + unsigned int present; > + > + snd_hda_codec_read(codec, 0x1b, 0, > AC_VERB_SET_PIN_SENSE, 0); > + present = snd_hda_codec_read(codec, 0x1b, 0, > + AC_VERB_GET_PIN_SENSE, 0); > + present = (present & 0x80000000) != 0; > + if (present) { > /* mute internal speaker */ > snd_hda_codec_amp_update(codec, 0x14, 0, > HDA_OUTPUT, 0, > 0x80, 0x80); > @@ -7346,7 +7337,7 @@ static void > alc262_hippo1_unsol_event(st > { > if ((res >> 26) != ALC880_HP_EVENT) > return; > - alc262_hippo1_automute(codec, 1); > + alc262_hippo1_automute(codec); > } > > /* > @@ -7923,6 +7914,7 @@ static struct snd_pci_quirk > alc262_cfg_t > SND_PCI_QUIRK(0x17ff, 0x058f, "Benq Hippo", > ALC262_HIPPO_1), > SND_PCI_QUIRK(0x17ff, 0x0560, "Benq ED8", > ALC262_BENQ_ED8), > SND_PCI_QUIRK(0x17ff, 0x058d, "Benq T31-16", > ALC262_BENQ_T31), > + SND_PCI_QUIRK(0x104d, 0x820f, "Sony ASSAMD", > ALC262_SONY_ASSAMD), > SND_PCI_QUIRK(0x104d, 0x9015, "Sony 0x9015", > ALC262_SONY_ASSAMD), > SND_PCI_QUIRK(0x104d, 0x900e, "Sony ASSAMD", > ALC262_SONY_ASSAMD), > SND_PCI_QUIRK(0x104d, 0x1f00, "Sony ASSAMD", > ALC262_SONY_ASSAMD), > @@ -7951,6 +7943,7 @@ static struct > alc_config_preset alc262_p > .channel_mode = alc262_modes, > .input_mux = &alc262_capture_source, > .unsol_event = alc262_hippo_unsol_event, > + .init_hook = alc262_hippo_automute, > }, > [ALC262_HIPPO_1] = { > .mixers = { alc262_hippo1_mixer }, > @@ -7963,6 +7956,7 @@ static struct > alc_config_preset alc262_p > .channel_mode = alc262_modes, > .input_mux = &alc262_capture_source, > .unsol_event = alc262_hippo1_unsol_event, > + .init_hook = alc262_hippo1_automute, > }, > [ALC262_FUJITSU] = { > .mixers = { alc262_fujitsu_mixer }, > @@ -8027,6 +8021,7 @@ static struct > alc_config_preset alc262_p > .channel_mode = alc262_modes, > .input_mux = &alc262_capture_source, > .unsol_event = alc262_hippo_unsol_event, > + .init_hook = alc262_hippo_automute, > }, > [ALC262_BENQ_T31] = { > .mixers = { alc262_benq_t31_mixer }, > @@ -8038,6 +8033,7 @@ static struct > alc_config_preset alc262_p > .channel_mode = alc262_modes, > .input_mux = &alc262_capture_source, > .unsol_event = alc262_hippo_unsol_event, > === message truncated === ___________________________________________________________ Yahoo! Answers - Got a question? Someone out there knows the answer. Try it now. http://uk.answers.yahoo.com/ _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel