Jump to content
Andy Vandijck

getcodecid - Command line tool to detect codec id

124 posts in this topic

Recommended Posts

oh I see the problem: CFNumberGetValue(codec, kCFNumberLongType, &codecid) try to get a long value from from "codec" that probably does not exist..but why?

This happen parsing AppleHDA, are voodohda.kext or AppleHDADisabler.kext in this system?

Can I have a Ioreg when that precisely happens?


ok try with this.

getcodecid.zip

Share this post


Link to post
Share on other sites
Advertisement

Found the bug... your PC or your OSX or your AppleHDA.kext!

post-674334-0-63778200-1461498428_thumb.png

if you look in your ioreg under HDEF->AppleHDAController->IOHDACodecDevice is totally empty, so nothing can be done by getcodecid. 

Reason: unknown, btw is possible that your controller is not supported by AppleHDA.. although the driver should have also published the ids anyway.

No way to make it work with AppleHDA, sorry

Share this post


Link to post
Share on other sites

Found the bug... your PC or your OSX or your AppleHDA.kext!

attachicon.giffail.png

if you look in your ioreg under HDEF->AppleHDAController->IOHDACodecDevice is totally empty, so nothing can be done by getcodecid. 

Reason: unknown, btw is possible that your controller is not supported by AppleHDA.. although the driver should have also published the ids anyway.

No way to make it work with AppleHDA, sorry

Hi Mickey1979

 

I can use either mirone's or toledo's patches without issues. They just works. 

my only concern is that getcodecid gives me segmentation fault.

I think I'm having HW conflict if i use the HD4600. coz if i disable iGPU HDMI audio in bios OR use a nvidia card, then getcodecid works :)

 

Update:

if i use getcodecid of Andy from post# 1, it can detect my onboard.

where in the source i can disable the detection of GPU and only the onboard will get detected? can you show me please.

Ellas-iMac:~ Ella$ /Volumes/Data/getcodecid
Realtek ALC887/888b
Segmentation fault: 11
Edited by ellaosx

Share this post


Link to post
Share on other sites

@ellaosx

save yourself from all these trouble. simply apply dsdt patches to fix your HDMI and the segmentation fault will just fix itself.

 

for a test, use rehabman's fakepciid+HDMI Audio.plist injector and see it fixed the issue.

Share this post


Link to post
Share on other sites

 

I think I'm having HW conflict if i use the HD4600. coz if i disable iGPU HDMI audio in bios OR use a nvidia card, then getcodecid works :)

I ask for the 'breakpoint' to find a reason.. but if nothing is published in the IO (post #103) ...simply we cannot expected a result (that was causing the segmentation fault). Now at least print nothing w/o fail like a good program should do instead of crash (post #102).

 

 

where in the source i can disable the detection of GPU and only the onboard will get detected? can you show me please.

 

 I find this difficult to be done in the source since there's no possibilty to do that. You mean that you can disable the GPU in bios??

 

 

 

I can use either mirone's or toledo's patches without issues. They just works. 

The case you show me here:

post-674334-0-63778200-1461498428.png

say  a different thing. Maybe you mean that work with a correct bios configuration.. but not in this case?

 

BTW have you TeamViewer to take a look by my self?? ..if not a problem 

Share this post


Link to post
Share on other sites

Hi onixs

 

I dont need the dsdt patch for HDMI as i dont use it. however, i used rehabmans kext as you suggested.

and now, getcodecid works!

Ellas-iMac:~ Ella$ getcodecid
Realtek ALC887

no more segmentation fault  :thumbsup_anim:

its basically faking 086:0c0c to be 8086:0a0c. I made a dsdt instead of using that kext and it aslo worked.

 

Thank You!

 

**************

 

Hi Mickey1979

As i have said, i am using Mirone's AppleHDA since Yosemite (probably even Mavericks) on this board with no issue. It just so happened that i came across this thread and gave getcodecid a try, only to find out it gives segmentation fault. At first, i didnt bother as long Mirone's patch works.

 

My setting in bios has always been the same... for a test, i tried the follwing:

1. used optimal setting then compared the ioreg to my custom settings in bios.

2. booted with and w/o DSDT

 

Both resulted to an EMPTY string just like the pic you attached.

I dont know if that EMPTY should result to a non-working sound. but my sound just works :D

 

its still empty after the dsdt fix though

pic.tiff

 

How to post a pic instead of attachment?

Edited by ellaosx

Share this post


Link to post
Share on other sites

Glad that work now, but in the pict at  #103 only show one device HDEF, instead in the new pict you show us in the #108 you have two :ph34r:....

BTW you have solved, what matter :)

Share this post


Link to post
Share on other sites

oh yes, i now have two :o

Maybe that became 2 after the dsdt patch which i didnt notice.

was this a HW conflict? Maybe yes :D

 

Mickey1979, again, Thank You! Sir :)

Share this post


Link to post
Share on other sites

HDEF should be in DSDT or in SSDT (also missing in some cases or named differently), no idea what's on your PC, maybe you have not checked it before patch the dsdt 

... sure is surprising that works w/o crash  ;)


How to post a pic instead of attachment?

png file instead of tiff. ('Add To Post' as optional to insert in the text where you like)

Share this post


Link to post
Share on other sites

Glad that work now, but in the pict at  #103 only show one device HDEF, instead in the new pict you show us in the #108 you have two :ph34r:....

BTW you have solved, what matter :)

HDEF@3=HDAEnabler.kext/HDMI
HDEF@1B=DSDT injection/Onboard
I would have saved a good time
if I had looked at this topic before,but I can be wrong.

Share this post


Link to post
Share on other sites

@Fabio, from your source:

 

#define HDA_CODEC_ALC898 HDA_CODEC_CONSTRUCT(REALTEK, 0x0898) //

#define HDA_CODEC_ALC899 HDA_CODEC_CONSTRUCT(REALTEK, 0x0899)

 

but I guess ALC899 not even exist. ALC 898 instead have device id 10ec:0899, so should be:

#define HDA_CODEC_ALC898 HDA_CODEC_CONSTRUCT(REALTEK, 0x0899// --> corrected

#define HDA_CODEC_ALC899 HDA_CODEC_CONSTRUCT(REALTEK, 0x0899// to be deleted

 

corrected:

//
//  getcodecid.h
//  getcodecid
//
//  Created by Andy Vandijck on 27/12/12.
//  Copyright (c) 2012 AnV Software. All rights reserved.
//

#ifndef getcodecid_getcodecid_h
#define getcodecid_getcodecid_h

#define CODEC_ID(vendor,device) ((((UInt32) vendor & 0xffff) << 16) | \
((UInt32) device & 0xffff))

#define HDA_DEV_MATCH(fl, v)		((fl) == (v) || (fl) == 0xffffffff || \
(((fl) & 0xffff0000) == 0xffff0000 && ((fl) & 0x0000ffff) == ((v) & 0x0000ffff)) || \
(((fl) & 0x0000ffff) == 0x0000ffff && ((fl) & 0xffff0000) == ((v) & 0xffff0000)))

/* All codecs you can eat... */
#define HDA_CODEC_CONSTRUCT(vendor, id) (((UInt32) (vendor##_VENDORID) << 16) | ((id) & 0xffff))

/* Cirrus Logic */
#define CIRRUSLOGIC_VENDORID	0x1013
#define HDA_CODEC_CS4206	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4206)
#define HDA_CODEC_CS4207	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4207)
#define HDA_CODEC_CS4208	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4208) //
#define HDA_CODEC_CS4210	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4210)
#define HDA_CODEC_CS4213	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4213)
#define HDA_CODEC_CSXXXX	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0xffff)

/* Realtek */
#define REALTEK_VENDORID	0x10ec
#define HDA_CODEC_ALC221	HDA_CODEC_CONSTRUCT(REALTEK, 0x0221)
#define HDA_CODEC_ALC231	HDA_CODEC_CONSTRUCT(REALTEK, 0x0231) //
#define HDA_CODEC_ALC233	HDA_CODEC_CONSTRUCT(REALTEK, 0x0233) //
#define HDA_CODEC_ALC235	HDA_CODEC_CONSTRUCT(REALTEK, 0x0235) //
#define HDA_CODEC_ALC255	HDA_CODEC_CONSTRUCT(REALTEK, 0x0255) //
#define HDA_CODEC_ALC256	HDA_CODEC_CONSTRUCT(REALTEK, 0x0256) //
#define HDA_CODEC_ALC260	HDA_CODEC_CONSTRUCT(REALTEK, 0x0260)
#define HDA_CODEC_ALC262	HDA_CODEC_CONSTRUCT(REALTEK, 0x0262)
#define HDA_CODEC_ALC267	HDA_CODEC_CONSTRUCT(REALTEK, 0x0267)
#define HDA_CODEC_ALC268	HDA_CODEC_CONSTRUCT(REALTEK, 0x0268)
#define HDA_CODEC_ALC269	HDA_CODEC_CONSTRUCT(REALTEK, 0x0269)
#define HDA_CODEC_ALC270	HDA_CODEC_CONSTRUCT(REALTEK, 0x0270)
#define HDA_CODEC_ALC272	HDA_CODEC_CONSTRUCT(REALTEK, 0x0272)
#define HDA_CODEC_ALC273	HDA_CODEC_CONSTRUCT(REALTEK, 0x0273)
#define HDA_CODEC_ALC275	HDA_CODEC_CONSTRUCT(REALTEK, 0x0275)
#define HDA_CODEC_ALC276	HDA_CODEC_CONSTRUCT(REALTEK, 0x0276) //
#define HDA_CODEC_ALC280	HDA_CODEC_CONSTRUCT(REALTEK, 0x0280)
#define HDA_CODEC_ALC282	HDA_CODEC_CONSTRUCT(REALTEK, 0x0282)
#define HDA_CODEC_ALC283	HDA_CODEC_CONSTRUCT(REALTEK, 0x0283)
#define HDA_CODEC_ALC284	HDA_CODEC_CONSTRUCT(REALTEK, 0x0284)
#define HDA_CODEC_ALC285	HDA_CODEC_CONSTRUCT(REALTEK, 0x0285) //
#define HDA_CODEC_ALC286	HDA_CODEC_CONSTRUCT(REALTEK, 0x0286) //
#define HDA_CODEC_ALC288	HDA_CODEC_CONSTRUCT(REALTEK, 0x0288)
#define HDA_CODEC_ALC290	HDA_CODEC_CONSTRUCT(REALTEK, 0x0290)
#define HDA_CODEC_ALC292	HDA_CODEC_CONSTRUCT(REALTEK, 0x0292) //
#define HDA_CODEC_ALC293	HDA_CODEC_CONSTRUCT(REALTEK, 0x0293) //
#define HDA_CODEC_ALC298	HDA_CODEC_CONSTRUCT(REALTEK, 0x0298) //
#define HDA_CODEC_ALC660	HDA_CODEC_CONSTRUCT(REALTEK, 0x0660)
#define HDA_CODEC_ALC662	HDA_CODEC_CONSTRUCT(REALTEK, 0x0662)
#define HDA_CODEC_ALC663	HDA_CODEC_CONSTRUCT(REALTEK, 0x0663)
#define HDA_CODEC_ALC665	HDA_CODEC_CONSTRUCT(REALTEK, 0x0665)
#define HDA_CODEC_ALC667	HDA_CODEC_CONSTRUCT(REALTEK, 0x0667) //
#define HDA_CODEC_ALC668	HDA_CODEC_CONSTRUCT(REALTEK, 0x0668) //
#define HDA_CODEC_ALC670	HDA_CODEC_CONSTRUCT(REALTEK, 0x0670)
#define HDA_CODEC_ALC671	HDA_CODEC_CONSTRUCT(REALTEK, 0x0671) //
#define HDA_CODEC_ALC680	HDA_CODEC_CONSTRUCT(REALTEK, 0x0680) //
#define HDA_CODEC_ALC861	HDA_CODEC_CONSTRUCT(REALTEK, 0x0861)
#define HDA_CODEC_ALC861VD	HDA_CODEC_CONSTRUCT(REALTEK, 0x0862)
#define HDA_CODEC_ALC867	HDA_CODEC_CONSTRUCT(REALTEK, 0x0867) //
#define HDA_CODEC_ALC880	HDA_CODEC_CONSTRUCT(REALTEK, 0x0880)
#define HDA_CODEC_ALC882	HDA_CODEC_CONSTRUCT(REALTEK, 0x0882)
#define HDA_CODEC_ALC883	HDA_CODEC_CONSTRUCT(REALTEK, 0x0883)
#define HDA_CODEC_ALC885	HDA_CODEC_CONSTRUCT(REALTEK, 0x0885)
#define HDA_CODEC_ALC886	HDA_CODEC_CONSTRUCT(REALTEK, 0x0886) //
#define HDA_CODEC_ALC887	HDA_CODEC_CONSTRUCT(REALTEK, 0x0887)
#define HDA_CODEC_ALC888	HDA_CODEC_CONSTRUCT(REALTEK, 0x0888)
#define HDA_CODEC_ALC889	HDA_CODEC_CONSTRUCT(REALTEK, 0x0889)
#define HDA_CODEC_ALC892	HDA_CODEC_CONSTRUCT(REALTEK, 0x0892)
#define HDA_CODEC_ALC898	HDA_CODEC_CONSTRUCT(REALTEK, 0x0899) //
#define HDA_CODEC_ALC900	HDA_CODEC_CONSTRUCT(REALTEK, 0x0900)
#define HDA_CODEC_ALCXXXX	HDA_CODEC_CONSTRUCT(REALTEK, 0xffff)
/* Creative */
#define CREATIVE_VENDORID	0x1102
#define HDA_CODEC_XFIEA		HDA_CODEC_CONSTRUCT(CREATIVE, 0x000a)
#define HDA_CODEC_XFIED         HDA_CODEC_CONSTRUCT(CREATIVE, 0x000b) //
#define HDA_CODEC_SB0880	HDA_CODEC_CONSTRUCT(CREATIVE, 0x000d)
#define HDA_CODEC_CA0132	HDA_CODEC_CONSTRUCT(CREATIVE, 0x0011) //
#define HDA_CODEC_CAXXXX	HDA_CODEC_CONSTRUCT(CREATIVE, 0xffff)

/* Analog Devices */
#define ANALOGDEVICES_VENDORID	0x11d4
#define HDA_CODEC_AD1884A	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x184a)
#define HDA_CODEC_AD1882	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1882)
#define HDA_CODEC_AD1883	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1883)
#define HDA_CODEC_AD1884	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1884)
#define HDA_CODEC_AD1984A	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x194a)
#define HDA_CODEC_AD1984B	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x194b)
#define HDA_CODEC_AD1981HD	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1981)
#define HDA_CODEC_AD1983	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1983)
#define HDA_CODEC_AD1984	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1984)
#define HDA_CODEC_AD1986A	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1986)
#define HDA_CODEC_AD1987	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1987)
#define HDA_CODEC_AD1988	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1988)
#define HDA_CODEC_AD1988B	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x198b)
#define HDA_CODEC_AD1882A	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x882a)
#define HDA_CODEC_AD1989A	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x989a) //
#define HDA_CODEC_AD1989B	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x989b)
#define HDA_CODEC_ADXXXX	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0xffff)

/* CMedia */
#define CMEDIA_VENDORID         0x13f6
#define HDA_CODEC_CMI8880       HDA_CODEC_CONSTRUCT(CMEDIA, 0x8880) //
#define HDA_CODEC_CMI9880       HDA_CODEC_CONSTRUCT(CMEDIA, 0x9880)
#define HDA_CODEC_CMIXXXX       HDA_CODEC_CONSTRUCT(CMEDIA, 0xffff) //

#define CMEDIA2_VENDORID        0x434d
#define HDA_CODEC_CMI98802      HDA_CODEC_CONSTRUCT(CMEDIA2, 0x4980)
#define HDA_CODEC_CMIXXXX2      HDA_CODEC_CONSTRUCT(CMEDIA2, 0xffff)

/* Sigmatel */
#define SIGMATEL_VENDORID       0x8384
#define HDA_CODEC_STAC9230X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7612)
#define HDA_CODEC_STAC9230D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7613)
#define HDA_CODEC_STAC9229X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7614)
#define HDA_CODEC_STAC9229D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7615)
#define HDA_CODEC_STAC9228X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7616)
#define HDA_CODEC_STAC9228D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7617)
#define HDA_CODEC_STAC9227X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7618)
#define HDA_CODEC_STAC9227D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7619)
#define HDA_CODEC_STAC9274      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7620)
#define HDA_CODEC_STAC9274D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7621)
#define HDA_CODEC_STAC9273X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7622)
#define HDA_CODEC_STAC9273D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7623)
#define HDA_CODEC_STAC9272X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7624)
#define HDA_CODEC_STAC9272D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7625)
#define HDA_CODEC_STAC9271X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7626)
#define HDA_CODEC_STAC9271D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7627)
#define HDA_CODEC_STAC9274X5NH  HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7628)
#define HDA_CODEC_STAC9274D5NH  HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7629)
#define HDA_CODEC_STAC9202      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7632) //
#define HDA_CODEC_STAC9202D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7633) //
#define HDA_CODEC_STAC9250      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7634)
#define HDA_CODEC_STAC9250D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7635) //
#define HDA_CODEC_STAC9251      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7636)
#define HDA_CODEC_STAC9250D_1   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7637) //
#define HDA_CODEC_IDT92HD700X   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7638)
#define HDA_CODEC_IDT92HD700D   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7639)
#define HDA_CODEC_IDT92HD206X   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7645)
#define HDA_CODEC_IDT92HD206D   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7646)
#define HDA_CODEC_CXD9872RDK    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7661)
#define HDA_CODEC_STAC9872AK    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7662)
#define HDA_CODEC_CXD9872AKD    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7664)
#define HDA_CODEC_STAC9221      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7680)
#define HDA_CODEC_STAC922XD     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7681)
#define HDA_CODEC_STAC9221_A2   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7682)
#define HDA_CODEC_STAC9221D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7683)
#define HDA_CODEC_STAC9220      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7690)
#define HDA_CODEC_STAC9200D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7691)
#define HDA_CODEC_IDT92HD005    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7698)
#define HDA_CODEC_IDT92HD005D   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7699)
#define HDA_CODEC_STAC9205X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a0)
#define HDA_CODEC_STAC9205D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a1)
#define HDA_CODEC_STAC9204X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a2)
#define HDA_CODEC_STAC9204D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a3)
#define HDA_CODEC_STAC9255      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a4) //
#define HDA_CODEC_STAC9255D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a5) //
#define HDA_CODEC_STAC9254      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a6) //
#define HDA_CODEC_STAC9254D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a7) //
#define HDA_CODEC_STAC9220_A2	HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7880)
#define HDA_CODEC_STAC9220_A1	HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7882)
#define HDA_CODEC_STACXXXX	HDA_CODEC_CONSTRUCT(SIGMATEL, 0xffff)

