Lines Matching refs:rtd

153 static void acp6x_config_dma(struct pdm_stream_instance *rtd, int direction)
159 addr = rtd->dma_addr;
163 acp6x_writel(ACP_SRAM_PTE_OFFSET | BIT(31), rtd->acp6x_base +
165 acp6x_writel(PAGE_SIZE_4K_ENABLE, rtd->acp6x_base +
167 for (page_idx = 0; page_idx < rtd->num_pages; page_idx++) {
172 acp6x_writel(low, rtd->acp6x_base + ACP_SCRATCH_REG_0 + val);
174 acp6x_writel(high, rtd->acp6x_base + ACP_SCRATCH_REG_0 + val + 4);
219 struct pdm_stream_instance *rtd;
222 rtd = substream->runtime->private_data;
223 if (!rtd)
227 rtd->dma_addr = substream->runtime->dma_addr;
228 rtd->num_pages = (PAGE_ALIGN(size) >> PAGE_SHIFT);
229 acp6x_config_dma(rtd, substream->stream);
231 period_bytes, rtd->acp6x_base);
235 static u64 acp6x_pdm_get_byte_count(struct pdm_stream_instance *rtd,
241 acp6x_readl(rtd->acp6x_base + ACP_WOV_RX_LINEARPOSITIONCNTR_HIGH);
243 acp6x_readl(rtd->acp6x_base + ACP_WOV_RX_LINEARPOSITIONCNTR_LOW);
250 struct pdm_stream_instance *rtd;
254 rtd = stream->runtime->private_data;
257 bytescount = acp6x_pdm_get_byte_count(rtd, stream->stream);
258 if (bytescount > rtd->bytescount)
259 bytescount -= rtd->bytescount;
265 struct snd_soc_pcm_runtime *rtd)
269 snd_pcm_set_managed_buffer_all(rtd->pcm, SNDRV_DMA_TYPE_DEV,
287 struct pdm_stream_instance *rtd;
292 rtd = substream->runtime->private_data;
305 acp6x_writel(ch_mask, rtd->acp6x_base + ACP_WOV_PDM_NO_OF_CHANNELS);
306 acp6x_writel(PDM_DECIMATION_FACTOR, rtd->acp6x_base +
308 rtd->bytescount = acp6x_pdm_get_byte_count(rtd, substream->stream);
309 pdm_status = acp6x_check_pdm_dma_status(rtd->acp6x_base);
311 ret = acp6x_start_pdm_dma(rtd->acp6x_base);
316 pdm_status = acp6x_check_pdm_dma_status(rtd->acp6x_base);
318 ret = acp6x_stop_pdm_dma(rtd->acp6x_base);
401 struct pdm_stream_instance *rtd;
407 rtd = runtime->private_data;
410 acp6x_config_dma(rtd, SNDRV_PCM_STREAM_CAPTURE);