Lines Matching refs:prtd

179 	struct q6asm_dai_rtd *prtd = priv;  in event_handler()  local
180 struct snd_pcm_substream *substream = prtd->substream; in event_handler()
185 q6asm_write_async(prtd->audio_client, prtd->stream_id, in event_handler()
186 prtd->pcm_count, 0, 0, 0); in event_handler()
189 prtd->state = Q6ASM_STREAM_STOPPED; in event_handler()
192 prtd->pcm_irq_pos += prtd->pcm_count; in event_handler()
194 if (prtd->state == Q6ASM_STREAM_RUNNING) in event_handler()
195 q6asm_write_async(prtd->audio_client, prtd->stream_id, in event_handler()
196 prtd->pcm_count, 0, 0, 0); in event_handler()
201 prtd->pcm_irq_pos += prtd->pcm_count; in event_handler()
203 if (prtd->state == Q6ASM_STREAM_RUNNING) in event_handler()
204 q6asm_read(prtd->audio_client, prtd->stream_id); in event_handler()
217 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_dai_prepare() local
226 if (!prtd || !prtd->audio_client) { in q6asm_dai_prepare()
232 prtd->pcm_count = snd_pcm_lib_period_bytes(substream); in q6asm_dai_prepare()
233 prtd->pcm_irq_pos = 0; in q6asm_dai_prepare()
235 if (prtd->state) { in q6asm_dai_prepare()
237 q6asm_cmd(prtd->audio_client, prtd->stream_id, CMD_CLOSE); in q6asm_dai_prepare()
239 prtd->audio_client); in q6asm_dai_prepare()
244 ret = q6asm_map_memory_regions(substream->stream, prtd->audio_client, in q6asm_dai_prepare()
245 prtd->phys, in q6asm_dai_prepare()
246 (prtd->pcm_size / prtd->periods), in q6asm_dai_prepare()
247 prtd->periods); in q6asm_dai_prepare()
256 ret = q6asm_open_write(prtd->audio_client, prtd->stream_id, in q6asm_dai_prepare()
258 0, prtd->bits_per_sample, false); in q6asm_dai_prepare()
260 ret = q6asm_open_read(prtd->audio_client, prtd->stream_id, in q6asm_dai_prepare()
262 prtd->bits_per_sample); in q6asm_dai_prepare()
270 prtd->session_id = q6asm_get_session_id(prtd->audio_client); in q6asm_dai_prepare()
272 prtd->session_id, substream->stream); in q6asm_dai_prepare()
280 prtd->audio_client, prtd->stream_id, in q6asm_dai_prepare()
282 prtd->bits_per_sample); in q6asm_dai_prepare()
284 ret = q6asm_enc_cfg_blk_pcm_format_support(prtd->audio_client, in q6asm_dai_prepare()
285 prtd->stream_id, in q6asm_dai_prepare()
288 prtd->bits_per_sample); in q6asm_dai_prepare()
292 q6asm_read(prtd->audio_client, prtd->stream_id); in q6asm_dai_prepare()
298 prtd->state = Q6ASM_STREAM_RUNNING; in q6asm_dai_prepare()
303 q6asm_cmd(prtd->audio_client, prtd->stream_id, CMD_CLOSE); in q6asm_dai_prepare()
305 q6asm_unmap_memory_regions(substream->stream, prtd->audio_client); in q6asm_dai_prepare()
306 q6asm_audio_client_free(prtd->audio_client); in q6asm_dai_prepare()
307 prtd->audio_client = NULL; in q6asm_dai_prepare()
317 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_dai_trigger() local
323 ret = q6asm_run_nowait(prtd->audio_client, prtd->stream_id, in q6asm_dai_trigger()
327 prtd->state = Q6ASM_STREAM_STOPPED; in q6asm_dai_trigger()
328 ret = q6asm_cmd_nowait(prtd->audio_client, prtd->stream_id, in q6asm_dai_trigger()
333 ret = q6asm_cmd_nowait(prtd->audio_client, prtd->stream_id, in q6asm_dai_trigger()
350 struct q6asm_dai_rtd *prtd; in q6asm_dai_open() local
364 prtd = kzalloc(sizeof(struct q6asm_dai_rtd), GFP_KERNEL); in q6asm_dai_open()
365 if (prtd == NULL) in q6asm_dai_open()
368 prtd->substream = substream; in q6asm_dai_open()
369 prtd->audio_client = q6asm_audio_client_alloc(dev, in q6asm_dai_open()
370 (q6asm_cb)event_handler, prtd, stream_id, in q6asm_dai_open()
372 if (IS_ERR(prtd->audio_client)) { in q6asm_dai_open()
374 ret = PTR_ERR(prtd->audio_client); in q6asm_dai_open()
375 kfree(prtd); in q6asm_dai_open()
380 prtd->stream_id = 1; in q6asm_dai_open()
417 runtime->private_data = prtd; in q6asm_dai_open()
425 prtd->phys = substream->dma_buffer.addr; in q6asm_dai_open()
427 prtd->phys = substream->dma_buffer.addr | (pdata->sid << 32); in q6asm_dai_open()
437 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_dai_close() local
439 if (prtd->audio_client) { in q6asm_dai_close()
440 if (prtd->state) in q6asm_dai_close()
441 q6asm_cmd(prtd->audio_client, prtd->stream_id, in q6asm_dai_close()
445 prtd->audio_client); in q6asm_dai_close()
446 q6asm_audio_client_free(prtd->audio_client); in q6asm_dai_close()
447 prtd->audio_client = NULL; in q6asm_dai_close()
451 kfree(prtd); in q6asm_dai_close()
460 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_dai_pointer() local
462 if (prtd->pcm_irq_pos >= prtd->pcm_size) in q6asm_dai_pointer()
463 prtd->pcm_irq_pos = 0; in q6asm_dai_pointer()
465 return bytes_to_frames(runtime, (prtd->pcm_irq_pos)); in q6asm_dai_pointer()
473 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_dai_hw_params() local
475 prtd->pcm_size = params_buffer_bytes(params); in q6asm_dai_hw_params()
476 prtd->periods = params_periods(params); in q6asm_dai_hw_params()
480 prtd->bits_per_sample = 16; in q6asm_dai_hw_params()
483 prtd->bits_per_sample = 24; in q6asm_dai_hw_params()
493 struct q6asm_dai_rtd *prtd = priv; in compress_event_handler() local
494 struct snd_compr_stream *substream = prtd->cstream; in compress_event_handler()
503 spin_lock_irqsave(&prtd->lock, flags); in compress_event_handler()
504 if (!prtd->bytes_sent) { in compress_event_handler()
505 q6asm_stream_remove_initial_silence(prtd->audio_client, in compress_event_handler()
506 prtd->stream_id, in compress_event_handler()
507 prtd->initial_samples_drop); in compress_event_handler()
509 q6asm_write_async(prtd->audio_client, prtd->stream_id, in compress_event_handler()
510 prtd->pcm_count, 0, 0, 0); in compress_event_handler()
511 prtd->bytes_sent += prtd->pcm_count; in compress_event_handler()
514 spin_unlock_irqrestore(&prtd->lock, flags); in compress_event_handler()
518 spin_lock_irqsave(&prtd->lock, flags); in compress_event_handler()
519 if (prtd->notify_on_drain) { in compress_event_handler()
525 q6asm_cmd_nowait(prtd->audio_client, in compress_event_handler()
526 prtd->stream_id, in compress_event_handler()
532 prtd->stream_id = (prtd->stream_id == 1 ? 2 : 1); in compress_event_handler()
535 snd_compr_drain_notify(prtd->cstream); in compress_event_handler()
536 prtd->notify_on_drain = false; in compress_event_handler()
539 prtd->state = Q6ASM_STREAM_STOPPED; in compress_event_handler()
541 spin_unlock_irqrestore(&prtd->lock, flags); in compress_event_handler()
545 spin_lock_irqsave(&prtd->lock, flags); in compress_event_handler()
548 prtd->copied_total += bytes_written; in compress_event_handler()
551 if (prtd->state != Q6ASM_STREAM_RUNNING) { in compress_event_handler()
552 spin_unlock_irqrestore(&prtd->lock, flags); in compress_event_handler()
556 avail = prtd->bytes_received - prtd->bytes_sent; in compress_event_handler()
557 if (avail > prtd->pcm_count) { in compress_event_handler()
558 bytes_to_write = prtd->pcm_count; in compress_event_handler()
560 if (substream->partial_drain || prtd->notify_on_drain) in compress_event_handler()
568 q6asm_stream_remove_trailing_silence(prtd->audio_client, in compress_event_handler()
569 prtd->stream_id, in compress_event_handler()
570 prtd->trailing_samples_drop); in compress_event_handler()
573 q6asm_write_async(prtd->audio_client, prtd->stream_id, in compress_event_handler()
576 prtd->bytes_sent += bytes_to_write; in compress_event_handler()
579 if (prtd->notify_on_drain && is_last_buffer) in compress_event_handler()
580 q6asm_cmd_nowait(prtd->audio_client, in compress_event_handler()
581 prtd->stream_id, CMD_EOS); in compress_event_handler()
583 spin_unlock_irqrestore(&prtd->lock, flags); in compress_event_handler()
599 struct q6asm_dai_rtd *prtd; in q6asm_dai_compr_open() local
609 prtd = kzalloc(sizeof(*prtd), GFP_KERNEL); in q6asm_dai_compr_open()
610 if (!prtd) in q6asm_dai_compr_open()
614 prtd->stream_id = 1; in q6asm_dai_compr_open()
616 prtd->cstream = stream; in q6asm_dai_compr_open()
617 prtd->audio_client = q6asm_audio_client_alloc(dev, in q6asm_dai_compr_open()
619 prtd, stream_id, LEGACY_PCM_MODE); in q6asm_dai_compr_open()
620 if (IS_ERR(prtd->audio_client)) { in q6asm_dai_compr_open()
622 ret = PTR_ERR(prtd->audio_client); in q6asm_dai_compr_open()
629 &prtd->dma_buffer); in q6asm_dai_compr_open()
636 prtd->phys = prtd->dma_buffer.addr; in q6asm_dai_compr_open()
638 prtd->phys = prtd->dma_buffer.addr | (pdata->sid << 32); in q6asm_dai_compr_open()
640 snd_compr_set_runtime_buffer(stream, &prtd->dma_buffer); in q6asm_dai_compr_open()
641 spin_lock_init(&prtd->lock); in q6asm_dai_compr_open()
642 runtime->private_data = prtd; in q6asm_dai_compr_open()
647 q6asm_audio_client_free(prtd->audio_client); in q6asm_dai_compr_open()
649 kfree(prtd); in q6asm_dai_compr_open()
658 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_dai_compr_free() local
661 if (prtd->audio_client) { in q6asm_dai_compr_free()
662 if (prtd->state) { in q6asm_dai_compr_free()
663 q6asm_cmd(prtd->audio_client, prtd->stream_id, in q6asm_dai_compr_free()
665 if (prtd->next_track_stream_id) { in q6asm_dai_compr_free()
666 q6asm_cmd(prtd->audio_client, in q6asm_dai_compr_free()
667 prtd->next_track_stream_id, in q6asm_dai_compr_free()
672 snd_dma_free_pages(&prtd->dma_buffer); in q6asm_dai_compr_free()
674 prtd->audio_client); in q6asm_dai_compr_free()
675 q6asm_audio_client_free(prtd->audio_client); in q6asm_dai_compr_free()
676 prtd->audio_client = NULL; in q6asm_dai_compr_free()
679 kfree(prtd); in q6asm_dai_compr_free()
690 struct q6asm_dai_rtd *prtd = runtime->private_data; in __q6asm_dai_compr_set_codec_params() local
704 codec_options = &(prtd->codec.options); in __q6asm_dai_compr_set_codec_params()
706 memcpy(&prtd->codec, codec, sizeof(*codec)); in __q6asm_dai_compr_set_codec_params()
723 ret = q6asm_stream_media_format_block_flac(prtd->audio_client, in __q6asm_dai_compr_set_codec_params()
741 wma_cfg.bits_per_sample = prtd->bits_per_sample; in __q6asm_dai_compr_set_codec_params()
784 prtd->audio_client, stream_id, in __q6asm_dai_compr_set_codec_params()
788 prtd->audio_client, stream_id, in __q6asm_dai_compr_set_codec_params()
802 alac_cfg.bit_depth = prtd->bits_per_sample; in __q6asm_dai_compr_set_codec_params()
821 ret = q6asm_stream_media_format_block_alac(prtd->audio_client, in __q6asm_dai_compr_set_codec_params()
836 ape_cfg.bits_per_sample = prtd->bits_per_sample; in __q6asm_dai_compr_set_codec_params()
846 ret = q6asm_stream_media_format_block_ape(prtd->audio_client, in __q6asm_dai_compr_set_codec_params()
867 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_dai_compr_set_params() local
878 if (!prtd || !prtd->audio_client) { in q6asm_dai_compr_set_params()
883 prtd->periods = runtime->fragments; in q6asm_dai_compr_set_params()
884 prtd->pcm_count = runtime->fragment_size; in q6asm_dai_compr_set_params()
885 prtd->pcm_size = runtime->fragments * runtime->fragment_size; in q6asm_dai_compr_set_params()
886 prtd->bits_per_sample = 16; in q6asm_dai_compr_set_params()
889 ret = q6asm_open_write(prtd->audio_client, prtd->stream_id, params->codec.id, in q6asm_dai_compr_set_params()
890 params->codec.profile, prtd->bits_per_sample, in q6asm_dai_compr_set_params()
899 prtd->session_id = q6asm_get_session_id(prtd->audio_client); in q6asm_dai_compr_set_params()
901 prtd->session_id, dir); in q6asm_dai_compr_set_params()
909 prtd->stream_id); in q6asm_dai_compr_set_params()
915 ret = q6asm_map_memory_regions(dir, prtd->audio_client, prtd->phys, in q6asm_dai_compr_set_params()
916 (prtd->pcm_size / prtd->periods), in q6asm_dai_compr_set_params()
917 prtd->periods); in q6asm_dai_compr_set_params()
925 prtd->state = Q6ASM_STREAM_RUNNING; in q6asm_dai_compr_set_params()
930 q6asm_cmd(prtd->audio_client, prtd->stream_id, CMD_CLOSE); in q6asm_dai_compr_set_params()
933 q6asm_audio_client_free(prtd->audio_client); in q6asm_dai_compr_set_params()
934 prtd->audio_client = NULL; in q6asm_dai_compr_set_params()
943 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_dai_compr_set_metadata() local
948 prtd->trailing_samples_drop = metadata->value[0]; in q6asm_dai_compr_set_metadata()
951 prtd->initial_samples_drop = metadata->value[0]; in q6asm_dai_compr_set_metadata()
952 if (prtd->next_track_stream_id) { in q6asm_dai_compr_set_metadata()
953 ret = q6asm_open_write(prtd->audio_client, in q6asm_dai_compr_set_metadata()
954 prtd->next_track_stream_id, in q6asm_dai_compr_set_metadata()
955 prtd->codec.id, in q6asm_dai_compr_set_metadata()
956 prtd->codec.profile, in q6asm_dai_compr_set_metadata()
957 prtd->bits_per_sample, in q6asm_dai_compr_set_metadata()
964 &prtd->codec, in q6asm_dai_compr_set_metadata()
965 prtd->next_track_stream_id); in q6asm_dai_compr_set_metadata()
971 ret = q6asm_stream_remove_initial_silence(prtd->audio_client, in q6asm_dai_compr_set_metadata()
972 prtd->next_track_stream_id, in q6asm_dai_compr_set_metadata()
973 prtd->initial_samples_drop); in q6asm_dai_compr_set_metadata()
974 prtd->next_track_stream_id = 0; in q6asm_dai_compr_set_metadata()
991 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_dai_compr_trigger() local
998 ret = q6asm_run_nowait(prtd->audio_client, prtd->stream_id, in q6asm_dai_compr_trigger()
1002 prtd->state = Q6ASM_STREAM_STOPPED; in q6asm_dai_compr_trigger()
1003 ret = q6asm_cmd_nowait(prtd->audio_client, prtd->stream_id, in q6asm_dai_compr_trigger()
1008 ret = q6asm_cmd_nowait(prtd->audio_client, prtd->stream_id, in q6asm_dai_compr_trigger()
1012 prtd->next_track = true; in q6asm_dai_compr_trigger()
1013 prtd->next_track_stream_id = (prtd->stream_id == 1 ? 2 : 1); in q6asm_dai_compr_trigger()
1017 prtd->notify_on_drain = true; in q6asm_dai_compr_trigger()
1032 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_dai_compr_pointer() local
1035 spin_lock_irqsave(&prtd->lock, flags); in q6asm_dai_compr_pointer()
1037 tstamp->copied_total = prtd->copied_total; in q6asm_dai_compr_pointer()
1038 tstamp->byte_offset = prtd->copied_total % prtd->pcm_size; in q6asm_dai_compr_pointer()
1040 spin_unlock_irqrestore(&prtd->lock, flags); in q6asm_dai_compr_pointer()
1050 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_compr_copy() local
1059 bytes_received = prtd->bytes_received; in q6asm_compr_copy()
1065 if (prtd->next_track) in q6asm_compr_copy()
1066 bytes_received = ALIGN(prtd->bytes_received, prtd->pcm_count); in q6asm_compr_copy()
1068 app_pointer = bytes_received/prtd->pcm_size; in q6asm_compr_copy()
1069 app_pointer = bytes_received - (app_pointer * prtd->pcm_size); in q6asm_compr_copy()
1070 dstn = prtd->dma_buffer.area + app_pointer; in q6asm_compr_copy()
1072 if (count < prtd->pcm_size - app_pointer) { in q6asm_compr_copy()
1076 copy = prtd->pcm_size - app_pointer; in q6asm_compr_copy()
1079 if (copy_from_user(prtd->dma_buffer.area, buf + copy, in q6asm_compr_copy()
1084 spin_lock_irqsave(&prtd->lock, flags); in q6asm_compr_copy()
1086 bytes_in_flight = prtd->bytes_received - prtd->copied_total; in q6asm_compr_copy()
1088 if (prtd->next_track) { in q6asm_compr_copy()
1089 prtd->next_track = false; in q6asm_compr_copy()
1090 prtd->copied_total = ALIGN(prtd->copied_total, prtd->pcm_count); in q6asm_compr_copy()
1091 prtd->bytes_sent = ALIGN(prtd->bytes_sent, prtd->pcm_count); in q6asm_compr_copy()
1094 prtd->bytes_received = bytes_received + count; in q6asm_compr_copy()
1097 if (prtd->state == Q6ASM_STREAM_RUNNING && (bytes_in_flight == 0)) { in q6asm_compr_copy()
1098 uint32_t bytes_to_write = prtd->pcm_count; in q6asm_compr_copy()
1100 avail = prtd->bytes_received - prtd->bytes_sent; in q6asm_compr_copy()
1102 if (avail < prtd->pcm_count) in q6asm_compr_copy()
1105 q6asm_write_async(prtd->audio_client, prtd->stream_id, in q6asm_compr_copy()
1107 prtd->bytes_sent += bytes_to_write; in q6asm_compr_copy()
1110 spin_unlock_irqrestore(&prtd->lock, flags); in q6asm_compr_copy()
1120 struct q6asm_dai_rtd *prtd = runtime->private_data; in q6asm_dai_compr_mmap() local
1124 prtd->dma_buffer.area, prtd->dma_buffer.addr, in q6asm_dai_compr_mmap()
1125 prtd->dma_buffer.bytes); in q6asm_dai_compr_mmap()