Dag Lem dag@nimrod.no writes:
Dominique Dumont domi.dumont@free.fr writes:
[...]
The verb used in snd-hda-intel are 0x200 and 0x300 where Intel's and Realtek's doc specify 2h and 3h.
Hmm, that one escaped me. If this is a problem with hda_codec.h and not with the documentation, then there are more errors:
#define AC_VERB_GET_STREAM_FORMAT 0x0a00 -> 0x000a #define AC_VERB_GET_AMP_GAIN_MUTE 0x0b00 -> 0x000b #define AC_VERB_GET_PROC_COEF 0x0c00 -> 0x000c #define AC_VERB_GET_COEF_INDEX 0x0d00 -> 0x000d
#define AC_VERB_SET_STREAM_FORMAT 0x200 -> 0x002 #define AC_VERB_SET_AMP_GAIN_MUTE 0x300 -> 0x003 #define AC_VERB_SET_PROC_COEF 0x400 -> 0x004 #define AC_VERB_SET_COEF_INDEX 0x500 -> 0x005
Reading the documentation again it all seems correct to me. The verbs above are "4-Bit verbs", which are correctly shifted in order to assemble 40-Bit commands in hda_intel.c:azx_corb_send_cmd()
Now azx_corb_send_cmd() seems to use an on-chip command buffer. I'm going to try to use azx_single_send_cmd() instead tonight (module parameter single_cmd=1), to see whether this makes any difference.