[alsa-devel] HD-audio regression after commit 34588709af61be1550b4e2bcee5c85d0ac4f34d4
Takashi Iwai
tiwai at suse.de
Mon Jan 14 13:48:46 CET 2013
At Mon, 14 Jan 2013 13:31:22 +0100,
Manolo Díaz wrote:
>
> El lun, 14 ene 2013 a las 11:42 horas
> Raymond Yau escribió:
>
> >>
> >> Commit identified in the subject (ALSA: HDA - Add Independent Headphone
> >for
> >> all models of ad1988/ad1989) causes problem with audio on at least two
> >Asus
> >> boards and is still present in current kernel. The boards on which this
> >> problem is seen are Asus M3A79-T DELUXE and Asus Rampage II Gene (actually
> >> a slightly modified version used in Asus CG5290 desktop).
> >>
> >> The symptoms:
> >> 1. XFCE and Gnome2 audio mixers crash whenever sound is started or
> >stopped.
> >> The error message is:
> >> simple_none.c:1350: get_enum_item_ops: Assertion `helem' failed.
> >
> >This is caused by the active access flag of independent headphone control
> >
> >static void activate_ctl(struct hda_codec *codec, const char *name, int
> >active)
> >{
> > struct snd_kcontrol *ctl = snd_hda_find_mixer_ctl(codec, name);
> > if (ctl) {
> >- ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
> >- ctl->vd[0].access |= active ? 0 :
> >- SNDRV_CTL_ELEM_ACCESS_INACTIVE;
> > ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_WRITE;
> > ctl->vd[0].access |= active ?
> > SNDRV_CTL_ELEM_ACCESS_WRITE : 0;
> > snd_ctl_notify(codec->bus->card,
> > SNDRV_CTL_EVENT_MASK_INFO, &ctl->id);
> > }
> >}
> >
> >>
> >> 2. On one of the boards (Asus M3A79-T DELUXE) the mixer control labels are
> >> misconfigured since muting the Master channel does not turn the sound off.
> >
> >For model=auto
> >
> >It is bug of hda parser which put node 0x1a in speaker out pin when the
> >pincap only support input
> >
> >Your need either
> >
> >ignore this node in hda parser or
> >
> >Ignore the node as speaker when pincap is INPUT in patch_analog.c
> >
> >/* add playback controls for speaker and HP outputs */
> >static int ad1988_auto_create_extra_out(struct hda_codec *codec, hda_nid_t
> >pin,
> > const char *pfx)
> >{
> > struct ad198x_spec *spec = codec->spec;
> > hda_nid_t nid;
> > int i, idx, err;
> > char name[32];
> >
> > if (! pin)
> > return 0;
> >
> >+
> >+ if ((snd_hda_query_pin_caps(codec, pin) & AC_PINCTL_OUT_EN) == 0)
> >+ return 0;
> >+
> > idx = ad1988_pin_idx(pin);
> > nid = ad1988_idx_to_dac(codec, idx);
> >
> >
>
> No. Doing those insertions and deletions mixer crashes are still here but
> I have no headphone control and headphone doesn't sound in auto model.
>
> >Node 0x1a [Pin Complex] wcaps 0x400000: Mono
> > Pincap 0x00000020: IN
> > Pin Default 0x911711f0: [Fixed] Speaker at Int Rear
> > Conn = Analog, Color = Black
> > DefAssociation = 0xf, Sequence = 0x0
> > Misc = NO_PRESENCE
> > Pin-ctls: 0x20: IN
> >
> >Node 0x03 [Audio Output] wcaps 0x405: Stereo Amp-Out
> > Control: name="Speaker Playback Volume", index=0, device=0
> > ControlAmp: chs=3, dir=Out, idx=0, ofs=0
> > Control: name="Headphone Playback Volume", index=0, device=0
> > ControlAmp: chs=3, dir=Out, idx=0, ofs=0
> > Amp-Out caps: ofs=0x27, nsteps=0x27, stepsize=0x05, mute=0
> > Amp-Out vals: [0x1e 0x1e]
> > Converter: stream=0, channel=0
> > Power states: D0 D3
> > Power: setting=D0, actual=D0
> >
> >Node 0x22 [Audio Mixer] wcaps 0x200103: Stereo Amp-In
> > Control: name="Speaker Playback Switch", index=0, device=0
> > ControlAmp: chs=3, dir=In, idx=2, ofs=0
> > Control: name="Headphone Playback Switch", index=0, device=0
> > ControlAmp: chs=3, dir=In, idx=2, ofs=0
> > Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> > Amp-In vals: [0x00 0x00] [0x00 0x00]
> > Connection: 2
> > 0x37 0x21
> >
> >> Either Master is mislabeled or it does not work correctly.
> >>
> >> Other than that, the sound actually works fine, but it is very annoying
> >> when mixer keeps crashing. Reverting to kernel just before the commit
> >fixes
> >> these issues. Thus it appears that the commit
> >> 34588709af61be1550b4e2bcee5c85d0ac4f34d4 breaks autodetect for these
> >> boards. A workaround is to force the 6stack-dig model and this fixes
> >> problems on both boards, but, of course, it would be preferred if things
> >> work out of the box.
> >>
> >
> >If possible try the proposed generic hda parser from sound-unstable.git
> >
> >http://mailman.alsa-project.org/pipermail/alsa-devel/2013-January/058330.html
>
> I've tried to patch it, but this is what's happened (linux stable 3.7.2):
>
> patching file sound/pci/hda/hda_generic.c
> Hunk #1 FAILED at 41.
> Hunk #2 FAILED at 1485.
> Hunk #3 FAILED at 2905.
> Hunk #4 FAILED at 3057.
> Hunk #5 succeeded at 1086 with fuzz 2 (offset -1994 lines).
> Hunk #6 FAILED at 3192.
> Hunk #7 FAILED at 3209.
> 6 out of 7 hunks FAILED -- saving rejects to file sound/pci/hda/hda_generic.c.rej
> can't find file to patch at input line 187
> Perhaps you used the wrong -p or --strip option?
> The text leading up to this was:
> --------------------------
> |diff --git a/sound/pci/hda/hda_generic.h b/sound/pci/hda/hda_generic.h
> |index 85d138f..5c1569c 100644
> |--- a/sound/pci/hda/hda_generic.h
> |+++ b/sound/pci/hda/hda_generic.h
>
>
> What sources is supposed should we patch?
You need to apply over 100 patches :)
Takashi
More information about the Alsa-devel
mailing list