Lines Matching refs:rtd
331 struct audio_substream_data *rtd,
336 acp_pte_config(acp_mmio, rtd->dma_addr, rtd->num_of_pages,
337 rtd->pte_offset);
339 if (rtd->direction == SNDRV_PCM_STREAM_PLAYBACK) {
340 ch_acp_sysmem = rtd->ch1;
341 ch_acp_i2s = rtd->ch2;
343 ch_acp_i2s = rtd->ch1;
344 ch_acp_sysmem = rtd->ch2;
347 set_acp_sysmem_dma_descriptors(acp_mmio, rtd->size,
348 rtd->direction, rtd->pte_offset,
349 ch_acp_sysmem, rtd->sram_bank,
350 rtd->dma_dscr_idx_1, asic_type);
352 set_acp_to_i2s_dma_descriptors(acp_mmio, rtd->size,
353 rtd->direction, rtd->sram_bank,
354 rtd->destination, ch_acp_i2s,
355 rtd->dma_dscr_idx_2, asic_type);
842 struct audio_substream_data *rtd;
849 rtd = runtime->private_data;
851 if (WARN_ON(!rtd))
856 rtd->i2s_instance = pinfo->play_i2s_instance;
858 rtd->i2s_instance = pinfo->cap_i2s_instance;
859 rtd->capture_channel = pinfo->capture_channel;
866 switch (rtd->i2s_instance) {
875 switch (rtd->i2s_instance) {
889 switch (rtd->i2s_instance) {
891 rtd->pte_offset = ACP_ST_BT_PLAYBACK_PTE_OFFSET;
892 rtd->ch1 = SYSRAM_TO_ACP_BT_INSTANCE_CH_NUM;
893 rtd->ch2 = ACP_TO_I2S_DMA_BT_INSTANCE_CH_NUM;
894 rtd->sram_bank = ACP_SRAM_BANK_3_ADDRESS;
895 rtd->destination = TO_BLUETOOTH;
896 rtd->dma_dscr_idx_1 = PLAYBACK_START_DMA_DESCR_CH8;
897 rtd->dma_dscr_idx_2 = PLAYBACK_START_DMA_DESCR_CH9;
898 rtd->byte_cnt_high_reg_offset =
900 rtd->byte_cnt_low_reg_offset =
908 rtd->pte_offset = ACP_ST_PLAYBACK_PTE_OFFSET;
911 rtd->pte_offset = ACP_PLAYBACK_PTE_OFFSET;
913 rtd->ch1 = SYSRAM_TO_ACP_CH_NUM;
914 rtd->ch2 = ACP_TO_I2S_DMA_CH_NUM;
915 rtd->sram_bank = ACP_SRAM_BANK_1_ADDRESS;
916 rtd->destination = TO_ACP_I2S_1;
917 rtd->dma_dscr_idx_1 = PLAYBACK_START_DMA_DESCR_CH12;
918 rtd->dma_dscr_idx_2 = PLAYBACK_START_DMA_DESCR_CH13;
919 rtd->byte_cnt_high_reg_offset =
921 rtd->byte_cnt_low_reg_offset =
926 switch (rtd->i2s_instance) {
928 rtd->pte_offset = ACP_ST_BT_CAPTURE_PTE_OFFSET;
929 rtd->ch1 = I2S_TO_ACP_DMA_BT_INSTANCE_CH_NUM;
930 rtd->ch2 = ACP_TO_SYSRAM_BT_INSTANCE_CH_NUM;
931 rtd->sram_bank = ACP_SRAM_BANK_4_ADDRESS;
932 rtd->destination = FROM_BLUETOOTH;
933 rtd->dma_dscr_idx_1 = CAPTURE_START_DMA_DESCR_CH10;
934 rtd->dma_dscr_idx_2 = CAPTURE_START_DMA_DESCR_CH11;
935 rtd->byte_cnt_high_reg_offset =
937 rtd->byte_cnt_low_reg_offset =
939 rtd->dma_curr_dscr = mmACP_DMA_CUR_DSCR_11;
944 rtd->pte_offset = ACP_CAPTURE_PTE_OFFSET;
945 rtd->ch1 = I2S_TO_ACP_DMA_CH_NUM;
946 rtd->ch2 = ACP_TO_SYSRAM_CH_NUM;
949 rtd->pte_offset = ACP_ST_CAPTURE_PTE_OFFSET;
950 rtd->sram_bank = ACP_SRAM_BANK_2_ADDRESS;
953 rtd->pte_offset = ACP_CAPTURE_PTE_OFFSET;
954 rtd->sram_bank = ACP_SRAM_BANK_5_ADDRESS;
956 rtd->destination = FROM_ACP_I2S_1;
957 rtd->dma_dscr_idx_1 = CAPTURE_START_DMA_DESCR_CH14;
958 rtd->dma_dscr_idx_2 = CAPTURE_START_DMA_DESCR_CH15;
959 rtd->byte_cnt_high_reg_offset =
961 rtd->byte_cnt_low_reg_offset =
963 rtd->dma_curr_dscr = mmACP_DMA_CUR_DSCR_15;
970 acp_set_sram_bank_state(rtd->acp_mmio, 0, true);
972 rtd->dma_addr = runtime->dma_addr;
973 rtd->order = get_order(size);
976 rtd->size = size;
977 rtd->num_of_pages = PAGE_ALIGN(size) >> PAGE_SHIFT;
978 rtd->direction = substream->stream;
980 config_acp_dma(rtd->acp_mmio, rtd, adata->asic_type);
984 static u64 acp_get_byte_count(struct audio_substream_data *rtd)
988 byte_count.bcount.high = acp_reg_read(rtd->acp_mmio,
989 rtd->byte_cnt_high_reg_offset);
990 byte_count.bcount.low = acp_reg_read(rtd->acp_mmio,
991 rtd->byte_cnt_low_reg_offset);
1005 struct audio_substream_data *rtd = runtime->private_data;
1007 if (!rtd)
1012 bytescount = acp_get_byte_count(rtd);
1013 if (bytescount >= rtd->bytescount)
1014 bytescount -= rtd->bytescount;
1018 dscr = acp_reg_read(rtd->acp_mmio, rtd->dma_curr_dscr);
1019 if (dscr == rtd->dma_dscr_idx_1)
1030 bytescount = acp_get_byte_count(rtd);
1031 if (bytescount > rtd->bytescount)
1032 bytescount -= rtd->bytescount;
1049 struct audio_substream_data *rtd = runtime->private_data;
1052 if (!rtd)
1055 if (rtd->direction == SNDRV_PCM_STREAM_PLAYBACK) {
1056 ch_acp_sysmem = rtd->ch1;
1057 ch_acp_i2s = rtd->ch2;
1059 ch_acp_i2s = rtd->ch1;
1060 ch_acp_sysmem = rtd->ch2;
1062 config_acp_dma_channel(rtd->acp_mmio,
1064 rtd->dma_dscr_idx_1,
1066 config_acp_dma_channel(rtd->acp_mmio,
1068 rtd->dma_dscr_idx_2,
1079 struct audio_substream_data *rtd = runtime->private_data;
1081 if (!rtd)
1087 rtd->bytescount = acp_get_byte_count(rtd);
1089 if (rtd->capture_channel == CAP_CHANNEL0) {
1090 acp_dma_cap_channel_disable(rtd->acp_mmio,
1092 acp_dma_cap_channel_enable(rtd->acp_mmio,
1095 if (rtd->capture_channel == CAP_CHANNEL1) {
1096 acp_dma_cap_channel_disable(rtd->acp_mmio,
1098 acp_dma_cap_channel_enable(rtd->acp_mmio,
1101 acp_dma_start(rtd->acp_mmio, rtd->ch1, true);
1103 acp_dma_start(rtd->acp_mmio, rtd->ch1, true);
1104 acp_dma_start(rtd->acp_mmio, rtd->ch2, true);
1111 acp_dma_stop(rtd->acp_mmio, rtd->ch2);
1112 ret = acp_dma_stop(rtd->acp_mmio, rtd->ch1);
1121 struct snd_soc_pcm_runtime *rtd)
1128 snd_pcm_set_managed_buffer_all(rtd->pcm,
1135 snd_pcm_set_managed_buffer_all(rtd->pcm,
1150 struct audio_substream_data *rtd = runtime->private_data;
1154 switch (rtd->i2s_instance) {
1175 switch (rtd->i2s_instance) {
1197 kfree(rtd);
1300 struct audio_substream_data *rtd;
1320 rtd = adata->play_i2ssp_stream->runtime->private_data;
1321 config_acp_dma(adata->acp_mmio, rtd, adata->asic_type);
1330 rtd = adata->capture_i2ssp_stream->runtime->private_data;
1331 config_acp_dma(adata->acp_mmio, rtd, adata->asic_type);
1336 rtd = adata->play_i2sbt_stream->runtime->private_data;
1337 config_acp_dma(adata->acp_mmio, rtd, adata->asic_type);
1341 rtd = adata->capture_i2sbt_stream->runtime->private_data;
1342 config_acp_dma(adata->acp_mmio, rtd, adata->asic_type);