Re: [PATCH 0/4] Yet another patchset for LPE audio refactoring

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




- The behavior in had_process_buffer_underrun() isn't clear enough.
  Or, more exactly, the behavior of AUD_HDMI_STATUS reg and AUD_CONFIG
  reg look complex, and need a bit more description for readers
  (including me).

Can you guys enlighten a bit?

For the LPE_AUDIO_Buffer_config register (65020h), there is one
important field
10:8: DMA Fifo watermark. The audio unit has 8x64 bytes, this register
define when to fetch data. Bottom line it'd be wise to avoid rewinding
below that FIFO size...

Right, this may be needed to be exposed.


There are two possible interrupt sources in the
STREAM_X_LPE_AUD_HDMI_STATUS (65064h)
Bit 31: sample buffer underrun. HDMI audio unit did not have enough
samples to insert in video frame (cleared by writing a one)
Bit 29: buffer done status, write 1 to clear
Bit 15: sample buffer underrun interrupt enable

OK, then the current code seems naming the function wrongly.
It names had_enable_audio_int() but actually this should be named as
had_clear_interrupts() or such.

I think enable and clear are two separate steps, you only clear what
you've enabled, no?

To be crystal-clear, there are two interrupts we care about
1. buffer interrupt. This is enabled in bit1 of STREAM_X_LPE_AUD_BUFFER_M_ADDR, the hardware will generate an interrupt when the hardware is done reading the data from memory. Bit0 is set after a new address is programmed (or just to reactivate the same address). 2. underrun interrupt. This is enabled once in the STREAM_X_LPE_AUD_HDMI_STATUS register, you don't need to re-enable it for each buffer.

_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux