• Russell King's avatar
    ASoC: kirkwood-i2s: fix DMA underruns · 982b604b
    Russell King authored
    Stress testing the driver with multiple start/stop events causes
    kirkwood-dma to report underrun errors (which used to cause the kernel
    to lock up solidly).  This is because kirkwood-i2s is not respecting
    the restrictions imposed on clearing the 'pause' bit.  Follow what the
    spec says; the busy bit must be read as being clear twice before the
    pause bit can be released.  This solves the underruns.
    
    However, it has been noticed that the busy bit occasionally does not
    clear itself, hence the waiting is bounded to 5ms maximum to avoid a
    new reason for the kernel to lockup.
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    982b604b
kirkwood-i2s.c 12.9 KB