/* IDT */
#define IDT_VENDORID		0x111d
#define HDA_CODEC_IDT92HD75BX	HDA_CODEC_CONSTRUCT(IDT, 0x7603)
#define HDA_CODEC_IDT92HD83C1X	HDA_CODEC_CONSTRUCT(IDT, 0x7604)
#define HDA_CODEC_IDT92HD81B1X	HDA_CODEC_CONSTRUCT(IDT, 0x7605)
#define HDA_CODEC_IDT92HD75B3	HDA_CODEC_CONSTRUCT(IDT, 0x7608)
#define HDA_CODEC_IDT92HD88B3	HDA_CODEC_CONSTRUCT(IDT, 0x7666) //
#define HDA_CODEC_IDT92HD88B1   HDA_CODEC_CONSTRUCT(IDT, 0x7667) //
#define HDA_CODEC_IDT92HD88B2   HDA_CODEC_CONSTRUCT(IDT, 0x7668) //
#define HDA_CODEC_IDT92HD88B4   HDA_CODEC_CONSTRUCT(IDT, 0x7669) //
#define HDA_CODEC_IDT92HD73D1	HDA_CODEC_CONSTRUCT(IDT, 0x7674)
#define HDA_CODEC_IDT92HD73C1	HDA_CODEC_CONSTRUCT(IDT, 0x7675)
#define HDA_CODEC_IDT92HD73E1	HDA_CODEC_CONSTRUCT(IDT, 0x7676)
#define HDA_CODEC_IDT92HD95     HDA_CODEC_CONSTRUCT(IDT, 0x7695) //
#define HDA_CODEC_IDT92HD71B8   HDA_CODEC_CONSTRUCT(IDT, 0x76b0)
#define HDA_CODEC_IDT92HD71B8_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b1)
#define HDA_CODEC_IDT92HD71B7   HDA_CODEC_CONSTRUCT(IDT, 0x76b2)
#define HDA_CODEC_IDT92HD71B7_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b3)
#define HDA_CODEC_IDT92HD71B6   HDA_CODEC_CONSTRUCT(IDT, 0x76b4)
#define HDA_CODEC_IDT92HD71B6_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b5)
#define HDA_CODEC_IDT92HD71B5   HDA_CODEC_CONSTRUCT(IDT, 0x76b6)
#define HDA_CODEC_IDT92HD71B5_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b7)
#define HDA_CODEC_IDT92HD89C3   HDA_CODEC_CONSTRUCT(IDT, 0x76c0)
#define HDA_CODEC_IDT92HD89C2   HDA_CODEC_CONSTRUCT(IDT, 0x76c1)
#define HDA_CODEC_IDT92HD89C1   HDA_CODEC_CONSTRUCT(IDT, 0x76c2)
#define HDA_CODEC_IDT92HD89B3   HDA_CODEC_CONSTRUCT(IDT, 0x76c3)
#define HDA_CODEC_IDT92HD89B2   HDA_CODEC_CONSTRUCT(IDT, 0x76c4)
#define HDA_CODEC_IDT92HD89B1   HDA_CODEC_CONSTRUCT(IDT, 0x76c5)
#define HDA_CODEC_IDT92HD89E3   HDA_CODEC_CONSTRUCT(IDT, 0x76c6)
#define HDA_CODEC_IDT92HD89E2   HDA_CODEC_CONSTRUCT(IDT, 0x76c7)
#define HDA_CODEC_IDT92HD89E1   HDA_CODEC_CONSTRUCT(IDT, 0x76c8)
#define HDA_CODEC_IDT92HD89D3   HDA_CODEC_CONSTRUCT(IDT, 0x76c9)
#define HDA_CODEC_IDT92HD89D2   HDA_CODEC_CONSTRUCT(IDT, 0x76ca)
#define HDA_CODEC_IDT92HD89D1   HDA_CODEC_CONSTRUCT(IDT, 0x76cb)
#define HDA_CODEC_IDT92HD89F3   HDA_CODEC_CONSTRUCT(IDT, 0x76cc)
#define HDA_CODEC_IDT92HD89F2   HDA_CODEC_CONSTRUCT(IDT, 0x76cd)
#define HDA_CODEC_IDT92HD89F1   HDA_CODEC_CONSTRUCT(IDT, 0x76ce)
#define HDA_CODEC_IDT92HD87B1_3 HDA_CODEC_CONSTRUCT(IDT, 0x76d1)
#define HDA_CODEC_IDT92HD83C1C  HDA_CODEC_CONSTRUCT(IDT, 0x76d4)
#define HDA_CODEC_IDT92HD81B1C  HDA_CODEC_CONSTRUCT(IDT, 0x76d5)
#define HDA_CODEC_IDT92HD87B2_4 HDA_CODEC_CONSTRUCT(IDT, 0x76d9)
#define HDA_CODEC_IDT92HD93BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76df)
#define HDA_CODEC_IDT92HD91BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e0)
#define HDA_CODEC_IDT92HD98BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e3)
#define HDA_CODEC_IDT92HD99BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e5)
#define HDA_CODEC_IDT92HD90BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e7)
#define HDA_CODEC_IDT92HD66B1X5 HDA_CODEC_CONSTRUCT(IDT, 0x76e8)
#define HDA_CODEC_IDT92HD66B2X5 HDA_CODEC_CONSTRUCT(IDT, 0x76e9)
#define HDA_CODEC_IDT92HD66B3X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ea)
#define HDA_CODEC_IDT92HD66C1X5 HDA_CODEC_CONSTRUCT(IDT, 0x76eb)
#define HDA_CODEC_IDT92HD66C2X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ec)
#define HDA_CODEC_IDT92HD66C3X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ed)
#define HDA_CODEC_IDT92HD66B1X3 HDA_CODEC_CONSTRUCT(IDT, 0x76ee)
#define HDA_CODEC_IDT92HD66B2X3 HDA_CODEC_CONSTRUCT(IDT, 0x76ef)
#define HDA_CODEC_IDT92HD66B3X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f0)
#define HDA_CODEC_IDT92HD66C1X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f1)
#define HDA_CODEC_IDT92HD66C2X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f2)
#define HDA_CODEC_IDT92HD66C3_65        HDA_CODEC_CONSTRUCT(IDT, 0x76f3)
#define HDA_CODEC_IDTXXXX       HDA_CODEC_CONSTRUCT(IDT, 0xffff)

/* Silicon Image */
#define SII_VENDORID		0x1095
#define HDA_CODEC_SII1390       HDA_CODEC_CONSTRUCT(SII, 0x1390)
#define HDA_CODEC_SII1392       HDA_CODEC_CONSTRUCT(SII, 0x1392)
#define HDA_CODEC_SIIXXXX       HDA_CODEC_CONSTRUCT(SII, 0xffff)

/* Lucent/Agere */
#define AGERE_VENDORID		0x11c1
#define HDA_CODEC_AGEREXXXX     HDA_CODEC_CONSTRUCT(AGERE, 0xffff)

/* Conexant */
#define CONEXANT_VENDORID       0x14f1
#define HDA_CODEC_CX20549       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5045)
#define HDA_CODEC_CX20551       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5047)
#define HDA_CODEC_CX20561       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5051)
#define HDA_CODEC_CX20582       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5066)
#define HDA_CODEC_CX20583       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5067)
#define HDA_CODEC_CX20584       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5068)
#define HDA_CODEC_CX20585       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5069)
#define HDA_CODEC_CX20588       HDA_CODEC_CONSTRUCT(CONEXANT, 0x506c)
#define HDA_CODEC_CX20590       HDA_CODEC_CONSTRUCT(CONEXANT, 0x506e)
#define HDA_CODEC_CX20631       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5097)
#define HDA_CODEC_CX20632       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5098)
#define HDA_CODEC_CX20641       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50a1)
#define HDA_CODEC_CX20642       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50a2)
#define HDA_CODEC_CX20651       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50ab)
#define HDA_CODEC_CX20652       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50ac)
#define HDA_CODEC_CX20664       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50b8)
#define HDA_CODEC_CX20665       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50b9)
#define HDA_CODEC_CX20751       HDA_CODEC_CONSTRUCT(CONEXANT, 0x510f) //
#define HDA_CODEC_CX20751_2     HDA_CODEC_CONSTRUCT(CONEXANT, 0x5110) //
#define HDA_CODEC_CX20751_4     HDA_CODEC_CONSTRUCT(CONEXANT, 0x5111) //
#define HDA_CODEC_CX20755       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5113) //
#define HDA_CODEC_CX20756       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5114) //
#define HDA_CODEC_CX20757       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5115) //
#define HDA_CODEC_CX20952       HDA_CODEC_CONSTRUCT(CONEXANT, 0x51d7) //
#define HDA_CODEC_CXXXXX        HDA_CODEC_CONSTRUCT(CONEXANT, 0xffff)

/* VIA */
#define VIA_VENDORID		0x1106
#define HDA_CODEC_VT1708_8      HDA_CODEC_CONSTRUCT(VIA, 0x1708)
#define HDA_CODEC_VT1708_9      HDA_CODEC_CONSTRUCT(VIA, 0x1709)
#define HDA_CODEC_VT1708_A      HDA_CODEC_CONSTRUCT(VIA, 0x170a)
#define HDA_CODEC_VT1708_B      HDA_CODEC_CONSTRUCT(VIA, 0x170b)
#define HDA_CODEC_VT1709_0      HDA_CODEC_CONSTRUCT(VIA, 0xe710)
#define HDA_CODEC_VT1709_1      HDA_CODEC_CONSTRUCT(VIA, 0xe711)
#define HDA_CODEC_VT1709_2      HDA_CODEC_CONSTRUCT(VIA, 0xe712)
#define HDA_CODEC_VT1709_3      HDA_CODEC_CONSTRUCT(VIA, 0xe713)
#define HDA_CODEC_VT1709_4      HDA_CODEC_CONSTRUCT(VIA, 0xe714)
#define HDA_CODEC_VT1709_5      HDA_CODEC_CONSTRUCT(VIA, 0xe715)
#define HDA_CODEC_VT1709_6      HDA_CODEC_CONSTRUCT(VIA, 0xe716)
#define HDA_CODEC_VT1709_7      HDA_CODEC_CONSTRUCT(VIA, 0xe717)
#define HDA_CODEC_VT1708B_0     HDA_CODEC_CONSTRUCT(VIA, 0xe720)
#define HDA_CODEC_VT1708B_1     HDA_CODEC_CONSTRUCT(VIA, 0xe721)
#define HDA_CODEC_VT1708B_2     HDA_CODEC_CONSTRUCT(VIA, 0xe722)
#define HDA_CODEC_VT1708B_3     HDA_CODEC_CONSTRUCT(VIA, 0xe723)
#define HDA_CODEC_VT1708B_4     HDA_CODEC_CONSTRUCT(VIA, 0xe724)
#define HDA_CODEC_VT1708B_5     HDA_CODEC_CONSTRUCT(VIA, 0xe725)
#define HDA_CODEC_VT1708B_6     HDA_CODEC_CONSTRUCT(VIA, 0xe726)
#define HDA_CODEC_VT1708B_7     HDA_CODEC_CONSTRUCT(VIA, 0xe727)
#define HDA_CODEC_VT1708S_0     HDA_CODEC_CONSTRUCT(VIA, 0x0397)
#define HDA_CODEC_VT1708S_1     HDA_CODEC_CONSTRUCT(VIA, 0x1397)
#define HDA_CODEC_VT1708S_2     HDA_CODEC_CONSTRUCT(VIA, 0x2397)
#define HDA_CODEC_VT1708S_3     HDA_CODEC_CONSTRUCT(VIA, 0x3397)
#define HDA_CODEC_VT1708S_4     HDA_CODEC_CONSTRUCT(VIA, 0x4397)
#define HDA_CODEC_VT1708S_5     HDA_CODEC_CONSTRUCT(VIA, 0x5397)
#define HDA_CODEC_VT1708S_6     HDA_CODEC_CONSTRUCT(VIA, 0x6397)
#define HDA_CODEC_VT1708S_7     HDA_CODEC_CONSTRUCT(VIA, 0x7397)
#define HDA_CODEC_VT1702_0      HDA_CODEC_CONSTRUCT(VIA, 0x0398)
#define HDA_CODEC_VT1702_1      HDA_CODEC_CONSTRUCT(VIA, 0x1398)
#define HDA_CODEC_VT1702_2      HDA_CODEC_CONSTRUCT(VIA, 0x2398)
#define HDA_CODEC_VT1702_3      HDA_CODEC_CONSTRUCT(VIA, 0x3398)
#define HDA_CODEC_VT1702_4      HDA_CODEC_CONSTRUCT(VIA, 0x4398)
#define HDA_CODEC_VT1702_5      HDA_CODEC_CONSTRUCT(VIA, 0x5398)
#define HDA_CODEC_VT1702_6      HDA_CODEC_CONSTRUCT(VIA, 0x6398)
#define HDA_CODEC_VT1702_7      HDA_CODEC_CONSTRUCT(VIA, 0x7398)
#define HDA_CODEC_VT1716S_0     HDA_CODEC_CONSTRUCT(VIA, 0x0433)
#define HDA_CODEC_VT1716S_1     HDA_CODEC_CONSTRUCT(VIA, 0xa721)
#define HDA_CODEC_VT1718S_0     HDA_CODEC_CONSTRUCT(VIA, 0x0428)
#define HDA_CODEC_VT1718S_1     HDA_CODEC_CONSTRUCT(VIA, 0x4428)
#define HDA_CODEC_VT1802_0      HDA_CODEC_CONSTRUCT(VIA, 0x0446)
#define HDA_CODEC_VT1802_1      HDA_CODEC_CONSTRUCT(VIA, 0x8446)
#define HDA_CODEC_VT1812        HDA_CODEC_CONSTRUCT(VIA, 0x0448)
#define HDA_CODEC_VT1818S       HDA_CODEC_CONSTRUCT(VIA, 0x0440)
#define HDA_CODEC_VT1828S       HDA_CODEC_CONSTRUCT(VIA, 0x4441)
#define HDA_CODEC_VT2002P_0     HDA_CODEC_CONSTRUCT(VIA, 0x0438)
#define HDA_CODEC_VT2002P_1     HDA_CODEC_CONSTRUCT(VIA, 0x4438)
#define HDA_CODEC_VT2020        HDA_CODEC_CONSTRUCT(VIA, 0x0441)
#define HDA_CODEC_VTXXXX        HDA_CODEC_CONSTRUCT(VIA, 0xffff)

/* ATI */
#define ATI_VENDORID		0x1002
#define HDA_CODEC_ATIRS600_1	HDA_CODEC_CONSTRUCT(ATI, 0x793c)
#define HDA_CODEC_ATIRS600_2	HDA_CODEC_CONSTRUCT(ATI, 0x7919)
#define HDA_CODEC_ATIRS690      HDA_CODEC_CONSTRUCT(ATI, 0x791a)
#define HDA_CODEC_ATIR6XX       HDA_CODEC_CONSTRUCT(ATI, 0xaa01)
#define HDA_CODEC_ATIXXXX       HDA_CODEC_CONSTRUCT(ATI, 0xffff)

/* NVIDIA */
#define NVIDIA_VENDORID		0x10de
#define HDA_CODEC_NVIDIAMCP78	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0002)
#define HDA_CODEC_NVIDIAMCP78_2	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0003)
#define HDA_CODEC_NVIDIAMCP78_3	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0005)
#define HDA_CODEC_NVIDIAMCP78_4	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0006)
#define HDA_CODEC_NVIDIAMCP7A	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0007)
#define HDA_CODEC_NVIDIAGT220	HDA_CODEC_CONSTRUCT(NVIDIA, 0x000a)
#define HDA_CODEC_NVIDIAGT21X	HDA_CODEC_CONSTRUCT(NVIDIA, 0x000b)
#define HDA_CODEC_NVIDIAMCP89	HDA_CODEC_CONSTRUCT(NVIDIA, 0x000c)
#define HDA_CODEC_NVIDIAGT240	HDA_CODEC_CONSTRUCT(NVIDIA, 0x000d)
#define HDA_CODEC_NVIDIAGTX470  HDA_CODEC_CONSTRUCT(NVIDIA, 0x0010) //
#define HDA_CODEC_NVIDIAGTS450	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0011)
/*
 0x10de0012, GPU 12 HDMI/DP
 0x10de0013, GPU 13 HDMI/DP
 */
#define HDA_CODEC_NVIDIAGT440	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0014)
#define HDA_CODEC_NVIDIAGTX550	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0015)
//0x10de0016, GPU 16 HDMI/DP
#define HDA_CODEC_NVIDIAGTX570	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0018)
#define HDA_CODEC_NVIDIAGT610	HDA_CODEC_CONSTRUCT(NVIDIA, 0x001c) //
/*
 0x10de0018, GPU 18 HDMI/DP
 0x10de0019, GPU 19 HDMI/DP
 0x10de001a, GPU 1a HDMI/DP
 0x10de001b, GPU 1b HDMI/DP
 0x10de001c, GPU 1c HDMI/DP
 0x10de0020, Tegra30 HDMI
 0x10de0022, Tegra114 HDMI
 0x10de0028, Tegra124 HDMI
 0x10de0029, Tegra210 HDMI/DP
 0x10de0040, GPU 40 HDMI/DP
 0x10de0041, GPU 41 HDMI/DP
 0x10de0042, GPU 42 HDMI/DP
 0x10de0043, GPU 43 HDMI/DP
 0x10de0044, GPU 44 HDMI/DP
 0x10de0051, GPU 51 HDMI/DP
 0x10de0060, GPU 60 HDMI/DP
 */
#define HDA_CODEC_NVIDIAMCP67	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0067)
/*
 0x10de0070, GPU 70 HDMI/DP
 0x10de0071, GPU 71 HDMI/DP
 0x10de0072, GPU 72 HDMI/DP
 0x10de007d, GPU 7d HDMI/DP
 0x10de0082, GPU 82 HDMI/DP
 0x10de0083, GPU 83 HDMI/DP
 */
#define HDA_CODEC_NVIDIAMCP73	HDA_CODEC_CONSTRUCT(NVIDIA, 0x8001)
#define HDA_CODEC_NVIDIAXXXX	HDA_CODEC_CONSTRUCT(NVIDIA, 0xffff)


