Allright, I can see the DMA pointer not being updated. az_interrupt() calls snd_pcm_period_elapsed(), where the position pointer is read using snd_pcm_update_hw_ptr_pos(), which gets the current position from the driver: azx_pcm_pointer() in our case. Printing pos shows that it its value remains the same after a resume, but it is updated fine after a module reload.
I'm getting to the borders of my DMA knowledge, where is posbuf actually updated, because that's the source of the pointer?
Allright, I can see the DMA pointer not being updated. az_interrupt() calls snd_pcm_ period_ elapsed( ), where the position pointer is read using snd_pcm_ update_ hw_ptr_ pos(), which gets the current position from the driver: azx_pcm_pointer() in our case. Printing pos shows that it its value remains the same after a resume, but it is updated fine after a module reload.
I'm getting to the borders of my DMA knowledge, where is posbuf actually updated, because that's the source of the pointer?