On Fri, Aug 07, 2009 at 06:05:02PM +0800, Takashi Iwai wrote:
At Fri, 7 Aug 2009 18:01:21 +0800, Wu Fengguang wrote:
On Fri, Aug 07, 2009 at 05:45:14PM +0800, Takashi Iwai wrote:
At Fri, 7 Aug 2009 17:38:59 +0800, Wu Fengguang wrote:
Hello,
I'm not sure of the usage for GET_PROC_COEF/GET_COEF_INDEX, and found that their return value is unstable (changing all the time) for codec:
Codec: Realtek ALC888 Address: 2 Function Id: 0x1 Vendor Id: 0x10ec0888 Subsystem Id: 0x80860023 Revision Id: 0x100202
For example:
# hda-verb /dev/snd/hwC0D2 0x20 GET_PROC_COEF 0 nid = 0x20, verb = 0xc00, param = 0x0 value = 0x80 # hda-verb /dev/snd/hwC0D2 0x20 GET_COEF_INDEX 0 nid = 0x20, verb = 0xd00, param = 0x0 value = 0xe # hda-verb /dev/snd/hwC0D2 0x20 GET_PROC_COEF 0 nid = 0x20, verb = 0xc00, param = 0x0 value = 0x9c00 # hda-verb /dev/snd/hwC0D2 0x20 GET_COEF_INDEX 0 nid = 0x20, verb = 0xd00, param = 0x0 value = 0xf
I wonder if this is the normal case?
AFAIK, depending on the mode, the index is incremented automatically.
Ah, yes. That's in line with the above data.
When repeatingly call GET_PROC_COEF, it returns some 'random' values:
# hda-verb /dev/snd/hwC0D2 0x20 GET_PROC_COEF 0 nid = 0x20, verb = 0xc00, param = 0x0 value = 0x4f # hda-verb /dev/snd/hwC0D2 0x20 GET_PROC_COEF 0 nid = 0x20, verb = 0xc00, param = 0x0 value = 0x8000 # hda-verb /dev/snd/hwC0D2 0x20 GET_PROC_COEF 0 nid = 0x20, verb = 0xc00, param = 0x0 value = 0x2520 # hda-verb /dev/snd/hwC0D2 0x20 GET_PROC_COEF 0 nid = 0x20, verb = 0xc00, param = 0x0 value = 0x3e00
I guess it's not random but just the value of the next index.
But when repeatingly call GET_COEF_INDEX, it returns the same value:
# hda-verb /dev/snd/hwC0D2 0x20 GET_COEF_INDEX 0 nid = 0x20, verb = 0xd00, param = 0x0 value = 0xd # hda-verb /dev/snd/hwC0D2 0x20 GET_COEF_INDEX 0 nid = 0x20, verb = 0xd00, param = 0x0 value = 0xd
Reading the index itself doesn't increment the index. Reading the coef value increases the index. So is my understanding.
OK, so the coef read has some 'side effects', hehe.