/* INTEL */
#define INTEL_VENDORID		0x8086
#define HDA_CODEC_INTELIP	HDA_CODEC_CONSTRUCT(INTEL, 0x0054)
#define HDA_CODEC_INTELBL	HDA_CODEC_CONSTRUCT(INTEL, 0x2801)
#define HDA_CODEC_INTELCA	HDA_CODEC_CONSTRUCT(INTEL, 0x2802)
#define HDA_CODEC_INTELEL	HDA_CODEC_CONSTRUCT(INTEL, 0x2803)
#define HDA_CODEC_INTELIP2	HDA_CODEC_CONSTRUCT(INTEL, 0x2804)
#define HDA_CODEC_INTELCPT	HDA_CODEC_CONSTRUCT(INTEL, 0x2805)
#define HDA_CODEC_INTELPPT	HDA_CODEC_CONSTRUCT(INTEL, 0x2806) // Panther Point HDMI
#define HDA_CODEC_INTELLLP	HDA_CODEC_CONSTRUCT(INTEL, 0x2807) // Haswell HDMI
#define HDA_CODEC_INTELBRW  HDA_CODEC_CONSTRUCT(INTEL, 0x2808) // Broadwell HDMI
#define HDA_CODEC_INTELSKL  HDA_CODEC_CONSTRUCT(INTEL, 0x2809) // Skylake HDMI
#define HDA_CODEC_INTELBRO  HDA_CODEC_CONSTRUCT(INTEL, 0x280a) // Broxton HDMI
#define HDA_CODEC_INTELKAB  HDA_CODEC_CONSTRUCT(INTEL, 0x280b) // Kabylake HDMI
#define HDA_CODEC_INTELCDT  HDA_CODEC_CONSTRUCT(INTEL, 0x2880) // CedarTrail HDMI
#define HDA_CODEC_INTELVLV  HDA_CODEC_CONSTRUCT(INTEL, 0x2882) // Valleyview2 HDMI
#define HDA_CODEC_INTELBSW  HDA_CODEC_CONSTRUCT(INTEL, 0x2883) // Braswell HDMI
#define HDA_CODEC_INTELCL	HDA_CODEC_CONSTRUCT(INTEL, 0x29fb) // Crestline HDMI
#define HDA_CODEC_INTELXXXX	HDA_CODEC_CONSTRUCT(INTEL, 0xffff)

static const struct
{
    UInt32 id;
    UInt32 rev_id;
    char *name;
} gCodecList[] = {
    { HDA_CODEC_CS4206, 0,		"Cirrus Logic CS4206" },
    { HDA_CODEC_CS4207, 0,		"Cirrus Logic CS4207" },
    { HDA_CODEC_CS4208, 0,		"Cirrus Logic CS4208" },
    { HDA_CODEC_CS4210, 0,		"Cirrus Logic CS4210" },
    { HDA_CODEC_CS4213, 0,		"Cirrus Logic CS4213" },
    
    { HDA_CODEC_ALC221, 0,		"Realtek ALC221" },
    { HDA_CODEC_ALC231, 0,		"Realtek ALC231" },
    { HDA_CODEC_ALC233, 0,		"Realtek ALC233" },
    { HDA_CODEC_ALC233, 0x100003,		"Realtek ALC3236" },
    { HDA_CODEC_ALC235, 0,		"Realtek ALC235" },
    { HDA_CODEC_ALC255, 0,		"Realtek ALC255" },
    { HDA_CODEC_ALC256, 0,		"Realtek ALC256" },
    { HDA_CODEC_ALC260, 0,		"Realtek ALC260" },
    { HDA_CODEC_ALC262, 0,		"Realtek ALC262" },
    { HDA_CODEC_ALC262, 0x100100,	"Realtek ALC262" },
    { HDA_CODEC_ALC267, 0,		"Realtek ALC267" },
    { HDA_CODEC_ALC268, 0,		"Realtek ALC268" },
    { HDA_CODEC_ALC269, 0,		"Realtek ALC269" },
    { HDA_CODEC_ALC270, 0,		"Realtek ALC270" },
    { HDA_CODEC_ALC272, 0,		"Realtek ALC272" },
    { HDA_CODEC_ALC273, 0,		"Realtek ALC273" },
    { HDA_CODEC_ALC275, 0,		"Realtek ALC275" },
    { HDA_CODEC_ALC276, 0,          "Realtek ALC276" },
    { HDA_CODEC_ALC280, 0,		"Realtek ALC280" },
    { HDA_CODEC_ALC282, 0,		"Realtek ALC282" },
    { HDA_CODEC_ALC283, 0,		"Realtek ALC283" },
    { HDA_CODEC_ALC284, 0,		"Realtek ALC284" },
    { HDA_CODEC_ALC285, 0,          "Realtek ALC285" },
    { HDA_CODEC_ALC286, 0,          "Realtek ALC286" },
    { HDA_CODEC_ALC288, 0,		"Realtek ALC288" },
    { HDA_CODEC_ALC290, 0,		"Realtek ALC290" },
    { HDA_CODEC_ALC292, 0,          "Realtek ALC292" },
    { HDA_CODEC_ALC292, 0x100001,   "Realtek ALC3232" },
    { HDA_CODEC_ALC293, 0,          "Realtek ALC293" },
    { HDA_CODEC_ALC298, 0,          "Realtek ALC298" },
    { HDA_CODEC_ALC660, 0,		"Realtek ALC660-VD" },
    { HDA_CODEC_ALC662, 0,		"Realtek ALC662" },
    { HDA_CODEC_ALC662, 0x100101,	"Realtek ALC662 rev1" },
    { HDA_CODEC_ALC662, 0x100002,	"Realtek ALC662 rev2" },
    { HDA_CODEC_ALC662, 0x100300,	"Realtek ALC662 rev3" },
    { HDA_CODEC_ALC663, 0,		"Realtek ALC663" },
    { HDA_CODEC_ALC665, 0,		"Realtek ALC665" },
    { HDA_CODEC_ALC667, 0,          "Realtek ALC667" },
    { HDA_CODEC_ALC668, 0,          "Realtek ALC668" },
    { HDA_CODEC_ALC670, 0,          "Realtek ALC670" },
    { HDA_CODEC_ALC671, 0,          "Realtek ALC671" },
    { HDA_CODEC_ALC680, 0,          "Realtek ALC680" },
    { HDA_CODEC_ALC861, 0,		"Realtek ALC861" },
    { HDA_CODEC_ALC861, 0x100340,	"Realtek ALC660" },
    { HDA_CODEC_ALC861VD, 0,        "Realtek ALC861-VD" },
    { HDA_CODEC_ALC867, 0,          "Realtek ALC891" },
    { HDA_CODEC_ALC880, 0,		"Realtek ALC880" },
    { HDA_CODEC_ALC880, 0x100800,	"Realtek ALC880" },
    { HDA_CODEC_ALC882, 0,		"Realtek ALC882" },
    { HDA_CODEC_ALC883, 0,		"Realtek ALC883" },
    { HDA_CODEC_ALC885, 0,		"Realtek ALC885" },
    { HDA_CODEC_ALC885, 0x100101,	"Realtek ALC889A" },
    { HDA_CODEC_ALC885, 0x100103,	"Realtek ALC889A" },
    { HDA_CODEC_ALC886, 0,          "Realtek ALC886" },
    { HDA_CODEC_ALC887, 0,		"Realtek ALC887" },
    { HDA_CODEC_ALC888, 0,		"Realtek ALC888" },
    { HDA_CODEC_ALC888, 0x100101,	"Realtek ALC1200" },
    { HDA_CODEC_ALC889, 0,		"Realtek ALC889" },
    { HDA_CODEC_ALC892, 0,		"Realtek ALC892" },
    { HDA_CODEC_ALC898, 0,		"Realtek ALC898" },
    { HDA_CODEC_ALC900, 0,		"Realtek ALC1150" },
    
    { HDA_CODEC_AD1882, 0,		"Analog Devices AD1882" },
    { HDA_CODEC_AD1882A, 0,		"Analog Devices AD1882a" },
    { HDA_CODEC_AD1883, 0,		"Analog Devices AD1883" },
    { HDA_CODEC_AD1884, 0,		"Analog Devices AD1884" },
    { HDA_CODEC_AD1884A, 0,		"Analog Devices AD1884a" },
    { HDA_CODEC_AD1981HD, 0,	"Analog Devices AD1981HD" },
    { HDA_CODEC_AD1983, 0,		"Analog Devices AD1983" },
    { HDA_CODEC_AD1984, 0,		"Analog Devices AD1984" },
    { HDA_CODEC_AD1984A, 0,		"Analog Devices AD1984A" },
    { HDA_CODEC_AD1984B, 0,		"Analog Devices AD1984B" },
    { HDA_CODEC_AD1986A, 0,		"Analog Devices AD1986A" },
    { HDA_CODEC_AD1987, 0,		"Analog Devices AD1987" },
    { HDA_CODEC_AD1988, 0,		"Analog Devices AD1988A" },
    { HDA_CODEC_AD1988B, 0,		"Analog Devices AD1988B" },
    { HDA_CODEC_AD1989A, 0,         "Analog Devices AD1989a" },
    { HDA_CODEC_AD1989B, 0,         "Analog Devices AD1989b" },
    { HDA_CODEC_AD1989B, 0x100200,	"Analog Devices AD2000b" },
    { HDA_CODEC_AD1989B, 0x100300,	"Analog Devices AD2000b" },
    
    { HDA_CODEC_XFIEA, 0,		"Creative X-Fi Extreme A"},
    { HDA_CODEC_XFIED, 0,		"Creative X-Fi Extreme D"},
    { HDA_CODEC_CA0132, 0,          "Creative CA0132" },
    { HDA_CODEC_SB0880, 0,          "Creative SB0880 X-Fi" },
    { HDA_CODEC_CMI9880, 0,         "CMedia CMI9880" },
    { HDA_CODEC_CMI98802, 0,        "CMedia CMI9880" },
    
    { HDA_CODEC_CXD9872RDK, 0,	"Sigmatel CXD9872RD/K" },
    { HDA_CODEC_CXD9872AKD, 0,      "Sigmatel CXD9872AKD" },
    { HDA_CODEC_STAC9200D, 0,       "Sigmatel STAC9200D" },
    { HDA_CODEC_STAC9204X, 0,       "Sigmatel STAC9204X" },
    { HDA_CODEC_STAC9204D, 0,       "Sigmatel STAC9204D" },
    { HDA_CODEC_STAC9205X, 0,       "Sigmatel STAC9205X" },
    { HDA_CODEC_STAC9205D, 0,       "Sigmatel STAC9205D" },
    { HDA_CODEC_STAC9220, 0,        "Sigmatel STAC9220" },
    { HDA_CODEC_STAC9220_A1, 0,     "Sigmatel STAC9220_A1" },
    { HDA_CODEC_STAC9220_A2, 0,     "Sigmatel STAC9220_A2" },
    { HDA_CODEC_STAC9221, 0,        "Sigmatel STAC9221" },
    { HDA_CODEC_STAC9221_A2, 0,     "Sigmatel STAC9221_A2" },
    { HDA_CODEC_STAC9221D, 0,       "Sigmatel STAC9221D" },
    { HDA_CODEC_STAC922XD, 0,       "Sigmatel STAC9220D/9223D" },
    { HDA_CODEC_STAC9227X, 0,       "Sigmatel STAC9227X" },
    { HDA_CODEC_STAC9227D, 0,       "Sigmatel STAC9227D" },
    { HDA_CODEC_STAC9228X, 0,       "Sigmatel STAC9228X" },
    { HDA_CODEC_STAC9228D, 0,       "Sigmatel STAC9228D" },
    { HDA_CODEC_STAC9229X, 0,       "Sigmatel STAC9229X" },
    { HDA_CODEC_STAC9229D, 0,       "Sigmatel STAC9229D" },
    { HDA_CODEC_STAC9230X, 0,       "Sigmatel STAC9230X" },
    { HDA_CODEC_STAC9230D, 0,       "Sigmatel STAC9230D" },
    { HDA_CODEC_STAC9250, 0,        "Sigmatel STAC9250" },
    { HDA_CODEC_STAC9250D, 0,	"Sigmatel STAC9250D" },
    { HDA_CODEC_STAC9251, 0,        "Sigmatel STAC9251" },
    { HDA_CODEC_STAC9250D_1, 0,	"Sigmatel STAC9250D" },
    { HDA_CODEC_STAC9255, 0,        "Sigmatel STAC9255" },
    { HDA_CODEC_STAC9255D, 0,       "Sigmatel STAC9255D" },
    { HDA_CODEC_STAC9254, 0,        "Sigmatel STAC9254" },
    { HDA_CODEC_STAC9254D, 0,       "Sigmatel STAC9254D" },
    { HDA_CODEC_STAC9271X, 0,       "Sigmatel STAC9271X" },
    { HDA_CODEC_STAC9271D, 0,       "Sigmatel STAC9271D" },
    { HDA_CODEC_STAC9272X, 0,       "Sigmatel STAC9272X" },
    { HDA_CODEC_STAC9272D, 0,       "Sigmatel STAC9272D" },
    { HDA_CODEC_STAC9273X, 0,       "Sigmatel STAC9273X" },
    { HDA_CODEC_STAC9273D, 0,       "Sigmatel STAC9273D" },
    { HDA_CODEC_STAC9274, 0,        "Sigmatel STAC9274" },
    { HDA_CODEC_STAC9274D, 0,       "Sigmatel STAC9274D" },
    { HDA_CODEC_STAC9274X5NH, 0,    "Sigmatel STAC9274X5NH" },
    { HDA_CODEC_STAC9274D5NH, 0,    "Sigmatel STAC9274D5NH" },
    { HDA_CODEC_STAC9202, 0,	"Sigmatel STAC9202" },
    { HDA_CODEC_STAC9202D, 0,	"Sigmatel STAC9202D" },
    { HDA_CODEC_STAC9872AK, 0,      "Sigmatel STAC9872AK" },
    
    { HDA_CODEC_IDT92HD005, 0,		"IDT 92HD005" },
    { HDA_CODEC_IDT92HD005D, 0,		"IDT 92HD005D" },
    { HDA_CODEC_IDT92HD206X, 0,		"IDT 92HD206X" },
    { HDA_CODEC_IDT92HD206D, 0,		"IDT 92HD206D" },
    { HDA_CODEC_IDT92HD66B1X5, 0,		"IDT 92HD66B1X5" },
    { HDA_CODEC_IDT92HD66B2X5, 0,		"IDT 92HD66B2X5" },
    { HDA_CODEC_IDT92HD66B3X5, 0,		"IDT 92HD66B3X5" },
    { HDA_CODEC_IDT92HD66C1X5, 0,		"IDT 92HD66C1X5" },
    { HDA_CODEC_IDT92HD66C2X5, 0,		"IDT 92HD66C2X5" },
    { HDA_CODEC_IDT92HD66C3X5, 0,		"IDT 92HD66C3X5" },
    { HDA_CODEC_IDT92HD66B1X3, 0,		"IDT 92HD66B1X3" },
    { HDA_CODEC_IDT92HD66B2X3, 0,		"IDT 92HD66B2X3" },
    { HDA_CODEC_IDT92HD66B3X3, 0,		"IDT 92HD66B3X3" },
    { HDA_CODEC_IDT92HD66C1X3, 0,		"IDT 92HD66C1X3" },
    { HDA_CODEC_IDT92HD66C2X3, 0,		"IDT 92HD66C2X3" },
    { HDA_CODEC_IDT92HD66C3_65, 0,		"IDT 92HD66C3_65" },
    { HDA_CODEC_IDT92HD700X, 0,		"IDT 92HD700X" },
    { HDA_CODEC_IDT92HD700D, 0,		"IDT 92HD700D" },
    { HDA_CODEC_IDT92HD71B5, 0,		"IDT 92HD71B5" },
    { HDA_CODEC_IDT92HD71B5_2, 0,		"IDT 92HD71B5" },
    { HDA_CODEC_IDT92HD71B6, 0,		"IDT 92HD71B6" },
    { HDA_CODEC_IDT92HD71B6_2, 0,		"IDT 92HD71B6" },
    { HDA_CODEC_IDT92HD71B7, 0,		"IDT 92HD71B7" },
    { HDA_CODEC_IDT92HD71B7_2, 0,		"IDT 92HD71B7" },
    { HDA_CODEC_IDT92HD71B8, 0,		"IDT 92HD71B8" },
    { HDA_CODEC_IDT92HD71B8_2, 0,		"IDT 92HD71B8" },
    { HDA_CODEC_IDT92HD73C1, 0,		"IDT 92HD73C1" },
    { HDA_CODEC_IDT92HD73D1, 0,		"IDT 92HD73D1" },
    { HDA_CODEC_IDT92HD73E1, 0,		"IDT 92HD73E1" },
    { HDA_CODEC_IDT92HD95, 0,		"IDT 92HD95" },
    { HDA_CODEC_IDT92HD75B3, 0,		"IDT 92HD75B3" },
    { HDA_CODEC_IDT92HD88B3, 0,		"IDT 92HD88B3" },
    { HDA_CODEC_IDT92HD88B1, 0,		"IDT 92HD88B1" },
    { HDA_CODEC_IDT92HD88B2, 0,		"IDT 92HD88B2" },
    { HDA_CODEC_IDT92HD88B4, 0,		"IDT 92HD88B4" },
    { HDA_CODEC_IDT92HD75BX, 0,		"IDT 92HD75BX" },
    { HDA_CODEC_IDT92HD81B1C, 0,		"IDT 92HD81B1C" },
    { HDA_CODEC_IDT92HD81B1X, 0,		"IDT 92HD81B1X" },
    { HDA_CODEC_IDT92HD83C1C, 0,		"IDT 92HD83C1C" },
    { HDA_CODEC_IDT92HD83C1X, 0,		"IDT 92HD83C1X" },
    { HDA_CODEC_IDT92HD87B1_3, 0,		"IDT 92HD87B1/3" },
    { HDA_CODEC_IDT92HD87B2_4, 0,		"IDT 92HD87B2/4" },
    { HDA_CODEC_IDT92HD89C3, 0,		"IDT 92HD89C3" },
    { HDA_CODEC_IDT92HD89C2, 0,		"IDT 92HD89C2" },
    { HDA_CODEC_IDT92HD89C1, 0,		"IDT 92HD89C1" },
    { HDA_CODEC_IDT92HD89B3, 0,		"IDT 92HD89B3" },
    { HDA_CODEC_IDT92HD89B2, 0,		"IDT 92HD89B2" },
    { HDA_CODEC_IDT92HD89B1, 0,		"IDT 92HD89B1" },
    { HDA_CODEC_IDT92HD89E3, 0,		"IDT 92HD89E3" },
    { HDA_CODEC_IDT92HD89E2, 0,		"IDT 92HD89E2" },
    { HDA_CODEC_IDT92HD89E1, 0,		"IDT 92HD89E1" },
    { HDA_CODEC_IDT92HD89D3, 0,		"IDT 92HD89D3" },
    { HDA_CODEC_IDT92HD89D2, 0,		"IDT 92HD89D2" },
    { HDA_CODEC_IDT92HD89D1, 0,		"IDT 92HD89D1" },
    { HDA_CODEC_IDT92HD89F3, 0,		"IDT 92HD89F3" },
    { HDA_CODEC_IDT92HD89F2, 0,		"IDT 92HD89F2" },
    { HDA_CODEC_IDT92HD89F1, 0,		"IDT 92HD89F1" },
    { HDA_CODEC_IDT92HD90BXX, 0,		"IDT 92HD90BXX" },
    { HDA_CODEC_IDT92HD91BXX, 0,		"IDT 92HD91BXX" },
    { HDA_CODEC_IDT92HD93BXX, 0,		"IDT 92HD93BXX" },
    { HDA_CODEC_IDT92HD98BXX, 0,		"IDT 92HD98BXX" },
    { HDA_CODEC_IDT92HD99BXX, 0,		"IDT 92HD99BXX" },
    
    { HDA_CODEC_CX20549, 0,		"Conexant CX20549 (Venice)" },
    { HDA_CODEC_CX20551, 0,		"Conexant CX20551 (Waikiki)" },
    { HDA_CODEC_CX20561, 0,		"Conexant CX20561 (Hermosa)" },
    { HDA_CODEC_CX20582, 0,		"Conexant CX20582 (Pebble)" },
    { HDA_CODEC_CX20583, 0,		"Conexant CX20583 (Pebble HSF)" },
    { HDA_CODEC_CX20584, 0,		"Conexant CX20584" },
    { HDA_CODEC_CX20585, 0,		"Conexant CX20585" },
    { HDA_CODEC_CX20588, 0,		"Conexant CX20588" },
    { HDA_CODEC_CX20590, 0,		"Conexant CX20590" },
    { HDA_CODEC_CX20631, 0,		"Conexant CX20631" },
    { HDA_CODEC_CX20632, 0,		"Conexant CX20632" },
    { HDA_CODEC_CX20641, 0,		"Conexant CX20641" },
    { HDA_CODEC_CX20642, 0,		"Conexant CX20642" },
    { HDA_CODEC_CX20651, 0,		"Conexant CX20651" },
    { HDA_CODEC_CX20652, 0,		"Conexant CX20652" },
    { HDA_CODEC_CX20664, 0,		"Conexant CX20664" },
    { HDA_CODEC_CX20665, 0,		"Conexant CX20665" },
    { HDA_CODEC_CX20751, 0,		"Conexant CX20751/2" },
    { HDA_CODEC_CX20751_2, 0,	"Conexant CX20751/2" },
    { HDA_CODEC_CX20751_4, 0,	"Conexant CX20753/4" },
    { HDA_CODEC_CX20755, 0,		"Conexant CX20755" },
    { HDA_CODEC_CX20756, 0,		"Conexant CX20756" },
    { HDA_CODEC_CX20757, 0,		"Conexant CX20757" },
    { HDA_CODEC_CX20952, 0,		"Conexant CX20952" },
    
    { HDA_CODEC_VT1708_8, 0,	"VIA VT1708_8" },
    { HDA_CODEC_VT1708_9, 0,	"VIA VT1708_9" },
    { HDA_CODEC_VT1708_A, 0,	"VIA VT1708_A" },
    { HDA_CODEC_VT1708_B, 0,	"VIA VT1708_B" },
    { HDA_CODEC_VT1709_0, 0,	"VIA VT1709_0" },
    { HDA_CODEC_VT1709_1, 0,	"VIA VT1709_1" },
    { HDA_CODEC_VT1709_2, 0,	"VIA VT1709_2" },
    { HDA_CODEC_VT1709_3, 0,	"VIA VT1709_3" },
    { HDA_CODEC_VT1709_4, 0,	"VIA VT1709_4" },
    { HDA_CODEC_VT1709_5, 0,	"VIA VT1709_5" },
    { HDA_CODEC_VT1709_6, 0,	"VIA VT1709_6" },
    { HDA_CODEC_VT1709_7, 0,	"VIA VT1709_7" },
    { HDA_CODEC_VT1708B_0, 0,	"VIA VT1708B_0" },
    { HDA_CODEC_VT1708B_1, 0,	"VIA VT1708B_1" },
    { HDA_CODEC_VT1708B_2, 0,	"VIA VT1708B_2" },
    { HDA_CODEC_VT1708B_3, 0,	"VIA VT1708B_3" },
    { HDA_CODEC_VT1708B_4, 0,	"VIA VT1708B_4" },
    { HDA_CODEC_VT1708B_5, 0,	"VIA VT1708B_5" },
    { HDA_CODEC_VT1708B_6, 0,	"VIA VT1708B_6" },
    { HDA_CODEC_VT1708B_7, 0,	"VIA VT1708B_7" },
    { HDA_CODEC_VT1708S_0, 0,	"VIA VT1708S_0" },
    { HDA_CODEC_VT1708S_1, 0,	"VIA VT1708S_1" },
    { HDA_CODEC_VT1708S_2, 0,	"VIA VT1708S_2" },
    { HDA_CODEC_VT1708S_3, 0,	"VIA VT1708S_3" },
    { HDA_CODEC_VT1708S_4, 0,	"VIA VT1708S_4" },
    { HDA_CODEC_VT1708S_5, 0,	"VIA VT1708S_5" },
    { HDA_CODEC_VT1708S_6, 0,	"VIA VT1708S_6" },
    { HDA_CODEC_VT1708S_7, 0,	"VIA VT1708S_7" },
    { HDA_CODEC_VT1702_0, 0,	"VIA VT1702_0" },
    { HDA_CODEC_VT1702_1, 0,	"VIA VT1702_1" },
    { HDA_CODEC_VT1702_2, 0,	"VIA VT1702_2" },
    { HDA_CODEC_VT1702_3, 0,	"VIA VT1702_3" },
    { HDA_CODEC_VT1702_4, 0,	"VIA VT1702_4" },
    { HDA_CODEC_VT1702_5, 0,	"VIA VT1702_5" },
    { HDA_CODEC_VT1702_6, 0,	"VIA VT1702_6" },
    { HDA_CODEC_VT1702_7, 0,	"VIA VT1702_7" },
    { HDA_CODEC_VT1716S_0, 0,	"VIA VT1716S_0" },
    { HDA_CODEC_VT1716S_1, 0,	"VIA VT1716S_1" },
    { HDA_CODEC_VT1718S_0, 0,	"VIA VT1718S_0" },
    { HDA_CODEC_VT1718S_1, 0,	"VIA VT1718S_1" },
    { HDA_CODEC_VT1802_0, 0,	"VIA VT1802_0" },
    { HDA_CODEC_VT1802_1, 0,	"VIA VT1802_1" },
    { HDA_CODEC_VT1812, 0,		"VIA VT1812" },
    { HDA_CODEC_VT1818S, 0,		"VIA VT1818S" },
    { HDA_CODEC_VT1828S, 0,		"VIA VT1828S" },
    { HDA_CODEC_VT2002P_0, 0,	"VIA VT2002P_0" },
    { HDA_CODEC_VT2002P_1, 0,	"VIA VT2002P_1" },
    { HDA_CODEC_VT2020, 0,		"VIA VT2020" },
    
    { HDA_CODEC_ATIRS600_1, 0,	"ATI RS600 HDMI" },
    { HDA_CODEC_ATIRS600_2, 0,	"ATI RS600 HDMI" },
    { HDA_CODEC_ATIRS690, 0,	"ATI RS690/780 HDMI" },
    { HDA_CODEC_ATIR6XX, 0,		"ATI R6xx HDMI" },
    
    { HDA_CODEC_NVIDIAMCP67, 0,	"NVIDIA MCP67" },
    { HDA_CODEC_NVIDIAMCP73, 0,	"NVIDIA MCP73" },
    { HDA_CODEC_NVIDIAMCP78, 0,	"NVIDIA MCP78" },
    { HDA_CODEC_NVIDIAMCP78_2, 0,	"NVIDIA MCP78" },
    { HDA_CODEC_NVIDIAMCP78_3, 0,	"NVIDIA MCP78" },
    { HDA_CODEC_NVIDIAMCP78_4, 0,	"NVIDIA MCP78" },
    { HDA_CODEC_NVIDIAMCP7A, 0,	"NVIDIA MCP7A" },
    { HDA_CODEC_NVIDIAGT220, 0,	"NVIDIA GT220" },
    { HDA_CODEC_NVIDIAGT21X, 0,	"NVIDIA GT21x" },
    { HDA_CODEC_NVIDIAMCP89, 0,	"NVIDIA MCP89" },
    { HDA_CODEC_NVIDIAGT240, 0,	"NVIDIA GT240" },
    { HDA_CODEC_NVIDIAGTS450, 0,	"NVIDIA GTS450" },
    { HDA_CODEC_NVIDIAGT440, 0,	"NVIDIA GT440" },
    { HDA_CODEC_NVIDIAGTX470, 0,	"NVIDIA GT470" },
    { HDA_CODEC_NVIDIAGTX550, 0,	"NVIDIA GTX550" },
    { HDA_CODEC_NVIDIAGTX570, 0,	"NVIDIA GTX570" },
    { HDA_CODEC_NVIDIAGT610, 0,	"NVIDIA GT610" },
    
    
    { HDA_CODEC_INTELIP, 0,		"Intel Ibex Peak" },
    { HDA_CODEC_INTELBL, 0,		"Intel Bearlake" },
    { HDA_CODEC_INTELCA, 0,		"Intel Cantiga" },
    { HDA_CODEC_INTELEL, 0,		"Intel Eaglelake" },
    { HDA_CODEC_INTELIP2, 0,	"Intel Ibex Peak" },
    { HDA_CODEC_INTELCPT, 0,	"Intel Cougar Point" },
    { HDA_CODEC_INTELPPT, 0,	"Intel Panther Point" },
    { HDA_CODEC_INTELLLP, 0,	"Intel Lynx Point" },
    //
    { HDA_CODEC_INTELBRW, 0,	"Intel Broadwell HDMI" },
    { HDA_CODEC_INTELSKL, 0,	"Intel Skylake HDMI" },
    { HDA_CODEC_INTELBRO, 0,	"Intel Broxton HDMI" },
    { HDA_CODEC_INTELKAB, 0,	"Intel Kabylake HDMI" },
    { HDA_CODEC_INTELCDT, 0,	"Intel CedarTrail HDMI" },
    { HDA_CODEC_INTELVLV, 0,	"Intel Valleyview2 HDMI" },
    { HDA_CODEC_INTELBSW, 0,	"Intel Braswell HDMI" },
    //
    { HDA_CODEC_INTELCL, 0,		"Intel Crestline" },
    
    { HDA_CODEC_SII1390, 0,		"Silicon Image SiI1390 HDMi" },
    { HDA_CODEC_SII1392, 0,		"Silicon Image SiI1392 HDMi" },
    
    /* Unknown codec */
    { HDA_CODEC_ADXXXX, 0,		"Analog Devices (Unknown)" },
    { HDA_CODEC_AGEREXXXX, 0,	"Lucent/Agere Systems (Unknown)" },
    { HDA_CODEC_ALCXXXX, 0,		"Realtek (Unknown)" },
    { HDA_CODEC_ATIXXXX, 0,		"ATI (Unknown)" },
    { HDA_CODEC_CAXXXX, 0,		"Creative (Unknown)" },
    { HDA_CODEC_CMIXXXX, 0,         "CMedia (Unknown)" },
    { HDA_CODEC_CMIXXXX2, 0,	"CMedia (Unknown)" },
    { HDA_CODEC_CSXXXX, 0,		"Cirrus Logic (Unknown)" },
    { HDA_CODEC_CXXXXX, 0,		"Conexant (Unknown)" },
    //	{ HDA_CODEC_CHXXXX, 0,          "Chrontel (Unknown)" },
    { HDA_CODEC_IDTXXXX, 0,		"IDT (Unknown)" },
    { HDA_CODEC_INTELXXXX, 0,	"Intel (Unknown)" },
    //	{ HDA_CODEC_MOTOXXXX, 0,        "Motorola (Unknown)" },
    { HDA_CODEC_NVIDIAXXXX, 0,	"NVidia (Unknown)" },
    { HDA_CODEC_SIIXXXX, 0,		"Silicon Image (Unknown)" },
    { HDA_CODEC_STACXXXX, 0,	"Sigmatel (Unknown)" },
    { HDA_CODEC_VTXXXX, 0,		"VIA (Unknown)" },
    { 0, 0,		NULL }
};

