1
0
Fork 0
alistair23-linux/sound/soc/pxa
Daniel Mack 273b72c8ce ASoC: pxa-ssp: atomically set stream active masks
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: Daniel Mack <zonque@gmail.com>
Reported-and-tested-by: Sven Neumann <s.neumann@raumfeld.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
2012-03-19 12:47:25 +00:00
..
Kconfig ASoC: Fix dependency for SND_SOC_RAUMFELD and SND_PXA2XX_SOC_HX4700 2011-12-04 23:47:16 +00:00
Makefile ASoC: add iPAQ hx4700 machine driver 2011-05-19 14:10:59 -07:00
corgi.c ASoC: core: Add support for DAI and machine kcontrols. 2012-02-04 12:40:11 +00:00
e740_wm9705.c ASoC: pxa: Add .owner to struct snd_soc_card 2011-12-22 11:04:18 +00:00
e750_wm9705.c ASoC: pxa: Add .owner to struct snd_soc_card 2011-12-22 11:04:18 +00:00
e800_wm9712.c ASoC: pxa: Add .owner to struct snd_soc_card 2011-12-22 11:04:18 +00:00
em-x270.c ASoC: pxa: Add .owner to struct snd_soc_card 2011-12-22 11:04:18 +00:00
hx4700.c ASoC: pxa: Add .owner to struct snd_soc_card 2011-12-22 11:04:18 +00:00
imote2.c ASoC: pxa: Add .owner to struct snd_soc_card 2011-12-22 11:04:18 +00:00
magician.c ASoC: core: Add support for DAI and machine kcontrols. 2012-02-04 12:40:11 +00:00
mioa701_wm9713.c ASoC: pxa: Add .owner to struct snd_soc_card 2011-12-22 11:04:18 +00:00
palm27x.c ASoC: pxa: Add .owner to struct snd_soc_card 2011-12-22 11:04:18 +00:00
poodle.c ASoC: core: Add support for DAI and machine kcontrols. 2012-02-04 12:40:11 +00:00
pxa-ssp.c ASoC: pxa-ssp: atomically set stream active masks 2012-03-19 12:47:25 +00:00
pxa-ssp.h ASoC: multi-component - ASoC Multi-Component Support 2010-08-12 14:00:00 +01:00
pxa2xx-ac97.c ASoC: Add __devinit annotation for pxa2xx_ac97_probe 2012-02-19 18:13:02 -08:00
pxa2xx-ac97.h ASoC: multi-component - ASoC Multi-Component Support 2010-08-12 14:00:00 +01:00
pxa2xx-i2s.c ASoC: Constify snd_soc_dai_ops structs 2011-11-23 10:40:46 +00:00
pxa2xx-i2s.h ASoC: multi-component - ASoC Multi-Component Support 2010-08-12 14:00:00 +01:00
pxa2xx-pcm.c ASoC: Convert pxa directory to module_platform_driver 2011-11-25 13:15:16 +00:00
raumfeld.c ASoC: Remove unnecessary -codec from cs4270 driver name 2012-02-28 12:35:20 +00:00
saarb.c ASoC: Convert saarb to table based DAPM init 2012-01-02 13:08:36 +00:00
spitz.c ASoC: Change spitz_ext_control to take dapm as argument. 2012-02-17 08:09:33 -08:00
tavorevb3.c ASoC: Use dai_fmt in tavorevb3 machine driver 2012-01-02 13:08:39 +00:00
tosa.c ASoC: core: Add support for DAI and machine kcontrols. 2012-02-04 12:40:11 +00:00
z2.c ASoC: Convert z2 to table based DAPM init 2012-01-02 13:08:38 +00:00
zylonite.c ASoC: pxa: Add .owner to struct snd_soc_card 2011-12-22 11:04:18 +00:00