linux_dsm_epyc7002/sound/soc
Lars-Peter Clausen 35afd9221b ASoC: wm8753: Integrate capacitor charging into the DAPM sequence
When being powered on, either initially on probe or when resuming from
suspend, the wm8971 configures the device for quick output capacitor
charging. Since the charging can take a rather long time (up to multiple
seconds) it is done asynchronously without blocking. A delayed work item is
run once the charging is finished and the device is switched to the target
bias level.

This all done asynchronously to the regular DAPM sequence accessing the same
data structures and registers without any looking, which can lead to race
conditions. Furthermore this potentially delays the start of stream on the
CODEC while the rest of the system is already up and running, meaning the
first bytes of audio are lost. It also does no comply with the assumption of
the DAPM core that if set_bias_level() returned successfully the device will
be at the requested bias level.

This patch slightly refactors things and makes sure that the caps charging
is properly integrated into the DAPM sequence. When transitioning from
SND_SOC_BIAS_OFF to SND_SOC_BIAS_STANDBY the part will be put into fast
charging mode and a work item will be scheduled that puts it back into
standby charging once the charging period has elapsed. If a playback or
capture stream is started while charging is in progress the driver will now
wait in SND_SOC_BIAS_PREPARE until the charging is done. This makes sure
that charging is done asynchronously in the background when the chip is
idle, but at the same time makes sure that playback/capture is not started
before the charging is done.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2015-04-01 21:27:44 +01:00
..
adi ASoC: adi: Add missing return statement. 2015-01-05 20:16:20 +00:00
atmel Merge remote-tracking branches 'asoc/topic/cs42l73', 'asoc/topic/dai' and 'asoc/topic/davinci' into asoc-next 2015-02-09 15:10:14 +08:00
au1x Merge remote-tracking branches 'asoc/topic/cs42l73', 'asoc/topic/dai' and 'asoc/topic/davinci' into asoc-next 2015-02-09 15:10:14 +08:00
bcm ASoC: bcm: drop owner assignment from platform_drivers 2014-10-20 16:22:04 +02:00
blackfin Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
cirrus Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
codecs ASoC: wm8753: Integrate capacitor charging into the DAPM sequence 2015-04-01 21:27:44 +01:00
davinci ASoC: davinci-mcasp: Fix DIT only McASP instance support 2015-02-02 18:32:43 +00:00
dwc Merge remote-tracking branches 'asoc/topic/doc', 'asoc/topic/dwc', 'asoc/topic/fsi', 'asoc/topic/fsl' and 'asoc/topic/fsl-asrc' into asoc-next 2015-02-09 15:10:17 +08:00
fsl Merge remote-tracking branches 'asoc/topic/simple', 'asoc/topic/sta32x', 'asoc/topic/tdm-slot', 'asoc/topic/tegra' and 'asoc/topic/tlv320aic3x' into asoc-next 2015-02-09 15:10:29 +08:00
generic Merge remote-tracking branches 'asoc/topic/simple', 'asoc/topic/sta32x', 'asoc/topic/tdm-slot', 'asoc/topic/tegra' and 'asoc/topic/tlv320aic3x' into asoc-next 2015-02-09 15:10:29 +08:00
intel ASoC: Intel: add SNDRV_PCM_INFO_DRAIN_TRIGGER flag 2015-02-17 07:48:15 +01:00
jz4740 ASoC: jz4740: Add DT support to jz4740-i2s driver 2015-02-04 21:12:48 +00:00
kirkwood ASoC: kirkwood: drop owner assignment from platform_drivers 2014-10-20 16:22:10 +02:00
mxs Merge remote-tracking branches 'asoc/topic/mxs-saif' and 'asoc/topic/nuc900' into asoc-next 2015-02-09 15:10:23 +08:00
nuc900 ASoC: nuc900: Remove unnecessary snd_pcm_lib_preallocate_free_for_all() 2015-01-05 21:29:25 +00:00
omap Merge remote-tracking branches 'asoc/topic/rt5670', 'asoc/topic/rt5677', 'asoc/topic/rx51', 'asoc/topic/samsung' and 'asoc/topic/sh' into asoc-next 2015-02-09 15:10:26 +08:00
pxa Merge remote-tracking branches 'asoc/topic/pxa', 'asoc/topic/rcar' and 'asoc/topic/rt286' into asoc-next 2015-02-09 15:10:24 +08:00
rockchip ASoC: Updates for v3.20 2015-02-09 15:09:48 +08:00
samsung Merge remote-tracking branches 'asoc/topic/cs42l73', 'asoc/topic/dai' and 'asoc/topic/davinci' into asoc-next 2015-02-09 15:10:14 +08:00
sh Merge remote-tracking branches 'asoc/topic/rt5670', 'asoc/topic/rt5677', 'asoc/topic/rx51', 'asoc/topic/samsung' and 'asoc/topic/sh' into asoc-next 2015-02-09 15:10:26 +08:00
sirf ASoC: sirf: drop owner assignment from platform_drivers 2014-10-20 16:22:14 +02:00
spear ASoC: spear: drop owner assignment from platform_drivers 2014-10-20 16:22:14 +02:00
tegra ASoC: tegra: Add platform driver for rt5677 audio codec 2015-01-07 18:54:23 +00:00
txx9 ASoC: txx9: Remove unnecessary snd_pcm_lib_preallocate_free_for_all() 2015-01-05 21:30:20 +00:00
ux500 ASoC: mop500_ab8500: Use snd_soc_runtime_set_dai_fmt() 2015-01-07 18:02:11 +00:00
xtensa ASoC: add xtensa xtfpga I2S interface and platform 2015-01-08 19:52:11 +00:00
Kconfig ASoC: add xtensa xtfpga I2S interface and platform 2015-01-08 19:52:11 +00:00
Makefile ASoC: add xtensa xtfpga I2S interface and platform 2015-01-08 19:52:11 +00:00
soc-ac97.c ASoC: Add support for allocating AC'97 device before registering it 2015-01-26 19:14:20 +00:00
soc-cache.c ASoC: Remove snd_soc_cache_sync() implementation 2014-11-09 09:06:30 +00:00
soc-compress.c ASoC: soc-compress.c: fix NULL dereference 2015-01-15 15:54:04 +00:00
soc-core.c Merge remote-tracking branches 'asoc/topic/simple', 'asoc/topic/sta32x', 'asoc/topic/tdm-slot', 'asoc/topic/tegra' and 'asoc/topic/tlv320aic3x' into asoc-next 2015-02-09 15:10:29 +08:00
soc-dapm.c Merge remote-tracking branch 'asoc/topic/w-codec' into asoc-next 2015-02-09 15:10:03 +08:00
soc-devres.c ASoC: Fix warning with make xmldocs caused by soc-devres.c 2015-01-28 11:36:03 +00:00
soc-generic-dmaengine-pcm.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-02-18 08:49:20 -08:00
soc-io.c ASoC: Automatically initialize regmap for all components 2014-08-19 10:59:47 -05:00
soc-jack.c Merge remote-tracking branches 'asoc/topic/hdmi', 'asoc/topic/intel', 'asoc/topic/jack', 'asoc/topic/jz4740' and 'asoc/topic/lm49453' into asoc-next 2014-12-08 13:12:00 +00:00
soc-ops.c ASoC: core: Split ops out of soc-core.c 2014-10-29 11:15:10 +00:00
soc-pcm.c Merge branch 'topic/msbits' into for-next 2014-12-31 17:13:41 +01:00
soc-utils.c ASoC: : drop owner assignment from platform_drivers 2014-10-20 16:22:02 +02:00