@interface pciDevice : NSObject
{
    NSNumber *vendor;
    NSNumber *device;
    NSNumber *subVendor;
    NSNumber *subDevice;
    NSNumber *pciClassCode;
    NSNumber *PciClass;
    NSNumber *pciSubClass;
    NSString *vendorString;
    NSString *deviceString;
    NSString *classString;
    NSString *subClassString;
    NSString *fullClassString;
    long fullID;
    long fullSubID;
}
+(NSNumber *)grabEntry:(CFStringRef)entry forService:(io_service_t)service;
+(NSDictionary *)match:(pciDevice *)pci;
+(pciDevice *)create:(io_service_t)service classes:(NSMutableDictionary *)classes vendors:(NSMutableDictionary *)vendors;
+(pciDevice *)create:(io_service_t)service;
-(NSString *)fullClassString;
-(long)fullID;
-(long)fullSubID;
+(NSArray *)readIDs;
-(NSNumber *)vendor;
-(NSNumber *)device;
-(NSNumber *)subVendor;
-(NSNumber *)subDevice;
-(NSNumber *)pciClassCode;
-(NSNumber *)pciClass;
-(NSNumber *)pciSubClass;
-(NSString *)vendorString;
-(NSString *)deviceString;
-(NSString *)classString;
-(NSString *)subClassString;
-(void)setVendor:(NSNumber *)setvendor;
-(void)setDevice:(NSNumber *)setdevice;
-(void)setSubVendor:(NSNumber *)setsubVendor;
-(void)setSubDevice:(NSNumber *)setsubDevice;
-(void)setPciClassCode:(NSNumber *)setpciClassCode;
-(void)setPciClass:(NSNumber *)setpciClass;
-(void)setPciSubClass:(NSNumber *)setpciSubClass;
-(void)setVendorString:(NSString *)setvendorString;
-(void)setDeviceString:(NSString *)setdeviceString;
-(void)setClassString:(NSString *)setclassString;
-(void)setSubClassString:(NSString *)setsubClassString;
@end

@interface pciVendor : NSObject
{
    NSString *name;
    NSMutableDictionary *devices;
}
+(pciVendor *)create:(NSString *)name;
-(void)setName:(NSString *)setname;
-(NSString *)name;
-(void)setDevices:(NSMutableDictionary *)setdevices;
-(NSMutableDictionary *)devices;
@end

@interface pciClass : NSObject
{
    NSString *name;
    NSMutableDictionary *subClasses;
}
+(pciClass *)create:(NSString *)name;
-(void)setName:(NSString *)setname;
-(NSString *)name;
-(void)setSubClasses:(NSMutableDictionary *)setsubClasses;
-(NSMutableDictionary *)subClasses;
@end

@interface hexFormatter : NSValueTransformer
+(BOOL)allowsReverseTransformation;
+(Class)transformedValueClass;
-(id)transformedValue:(id)value;
@end

@interface HDA : NSObject
+ (NSMutableDictionary *)voodooHDAwithIterator:(io_iterator_t)itThis;
+ (NSMutableDictionary *)appleHDAwithIterator:(io_iterator_t)itThis;
@end
#endif

:)

Share this post


Link to post
Share on other sites

@Fabio, from your source:

 

#define HDA_CODEC_ALC898 HDA_CODEC_CONSTRUCT(REALTEK, 0x0898) //

#define HDA_CODEC_ALC899 HDA_CODEC_CONSTRUCT(REALTEK, 0x0899)

 

but I guess ALC899 not even exist. ALC 898 instead have device id 10ec:0899, so should be:

#define HDA_CODEC_ALC898 HDA_CODEC_CONSTRUCT(REALTEK, 0x0899// --> corrected

#define HDA_CODEC_ALC899 HDA_CODEC_CONSTRUCT(REALTEK, 0x0899// to be deleted

 

Ok...

here we go.. I take my time...

getcodecid_9.5.2016.zip

 

ErmaC

Share this post


Link to post
Share on other sites

Tiny update...

- add ALC1220 bare info (mean revision ID = whatever)

 

#define HDA_CODEC_ALC1220	HDA_CODEC_CONSTRUCT(REALTEK, 0x1220)
    { HDA_CODEC_ALC1220, 0,		"Realtek ALC1220" },

precompiled bin

--> getcodecid_Test_2.2.2017.zip

 

ALC1220 info --> http://www.insanelymac.com/forum/files/file/693-applehda-for-realtek-alc1220-10123/

 

ErmaC

Share this post


Link to post
Share on other sites

Tiny update...

- add ALC1220 bare info (mean revision ID = whatever)

 

#define HDA_CODEC_ALC1220	HDA_CODEC_CONSTRUCT(REALTEK, 0x1220)
    { HDA_CODEC_ALC1220, 0,		"Realtek ALC1220" },

precompiled bin

--> attachicon.gifgetcodecid_Test_2.2.2017.zip

 

ALC1220 info --> http://www.insanelymac.com/forum/files/file/693-applehda-for-realtek-alc1220-10123/

 

ErmaC

 

Codec: Realtek ALC1220
Address: 0
AFG Function Id: 0x1 (unsol 1)
Vendor Id: 0x10ec1220
Subsystem Id: 0x1462fa59
Revision Id: 0x100003

 

Share this post


Link to post
Share on other sites

Asus using a different vendorID:

Codec: Realtek ALC S1220A
Address: 0
Vendor Id: 0x10EC1168
Subsystem Id: 0x10438723
Revision Id: 0x100003

 

Thx Mirone

 

So this is a variant of ALC1200 right? and his codec name is ALC S1220A

 

nice... I will add it soon

 

ErmaC

Share this post


Link to post
Share on other sites

Added:

+#define HDA_CODEC_ALCS1220A	HDA_CODEC_CONSTRUCT(REALTEK, 0x1168)
+#define HDA_CODEC_ALC1220	HDA_CODEC_CONSTRUCT(REALTEK, 0x1220)

+{ HDA_CODEC_ALCS1220A, 0,	"Realtek ALCS1220A" },
+{ HDA_CODEC_ALC1220, 0,		"Realtek ALC1220" },
 

Here we go... binary updated...

--> getcodecid_Feb_28_2017.zip

 

ErmaC

Share this post


Link to post
Share on other sites

@Fabio, from your source:

 

#define HDA_CODEC_ALC898 HDA_CODEC_CONSTRUCT(REALTEK, 0x0898) //

#define HDA_CODEC_ALC899 HDA_CODEC_CONSTRUCT(REALTEK, 0x0899)

 

but I guess ALC899 not even exist. ALC 898 instead have device id 10ec:0899, so should be:

#define HDA_CODEC_ALC898 HDA_CODEC_CONSTRUCT(REALTEK, 0x0899// --> corrected

#define HDA_CODEC_ALC899 HDA_CODEC_CONSTRUCT(REALTEK, 0x0899// to be deleted

 

corrected:

//
//  getcodecid.h
//  getcodecid
//
//  Created by Andy Vandijck on 27/12/12.
//  Copyright (c) 2012 AnV Software. All rights reserved.
//

#ifndef getcodecid_getcodecid_h
#define getcodecid_getcodecid_h

#define CODEC_ID(vendor,device) ((((UInt32) vendor & 0xffff) << 16) | \
((UInt32) device & 0xffff))

