ASoC: kirkwood-i2s: fix pause handling some more
authorRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 26 Jun 2014 14:23:10 +0000 (15:23 +0100)
committerMark Brown <broonie@linaro.org>
Sat, 28 Jun 2014 12:18:33 +0000 (13:18 +0100)
We still see the occasional timeout waiting for busy to clear.  As the
spec is contradictory, and we know that the current implementation
doesn't work, try an alternative interpretation from the spec.  This
one appears to work - I have yet to find any issue with it during my
testing over several months.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Tested-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/kirkwood/kirkwood-i2s.c

index b601ad680d7b6bf9b13d46715b5f9524d4147bb7..e98650c01ebaf634de07c75bbbaa04a41c571ba0 100644 (file)
@@ -238,7 +238,7 @@ static int kirkwood_i2s_play_trigger(struct snd_pcm_substream *substream,
        uint32_t ctl, value;
 
        ctl = readl(priv->io + KIRKWOOD_PLAYCTL);
-       if (ctl & KIRKWOOD_PLAYCTL_PAUSE) {
+       if ((ctl & KIRKWOOD_PLAYCTL_ENABLE_MASK) == 0) {
                unsigned timeout = 5000;
                /*
                 * The Armada510 spec says that if we enter pause mode, the