linux_dsm_epyc7002/sound/soc
Ben Zhang a0e0d13542
ASoC: rt5677: Add a PCM device for streaming hotword via SPI
This patch implements a PCM interface for streaming hotword
phrases over SPI. Userspace can open the PCM device at anytime.
The stream is blocked when no hotword is detected. The mic
audio buffer on the DSP is a ~128KByte ring buffer that holds
~4sec of audio samples recorded from the DMIC (S16_LE, mono,
16KHz). After a hotword is detected, previous 2 seconds of audio
(containing the detected hotword) is streamed first, then live
capture continues until userspace closes the PCM stream.

When transferring, copy one period at a time then call
snd_pcm_period_elapsed(). This reduces the latency of transferring
the initial ~2sec of audio after hotword detect since audio samples
are available for userspace earlier.

Signed-off-by: Ben Zhang <benzh@chromium.org>
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Link: https://lore.kernel.org/r/20191018200449.141123-2-cujomalainey@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2019-10-22 17:55:16 +01:00
..
adi treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
amd ASoC: amd: acp-pcm-dma: remove snd_pcm_ops 2019-10-08 13:42:38 +01:00
atmel ASoC: atmel: atmel-pcm-pdc: remove snd_pcm_ops 2019-10-08 13:42:57 +01:00
au1x ASoC: au1x: dma: remove snd_pcm_ops 2019-10-08 13:43:14 +01:00
bcm ASoC: bcm: cygnus-pcm: remove snd_pcm_ops 2019-10-08 13:49:12 +01:00
cirrus ASoC: ep93xx: use devm_platform_ioremap_resource() to simplify code 2019-09-04 13:48:22 +01:00
codecs ASoC: rt5677: Add a PCM device for streaming hotword via SPI 2019-10-22 17:55:16 +01:00
dwc ASoC: dwc: dwc-pcm: remove snd_pcm_ops 2019-10-08 13:48:35 +01:00
fsl ASoC: fsl_mqs: Move static keyword to the front of declarations 2019-10-14 12:57:59 +01:00
generic ASoC: audio-graph: fixup graph_dai_link_of_dpcm() comment 2019-10-15 10:13:29 +01:00
hisilicon treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 340 2019-06-05 17:37:07 +02:00
img treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
intel ASoC: Intel: eve: Enable mclk and ssp sclk early 2019-10-15 10:11:59 +01:00
jz4740 ASoC: jz4740: Remove unused match variable 2019-10-09 10:58:01 +01:00
kirkwood ASoC: kirkwood: kirkwood-dma: remove snd_pcm_ops 2019-10-08 13:48:16 +01:00
mediatek ASoC: mediatek: mt8183: support WoV 2019-10-21 13:52:49 +01:00
meson ASoC: meson: remove snd_pcm_ops 2019-10-08 13:47:40 +01:00
mxs ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
pxa ASoC: pxa: remove snd_pcm_ops 2019-10-08 13:47:20 +01:00
qcom ASoC: qcom: q6asm-dai: remove snd_pcm_ops 2019-10-08 13:47:00 +01:00
rockchip LED updates for 5.4-rc1 2019-09-17 18:40:42 -07:00
samsung ASoC: samsung: idma: remove snd_pcm_ops 2019-10-08 13:46:14 +01:00
sh ASoC: sh: siu_pcm: remove snd_pcm_ops 2019-10-08 13:46:06 +01:00
sirf ASoC: sirf: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:05:39 +01:00
sof ASoC: SOF: Fix randbuild error 2019-10-14 17:11:57 +01:00
spear ASoC: spear: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:06:18 +01:00
sprd ASoC: sprd: sprd-pcm-dma: remove snd_pcm_ops 2019-10-08 13:44:40 +01:00
sti ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
stm ASoC: stm32: spdifrx: retry synchronization in sync state 2019-10-14 12:57:29 +01:00
sunxi ASoC: sun4i: Revert A83t description 2019-08-27 19:22:02 +01:00
tegra ASoC: tegra: use devm_platform_ioremap_resource() to simplify code 2019-09-04 13:48:50 +01:00
ti ASoC: Fixes for v5.4 2019-09-23 20:16:13 +02:00
txx9 ASoC: txx9: txx9aclc: remove snd_pcm_ops 2019-10-08 13:44:23 +01:00
uniphier ASoC: uniphier: aio-dma: remove snd_pcm_ops 2019-10-08 13:44:05 +01:00
ux500 ASoC: ux500: mop500: consider CPU-Platform possibility 2019-06-28 15:19:55 +01:00
xilinx ASoC: xilinx: xlnx_formatter_pcm: remove snd_pcm_ops 2019-10-08 13:43:44 +01:00
xtensa ASoC: xtensa: xtfpga-i2s: remove snd_pcm_ops 2019-10-08 13:43:25 +01:00
zte ASoC: zx-tdm: remove redundant assignment to ts_width on error return path 2019-08-01 13:56:26 +01:00
Kconfig ASoC: remove w90x900/nuc900 platform drivers 2019-08-12 14:00:29 +01:00
Makefile ASoC: remove w90x900/nuc900 platform drivers 2019-08-12 14:00:29 +01:00
soc-ac97.c
soc-acpi.c ASoC: soc-acpi: fix implicit header use of module.h/export.h 2019-05-08 18:06:28 +09:00
soc-component.c ASoC: soc-component: remove snd_pcm_ops from component driver 2019-10-08 13:51:02 +01:00
soc-compress.c ASoC: core: Move pcm_mutex up to card level from snd_soc_pcm_runtime 2019-08-15 15:07:43 +01:00
soc-core.c ASoC: soc-core: add snd_soc_pcm_lib_ioctl() 2019-10-08 13:40:48 +01:00
soc-dai.c ASoC: soc-dai: move snd_soc_dai_stream_valid() to soc-dai.c 2019-07-23 18:14:26 +01:00
soc-dapm.c ASoC: soc-core: add snd_soc_dapm_init() 2019-09-02 13:21:20 +01:00
soc-devres.c
soc-generic-dmaengine-pcm.c ASoC: soc-generic-dmaengine-pcm: remove snd_pcm_ops 2019-10-08 13:50:25 +01:00
soc-io.c
soc-jack.c ASoC: add soc-component.c 2019-08-05 16:16:19 +01:00
soc-ops.c ASoC: soc-ops: use snd_soc_card_get_kcontrol() at snd_soc_limit_volume() 2019-10-03 14:37:20 +01:00
soc-pcm.c ASoC: soc-component: remove snd_pcm_ops from component driver 2019-10-08 13:51:02 +01:00
soc-topology.c Merge branch 'asoc-5.4' into asoc-5.5 2019-10-02 12:50:40 +01:00
soc-utils.c ASoC: soc-utils: remove snd_pcm_ops 2019-10-08 13:50:43 +01:00