#define HDA_DEV_MATCH(fl, v)		((fl) == (v) || (fl) == 0xffffffff || \
(((fl) & 0xffff0000) == 0xffff0000 && ((fl) & 0x0000ffff) == ((v) & 0x0000ffff)) || \
(((fl) & 0x0000ffff) == 0x0000ffff && ((fl) & 0xffff0000) == ((v) & 0xffff0000)))

/* All codecs you can eat... */
#define HDA_CODEC_CONSTRUCT(vendor, id) (((UInt32) (vendor##_VENDORID) << 16) | ((id) & 0xffff))

/* Cirrus Logic */
#define CIRRUSLOGIC_VENDORID	0x1013
#define HDA_CODEC_CS4206	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4206)
#define HDA_CODEC_CS4207	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4207)
#define HDA_CODEC_CS4208	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4208) //
#define HDA_CODEC_CS4210	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4210)
#define HDA_CODEC_CS4213	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4213)
#define HDA_CODEC_CSXXXX	HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0xffff)

/* Realtek */
#define REALTEK_VENDORID	0x10ec
#define HDA_CODEC_ALC221	HDA_CODEC_CONSTRUCT(REALTEK, 0x0221)
#define HDA_CODEC_ALC231	HDA_CODEC_CONSTRUCT(REALTEK, 0x0231) //
#define HDA_CODEC_ALC233	HDA_CODEC_CONSTRUCT(REALTEK, 0x0233) //
#define HDA_CODEC_ALC235	HDA_CODEC_CONSTRUCT(REALTEK, 0x0235) //
#define HDA_CODEC_ALC255	HDA_CODEC_CONSTRUCT(REALTEK, 0x0255) //
#define HDA_CODEC_ALC256	HDA_CODEC_CONSTRUCT(REALTEK, 0x0256) //
#define HDA_CODEC_ALC260	HDA_CODEC_CONSTRUCT(REALTEK, 0x0260)
#define HDA_CODEC_ALC262	HDA_CODEC_CONSTRUCT(REALTEK, 0x0262)
#define HDA_CODEC_ALC267	HDA_CODEC_CONSTRUCT(REALTEK, 0x0267)
#define HDA_CODEC_ALC268	HDA_CODEC_CONSTRUCT(REALTEK, 0x0268)
#define HDA_CODEC_ALC269	HDA_CODEC_CONSTRUCT(REALTEK, 0x0269)
#define HDA_CODEC_ALC270	HDA_CODEC_CONSTRUCT(REALTEK, 0x0270)
#define HDA_CODEC_ALC272	HDA_CODEC_CONSTRUCT(REALTEK, 0x0272)
#define HDA_CODEC_ALC273	HDA_CODEC_CONSTRUCT(REALTEK, 0x0273)
#define HDA_CODEC_ALC275	HDA_CODEC_CONSTRUCT(REALTEK, 0x0275)
#define HDA_CODEC_ALC276	HDA_CODEC_CONSTRUCT(REALTEK, 0x0276) //
#define HDA_CODEC_ALC280	HDA_CODEC_CONSTRUCT(REALTEK, 0x0280)
#define HDA_CODEC_ALC282	HDA_CODEC_CONSTRUCT(REALTEK, 0x0282)
#define HDA_CODEC_ALC283	HDA_CODEC_CONSTRUCT(REALTEK, 0x0283)
#define HDA_CODEC_ALC284	HDA_CODEC_CONSTRUCT(REALTEK, 0x0284)
#define HDA_CODEC_ALC285	HDA_CODEC_CONSTRUCT(REALTEK, 0x0285) //
#define HDA_CODEC_ALC286	HDA_CODEC_CONSTRUCT(REALTEK, 0x0286) //
#define HDA_CODEC_ALC288	HDA_CODEC_CONSTRUCT(REALTEK, 0x0288)
#define HDA_CODEC_ALC290	HDA_CODEC_CONSTRUCT(REALTEK, 0x0290)
#define HDA_CODEC_ALC292	HDA_CODEC_CONSTRUCT(REALTEK, 0x0292) //
#define HDA_CODEC_ALC293	HDA_CODEC_CONSTRUCT(REALTEK, 0x0293) //
#define HDA_CODEC_ALC298	HDA_CODEC_CONSTRUCT(REALTEK, 0x0298) //
#define HDA_CODEC_ALC660	HDA_CODEC_CONSTRUCT(REALTEK, 0x0660)
#define HDA_CODEC_ALC662	HDA_CODEC_CONSTRUCT(REALTEK, 0x0662)
#define HDA_CODEC_ALC663	HDA_CODEC_CONSTRUCT(REALTEK, 0x0663)
#define HDA_CODEC_ALC665	HDA_CODEC_CONSTRUCT(REALTEK, 0x0665)
#define HDA_CODEC_ALC667	HDA_CODEC_CONSTRUCT(REALTEK, 0x0667) //
#define HDA_CODEC_ALC668	HDA_CODEC_CONSTRUCT(REALTEK, 0x0668) //
#define HDA_CODEC_ALC670	HDA_CODEC_CONSTRUCT(REALTEK, 0x0670)
#define HDA_CODEC_ALC671	HDA_CODEC_CONSTRUCT(REALTEK, 0x0671) //
#define HDA_CODEC_ALC680	HDA_CODEC_CONSTRUCT(REALTEK, 0x0680) //
#define HDA_CODEC_ALC861	HDA_CODEC_CONSTRUCT(REALTEK, 0x0861)
#define HDA_CODEC_ALC861VD	HDA_CODEC_CONSTRUCT(REALTEK, 0x0862)
#define HDA_CODEC_ALC867	HDA_CODEC_CONSTRUCT(REALTEK, 0x0867) //
#define HDA_CODEC_ALC880	HDA_CODEC_CONSTRUCT(REALTEK, 0x0880)
#define HDA_CODEC_ALC882	HDA_CODEC_CONSTRUCT(REALTEK, 0x0882)
#define HDA_CODEC_ALC883	HDA_CODEC_CONSTRUCT(REALTEK, 0x0883)
#define HDA_CODEC_ALC885	HDA_CODEC_CONSTRUCT(REALTEK, 0x0885)
#define HDA_CODEC_ALC886	HDA_CODEC_CONSTRUCT(REALTEK, 0x0886) //
#define HDA_CODEC_ALC887	HDA_CODEC_CONSTRUCT(REALTEK, 0x0887)
#define HDA_CODEC_ALC888	HDA_CODEC_CONSTRUCT(REALTEK, 0x0888)
#define HDA_CODEC_ALC889	HDA_CODEC_CONSTRUCT(REALTEK, 0x0889)
#define HDA_CODEC_ALC892	HDA_CODEC_CONSTRUCT(REALTEK, 0x0892)
#define HDA_CODEC_ALC898	HDA_CODEC_CONSTRUCT(REALTEK, 0x0899) //
#define HDA_CODEC_ALC900	HDA_CODEC_CONSTRUCT(REALTEK, 0x0900)
#define HDA_CODEC_ALCXXXX	HDA_CODEC_CONSTRUCT(REALTEK, 0xffff)
/* Creative */
#define CREATIVE_VENDORID	0x1102
#define HDA_CODEC_XFIEA		HDA_CODEC_CONSTRUCT(CREATIVE, 0x000a)
#define HDA_CODEC_XFIED         HDA_CODEC_CONSTRUCT(CREATIVE, 0x000b) //
#define HDA_CODEC_SB0880	HDA_CODEC_CONSTRUCT(CREATIVE, 0x000d)
#define HDA_CODEC_CA0132	HDA_CODEC_CONSTRUCT(CREATIVE, 0x0011) //
#define HDA_CODEC_CAXXXX	HDA_CODEC_CONSTRUCT(CREATIVE, 0xffff)

/* Analog Devices */
#define ANALOGDEVICES_VENDORID	0x11d4
#define HDA_CODEC_AD1884A	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x184a)
#define HDA_CODEC_AD1882	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1882)
#define HDA_CODEC_AD1883	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1883)
#define HDA_CODEC_AD1884	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1884)
#define HDA_CODEC_AD1984A	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x194a)
#define HDA_CODEC_AD1984B	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x194b)
#define HDA_CODEC_AD1981HD	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1981)
#define HDA_CODEC_AD1983	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1983)
#define HDA_CODEC_AD1984	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1984)
#define HDA_CODEC_AD1986A	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1986)
#define HDA_CODEC_AD1987	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1987)
#define HDA_CODEC_AD1988	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1988)
#define HDA_CODEC_AD1988B	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x198b)
#define HDA_CODEC_AD1882A	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x882a)
#define HDA_CODEC_AD1989A	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x989a) //
#define HDA_CODEC_AD1989B	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x989b)
#define HDA_CODEC_ADXXXX	HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0xffff)

/* CMedia */
#define CMEDIA_VENDORID         0x13f6
#define HDA_CODEC_CMI8880       HDA_CODEC_CONSTRUCT(CMEDIA, 0x8880) //
#define HDA_CODEC_CMI9880       HDA_CODEC_CONSTRUCT(CMEDIA, 0x9880)
#define HDA_CODEC_CMIXXXX       HDA_CODEC_CONSTRUCT(CMEDIA, 0xffff) //

#define CMEDIA2_VENDORID        0x434d
#define HDA_CODEC_CMI98802      HDA_CODEC_CONSTRUCT(CMEDIA2, 0x4980)
#define HDA_CODEC_CMIXXXX2      HDA_CODEC_CONSTRUCT(CMEDIA2, 0xffff)

/* Sigmatel */
#define SIGMATEL_VENDORID       0x8384
#define HDA_CODEC_STAC9230X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7612)
#define HDA_CODEC_STAC9230D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7613)
#define HDA_CODEC_STAC9229X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7614)
#define HDA_CODEC_STAC9229D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7615)
#define HDA_CODEC_STAC9228X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7616)
#define HDA_CODEC_STAC9228D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7617)
#define HDA_CODEC_STAC9227X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7618)
#define HDA_CODEC_STAC9227D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7619)
#define HDA_CODEC_STAC9274      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7620)
#define HDA_CODEC_STAC9274D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7621)
#define HDA_CODEC_STAC9273X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7622)
#define HDA_CODEC_STAC9273D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7623)
#define HDA_CODEC_STAC9272X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7624)
#define HDA_CODEC_STAC9272D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7625)
#define HDA_CODEC_STAC9271X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7626)
#define HDA_CODEC_STAC9271D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7627)
#define HDA_CODEC_STAC9274X5NH  HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7628)
#define HDA_CODEC_STAC9274D5NH  HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7629)
#define HDA_CODEC_STAC9202      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7632) //
#define HDA_CODEC_STAC9202D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7633) //
#define HDA_CODEC_STAC9250      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7634)
#define HDA_CODEC_STAC9250D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7635) //
#define HDA_CODEC_STAC9251      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7636)
#define HDA_CODEC_STAC9250D_1   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7637) //
#define HDA_CODEC_IDT92HD700X   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7638)
#define HDA_CODEC_IDT92HD700D   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7639)
#define HDA_CODEC_IDT92HD206X   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7645)
#define HDA_CODEC_IDT92HD206D   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7646)
#define HDA_CODEC_CXD9872RDK    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7661)
#define HDA_CODEC_STAC9872AK    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7662)
#define HDA_CODEC_CXD9872AKD    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7664)
#define HDA_CODEC_STAC9221      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7680)
#define HDA_CODEC_STAC922XD     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7681)
#define HDA_CODEC_STAC9221_A2   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7682)
#define HDA_CODEC_STAC9221D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7683)
#define HDA_CODEC_STAC9220      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7690)
#define HDA_CODEC_STAC9200D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7691)
#define HDA_CODEC_IDT92HD005    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7698)
#define HDA_CODEC_IDT92HD005D   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7699)
#define HDA_CODEC_STAC9205X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a0)
#define HDA_CODEC_STAC9205D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a1)
#define HDA_CODEC_STAC9204X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a2)
#define HDA_CODEC_STAC9204D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a3)
#define HDA_CODEC_STAC9255      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a4) //
#define HDA_CODEC_STAC9255D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a5) //
#define HDA_CODEC_STAC9254      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a6) //
#define HDA_CODEC_STAC9254D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a7) //
#define HDA_CODEC_STAC9220_A2	HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7880)
#define HDA_CODEC_STAC9220_A1	HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7882)
#define HDA_CODEC_STACXXXX	HDA_CODEC_CONSTRUCT(SIGMATEL, 0xffff)

/* IDT */
#define IDT_VENDORID		0x111d
#define HDA_CODEC_IDT92HD75BX	HDA_CODEC_CONSTRUCT(IDT, 0x7603)
#define HDA_CODEC_IDT92HD83C1X	HDA_CODEC_CONSTRUCT(IDT, 0x7604)
#define HDA_CODEC_IDT92HD81B1X	HDA_CODEC_CONSTRUCT(IDT, 0x7605)
#define HDA_CODEC_IDT92HD75B3	HDA_CODEC_CONSTRUCT(IDT, 0x7608)
#define HDA_CODEC_IDT92HD88B3	HDA_CODEC_CONSTRUCT(IDT, 0x7666) //
#define HDA_CODEC_IDT92HD88B1   HDA_CODEC_CONSTRUCT(IDT, 0x7667) //
#define HDA_CODEC_IDT92HD88B2   HDA_CODEC_CONSTRUCT(IDT, 0x7668) //
#define HDA_CODEC_IDT92HD88B4   HDA_CODEC_CONSTRUCT(IDT, 0x7669) //
#define HDA_CODEC_IDT92HD73D1	HDA_CODEC_CONSTRUCT(IDT, 0x7674)
#define HDA_CODEC_IDT92HD73C1	HDA_CODEC_CONSTRUCT(IDT, 0x7675)
#define HDA_CODEC_IDT92HD73E1	HDA_CODEC_CONSTRUCT(IDT, 0x7676)
#define HDA_CODEC_IDT92HD95     HDA_CODEC_CONSTRUCT(IDT, 0x7695) //
#define HDA_CODEC_IDT92HD71B8   HDA_CODEC_CONSTRUCT(IDT, 0x76b0)
#define HDA_CODEC_IDT92HD71B8_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b1)
#define HDA_CODEC_IDT92HD71B7   HDA_CODEC_CONSTRUCT(IDT, 0x76b2)
#define HDA_CODEC_IDT92HD71B7_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b3)
#define HDA_CODEC_IDT92HD71B6   HDA_CODEC_CONSTRUCT(IDT, 0x76b4)
#define HDA_CODEC_IDT92HD71B6_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b5)
#define HDA_CODEC_IDT92HD71B5   HDA_CODEC_CONSTRUCT(IDT, 0x76b6)
#define HDA_CODEC_IDT92HD71B5_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b7)
#define HDA_CODEC_IDT92HD89C3   HDA_CODEC_CONSTRUCT(IDT, 0x76c0)
#define HDA_CODEC_IDT92HD89C2   HDA_CODEC_CONSTRUCT(IDT, 0x76c1)
#define HDA_CODEC_IDT92HD89C1   HDA_CODEC_CONSTRUCT(IDT, 0x76c2)
#define HDA_CODEC_IDT92HD89B3   HDA_CODEC_CONSTRUCT(IDT, 0x76c3)
#define HDA_CODEC_IDT92HD89B2   HDA_CODEC_CONSTRUCT(IDT, 0x76c4)
#define HDA_CODEC_IDT92HD89B1   HDA_CODEC_CONSTRUCT(IDT, 0x76c5)
#define HDA_CODEC_IDT92HD89E3   HDA_CODEC_CONSTRUCT(IDT, 0x76c6)
#define HDA_CODEC_IDT92HD89E2   HDA_CODEC_CONSTRUCT(IDT, 0x76c7)
#define HDA_CODEC_IDT92HD89E1   HDA_CODEC_CONSTRUCT(IDT, 0x76c8)
#define HDA_CODEC_IDT92HD89D3   HDA_CODEC_CONSTRUCT(IDT, 0x76c9)
#define HDA_CODEC_IDT92HD89D2   HDA_CODEC_CONSTRUCT(IDT, 0x76ca)
#define HDA_CODEC_IDT92HD89D1   HDA_CODEC_CONSTRUCT(IDT, 0x76cb)
#define HDA_CODEC_IDT92HD89F3   HDA_CODEC_CONSTRUCT(IDT, 0x76cc)
#define HDA_CODEC_IDT92HD89F2   HDA_CODEC_CONSTRUCT(IDT, 0x76cd)
#define HDA_CODEC_IDT92HD89F1   HDA_CODEC_CONSTRUCT(IDT, 0x76ce)
#define HDA_CODEC_IDT92HD87B1_3 HDA_CODEC_CONSTRUCT(IDT, 0x76d1)
#define HDA_CODEC_IDT92HD83C1C  HDA_CODEC_CONSTRUCT(IDT, 0x76d4)
#define HDA_CODEC_IDT92HD81B1C  HDA_CODEC_CONSTRUCT(IDT, 0x76d5)
#define HDA_CODEC_IDT92HD87B2_4 HDA_CODEC_CONSTRUCT(IDT, 0x76d9)
#define HDA_CODEC_IDT92HD93BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76df)
#define HDA_CODEC_IDT92HD91BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e0)
#define HDA_CODEC_IDT92HD98BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e3)
#define HDA_CODEC_IDT92HD99BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e5)
#define HDA_CODEC_IDT92HD90BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e7)
#define HDA_CODEC_IDT92HD66B1X5 HDA_CODEC_CONSTRUCT(IDT, 0x76e8)
#define HDA_CODEC_IDT92HD66B2X5 HDA_CODEC_CONSTRUCT(IDT, 0x76e9)
#define HDA_CODEC_IDT92HD66B3X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ea)
#define HDA_CODEC_IDT92HD66C1X5 HDA_CODEC_CONSTRUCT(IDT, 0x76eb)
#define HDA_CODEC_IDT92HD66C2X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ec)
#define HDA_CODEC_IDT92HD66C3X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ed)
#define HDA_CODEC_IDT92HD66B1X3 HDA_CODEC_CONSTRUCT(IDT, 0x76ee)
#define HDA_CODEC_IDT92HD66B2X3 HDA_CODEC_CONSTRUCT(IDT, 0x76ef)
#define HDA_CODEC_IDT92HD66B3X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f0)
#define HDA_CODEC_IDT92HD66C1X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f1)
#define HDA_CODEC_IDT92HD66C2X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f2)
#define HDA_CODEC_IDT92HD66C3_65        HDA_CODEC_CONSTRUCT(IDT, 0x76f3)
#define HDA_CODEC_IDTXXXX       HDA_CODEC_CONSTRUCT(IDT, 0xffff)

/* Silicon Image */
#define SII_VENDORID		0x1095
#define HDA_CODEC_SII1390       HDA_CODEC_CONSTRUCT(SII, 0x1390)
#define HDA_CODEC_SII1392       HDA_CODEC_CONSTRUCT(SII, 0x1392)
#define HDA_CODEC_SIIXXXX       HDA_CODEC_CONSTRUCT(SII, 0xffff)

