Yes, I agree. I found some time yesterday to build the alsa-core and
snd-hda modules myself and have been watching the updating of the
hw_ptr_interrupt. I've attached the log. Also, the line

pos -= pos % runtime->min_align;

is, if you read it carefully, not intended to update pos but simply to
ensure pos is aligned on the correct byte/word/dword boundary. That is
why in normal circumstances it doesn't change at that point.

I was comparing the resume operations to initial setup to see if I could
spot any hardware actions (such as writel()) that aren't done during
resume. So far, I've not found anything.

I also checked where azx_dev->posbuf is set, and it is only in one place
and the way the code reads azx_dev->posbuf should always point to the
base address so at the moment I've confused myself as to why pos
returned from azx_pcm_pointer() advances.

If the DMA harware registers were responsible for updating it the
declaration of the structure should be different, or we should find an
azx_dev->posbuf = azx_readl(); type construct.

** Attachment added: "pre/post resume pos, hw_ptr, hw_ptr_interrupt"
   http://launchpadlibrarian.net/8410421/pcm-lib.txt

-- 
snd-hda-intel: distorted sound after resume, until the module is reloaded
https://bugs.launchpad.net/bugs/100114
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to