Realtek提供了一個專門配置Verb Table的工具HDACfg.exe,專門用來配置其下各種型號audio codec的Verb Table,非常的方便。
簡單介紹一下項目背景,目前我司做的x86主板基於Intel NUC平台,兼容NUC8和NUC11,主板上用的audio codec芯片是Realtek的ALC262,Intel的指導文檔610837_NUC_8_Compute_Element_Carrier_Board_Design_Guide_English_v1p1.pdf 和 632238_NUC_11_Compute_Element_Carrier_Board_Design_Guide_English_v1p0.pdf中關於audio codec verb table的配置的介紹是關於ALC256的,所以只好自己重新配置適用於ALC262的verb table。
一、配置Audio Codec Verb Table
- 打開HDACfg.exe,點擊下一步,如下圖所示:
2. 如果之前沒有相關配置文件可參考,選擇 'No',有配置文件參考的話直接點 'Yes' 去load配置文件即可,我們這里選擇 'No';
3. 這一步需要選擇主板的類型了,是台式機還是筆記本呢?台式機選擇 “Desktop System”,筆記本選擇“Mobile System”,我們這里選擇“Mobile System”,因為我們的主板只有一個二合一的接口(即麥克風和揚聲器二合一);
4. 到這一步我們需要選擇Audio codec型號了,我們這里選擇ALC262;"Default configuration setting"我們選擇“2 external Jacks”;
5. 選擇 “Internal”;
6. 選擇 "Next";
7. ADD ID;
8.經過步驟7以后顯示如下:
9.鼠標左鍵選中下圖紅框中的部分,然后點擊“Create Verb table”,這時會提醒你輸入保存的txt文件名;
10. 這時會提示你是否有“Intel low power ECR request”,選擇“否”;
11. 這時候顯示配置OK了;
得到HDACfg.txt內容如下:
;HDACfg Version : 4.09 ;HD Audio Codec : ALC262 ;PCI PnP ID : PCI\VEN_8086&DEV_2668&SUBSYS_026210EC ;HDA Codec PnP ID : HDAUDIO\FUNC_01&VEN_10EC&DEV_0262&SUBSYS_10EC0000 ;The number of verb command block : 13 ; NID 0x11 : 0x411111F0 ; NID 0x12 : 0x411111F0 ; NID 0x14 : 0x99130110 ; NID 0x15 : 0x0121401F ; NID 0x16 : 0x411111F0 ; NID 0x18 : 0x01A19820 ; NID 0x19 : 0x99A3092F ; NID 0x1A : 0x411111F0 ; NID 0x1B : 0x411111F0 ; NID 0x1C : 0x411111F0 ; NID 0x1D : 0x40020205 ; NID 0x1E : 0x411111F0 ; NID 0x1F : 0x411111F0 ;===== HDA Codec Subsystem ID Verb-table ===== ;HDA Codec Subsystem ID : 0x10EC0000 dd 00172000h dd 00172100h dd 001722ECh dd 00172310h ;===== Pin Widget Verb-table ===== ;Pin Complex (NID 0x11 ) dd 01171CF0h dd 01171D11h dd 01171E11h dd 01171F41h ;Pin Complex (NID 0x12 ) dd 01271CF0h dd 01271D11h dd 01271E11h dd 01271F41h ;Pin Complex (NID 0x14 ) dd 01471C10h dd 01471D01h dd 01471E13h dd 01471F99h ;Pin Complex (NID 0x15 ) dd 01571C1Fh dd 01571D40h dd 01571E21h dd 01571F01h ;Pin Complex (NID 0x16 ) dd 01671CF0h dd 01671D11h dd 01671E11h dd 01671F41h ;Pin Complex (NID 0x18 ) dd 01871C20h dd 01871D98h dd 01871EA1h dd 01871F01h ;Pin Complex (NID 0x19 ) dd 01971C2Fh dd 01971D09h dd 01971EA3h dd 01971F99h ;Pin Complex (NID 0x1A ) dd 01A71CF0h dd 01A71D11h dd 01A71E11h dd 01A71F41h ;Pin Complex (NID 0x1B ) dd 01B71CF0h dd 01B71D11h dd 01B71E11h dd 01B71F41h ;Pin Complex (NID 0x1C ) dd 01C71CF0h dd 01C71D11h dd 01C71E11h dd 01C71F41h ;Pin Complex (NID 0x1D ) dd 01D71C05h dd 01D71D02h dd 01D71E02h dd 01D71F40h ;Pin Complex (NID 0x1E ) dd 01E71CF0h dd 01E71D11h dd 01E71E11h dd 01E71F41h ;Pin Complex (NID 0x1F ) dd 01F71CF0h dd 01F71D11h dd 01F71E11h dd 01F71F41h
二、集成Verb Table到ECD里
生成HDACfg.txt Verb Table文件以后,如何集成到ECD里去呢?Intel NUC平台使用BMP Tool來繼承Verb Table。
1. 分別選擇"Binary Data File" 和 “BMP Script File”;
2. 選擇“Audio Codec Verb Table”,根據HDACfg.txt分別填如下內容:
“Verb Table Length in DWORD”的值56是根據箭頭3指向的部分決定的,根據HDACfg.txt填寫了56個DWORD Verb Table值;
“Audio Codec Vendor ID”填供應商ID(0x10EC);
"Audio Codec Device ID"填產品ID(0x0262);
保存ECD配置,順便更改一下ECD Revision或者Timestamp(BIOS會根據ECD的revision或Timestamp是否有改變來重新load ECD),然后build一個帶ECD的EC固件版本,燒錄EC固件,斷電重啟,發現Audio Codec已經能正常工作了(Realtek windows驅動已安裝)。