/* Lucent/Agere */
#define AGERE_VENDORID		0x11c1
#define HDA_CODEC_AGEREXXXX     HDA_CODEC_CONSTRUCT(AGERE, 0xffff)

/* Conexant */
#define CONEXANT_VENDORID       0x14f1
#define HDA_CODEC_CX20549       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5045)
#define HDA_CODEC_CX20551       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5047)
#define HDA_CODEC_CX20561       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5051)
#define HDA_CODEC_CX20582       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5066)
#define HDA_CODEC_CX20583       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5067)
#define HDA_CODEC_CX20584       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5068)
#define HDA_CODEC_CX20585       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5069)
#define HDA_CODEC_CX20588       HDA_CODEC_CONSTRUCT(CONEXANT, 0x506c)
#define HDA_CODEC_CX20590       HDA_CODEC_CONSTRUCT(CONEXANT, 0x506e)
#define HDA_CODEC_CX20631       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5097)
#define HDA_CODEC_CX20632       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5098)
#define HDA_CODEC_CX20641       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50a1)
#define HDA_CODEC_CX20642       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50a2)
#define HDA_CODEC_CX20651       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50ab)
#define HDA_CODEC_CX20652       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50ac)
#define HDA_CODEC_CX20664       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50b8)
#define HDA_CODEC_CX20665       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50b9)
#define HDA_CODEC_CX20751       HDA_CODEC_CONSTRUCT(CONEXANT, 0x510f) //
#define HDA_CODEC_CX20751_2     HDA_CODEC_CONSTRUCT(CONEXANT, 0x5110) //
#define HDA_CODEC_CX20751_4     HDA_CODEC_CONSTRUCT(CONEXANT, 0x5111) //
#define HDA_CODEC_CX20755       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5113) //
#define HDA_CODEC_CX20756       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5114) //
#define HDA_CODEC_CX20757       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5115) //
#define HDA_CODEC_CX20952       HDA_CODEC_CONSTRUCT(CONEXANT, 0x51d7) //
#define HDA_CODEC_CXXXXX        HDA_CODEC_CONSTRUCT(CONEXANT, 0xffff)

/* VIA */
#define VIA_VENDORID		0x1106
#define HDA_CODEC_VT1708_8      HDA_CODEC_CONSTRUCT(VIA, 0x1708)
#define HDA_CODEC_VT1708_9      HDA_CODEC_CONSTRUCT(VIA, 0x1709)
#define HDA_CODEC_VT1708_A      HDA_CODEC_CONSTRUCT(VIA, 0x170a)
#define HDA_CODEC_VT1708_B      HDA_CODEC_CONSTRUCT(VIA, 0x170b)
#define HDA_CODEC_VT1709_0      HDA_CODEC_CONSTRUCT(VIA, 0xe710)
#define HDA_CODEC_VT1709_1      HDA_CODEC_CONSTRUCT(VIA, 0xe711)
#define HDA_CODEC_VT1709_2      HDA_CODEC_CONSTRUCT(VIA, 0xe712)
#define HDA_CODEC_VT1709_3      HDA_CODEC_CONSTRUCT(VIA, 0xe713)
#define HDA_CODEC_VT1709_4      HDA_CODEC_CONSTRUCT(VIA, 0xe714)
#define HDA_CODEC_VT1709_5      HDA_CODEC_CONSTRUCT(VIA, 0xe715)
#define HDA_CODEC_VT1709_6      HDA_CODEC_CONSTRUCT(VIA, 0xe716)
#define HDA_CODEC_VT1709_7      HDA_CODEC_CONSTRUCT(VIA, 0xe717)
#define HDA_CODEC_VT1708B_0     HDA_CODEC_CONSTRUCT(VIA, 0xe720)
#define HDA_CODEC_VT1708B_1     HDA_CODEC_CONSTRUCT(VIA, 0xe721)
#define HDA_CODEC_VT1708B_2     HDA_CODEC_CONSTRUCT(VIA, 0xe722)
#define HDA_CODEC_VT1708B_3     HDA_CODEC_CONSTRUCT(VIA, 0xe723)
#define HDA_CODEC_VT1708B_4     HDA_CODEC_CONSTRUCT(VIA, 0xe724)
#define HDA_CODEC_VT1708B_5     HDA_CODEC_CONSTRUCT(VIA, 0xe725)
#define HDA_CODEC_VT1708B_6     HDA_CODEC_CONSTRUCT(VIA, 0xe726)
#define HDA_CODEC_VT1708B_7     HDA_CODEC_CONSTRUCT(VIA, 0xe727)
#define HDA_CODEC_VT1708S_0     HDA_CODEC_CONSTRUCT(VIA, 0x0397)
#define HDA_CODEC_VT1708S_1     HDA_CODEC_CONSTRUCT(VIA, 0x1397)
#define HDA_CODEC_VT1708S_2     HDA_CODEC_CONSTRUCT(VIA, 0x2397)
#define HDA_CODEC_VT1708S_3     HDA_CODEC_CONSTRUCT(VIA, 0x3397)
#define HDA_CODEC_VT1708S_4     HDA_CODEC_CONSTRUCT(VIA, 0x4397)
#define HDA_CODEC_VT1708S_5     HDA_CODEC_CONSTRUCT(VIA, 0x5397)
#define HDA_CODEC_VT1708S_6     HDA_CODEC_CONSTRUCT(VIA, 0x6397)
#define HDA_CODEC_VT1708S_7     HDA_CODEC_CONSTRUCT(VIA, 0x7397)
#define HDA_CODEC_VT1702_0      HDA_CODEC_CONSTRUCT(VIA, 0x0398)
#define HDA_CODEC_VT1702_1      HDA_CODEC_CONSTRUCT(VIA, 0x1398)
#define HDA_CODEC_VT1702_2      HDA_CODEC_CONSTRUCT(VIA, 0x2398)
#define HDA_CODEC_VT1702_3      HDA_CODEC_CONSTRUCT(VIA, 0x3398)
#define HDA_CODEC_VT1702_4      HDA_CODEC_CONSTRUCT(VIA, 0x4398)
#define HDA_CODEC_VT1702_5      HDA_CODEC_CONSTRUCT(VIA, 0x5398)
#define HDA_CODEC_VT1702_6      HDA_CODEC_CONSTRUCT(VIA, 0x6398)
#define HDA_CODEC_VT1702_7      HDA_CODEC_CONSTRUCT(VIA, 0x7398)
#define HDA_CODEC_VT1716S_0     HDA_CODEC_CONSTRUCT(VIA, 0x0433)
#define HDA_CODEC_VT1716S_1     HDA_CODEC_CONSTRUCT(VIA, 0xa721)
#define HDA_CODEC_VT1718S_0     HDA_CODEC_CONSTRUCT(VIA, 0x0428)
#define HDA_CODEC_VT1718S_1     HDA_CODEC_CONSTRUCT(VIA, 0x4428)
#define HDA_CODEC_VT1802_0      HDA_CODEC_CONSTRUCT(VIA, 0x0446)
#define HDA_CODEC_VT1802_1      HDA_CODEC_CONSTRUCT(VIA, 0x8446)
#define HDA_CODEC_VT1812        HDA_CODEC_CONSTRUCT(VIA, 0x0448)
#define HDA_CODEC_VT1818S       HDA_CODEC_CONSTRUCT(VIA, 0x0440)
#define HDA_CODEC_VT1828S       HDA_CODEC_CONSTRUCT(VIA, 0x4441)
#define HDA_CODEC_VT2002P_0     HDA_CODEC_CONSTRUCT(VIA, 0x0438)
#define HDA_CODEC_VT2002P_1     HDA_CODEC_CONSTRUCT(VIA, 0x4438)
#define HDA_CODEC_VT2020        HDA_CODEC_CONSTRUCT(VIA, 0x0441)
#define HDA_CODEC_VTXXXX        HDA_CODEC_CONSTRUCT(VIA, 0xffff)

/* ATI */
#define ATI_VENDORID		0x1002
#define HDA_CODEC_ATIRS600_1	HDA_CODEC_CONSTRUCT(ATI, 0x793c)
#define HDA_CODEC_ATIRS600_2	HDA_CODEC_CONSTRUCT(ATI, 0x7919)
#define HDA_CODEC_ATIRS690      HDA_CODEC_CONSTRUCT(ATI, 0x791a)
#define HDA_CODEC_ATIR6XX       HDA_CODEC_CONSTRUCT(ATI, 0xaa01)
#define HDA_CODEC_ATIXXXX       HDA_CODEC_CONSTRUCT(ATI, 0xffff)

/* NVIDIA */
#define NVIDIA_VENDORID		0x10de
#define HDA_CODEC_NVIDIAMCP78	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0002)
#define HDA_CODEC_NVIDIAMCP78_2	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0003)
#define HDA_CODEC_NVIDIAMCP78_3	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0005)
#define HDA_CODEC_NVIDIAMCP78_4	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0006)
#define HDA_CODEC_NVIDIAMCP7A	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0007)
#define HDA_CODEC_NVIDIAGT220	HDA_CODEC_CONSTRUCT(NVIDIA, 0x000a)
#define HDA_CODEC_NVIDIAGT21X	HDA_CODEC_CONSTRUCT(NVIDIA, 0x000b)
#define HDA_CODEC_NVIDIAMCP89	HDA_CODEC_CONSTRUCT(NVIDIA, 0x000c)
#define HDA_CODEC_NVIDIAGT240	HDA_CODEC_CONSTRUCT(NVIDIA, 0x000d)
#define HDA_CODEC_NVIDIAGTX470  HDA_CODEC_CONSTRUCT(NVIDIA, 0x0010) //
#define HDA_CODEC_NVIDIAGTS450	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0011)
/*
 0x10de0012, GPU 12 HDMI/DP
 0x10de0013, GPU 13 HDMI/DP
 */
#define HDA_CODEC_NVIDIAGT440	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0014)
#define HDA_CODEC_NVIDIAGTX550	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0015)
//0x10de0016, GPU 16 HDMI/DP
#define HDA_CODEC_NVIDIAGTX570	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0018)
#define HDA_CODEC_NVIDIAGT610	HDA_CODEC_CONSTRUCT(NVIDIA, 0x001c) //
/*
 0x10de0018, GPU 18 HDMI/DP
 0x10de0019, GPU 19 HDMI/DP
 0x10de001a, GPU 1a HDMI/DP
 0x10de001b, GPU 1b HDMI/DP
 0x10de001c, GPU 1c HDMI/DP
 0x10de0020, Tegra30 HDMI
 0x10de0022, Tegra114 HDMI
 0x10de0028, Tegra124 HDMI
 0x10de0029, Tegra210 HDMI/DP
 0x10de0040, GPU 40 HDMI/DP
 0x10de0041, GPU 41 HDMI/DP
 0x10de0042, GPU 42 HDMI/DP
 0x10de0043, GPU 43 HDMI/DP
 0x10de0044, GPU 44 HDMI/DP
 0x10de0051, GPU 51 HDMI/DP
 0x10de0060, GPU 60 HDMI/DP
 */
#define HDA_CODEC_NVIDIAMCP67	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0067)
/*
 0x10de0070, GPU 70 HDMI/DP
 0x10de0071, GPU 71 HDMI/DP
 0x10de0072, GPU 72 HDMI/DP
 0x10de007d, GPU 7d HDMI/DP
 0x10de0082, GPU 82 HDMI/DP
 0x10de0083, GPU 83 HDMI/DP
 */
#define HDA_CODEC_NVIDIAMCP73	HDA_CODEC_CONSTRUCT(NVIDIA, 0x8001)
#define HDA_CODEC_NVIDIAXXXX	HDA_CODEC_CONSTRUCT(NVIDIA, 0xffff)


/* INTEL */
#define INTEL_VENDORID		0x8086
#define HDA_CODEC_INTELIP	HDA_CODEC_CONSTRUCT(INTEL, 0x0054)
#define HDA_CODEC_INTELBL	HDA_CODEC_CONSTRUCT(INTEL, 0x2801)
#define HDA_CODEC_INTELCA	HDA_CODEC_CONSTRUCT(INTEL, 0x2802)
#define HDA_CODEC_INTELEL	HDA_CODEC_CONSTRUCT(INTEL, 0x2803)
#define HDA_CODEC_INTELIP2	HDA_CODEC_CONSTRUCT(INTEL, 0x2804)
#define HDA_CODEC_INTELCPT	HDA_CODEC_CONSTRUCT(INTEL, 0x2805)
#define HDA_CODEC_INTELPPT	HDA_CODEC_CONSTRUCT(INTEL, 0x2806) // Panther Point HDMI
#define HDA_CODEC_INTELLLP	HDA_CODEC_CONSTRUCT(INTEL, 0x2807) // Haswell HDMI
#define HDA_CODEC_INTELBRW  HDA_CODEC_CONSTRUCT(INTEL, 0x2808) // Broadwell HDMI
#define HDA_CODEC_INTELSKL  HDA_CODEC_CONSTRUCT(INTEL, 0x2809) // Skylake HDMI
#define HDA_CODEC_INTELBRO  HDA_CODEC_CONSTRUCT(INTEL, 0x280a) // Broxton HDMI
#define HDA_CODEC_INTELKAB  HDA_CODEC_CONSTRUCT(INTEL, 0x280b) // Kabylake HDMI
#define HDA_CODEC_INTELCDT  HDA_CODEC_CONSTRUCT(INTEL, 0x2880) // CedarTrail HDMI
#define HDA_CODEC_INTELVLV  HDA_CODEC_CONSTRUCT(INTEL, 0x2882) // Valleyview2 HDMI
#define HDA_CODEC_INTELBSW  HDA_CODEC_CONSTRUCT(INTEL, 0x2883) // Braswell HDMI
#define HDA_CODEC_INTELCL	HDA_CODEC_CONSTRUCT(INTEL, 0x29fb) // Crestline HDMI
#define HDA_CODEC_INTELXXXX	HDA_CODEC_CONSTRUCT(INTEL, 0xffff)

