[alsa-devel] [PATCH] ALSA: hda - Fix error accessing non-existent node for Realtek codecs

Takashi Iwai tiwai at suse.de
Mon Jul 15 11:26:59 CEST 2013


At Mon, 15 Jul 2013 10:58:16 +0200,
David Henningsson wrote:
> 
> On 07/15/2013 10:55 AM, Takashi Iwai wrote:
> > At Mon, 15 Jul 2013 10:20:52 +0200,
> > David Henningsson wrote:
> >>
> >> A recent commit caused my hda-emu based test tool to complain about
> >> accessing nodes that don't exist. This simple test works around this.
> >>
> >> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> >> ---
> >>   sound/pci/hda/patch_realtek.c |    3 ++-
> >>   1 file changed, 2 insertions(+), 1 deletion(-)
> >>
> >> I don't have ALC5505 hardware here, no alsa-info to look at, and I don't know
> >> what it is. Therefore it would be good with some confirmation that this patch
> >> does not break such hardware, which could be the case if the Realtek codec
> >> breaks the HDA spec by having "hidden" nodes.
> >
> > It seems that ALC5505 itself doesn't appear in the codec information
> > but it appears transparent to the real codec behind it.  So the node
> > 0x51 doesn't exist in the widget list of the codec, and your  patch
> > will break.
> 
> I suspected that, but without alsa-info there was no way to tell if this 
> was the case or not.
> 
> > we may need to patch hda-emu instead...
> 
> Okay. Also, is there a way to limit the effect here, like, what codec 
> (or codec variants) have this secret 0x51 node? Right now it's being 
> tested for most of ALC2xx codecs.

I guess this won't be limited to any codec type.  The DSP itself seems
transparent, so it could be connected to any codec.

Right now, we patched alc269 variants because they are only real
cases, so far.


Takashi


> 
> >
> >
> > Takashi
> >
> >>
> >> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> >> index 8bd2261..ca73f10 100644
> >> --- a/sound/pci/hda/patch_realtek.c
> >> +++ b/sound/pci/hda/patch_realtek.c
> >> @@ -3844,7 +3844,8 @@ static int patch_alc269(struct hda_codec *codec)
> >>   		break;
> >>   	}
> >>
> >> -	if (snd_hda_codec_read(codec, 0x51, 0, AC_VERB_PARAMETERS, 0) == 0x10ec5505) {
> >> +	if (codec->num_nodes > 0x51 &&
> >> +	    snd_hda_codec_read(codec, 0x51, 0, AC_VERB_PARAMETERS, 0) == 0x10ec5505) {
> >>   		spec->has_alc5505_dsp = true;
> >>   		spec->init_hook = alc5505_dsp_init;
> >>   	}
> >> --
> >> 1.7.9.5
> >>
> >
> 
> 
> 
> -- 
> David Henningsson, Canonical Ltd.
> https://launchpad.net/~diwic
> 


More information about the Alsa-devel mailing list