[alsa-devel] Patch to enable audio on alc888 vendor id 0x10ec0888 revision id 0x100202

Takashi Iwai tiwai at suse.de
Mon Oct 6 16:24:35 CEST 2014


Adding Kailang to Cc, who should have a better clue about this.

At Mon, 06 Oct 2014 15:16:25 +0100,
Greg Farrell wrote:
> 
> Hi,
> 
> I am dealing with some Atom based boards that have a Realtek ALC888 
> providing HDA-Intel codec support. Vendor_id of 0x10ec0888.
> 
> These boards worked for us when they came with an earlier revision of 
> the chip but did not work for us with a revision_id of 0x100202 .
> 
> Symptoms on kernel 3.11 (FC18) and 3.17rc7 were identical - sound was 
> present but was almost completely inaudible even when mixers were raised 
> to the max.
> 
> Investigations showed that forcing OFF EAPD resulted in normal amplified 
> sound while turning it on resulted in the almost inaudible sound. This 
> is - to my limited understanding - counter to how other chipsets work 
> and makes me wonder if this particular chip version has an inverted EAPD 
> bit. It was also necessary to skip the normal ALC888 coef fixup code 
> (alc888_coef_init) in order for sound to work correctly.
> 
> I'm providing a patch that performs this behaviour only for alc888's 
> with a vendor_id of 0x10ec0888 and a revision_id of 0x100202. It applies 
> cleanly against 3.11 and 3.17rc7 but as I do not have a suitable build 
> host for a 3.17 kernel it has only been tested with the 3.11 kernel.
> 
> I hope this is useful to anyone else running into this problem with this 
> particular hardware.


Is the chip really identified as ALC888 by the driver?
Please give alsa-info.sh output (run with --no-upload option), just to
be sure.  The same codec ID (10ec:0888) is used by various chips, so
we may need to use a different thing to check the validity of
alc888_coef_init() application.


thanks,

Takashi

> 
> Greg
> 
> greg at gregfarrell.org
> greg.farrell at lincor.com
> 
> 
> --- a/sound/pci/hda/patch_realtek.c    2014-10-03 16:41:50.374730157 +0100
> +++ b/sound/pci/hda/patch_realtek.c    2014-10-03 16:52:57.539099277 +0100
> @@ -289,7 +289,11 @@
>   {
>       unsigned int tmp;
> 
> -    alc_auto_setup_eapd(codec, true);
> +    if ( !(codec->vendor_id == 0x10ec0888 && codec->revision_id == 
> 0x100202) )
> +        alc_auto_setup_eapd(codec, true);
> +    else
> +        printk(KERN_INFO "hda_codec: %s: alc_auto_init_amp skipping 
> alc_auto_setup_eapd due to chip revision test", codec->chip_name);
> +
>       switch (type) {
>       case ALC_INIT_GPIO1:
>           snd_hda_sequence_write(codec, alc_gpio1_init_verbs);
> @@ -323,7 +327,10 @@
>               alc889_coef_init(codec);
>               break;
>           case 0x10ec0888:
> -            alc888_coef_init(codec);
> +            if ( codec->revision_id != 0x100202 )
> +                alc888_coef_init(codec);
> +            else
> +                printk(KERN_INFO "hda_codec: %s: alc_auto_init_amp 
> 0x10ec0888 type skipping alc888_coef_init due to revision_id test", 
> codec->chip_name);
>               break;
>   #if 0 /* XXX: This may cause the silent output on speaker on some 
> machines */
>           case 0x10ec0267:
> 


More information about the Alsa-devel mailing list