static const struct
{
    UInt32 id;
    UInt32 rev_id;
    char *name;
} gCodecList[] = {
    { HDA_CODEC_CS4206, 0,		"Cirrus Logic CS4206" },
    { HDA_CODEC_CS4207, 0,		"Cirrus Logic CS4207" },
    { HDA_CODEC_CS4208, 0,		"Cirrus Logic CS4208" },
    { HDA_CODEC_CS4210, 0,		"Cirrus Logic CS4210" },
    { HDA_CODEC_CS4213, 0,		"Cirrus Logic CS4213" },
    
    { HDA_CODEC_ALC221, 0,		"Realtek ALC221" },
    { HDA_CODEC_ALC231, 0,		"Realtek ALC231" },
    { HDA_CODEC_ALC233, 0,		"Realtek ALC233" },
    { HDA_CODEC_ALC233, 0x100003,		"Realtek ALC3236" },
    { HDA_CODEC_ALC235, 0,		"Realtek ALC235" },
    { HDA_CODEC_ALC255, 0,		"Realtek ALC255" },
    { HDA_CODEC_ALC256, 0,		"Realtek ALC256" },
    { HDA_CODEC_ALC260, 0,		"Realtek ALC260" },
    { HDA_CODEC_ALC262, 0,		"Realtek ALC262" },
    { HDA_CODEC_ALC262, 0x100100,	"Realtek ALC262" },
    { HDA_CODEC_ALC267, 0,		"Realtek ALC267" },
    { HDA_CODEC_ALC268, 0,		"Realtek ALC268" },
    { HDA_CODEC_ALC269, 0,		"Realtek ALC269" },
    { HDA_CODEC_ALC270, 0,		"Realtek ALC270" },
    { HDA_CODEC_ALC272, 0,		"Realtek ALC272" },
    { HDA_CODEC_ALC273, 0,		"Realtek ALC273" },
    { HDA_CODEC_ALC275, 0,		"Realtek ALC275" },
    { HDA_CODEC_ALC276, 0,          "Realtek ALC276" },
    { HDA_CODEC_ALC280, 0,		"Realtek ALC280" },
    { HDA_CODEC_ALC282, 0,		"Realtek ALC282" },
    { HDA_CODEC_ALC283, 0,		"Realtek ALC283" },
    { HDA_CODEC_ALC284, 0,		"Realtek ALC284" },
    { HDA_CODEC_ALC285, 0,          "Realtek ALC285" },
    { HDA_CODEC_ALC286, 0,          "Realtek ALC286" },
    { HDA_CODEC_ALC288, 0,		"Realtek ALC288" },
    { HDA_CODEC_ALC290, 0,		"Realtek ALC290" },
    { HDA_CODEC_ALC292, 0,          "Realtek ALC292" },
    { HDA_CODEC_ALC292, 0x100001,   "Realtek ALC3232" },
    { HDA_CODEC_ALC293, 0,          "Realtek ALC293" },
    { HDA_CODEC_ALC298, 0,          "Realtek ALC298" },
    { HDA_CODEC_ALC660, 0,		"Realtek ALC660-VD" },
    { HDA_CODEC_ALC662, 0,		"Realtek ALC662" },
    { HDA_CODEC_ALC662, 0x100101,	"Realtek ALC662 rev1" },
    { HDA_CODEC_ALC662, 0x100002,	"Realtek ALC662 rev2" },
    { HDA_CODEC_ALC662, 0x100300,	"Realtek ALC662 rev3" },
    { HDA_CODEC_ALC663, 0,		"Realtek ALC663" },
    { HDA_CODEC_ALC665, 0,		"Realtek ALC665" },
    { HDA_CODEC_ALC667, 0,          "Realtek ALC667" },
    { HDA_CODEC_ALC668, 0,          "Realtek ALC668" },
    { HDA_CODEC_ALC670, 0,          "Realtek ALC670" },
    { HDA_CODEC_ALC671, 0,          "Realtek ALC671" },
    { HDA_CODEC_ALC680, 0,          "Realtek ALC680" },
    { HDA_CODEC_ALC861, 0,		"Realtek ALC861" },
    { HDA_CODEC_ALC861, 0x100340,	"Realtek ALC660" },
    { HDA_CODEC_ALC861VD, 0,        "Realtek ALC861-VD" },
    { HDA_CODEC_ALC867, 0,          "Realtek ALC891" },
    { HDA_CODEC_ALC880, 0,		"Realtek ALC880" },
    { HDA_CODEC_ALC880, 0x100800,	"Realtek ALC880" },
    { HDA_CODEC_ALC882, 0,		"Realtek ALC882" },
    { HDA_CODEC_ALC883, 0,		"Realtek ALC883" },
    { HDA_CODEC_ALC885, 0,		"Realtek ALC885" },
    { HDA_CODEC_ALC885, 0x100101,	"Realtek ALC889A" },
    { HDA_CODEC_ALC885, 0x100103,	"Realtek ALC889A" },
    { HDA_CODEC_ALC886, 0,          "Realtek ALC886" },
    { HDA_CODEC_ALC887, 0,		"Realtek ALC887" },
    { HDA_CODEC_ALC888, 0,		"Realtek ALC888" },
    { HDA_CODEC_ALC888, 0x100101,	"Realtek ALC1200" },
    { HDA_CODEC_ALC889, 0,		"Realtek ALC889" },
    { HDA_CODEC_ALC892, 0,		"Realtek ALC892" },
    { HDA_CODEC_ALC898, 0,		"Realtek ALC898" },
    { HDA_CODEC_ALC900, 0,		"Realtek ALC1150" },
    
    { HDA_CODEC_AD1882, 0,		"Analog Devices AD1882" },
    { HDA_CODEC_AD1882A, 0,		"Analog Devices AD1882a" },
    { HDA_CODEC_AD1883, 0,		"Analog Devices AD1883" },
    { HDA_CODEC_AD1884, 0,		"Analog Devices AD1884" },
    { HDA_CODEC_AD1884A, 0,		"Analog Devices AD1884a" },
    { HDA_CODEC_AD1981HD, 0,	"Analog Devices AD1981HD" },
    { HDA_CODEC_AD1983, 0,		"Analog Devices AD1983" },
    { HDA_CODEC_AD1984, 0,		"Analog Devices AD1984" },
    { HDA_CODEC_AD1984A, 0,		"Analog Devices AD1984A" },
    { HDA_CODEC_AD1984B, 0,		"Analog Devices AD1984B" },
    { HDA_CODEC_AD1986A, 0,		"Analog Devices AD1986A" },
    { HDA_CODEC_AD1987, 0,		"Analog Devices AD1987" },
    { HDA_CODEC_AD1988, 0,		"Analog Devices AD1988A" },
    { HDA_CODEC_AD1988B, 0,		"Analog Devices AD1988B" },
    { HDA_CODEC_AD1989A, 0,         "Analog Devices AD1989a" },
    { HDA_CODEC_AD1989B, 0,         "Analog Devices AD1989b" },
    { HDA_CODEC_AD1989B, 0x100200,	"Analog Devices AD2000b" },
    { HDA_CODEC_AD1989B, 0x100300,	"Analog Devices AD2000b" },
    
    { HDA_CODEC_XFIEA, 0,		"Creative X-Fi Extreme A"},
    { HDA_CODEC_XFIED, 0,		"Creative X-Fi Extreme D"},
    { HDA_CODEC_CA0132, 0,          "Creative CA0132" },
    { HDA_CODEC_SB0880, 0,          "Creative SB0880 X-Fi" },
    { HDA_CODEC_CMI9880, 0,         "CMedia CMI9880" },
    { HDA_CODEC_CMI98802, 0,        "CMedia CMI9880" },
    
    { HDA_CODEC_CXD9872RDK, 0,	"Sigmatel CXD9872RD/K" },
    { HDA_CODEC_CXD9872AKD, 0,      "Sigmatel CXD9872AKD" },
    { HDA_CODEC_STAC9200D, 0,       "Sigmatel STAC9200D" },
    { HDA_CODEC_STAC9204X, 0,       "Sigmatel STAC9204X" },
    { HDA_CODEC_STAC9204D, 0,       "Sigmatel STAC9204D" },
    { HDA_CODEC_STAC9205X, 0,       "Sigmatel STAC9205X" },
    { HDA_CODEC_STAC9205D, 0,       "Sigmatel STAC9205D" },
    { HDA_CODEC_STAC9220, 0,        "Sigmatel STAC9220" },
    { HDA_CODEC_STAC9220_A1, 0,     "Sigmatel STAC9220_A1" },
    { HDA_CODEC_STAC9220_A2, 0,     "Sigmatel STAC9220_A2" },
    { HDA_CODEC_STAC9221, 0,        "Sigmatel STAC9221" },
    { HDA_CODEC_STAC9221_A2, 0,     "Sigmatel STAC9221_A2" },
    { HDA_CODEC_STAC9221D, 0,       "Sigmatel STAC9221D" },
    { HDA_CODEC_STAC922XD, 0,       "Sigmatel STAC9220D/9223D" },
    { HDA_CODEC_STAC9227X, 0,       "Sigmatel STAC9227X" },
    { HDA_CODEC_STAC9227D, 0,       "Sigmatel STAC9227D" },
    { HDA_CODEC_STAC9228X, 0,       "Sigmatel STAC9228X" },
    { HDA_CODEC_STAC9228D, 0,       "Sigmatel STAC9228D" },
    { HDA_CODEC_STAC9229X, 0,       "Sigmatel STAC9229X" },
    { HDA_CODEC_STAC9229D, 0,       "Sigmatel STAC9229D" },
    { HDA_CODEC_STAC9230X, 0,       "Sigmatel STAC9230X" },
    { HDA_CODEC_STAC9230D, 0,       "Sigmatel STAC9230D" },
    { HDA_CODEC_STAC9250, 0,        "Sigmatel STAC9250" },
    { HDA_CODEC_STAC9250D, 0,	"Sigmatel STAC9250D" },
    { HDA_CODEC_STAC9251, 0,        "Sigmatel STAC9251" },
    { HDA_CODEC_STAC9250D_1, 0,	"Sigmatel STAC9250D" },
    { HDA_CODEC_STAC9255, 0,        "Sigmatel STAC9255" },
    { HDA_CODEC_STAC9255D, 0,       "Sigmatel STAC9255D" },
    { HDA_CODEC_STAC9254, 0,        "Sigmatel STAC9254" },
    { HDA_CODEC_STAC9254D, 0,       "Sigmatel STAC9254D" },
    { HDA_CODEC_STAC9271X, 0,       "Sigmatel STAC9271X" },
    { HDA_CODEC_STAC9271D, 0,       "Sigmatel STAC9271D" },
    { HDA_CODEC_STAC9272X, 0,       "Sigmatel STAC9272X" },
    { HDA_CODEC_STAC9272D, 0,       "Sigmatel STAC9272D" },
    { HDA_CODEC_STAC9273X, 0,       "Sigmatel STAC9273X" },
    { HDA_CODEC_STAC9273D, 0,       "Sigmatel STAC9273D" },
    { HDA_CODEC_STAC9274, 0,        "Sigmatel STAC9274" },
    { HDA_CODEC_STAC9274D, 0,       "Sigmatel STAC9274D" },
    { HDA_CODEC_STAC9274X5NH, 0,    "Sigmatel STAC9274X5NH" },
    { HDA_CODEC_STAC9274D5NH, 0,    "Sigmatel STAC9274D5NH" },
    { HDA_CODEC_STAC9202, 0,	"Sigmatel STAC9202" },
    { HDA_CODEC_STAC9202D, 0,	"Sigmatel STAC9202D" },
    { HDA_CODEC_STAC9872AK, 0,      "Sigmatel STAC9872AK" },
    
    { HDA_CODEC_IDT92HD005, 0,		"IDT 92HD005" },
    { HDA_CODEC_IDT92HD005D, 0,		"IDT 92HD005D" },
    { HDA_CODEC_IDT92HD206X, 0,		"IDT 92HD206X" },
    { HDA_CODEC_IDT92HD206D, 0,		"IDT 92HD206D" },
    { HDA_CODEC_IDT92HD66B1X5, 0,		"IDT 92HD66B1X5" },
    { HDA_CODEC_IDT92HD66B2X5, 0,		"IDT 92HD66B2X5" },
    { HDA_CODEC_IDT92HD66B3X5, 0,		"IDT 92HD66B3X5" },
    { HDA_CODEC_IDT92HD66C1X5, 0,		"IDT 92HD66C1X5" },
    { HDA_CODEC_IDT92HD66C2X5, 0,		"IDT 92HD66C2X5" },
    { HDA_CODEC_IDT92HD66C3X5, 0,		"IDT 92HD66C3X5" },
    { HDA_CODEC_IDT92HD66B1X3, 0,		"IDT 92HD66B1X3" },
    { HDA_CODEC_IDT92HD66B2X3, 0,		"IDT 92HD66B2X3" },
    { HDA_CODEC_IDT92HD66B3X3, 0,		"IDT 92HD66B3X3" },
    { HDA_CODEC_IDT92HD66C1X3, 0,		"IDT 92HD66C1X3" },
    { HDA_CODEC_IDT92HD66C2X3, 0,		"IDT 92HD66C2X3" },
    { HDA_CODEC_IDT92HD66C3_65, 0,		"IDT 92HD66C3_65" },
    { HDA_CODEC_IDT92HD700X, 0,		"IDT 92HD700X" },
    { HDA_CODEC_IDT92HD700D, 0,		"IDT 92HD700D" },
    { HDA_CODEC_IDT92HD71B5, 0,		"IDT 92HD71B5" },
    { HDA_CODEC_IDT92HD71B5_2, 0,		"IDT 92HD71B5" },
    { HDA_CODEC_IDT92HD71B6, 0,		"IDT 92HD71B6" },
    { HDA_CODEC_IDT92HD71B6_2, 0,		"IDT 92HD71B6" },
    { HDA_CODEC_IDT92HD71B7, 0,		"IDT 92HD71B7" },
    { HDA_CODEC_IDT92HD71B7_2, 0,		"IDT 92HD71B7" },
    { HDA_CODEC_IDT92HD71B8, 0,		"IDT 92HD71B8" },
    { HDA_CODEC_IDT92HD71B8_2, 0,		"IDT 92HD71B8" },
    { HDA_CODEC_IDT92HD73C1, 0,		"IDT 92HD73C1" },
    { HDA_CODEC_IDT92HD73D1, 0,		"IDT 92HD73D1" },
    { HDA_CODEC_IDT92HD73E1, 0,		"IDT 92HD73E1" },
    { HDA_CODEC_IDT92HD95, 0,		"IDT 92HD95" },
    { HDA_CODEC_IDT92HD75B3, 0,		"IDT 92HD75B3" },
    { HDA_CODEC_IDT92HD88B3, 0,		"IDT 92HD88B3" },
    { HDA_CODEC_IDT92HD88B1, 0,		"IDT 92HD88B1" },
    { HDA_CODEC_IDT92HD88B2, 0,		"IDT 92HD88B2" },
    { HDA_CODEC_IDT92HD88B4, 0,		"IDT 92HD88B4" },
    { HDA_CODEC_IDT92HD75BX, 0,		"IDT 92HD75BX" },
    { HDA_CODEC_IDT92HD81B1C, 0,		"IDT 92HD81B1C" },
    { HDA_CODEC_IDT92HD81B1X, 0,		"IDT 92HD81B1X" },
    { HDA_CODEC_IDT92HD83C1C, 0,		"IDT 92HD83C1C" },
    { HDA_CODEC_IDT92HD83C1X, 0,		"IDT 92HD83C1X" },
    { HDA_CODEC_IDT92HD87B1_3, 0,		"IDT 92HD87B1/3" },
    { HDA_CODEC_IDT92HD87B2_4, 0,		"IDT 92HD87B2/4" },
    { HDA_CODEC_IDT92HD89C3, 0,		"IDT 92HD89C3" },
    { HDA_CODEC_IDT92HD89C2, 0,		"IDT 92HD89C2" },
    { HDA_CODEC_IDT92HD89C1, 0,		"IDT 92HD89C1" },
    { HDA_CODEC_IDT92HD89B3, 0,		"IDT 92HD89B3" },
    { HDA_CODEC_IDT92HD89B2, 0,		"IDT 92HD89B2" },
    { HDA_CODEC_IDT92HD89B1, 0,		"IDT 92HD89B1" },
    { HDA_CODEC_IDT92HD89E3, 0,		"IDT 92HD89E3" },
    { HDA_CODEC_IDT92HD89E2, 0,		"IDT 92HD89E2" },
    { HDA_CODEC_IDT92HD89E1, 0,		"IDT 92HD89E1" },
    { HDA_CODEC_IDT92HD89D3, 0,		"IDT 92HD89D3" },
    { HDA_CODEC_IDT92HD89D2, 0,		"IDT 92HD89D2" },
    { HDA_CODEC_IDT92HD89D1, 0,		"IDT 92HD89D1" },
    { HDA_CODEC_IDT92HD89F3, 0,		"IDT 92HD89F3" },
    { HDA_CODEC_IDT92HD89F2, 0,		"IDT 92HD89F2" },
    { HDA_CODEC_IDT92HD89F1, 0,		"IDT 92HD89F1" },
    { HDA_CODEC_IDT92HD90BXX, 0,		"IDT 92HD90BXX" },
    { HDA_CODEC_IDT92HD91BXX, 0,		"IDT 92HD91BXX" },
    { HDA_CODEC_IDT92HD93BXX, 0,		"IDT 92HD93BXX" },
    { HDA_CODEC_IDT92HD98BXX, 0,		"IDT 92HD98BXX" },
    { HDA_CODEC_IDT92HD99BXX, 0,		"IDT 92HD99BXX" },
    
    { HDA_CODEC_CX20549, 0,		"Conexant CX20549 (Venice)" },
    { HDA_CODEC_CX20551, 0,		"Conexant CX20551 (Waikiki)" },
    { HDA_CODEC_CX20561, 0,		"Conexant CX20561 (Hermosa)" },
    { HDA_CODEC_CX20582, 0,		"Conexant CX20582 (Pebble)" },
    { HDA_CODEC_CX20583, 0,		"Conexant CX20583 (Pebble HSF)" },
    { HDA_CODEC_CX20584, 0,		"Conexant CX20584" },
    { HDA_CODEC_CX20585, 0,		"Conexant CX20585" },
    { HDA_CODEC_CX20588, 0,		"Conexant CX20588" },
    { HDA_CODEC_CX20590, 0,		"Conexant CX20590" },
    { HDA_CODEC_CX20631, 0,		"Conexant CX20631" },
    { HDA_CODEC_CX20632, 0,		"Conexant CX20632" },
    { HDA_CODEC_CX20641, 0,		"Conexant CX20641" },
    { HDA_CODEC_CX20642, 0,		"Conexant CX20642" },
    { HDA_CODEC_CX20651, 0,		"Conexant CX20651" },
    { HDA_CODEC_CX20652, 0,		"Conexant CX20652" },
    { HDA_CODEC_CX20664, 0,		"Conexant CX20664" },
    { HDA_CODEC_CX20665, 0,		"Conexant CX20665" },
    { HDA_CODEC_CX20751, 0,		"Conexant CX20751/2" },
    { HDA_CODEC_CX20751_2, 0,	"Conexant CX20751/2" },
    { HDA_CODEC_CX20751_4, 0,	"Conexant CX20753/4" },
    { HDA_CODEC_CX20755, 0,		"Conexant CX20755" },
    { HDA_CODEC_CX20756, 0,		"Conexant CX20756" },
    { HDA_CODEC_CX20757, 0,		"Conexant CX20757" },
    { HDA_CODEC_CX20952, 0,		"Conexant CX20952" },
    
    { HDA_CODEC_VT1708_8, 0,	"VIA VT1708_8" },
    { HDA_CODEC_VT1708_9, 0,	"VIA VT1708_9" },
    { HDA_CODEC_VT1708_A, 0,	"VIA VT1708_A" },
    { HDA_CODEC_VT1708_B, 0,	"VIA VT1708_B" },
    { HDA_CODEC_VT1709_0, 0,	"VIA VT1709_0" },
    { HDA_CODEC_VT1709_1, 0,	"VIA VT1709_1" },
    { HDA_CODEC_VT1709_2, 0,	"VIA VT1709_2" },
    { HDA_CODEC_VT1709_3, 0,	"VIA VT1709_3" },
    { HDA_CODEC_VT1709_4, 0,	"VIA VT1709_4" },
    { HDA_CODEC_VT1709_5, 0,	"VIA VT1709_5" },
    { HDA_CODEC_VT1709_6, 0,	"VIA VT1709_6" },
    { HDA_CODEC_VT1709_7, 0,	"VIA VT1709_7" },
    { HDA_CODEC_VT1708B_0, 0,	"VIA VT1708B_0" },
    { HDA_CODEC_VT1708B_1, 0,	"VIA VT1708B_1" },
    { HDA_CODEC_VT1708B_2, 0,	"VIA VT1708B_2" },
    { HDA_CODEC_VT1708B_3, 0,	"VIA VT1708B_3" },
    { HDA_CODEC_VT1708B_4, 0,	"VIA VT1708B_4" },
    { HDA_CODEC_VT1708B_5, 0,	"VIA VT1708B_5" },
    { HDA_CODEC_VT1708B_6, 0,	"VIA VT1708B_6" },
    { HDA_CODEC_VT1708B_7, 0,	"VIA VT1708B_7" },
    { HDA_CODEC_VT1708S_0, 0,	"VIA VT1708S_0" },
    { HDA_CODEC_VT1708S_1, 0,	"VIA VT1708S_1" },
    { HDA_CODEC_VT1708S_2, 0,	"VIA VT1708S_2" },
    { HDA_CODEC_VT1708S_3, 0,	"VIA VT1708S_3" },
    { HDA_CODEC_VT1708S_4, 0,	"VIA VT1708S_4" },
    { HDA_CODEC_VT1708S_5, 0,	"VIA VT1708S_5" },
    { HDA_CODEC_VT1708S_6, 0,	"VIA VT1708S_6" },
    { HDA_CODEC_VT1708S_7, 0,	"VIA VT1708S_7" },
    { HDA_CODEC_VT1702_0, 0,	"VIA VT1702_0" },
    { HDA_CODEC_VT1702_1, 0,	"VIA VT1702_1" },
    { HDA_CODEC_VT1702_2, 0,	"VIA VT1702_2" },
    { HDA_CODEC_VT1702_3, 0,	"VIA VT1702_3" },
    { HDA_CODEC_VT1702_4, 0,	"VIA VT1702_4" },
    { HDA_CODEC_VT1702_5, 0,	"VIA VT1702_5" },
    { HDA_CODEC_VT1702_6, 0,	"VIA VT1702_6" },
    { HDA_CODEC_VT1702_7, 0,	"VIA VT1702_7" },
    { HDA_CODEC_VT1716S_0, 0,	"VIA VT1716S_0" },
    { HDA_CODEC_VT1716S_1, 0,	"VIA VT1716S_1" },
    { HDA_CODEC_VT1718S_0, 0,	"VIA VT1718S_0" },
    { HDA_CODEC_VT1718S_1, 0,	"VIA VT1718S_1" },
    { HDA_CODEC_VT1802_0, 0,	"VIA VT1802_0" },
    { HDA_CODEC_VT1802_1, 0,	"VIA VT1802_1" },
    { HDA_CODEC_VT1812, 0,		"VIA VT1812" },
    { HDA_CODEC_VT1818S, 0,		"VIA VT1818S" },
    { HDA_CODEC_VT1828S, 0,		"VIA VT1828S" },
    { HDA_CODEC_VT2002P_0, 0,	"VIA VT2002P_0" },
    { HDA_CODEC_VT2002P_1, 0,	"VIA VT2002P_1" },
    { HDA_CODEC_VT2020, 0,		"VIA VT2020" },
    
    { HDA_CODEC_ATIRS600_1, 0,	"ATI RS600 HDMI" },
    { HDA_CODEC_ATIRS600_2, 0,	"ATI RS600 HDMI" },
    { HDA_CODEC_ATIRS690, 0,	"ATI RS690/780 HDMI" },
    { HDA_CODEC_ATIR6XX, 0,		"ATI R6xx HDMI" },
    
    { HDA_CODEC_NVIDIAMCP67, 0,	"NVIDIA MCP67" },
    { HDA_CODEC_NVIDIAMCP73, 0,	"NVIDIA MCP73" },
    { HDA_CODEC_NVIDIAMCP78, 0,	"NVIDIA MCP78" },
    { HDA_CODEC_NVIDIAMCP78_2, 0,	"NVIDIA MCP78" },
    { HDA_CODEC_NVIDIAMCP78_3, 0,	"NVIDIA MCP78" },
    { HDA_CODEC_NVIDIAMCP78_4, 0,	"NVIDIA MCP78" },
    { HDA_CODEC_NVIDIAMCP7A, 0,	"NVIDIA MCP7A" },
    { HDA_CODEC_NVIDIAGT220, 0,	"NVIDIA GT220" },
    { HDA_CODEC_NVIDIAGT21X, 0,	"NVIDIA GT21x" },
    { HDA_CODEC_NVIDIAMCP89, 0,	"NVIDIA MCP89" },
    { HDA_CODEC_NVIDIAGT240, 0,	"NVIDIA GT240" },
    { HDA_CODEC_NVIDIAGTS450, 0,	"NVIDIA GTS450" },
    { HDA_CODEC_NVIDIAGT440, 0,	"NVIDIA GT440" },
    { HDA_CODEC_NVIDIAGTX470, 0,	"NVIDIA GT470" },
    { HDA_CODEC_NVIDIAGTX550, 0,	"NVIDIA GTX550" },
    { HDA_CODEC_NVIDIAGTX570, 0,	"NVIDIA GTX570" },
    { HDA_CODEC_NVIDIAGT610, 0,	"NVIDIA GT610" },
    
    
    { HDA_CODEC_INTELIP, 0,		"Intel Ibex Peak" },
    { HDA_CODEC_INTELBL, 0,		"Intel Bearlake" },
    { HDA_CODEC_INTELCA, 0,		"Intel Cantiga" },
    { HDA_CODEC_INTELEL, 0,		"Intel Eaglelake" },
    { HDA_CODEC_INTELIP2, 0,	"Intel Ibex Peak" },
    { HDA_CODEC_INTELCPT, 0,	"Intel Cougar Point" },
    { HDA_CODEC_INTELPPT, 0,	"Intel Panther Point" },
    { HDA_CODEC_INTELLLP, 0,	"Intel Lynx Point" },
    //
    { HDA_CODEC_INTELBRW, 0,	"Intel Broadwell HDMI" },
    { HDA_CODEC_INTELSKL, 0,	"Intel Skylake HDMI" },
    { HDA_CODEC_INTELBRO, 0,	"Intel Broxton HDMI" },
    { HDA_CODEC_INTELKAB, 0,	"Intel Kabylake HDMI" },
    { HDA_CODEC_INTELCDT, 0,	"Intel CedarTrail HDMI" },
    { HDA_CODEC_INTELVLV, 0,	"Intel Valleyview2 HDMI" },
    { HDA_CODEC_INTELBSW, 0,	"Intel Braswell HDMI" },
    //
    { HDA_CODEC_INTELCL, 0,		"Intel Crestline" },
    
    { HDA_CODEC_SII1390, 0,		"Silicon Image SiI1390 HDMi" },
    { HDA_CODEC_SII1392, 0,		"Silicon Image SiI1392 HDMi" },
    
    /* Unknown codec */
    { HDA_CODEC_ADXXXX, 0,		"Analog Devices (Unknown)" },
    { HDA_CODEC_AGEREXXXX, 0,	"Lucent/Agere Systems (Unknown)" },
    { HDA_CODEC_ALCXXXX, 0,		"Realtek (Unknown)" },
    { HDA_CODEC_ATIXXXX, 0,		"ATI (Unknown)" },
    { HDA_CODEC_CAXXXX, 0,		"Creative (Unknown)" },
    { HDA_CODEC_CMIXXXX, 0,         "CMedia (Unknown)" },
    { HDA_CODEC_CMIXXXX2, 0,	"CMedia (Unknown)" },
    { HDA_CODEC_CSXXXX, 0,		"Cirrus Logic (Unknown)" },
    { HDA_CODEC_CXXXXX, 0,		"Conexant (Unknown)" },
    //	{ HDA_CODEC_CHXXXX, 0,          "Chrontel (Unknown)" },
    { HDA_CODEC_IDTXXXX, 0,		"IDT (Unknown)" },
    { HDA_CODEC_INTELXXXX, 0,	"Intel (Unknown)" },
    //	{ HDA_CODEC_MOTOXXXX, 0,        "Motorola (Unknown)" },
    { HDA_CODEC_NVIDIAXXXX, 0,	"NVidia (Unknown)" },
    { HDA_CODEC_SIIXXXX, 0,		"Silicon Image (Unknown)" },
    { HDA_CODEC_STACXXXX, 0,	"Sigmatel (Unknown)" },
    { HDA_CODEC_VTXXXX, 0,		"VIA (Unknown)" },
    { 0, 0,		NULL }
};

