[alsa-devel] [PATCH] Enable Realtek ALC671 Codec

Takashi Iwai tiwai at suse.de
Wed Apr 3 15:04:31 CEST 2013


At Wed, 03 Apr 2013 14:25:19 +0200,
Takashi Iwai wrote:
> 
> At Wed, 03 Apr 2013 13:29:29 +0200,
> Rainer Koenig wrote:
> > 
> > Hi,
> > 
> > working on a new mainboard generation with ALC671 codecs the first tests 
> > showed that the generic codec parser is just configuring the rear mic in 
> > for audio input, line-in and front-mic are missing.
> > 
> > I tried to understand the code of patch_realtek.c and after compiling 
> > with CONFIG_SND_DEBUG I saw that this module is not used at all for the 
> > ALC671 codec because its device-ID was missing.
> > 
> > So what I did is:
> > - adding the device id and assigned the ALC662 patches for it.
> > - Added the device id so that it enables 4 ports in
> >    alc662_parse_auto_config
> 
> These are fine to take, but
> 
> > - changed the conditional in alc_subsystem_id because it looked so
> >    strange to me when I tried to understand what is happening. :-)
> 
> ... this isn't.  You should try to understand harder :)

A hint to understand better is that Realtek tries to get its own
config bits given by BIOS.  The first place to check is the lower
16bit of codec SSID, and if this is different from the PCI SSID, it's
supposed to be such a value and taken to retrieve some information.
If it's same as PCI SSID, the pin config of some special pin is
referred as an alternative configuration.

In anyway, could you resend your patch only with the addition of
ALC671?  Also, run scripts/checkpatch.pl and fix the issues before
submission.


thanks,

Takashi

> 
> 
> Takashi
> 
> > Here is the patch:
> > 
> > Signed-off-by: Rainer Koenig <Rainer.Koenig at ts.fujitsu.com>
> > 
> > --- a/sound/pci/hda/patch_realtek.c
> > +++ b/sound/pci/hda/patch_realtek.c
> > @@ -1283,7 +1283,7 @@ static int alc_subsystem_id(struct hda_codec *codec,
> >          }
> > 
> >          ass = codec->subsystem_id & 0xffff;
> > -       if ((ass != codec->bus->pci->subsystem_device) && (ass & 1))
> > +       if ((ass == codec->bus->pci->subsystem_device) && (ass & 1))
> >                  goto do_sku;
> > 
> >          /* invalid SSID, check the special NID pin defcfg instead */
> > @@ -6663,7 +6663,8 @@ static int alc662_parse_auto_config(struct 
> > hda_codec *codec)
> >          const hda_nid_t *ssids;
> > 
> >          if (codec->vendor_id == 0x10ec0272 || codec->vendor_id == 
> > 0x10ec0663 ||
> > -           codec->vendor_id == 0x10ec0665 || codec->vendor_id == 
> > 0x10ec0670)
> > +           codec->vendor_id == 0x10ec0665 || codec->vendor_id == 
> > 0x10ec0670 ||
> > +           codec->vendor_id == 0x10ec0671)
> >                  ssids = alc663_ssids;
> >          else
> >                  ssids = alc662_ssids;
> > @@ -7115,6 +7116,7 @@ static const struct hda_codec_preset 
> > snd_hda_preset_realtek[] = {
> >          { .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 },
> >          { .id = 0x10ec0668, .name = "ALC668", .patch = patch_alc662 },
> >          { .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 },
> > +       { .id = 0x10ec0671, .name = "ALC671", .patch = patch_alc662 },
> >          { .id = 0x10ec0680, .name = "ALC680", .patch = patch_alc680 },
> >          { .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 },
> >          { .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 },
> > 
> > 
> > -- 
> > Dipl.-Inf. (FH) Rainer Koenig
> > Project Manager Linux Clients
> > Dept. PDG WPS R&D SW OSE
> > 
> > Fujitsu Technology Solutions
> > Bürgermeister-Ullrich-Str. 100
> > 86199 Augsburg
> > Germany
> > 
> > Telephone: +49-821-804-3321
> > Telefax:   +49-821-804-2131
> > Mail:      mailto:Rainer.Koenig at ts.fujitsu.com
> > 
> > Internet         ts.fujtsu.com
> > Company Details  ts.fujitsu.com/imprint.html
> > _______________________________________________
> > Alsa-devel mailing list
> > Alsa-devel at alsa-project.org
> > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> > 


More information about the Alsa-devel mailing list