• Trent Piepho's avatar
    V4L/DVB (6066): cx88-alsa: Change order of interrupt enabling, fix spurious IRQs · 59fd8f8d
    Trent Piepho authored
    Currently the driver turns on audio interrupts, then sets the audio interrupt
    mask to select which interrupts to get.  One could received unwanted
    interrupts since the mask is set _after_ interrupts have already been turned
    on.  Change the order of the operations, and clear any audio interrupt status
    bits that are already set for good measure.
    
    Before changing the SRAM FIFO parameters, make sure the FIFO isn't being used.
    This shouldn't happen with just the ALSA driver, as it should never try to
    turn on FIFO/RISC/DMA while they are already on.  However, the V4L driver
    needs to turn the audio FIFO on for analog audio output to work (undocumented
    cx88 bug).  The FIFO parameters are in an inconsistent state while they are
    updated, and this results in many FIFO sync error IRQs if the FIFO is in use
    while it's in this inconsistent state.
    
    Also create and use a bunch of symbolic constants for audio interrupt mask
    bits.
    Signed-off-by: default avatarTrent Piepho <xyzzy@speakeasy.org>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
    59fd8f8d
cx88-reg.h 33.5 KB