@interface pciDevice : NSObject
{
    NSNumber *vendor;
    NSNumber *device;
    NSNumber *subVendor;
    NSNumber *subDevice;
    NSNumber *pciClassCode;
    NSNumber *PciClass;
    NSNumber *pciSubClass;
    NSString *vendorString;
    NSString *deviceString;
    NSString *classString;
    NSString *subClassString;
    NSString *fullClassString;
    long fullID;
    long fullSubID;
}
+(NSNumber *)grabEntry:(CFStringRef)entry forService:(io_service_t)service;
+(NSDictionary *)match:(pciDevice *)pci;
+(pciDevice *)create:(io_service_t)service classes:(NSMutableDictionary *)classes vendors:(NSMutableDictionary *)vendors;
+(pciDevice *)create:(io_service_t)service;
-(NSString *)fullClassString;
-(long)fullID;
-(long)fullSubID;
+(NSArray *)readIDs;
-(NSNumber *)vendor;
-(NSNumber *)device;
-(NSNumber *)subVendor;
-(NSNumber *)subDevice;
-(NSNumber *)pciClassCode;
-(NSNumber *)pciClass;
-(NSNumber *)pciSubClass;
-(NSString *)vendorString;
-(NSString *)deviceString;
-(NSString *)classString;
-(NSString *)subClassString;
-(void)setVendor:(NSNumber *)setvendor;
-(void)setDevice:(NSNumber *)setdevice;
-(void)setSubVendor:(NSNumber *)setsubVendor;
-(void)setSubDevice:(NSNumber *)setsubDevice;
-(void)setPciClassCode:(NSNumber *)setpciClassCode;
-(void)setPciClass:(NSNumber *)setpciClass;
-(void)setPciSubClass:(NSNumber *)setpciSubClass;
-(void)setVendorString:(NSString *)setvendorString;
-(void)setDeviceString:(NSString *)setdeviceString;
-(void)setClassString:(NSString *)setclassString;
-(void)setSubClassString:(NSString *)setsubClassString;
@end

@interface pciVendor : NSObject
{
    NSString *name;
    NSMutableDictionary *devices;
}
+(pciVendor *)create:(NSString *)name;
-(void)setName:(NSString *)setname;
-(NSString *)name;
-(void)setDevices:(NSMutableDictionary *)setdevices;
-(NSMutableDictionary *)devices;
@end

@interface pciClass : NSObject
{
    NSString *name;
    NSMutableDictionary *subClasses;
}
+(pciClass *)create:(NSString *)name;
-(void)setName:(NSString *)setname;
-(NSString *)name;
-(void)setSubClasses:(NSMutableDictionary *)setsubClasses;
-(NSMutableDictionary *)subClasses;
@end

@interface hexFormatter : NSValueTransformer
+(BOOL)allowsReverseTransformation;
+(Class)transformedValueClass;
-(id)transformedValue:(id)value;
@end

@interface HDA : NSObject
+ (NSMutableDictionary *)voodooHDAwithIterator:(io_iterator_t)itThis;
+ (NSMutableDictionary *)appleHDAwithIterator:(io_iterator_t)itThis;
@end
#endif

:)

 

post-1557617-0-39121100-1489640125_thumb.png :thumbsup_anim:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By ltooz_audis
      Some people do have problem understanding AppleALC, how to use it for their own codecs. Here's how I used it for both Realtek ALC and IDT audio codecs.
      https://youtu.be/ZNUzQkb6p5g
      For more info on Catalina click here.
      Cheers,
      Louis
    • By Slice
      Some users claim that using VoodooHDA they hear loud bump at system start and sound in system comes with noise.
      Although this can be repaired with existing drivers I propose a version that do this automatically.
      It started silently and have very clear output. The file is compiled as 32/64 and works from 10.6 up to 10.12.
      VoodooHDA.kext-289.zip
      The sources is in my signature.
       
      There is a VoodooHDA,prefPane compatible with Sierra
      VoodooHDA.prefPane-289.zip

       
      Now there is a version 2.9.0 by Zenith432.
      It can work with multichannel sound and play it on 5.1 analog system.

      VoodooHDA.kext-2.9.0d8.zip
      27.04.2017 
      d10 - Fix issues involving AudioControls
      VoodooHDA.kext-2.9.0d10.zip
       
      20.11.2018
      Fix issue with scratch on slow CPU
      VoodooHDA.kext-291SSE.zip
       
      04.05.2019
      More checks for memory allocation. More clear sound anyway. 
      VoodooHDA.kext-292.zip
      IOAudioFamily.kext.zip
       
       
    • By grisno
      Hi people,
       
      Installer to activate the sound card REALTEK ALC282-v2 (10ec:0282) with LayoutID 1 or 3 in MacOS. This installer does not contain AppleHDA patched Kext. To work properly, it must be installed over vanilla AppleHDA.kext.
       
      I want to thank the whole community for their efforts and content provided, because without these it would not be possible to create this installer.
       
      I would appreciate comments and suggestions!!
       
      Status:
      Speakers : OK Headphones : OK HDMI Audio : OK (Intel HD4K Tested) LineIn : N/A (Model Without LineIn) MicInt : OK MicIntNoiseReduction : OK MicExt : N/A (Model Without MicExt) AutoDetectLineIn : N/A (Model Without LineIn) Sleep : OK WakeUp : OK AutoSleep : OK Hibernate : OK Siri : OK   Tested Laptops:
       
      - HP Pavillion 15-D002SS
       
      Coming Soon:
       
      - Unified installer for the different supported operating systems.
      - Support model with LineIn jack.
       
      Modified Verbs:
      01271C20 01271D00 01271EA0 01271F90 01471C10 01471D00 01471E17 01471F90 01871CF0 01871D00 01871E00 01871F40 01E71CF0 01E71D00 01E71E00 01E71F40 02171C30 02171D10 02171E21 02171F00 01470C02   DSDT:
       
      Patch to apply with MaciASL in your DSDT
      ######################################### HDEF v1.00######################################## into method label _DSM parent_label HDEF remove_entry;into device label HDEF insertbeginMethod (_DSM, 4, NotSerialized)\n{\n If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n Return (Package()\n {\n "layout-id", Buffer() { 0x01, 0x00, 0x00, 0x00 },\n //"layout-id", Buffer() { 0x03, 0x00, 0x00, 0x00 },\n "hda-gfx", Buffer() { "onboard-1" },\n "PinConfigurations", Buffer() { },\n })\n}\nend;  
    • By grisno
      Hi people,
       
      This is a preliminary installer to activate the sound card IDT 92HD87B2/4 (111D:76D9) in MacOS. This new version of the installer does not contain AppleHDA patched Kext. To work properly, it must be installed over vanilla AppleHDA Kext.
       
      I want to thank the whole community for their efforts and content provided, because without these it would not be possible to create this installer.
       
      I would appreciate comments and suggestions!!
       
      Status:
      Speakers : OK Headphones : OK HDMI Audio : OK (Intel HD3K/4K Tested) LineIn : OK MicInt : OK MicIntNoiseReduction : OK MicExt : OK AutoDetectLineIn : OK Sleep : OK WakeUp : OK AutoSleep : OK Hibernate : OK Siri : OK   Tested Laptops:
       
      - HP Pavillion G6-2209SS
      - HP Probook 4440S
       
      Coming Soon:
       
      - Unified installer for the different supported operating systems
       
      Original Verbs:
      00a71cf0 00a71d00 00a71ef0 00a71f40 00b71c1f 00b71d10 00b71e21 00b71f04 00c71c20 00c71d10 00c71ea1 00c71f04 00d71c10 00d71d01 00d71e17 00d71f90 00f71cf0 00f71d00 00f71ef0 00f71f40 01171c30 01171d01 01171ea3 01171fd5   Modified Verbs Layer ID 3 & 12:
      00A71CF0 00A71D00 00A71EF0 00A71F40 01371C40 01371D10 01371E21 01371F04 00C71C20 00C71D10 00C71E81 00C71F04 01471C10 01471D01 01471E17 01471F90 00F71C50 00F71D00 00F71EF0 00F71F40 01171C30 01171D01 01171EA0 01171F90  
      Modified Verbs Layer ID 2:
      00B71C10 00B71D10 00B71E21 00B71F04 00C71C20 00C71D10 00C71E81 00C71F04 00D71C30 00D71D00 00D71E17 00D71F90 01171C40 01171D00 01171EA0 01171F90  
        AppleHDAHardwareConfigDriver.kext > Info.plist (Layer ID 2, 3 & 12): <key>HDAConfigDefault</key> <array> <dict> <key>AFGLowPowerState</key> <data> AwAAAA== </data> <key>Codec</key> <string>IDT 92HD87B2/4</string> <key>CodecID</key> <integer>287143641</integer> <key>ConfigData</key> <data> AKcc8ACnHQAApx7wAKcfQAE3HEABNx0QATce IQE3HwQAxxwgAMcdEADHHoEAxx8EAUccEAFH HQEBRx4XAUcfkAD3HFAA9x0AAPce8AD3H0AB FxwwARcdAQEXHqABFx+Q </data> <key>FuncGroup</key> <integer>1</integer> <key>LayoutID</key> <integer>2</integer> </dict> <dict> <key>AFGLowPowerState</key> <data> AwAAAA== </data> <key>Codec</key> <string>IDT 92HD87B2/4</string> <key>CodecID</key> <integer>287143641</integer> <key>ConfigData</key> <data> ALccEAC3HRAAtx4hALcfBADHHCAAxx0QAMce gQDHHwQA1xwwANcdAADXHhcA1x+QARccQAEX HQABFx6gARcfkA== </data> <key>FuncGroup</key> <integer>1</integer> <key>LayoutID</key> <integer>3</integer> </dict> <dict> <key>AFGLowPowerState</key> <data> AwAAAA== </data> <key>Codec</key> <string>IDT 92HD87B2/4</string> <key>CodecID</key> <integer>287143641</integer> <key>ConfigData</key> <data> ALccEAC3HRAAtx4hALcfBADHHCAAxx0QAMce gQDHHwQA1xwwANcdAADXHhcA1x+QARccQAEX HQABFx6gARcfkA== </data> <key>FuncGroup</key> <integer>1</integer> <key>LayoutID</key> <integer>12</integer> </dict> </array>   DSDT:
       
      Patch to apply with MaciASL in your DSDT. You must change the value of the layout-id before applying the patch. In MacOS Mojave should always be 0x02
      ######################################### HDEF ######################################## into method label _DSM parent_label HDEF remove_entry; into device label HDEF insert begin Method (_DSM, 4, NotSerialized)\n {\n If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n Return (Package()\n {\n "built-in", Buffer () { 0x00 }, \n "hda-gfx", Buffer() { "onboard-1" }, \n "layout-id", Buffer () { 0x03, 0x00, 0x00, 0x00 }, \n "PinConfigurations", Buffer () {}, \n "MaximumBootBeepVolume", Buffer () { 0x4d } \n })\n }\n end;  
    • By markilark
      So I have an HP Envy Notebook (15t-q400) which features two Band & Olufsen speakers (tweeters) and one subwoofer - the audio codec used is the ALC290 (aka the ALC 3241). I'm running on Mojave. So far I've tried AppleALC with Lilu and have no luck - the audio plays through the headphones - although very poorly - but not the external speakers at all, and I've tried everything short of writing my own XML file for it. So I've decided to go for using the VoodooHDA kext.  
       
      While VoodooHDA sees my devices immediately, they are strangely configured, and I cannot use the subwoofer or even see it listed as a device. This is my main problem.
       
      As I'm aware the proper configuration of the laptop is: 
      Three speakers - one left, one right, and one subwoofer module One 3.5mm headphone jack An internal microphone for the webcam (this is one I'm not sure about, I don't know if it is two separate microphones or one as there are two holes in the display chasis)   
       
      In my devices while using the default VoodooHDA kext, I have 
                Output:
      Speaker (Analogue) - Type= Apple speaker port <--- only tweeters work  Headphones (Back Right) - Type= Headphone Port <--- this seems to work well           Input:
      Microphone (Black Right) - Type: Microphone Port <---- this works a little, sounds like it's muffled, not from the webcam Microphone (ATAPI) - Type: Microphone Port  <--- this works well, is definitely the webcam microphone  
       

      Here is my Pin Config (with disabled devices not ignored as I think the subwoofer is one of those devices):

      Here is my Pin Config for the photo above (disabled devices NOT ignored, fix not applied).
      01371c00 01371d00 01371e00 01371f40 01871c10 01871d01 01871e17 01871f90 01a71c20 01a71d10 01a71ea1 01a71f04 01d71c2d 01d71d81 01d71e75 01d71f40 01271c30 01271d01 01271ea3 01271f99 01571c40 01571d10 01571e21 01571f04 01471cf0 01471d11 01471e11 01471f41 01671cf0 01671d11 01671e11 01671f41 01771cf0 01771d11 01771e11 01771f41 01971cf0 01971d11 01971e11 01971f41 01b71cf0 01b71d11 01b71e11 01b71f41 01e71cf0 01e71d11 01e71e11 01e71f41  
       
       
       

      Here is my Pin Config for the photo above (disabled devices ignored, fix not applied):
      01871c10 01871d01 01871e17 01871f90 01a71c20 01a71d10 01a71ea1 01a71f04 01271c30 01271d01 01271ea3 01271f99 01571c40 01571d10 01571e21 01571f04  
      I have been attempting to add the subwoofer as a node in the Info.plist of VoodooHDA but can't seem to get it to work (and frankly I'm not sure which device it is!) . I've tried adding both NID 19 and 20 into my Info.plist file for VoodooHDA but neither have done any good. Am I supposed to add the NID and PinDefault to the Info.plist AFTER Pin Configurator's fix? I was under the impression this only helped with a patched AppleHDA which VoodooHDA overwrites. 

      Thanks for all the help, I hope I conveyed this clearly! 
       
      I've attached my codec dump as well. 
      dumpcodec.rtf
×