linux-stable/sound/soc/fsl
Maciej S. Szmigiero 01ca485171
ASoC: fsl_ssi: only enable proper channel slots in AC'97 mode
We need to make sure that only proper channel slots (in SACCST register)
are enabled at playback start time since some AC'97 CODECs (like VT1613 on
UDOO board) were observed requesting via SLOTREQ spurious ones just after
an AC'97 link is started but before the CODEC is configured by its driver.
When a bit for some channel slot is set in a SLOTREQ request then SSI sets
the relevant bit in SACCST automatically, which then 'sticks' until it is
manually unset.
The SACCST register is not writable directly, we have to use SACCDIS and
SACCEN registers to configure it instead (these aren't normal registers:
writing a '1' bit at some position in SACCEN sets the relevant bit in
SACCST; SACCDIS operates in a similar way but allows unsetting bits in
SACCST).

Theoretically, this should be necessary only for the very first playback
but since some CODECs are so untrustworthy and extra channel slots enabled
mean ruined playback let's play safe here and make sure that no extra
slots are enabled in SACCST every time a playback is started.

Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2017-11-29 10:39:28 +00:00
..
efika-audio-fabric.c
eukrea-tlv320.c
fsl-asoc-card.c ASoC: fsl-asoc-card: Handle return value of devm_kasprintf 2017-09-21 16:20:10 +01:00
fsl_asrc.c ASoC: fsl_asrc: constify snd_soc_dai_ops structure 2017-07-17 16:16:39 +01:00
fsl_asrc.h
fsl_asrc_dma.c ASoC: fsl: make snd_pcm_hardware const 2017-08-17 17:56:52 +01:00
fsl_dma.c ASoC: fsl_dma: remove dma_object path member 2017-08-29 19:44:47 +01:00
fsl_dma.h
fsl_esai.c ASoC: fsl_esai: constify snd_soc_dai_ops structure 2017-07-17 16:16:38 +01:00
fsl_esai.h
fsl_sai.c
fsl_sai.h
fsl_spdif.c ASoC: fsl_spdif: make const arrays rate static 2017-09-04 13:40:45 +01:00
fsl_spdif.h
fsl_ssi.c ASoC: fsl_ssi: only enable proper channel slots in AC'97 mode 2017-11-29 10:39:28 +00:00
fsl_ssi.h
fsl_ssi_dbg.c
fsl_utils.c
fsl_utils.h
imx-audmux.c ASoC: fsl: Convert to using %pOF instead of full_name 2017-08-08 11:36:54 +01:00
imx-audmux.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
imx-es8328.c ASoC: fsl: Remove superfluous snd_soc_jack_free_gpios() call 2017-08-22 13:38:39 +01:00
imx-mc13783.c
imx-pcm-dma.c
imx-pcm-fiq.c ASoC: fsl: make snd_pcm_hardware const 2017-08-17 17:56:52 +01:00
imx-pcm.h
imx-sgtl5000.c
imx-spdif.c
imx-ssi.c ASoC: imx-ssi: add check on platform_get_irq return value 2017-07-07 13:50:43 +01:00
imx-ssi.h
imx-wm8962.c
Kconfig
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mpc5200_dma.c ASoC: fsl: make snd_soc_platform_driver const 2017-08-14 17:18:04 +01:00
mpc5200_dma.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mpc5200_psc_ac97.c
mpc5200_psc_i2s.c
mpc8610_hpcd.c
mx27vis-aic32x4.c
p1022_ds.c
p1022_rdk.c
pcm030-audio-fabric.c
phycore-ac97.c
wm1133-ev1.c