最近做了个案子,音频输出有问题,debug后就学习了一下 Verb Table 相关知识,顺便整理了一份 Verb Table 报告给总部大佬们做分享汇报。下面内容都是我直接从我做汇报的全英ppt上 copy + translate 过来的,偷懒嘛!
下面从四个方面讲解 Verb Table
1. What is Verb Table
2. Function
3. How define
4. How create
What is Verb Table
首先来看一下 Verb Table, Ps: 我自己创建的,基于ALC892的
Each Pin widget in an HD Audio codec contains a 32-bit pin configuration register
PinID ≠ NID
PinID: circuit diagram
NID: node id, in codec
Pin Widget Structure: CAd+I+NID+Verb&Command data
此处注意:I+NID在广义上可统一为NID,以上具体什么意思见Audio Spec codec部分,不是此次分享内容,我就不想说了,太多啦!
Just in this case, not all: 0x0[NID]71[C/D/E/F][lower 2-bit]
Function
1. We can know HD audio properties from Verb Table
2. Modify it when fault occurred with audio
method: a. modify on the basis of original one
b. create a new one
How define
Configuration Data Structure 如下图所示,从Audio Spec截过来的
- “Verb” means to set command (table) to Audio Codec
- 8 parts: Port Connectivity, Location, Default Device, Connection Type, Color, Misc, Default Association and Sequence
Port Connectivity[1:0] indicates the external connectivity of the Pin Complex. Software can use this value to know what Pin Complexes are connected to jacks, internal devices, or not connected at all.
Location[5:0] indicates the physical location of the jack or device to which the pin complex is connected.
Default Device[3:0] indicates the intended use of the jack or device.
Connection Type[3:0] indicates the type of physical connection, such as a 1/8-inch stereo jack or an optical digital connector, etc.
Color[3:0] indicates the color of the physical jack for use by software.
Misc[3:0] is a bit field used to indicate other information about the jack. Currently, only bit 0 is defined. If bit 0 is set, it indicates that the jack has no presence detect capability.
- Bit[0]=1, no Jack detection
- Bit[0]=0, Jack detection
Default Association and Sequence are used together by software to group Pin Complexes (and therefore jacks) together into functional blocks to support multichannel operation.
Value of Default Association (Used in resource-allocation)
- Reserved and should not be used: 0.
(will be treated as invalid, as well as the pin widget's Pin Configuration register it belongs to, which also be ignored by audio driver.)
- A multi-pin device range: 0x1 to 0xE.
- A single-pin device range: 0x1 to 0xF.
Lower Default Association values would be higher in priority for resources such as processing nodes or Input and Output Converters.
Sequence indicates the order of the jacks in the association group. The lowest numbered jack in the association group should be assigned the lowest numbered channels in the stream, etc.
Valid pin sequence numbers range: 0 to 0xF.
- If the association number is 0xF, every sequence number for every pin in that association must be 0.
- For a single-pin device, the single sequence number in the association must always be 0.
eg. 3 stereo (two-channel) pin widgets play a six-channel audio stream numbered 0 to 5, then the pin with the lowest sequence number plays channels 0 and 1, the highest plays 4 and 5, and the remaining pin widget plays channels 2 and 3.
How create
Tool: HDACfg
Attention please!
Just adapted to REALTEK!
Different vendor , different pattern!
用 HDACfg创建 Verb Table 后面重新写一篇来讲吧
注意:对于Audio问题,如上可以直接在原来的 Verb Table 相关位基础上进行修改,也可以自己创建新的 Verb Table!
我一般都是在原 Verb Table上修改相关位,方便,注意也不会影响其他位,只有在要求大幅度修改 Audio 的时候我才会自己创建!
Okay,如上,完!