• Daniel Mack's avatar
    ASoC: pxa-ssp: atomically set stream active masks · 273b72c8
    Daniel Mack authored
    PXA's SSP engine fails to take its current channel phase into account
    when enabling a stream while the engine is already running. This
    results in randomly swapped left/right channels on either the record
    or the playback side, depending on which one was enabled first.
    
    The following patch fixes this by factoring out the bit field
    modifications in question to a separate function that pauses the
    engine temporarily, modifies the bits and kicks it off again
    afterwards. Appearantly, a transition of SSCR0_SSE syncs both
    directions properly.
    
    The patch has been rolled out to quite a number of devices over the
    last weeks and seems to fix the issue reliably.
    Signed-off-by: default avatarDaniel Mack <zonque@gmail.com>
    Reported-and-tested-by: default avatarSven Neumann <s.neumann@raumfeld.com>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    Cc: stable@vger.kernel.org
    273b72c8
pxa-ssp.c 19.6 KB