Jump to content

getcodecid - Command line tool to detect codec id


Andy Vandijck
 Share

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

Link to comment
Share on other sites

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

Link to comment
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
Link to comment
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.

Link to comment
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 

Link to comment
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
Link to comment
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)

Link to comment
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.
  • Like 1
Link to comment
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

:)

  • Like 1
Link to comment
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

  • Like 1
Link to comment
Share on other sites

  • 8 months later...

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

  • Like 4
Link to comment
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

 

  • Like 2
Link to comment
Share on other sites

  • 4 weeks later...

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

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

@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:

Link to comment
Share on other sites

 Share

×
×
  • Create New...