Symbol: rt5677_dsp
sound/soc/codecs/rt5677-spi.c
120
struct rt5677_dsp *rt5677_dsp =
sound/soc/codecs/rt5677-spi.c
123
cancel_delayed_work_sync(&rt5677_dsp->copy_work);
sound/soc/codecs/rt5677-spi.c
133
struct rt5677_dsp *rt5677_dsp =
sound/soc/codecs/rt5677-spi.c
136
mutex_lock(&rt5677_dsp->dma_lock);
sound/soc/codecs/rt5677-spi.c
137
rt5677_dsp->substream = substream;
sound/soc/codecs/rt5677-spi.c
138
mutex_unlock(&rt5677_dsp->dma_lock);
sound/soc/codecs/rt5677-spi.c
147
struct rt5677_dsp *rt5677_dsp =
sound/soc/codecs/rt5677-spi.c
150
mutex_lock(&rt5677_dsp->dma_lock);
sound/soc/codecs/rt5677-spi.c
151
rt5677_dsp->substream = NULL;
sound/soc/codecs/rt5677-spi.c
152
mutex_unlock(&rt5677_dsp->dma_lock);
sound/soc/codecs/rt5677-spi.c
166
struct rt5677_dsp *rt5677_dsp =
sound/soc/codecs/rt5677-spi.c
170
rt5677_dsp->dma_offset = 0;
sound/soc/codecs/rt5677-spi.c
171
rt5677_dsp->avail_bytes = 0;
sound/soc/codecs/rt5677-spi.c
180
struct rt5677_dsp *rt5677_dsp =
sound/soc/codecs/rt5677-spi.c
183
return bytes_to_frames(runtime, rt5677_dsp->dma_offset);
sound/soc/codecs/rt5677-spi.c
211
static int rt5677_spi_copy_block(struct rt5677_dsp *rt5677_dsp,
sound/soc/codecs/rt5677-spi.c
214
struct snd_pcm_runtime *runtime = rt5677_dsp->substream->runtime;
sound/soc/codecs/rt5677-spi.c
220
dev_err(rt5677_dsp->dev,
sound/soc/codecs/rt5677-spi.c
239
if (rt5677_dsp->dma_offset + first_chunk_len > runtime->dma_bytes) {
sound/soc/codecs/rt5677-spi.c
242
first_chunk_len = runtime->dma_bytes - rt5677_dsp->dma_offset;
sound/soc/codecs/rt5677-spi.c
248
runtime->dma_area + rt5677_dsp->dma_offset,
sound/soc/codecs/rt5677-spi.c
252
rt5677_dsp->dma_offset += first_chunk_len;
sound/soc/codecs/rt5677-spi.c
253
if (rt5677_dsp->dma_offset == runtime->dma_bytes)
sound/soc/codecs/rt5677-spi.c
254
rt5677_dsp->dma_offset = 0;
sound/soc/codecs/rt5677-spi.c
262
rt5677_dsp->dma_offset = second_chunk_len;
sound/soc/codecs/rt5677-spi.c
275
static int rt5677_spi_copy(struct rt5677_dsp *rt5677_dsp, u32 amount)
sound/soc/codecs/rt5677-spi.c
283
target = rt5677_dsp->mic_read_offset + amount;
sound/soc/codecs/rt5677-spi.c
285
ret |= rt5677_spi_copy_block(rt5677_dsp, rt5677_dsp->mic_read_offset,
sound/soc/codecs/rt5677-spi.c
291
ret |= rt5677_spi_copy_block(rt5677_dsp, 0, target);
sound/soc/codecs/rt5677-spi.c
295
rt5677_dsp->mic_read_offset = target;
sound/soc/codecs/rt5677-spi.c
305
struct rt5677_dsp *rt5677_dsp =
sound/soc/codecs/rt5677-spi.c
306
container_of(work, struct rt5677_dsp, copy_work.work);
sound/soc/codecs/rt5677-spi.c
314
mutex_lock(&rt5677_dsp->dma_lock);
sound/soc/codecs/rt5677-spi.c
315
if (!rt5677_dsp->substream) {
sound/soc/codecs/rt5677-spi.c
316
dev_err(rt5677_dsp->dev, "No pcm substream\n");
sound/soc/codecs/rt5677-spi.c
320
runtime = rt5677_dsp->substream->runtime;
sound/soc/codecs/rt5677-spi.c
323
dev_err(rt5677_dsp->dev, "No mic_write_offset\n");
sound/soc/codecs/rt5677-spi.c
331
if (rt5677_dsp->new_hotword) {
sound/soc/codecs/rt5677-spi.c
332
rt5677_dsp->new_hotword = false;
sound/soc/codecs/rt5677-spi.c
335
rt5677_dsp->mic_read_offset = RT5677_MIC_BUF_BYTES -
sound/soc/codecs/rt5677-spi.c
339
rt5677_dsp->mic_read_offset = mic_write_offset -
sound/soc/codecs/rt5677-spi.c
344
if (rt5677_dsp->mic_read_offset <= mic_write_offset)
sound/soc/codecs/rt5677-spi.c
345
new_bytes = mic_write_offset - rt5677_dsp->mic_read_offset;
sound/soc/codecs/rt5677-spi.c
348
- rt5677_dsp->mic_read_offset;
sound/soc/codecs/rt5677-spi.c
351
period_bytes = snd_pcm_lib_period_bytes(rt5677_dsp->substream);
sound/soc/codecs/rt5677-spi.c
354
- rt5677_dsp->avail_bytes);
sound/soc/codecs/rt5677-spi.c
355
ret = rt5677_spi_copy(rt5677_dsp, copy_bytes);
sound/soc/codecs/rt5677-spi.c
357
dev_err(rt5677_dsp->dev, "Copy failed %d\n", ret);
sound/soc/codecs/rt5677-spi.c
360
rt5677_dsp->avail_bytes += copy_bytes;
sound/soc/codecs/rt5677-spi.c
361
if (rt5677_dsp->avail_bytes >= period_bytes) {
sound/soc/codecs/rt5677-spi.c
362
snd_pcm_period_elapsed(rt5677_dsp->substream);
sound/soc/codecs/rt5677-spi.c
363
rt5677_dsp->avail_bytes = 0;
sound/soc/codecs/rt5677-spi.c
369
schedule_delayed_work(&rt5677_dsp->copy_work, secs_to_jiffies(delay));
sound/soc/codecs/rt5677-spi.c
371
mutex_unlock(&rt5677_dsp->dma_lock);
sound/soc/codecs/rt5677-spi.c
384
struct rt5677_dsp *rt5677_dsp;
sound/soc/codecs/rt5677-spi.c
386
rt5677_dsp = devm_kzalloc(component->dev, sizeof(*rt5677_dsp),
sound/soc/codecs/rt5677-spi.c
388
if (!rt5677_dsp)
sound/soc/codecs/rt5677-spi.c
390
rt5677_dsp->dev = &g_spi->dev;
sound/soc/codecs/rt5677-spi.c
391
mutex_init(&rt5677_dsp->dma_lock);
sound/soc/codecs/rt5677-spi.c
392
INIT_DELAYED_WORK(&rt5677_dsp->copy_work, rt5677_spi_copy_work);
sound/soc/codecs/rt5677-spi.c
394
snd_soc_component_set_drvdata(component, rt5677_dsp);
sound/soc/codecs/rt5677-spi.c
583
struct rt5677_dsp *rt5677_dsp;
sound/soc/codecs/rt5677-spi.c
588
rt5677_dsp = dev_get_drvdata(&g_spi->dev);
sound/soc/codecs/rt5677-spi.c
589
if (!rt5677_dsp) {
sound/soc/codecs/rt5677-spi.c
594
mutex_lock(&rt5677_dsp->dma_lock);
sound/soc/codecs/rt5677-spi.c
595
dev_info(rt5677_dsp->dev, "Hotword detected\n");
sound/soc/codecs/rt5677-spi.c
596
rt5677_dsp->new_hotword = true;
sound/soc/codecs/rt5677-spi.c
597
mutex_unlock(&rt5677_dsp->dma_lock);
sound/soc/codecs/rt5677-spi.c
599
schedule_delayed_work(&rt5677_dsp->copy_work, 0);