Comment 16 for bug 100114

Revision history for this message
TJ (tj) wrote :

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.