After some hacking, I found that for some reason, something is calling azx_send_cmd with nids much wider than 7 bits. This happens exactly twice, once with nid=0x534c, and nid=0x8845. Both times, the verb is 0xf1c, and para=0x00. This clobbers parts of "val" in both azx_single_send_cmd and azx_corb_send_cmd. I added the following code to azx_send_cmd, and it works now: if (!direct && (nid >> 7)) { snd_printd(SFX "Uh oh, too wide an NID value. codec=0x%x, direct=0x%x, nid=0x%x, verb=0x%x, para=0x%x\n", (codec->addr)&0xf, direct, nid, verb, para); return -EIO; }
This outputs:
[136890.000388] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide an NID value. codec=0x0, direct=0x0, nid=0x534c, verb=0xf1c, para=0x0 [136890.000393] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide an NID value. codec=0x0, direct=0x0, nid=0x8845, verb=0xf1c, para=0x0
I do realize that the problem is not completely fixed, and we still need to figure out what actually calls azx_send_cmd with the offending parameters. However, I am now lost in a sea of function pointers...
And it still doesn't work after a suspend, and I get a handful more "uh oh"s upon resume: [ 3.942647] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide a NID value. codec=0x0, direct=0x0, nid =0x534c, verb=0x71c, para=0xff [ 3.942658] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide a NID value. codec=0x0, direct=0x0, nid =0x534c, verb=0x71d, para=0xff [ 3.942668] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide a NID value. codec=0x0, direct=0x0, nid =0x534c, verb=0x71e, para=0xff [ 3.942678] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide a NID value. codec=0x0, direct=0x0, nid =0x534c, verb=0x71f, para=0xff [ 3.942688] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide a NID value. codec=0x0, direct=0x0, nid =0x534c, verb=0xf1c, para=0x0 [ 3.942697] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide a NID value. codec=0x0, direct=0x0, nid =0x8845, verb=0x71c, para=0xff [ 3.942707] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide a NID value. codec=0x0, direct=0x0, nid =0x8845, verb=0x71d, para=0xff [ 3.942717] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide a NID value. codec=0x0, direct=0x0, nid =0x8845, verb=0x71e, para=0xff [ 3.942727] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide a NID value. codec=0x0, direct=0x0, nid =0x8845, verb=0x71f, para=0xff [ 3.942736] ALSA /home/mmullins/Desktop/alsa/alsa-driver/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:644: hda-intel: Uh oh, too wide a NID value. codec=0x0, direct=0x0, nid =0x8845, verb=0xf1c, para=0x0 ---- Matt Mullins