Lines Matching refs:time_info
46 struct sof_ipc4_timestamp_info *time_info; member
56 return stream_priv->time_info; in sof_ipc4_sps_to_time_info()
481 struct sof_ipc4_timestamp_info *time_info; in sof_ipc4_trigger_pipelines() local
487 time_info = sof_ipc4_sps_to_time_info(&spcm->stream[substream->stream]); in sof_ipc4_trigger_pipelines()
488 if (time_info) in sof_ipc4_trigger_pipelines()
489 time_info->stream_start_offset = SOF_IPC4_INVALID_STREAM_POSITION; in sof_ipc4_trigger_pipelines()
750 kfree(stream_priv->time_info); in sof_ipc4_pcm_free()
761 struct sof_ipc4_timestamp_info *time_info; in sof_ipc4_pcm_setup() local
800 time_info = kzalloc(sizeof(*time_info), GFP_KERNEL); in sof_ipc4_pcm_setup()
801 if (!time_info) { in sof_ipc4_pcm_setup()
806 stream_priv->time_info = time_info; in sof_ipc4_pcm_setup()
817 struct sof_ipc4_timestamp_info *time_info; in sof_ipc4_build_time_info() local
843 time_info = sof_ipc4_sps_to_time_info(sps); in sof_ipc4_build_time_info()
844 time_info->host_copier = host_copier; in sof_ipc4_build_time_info()
845 time_info->dai_copier = dai_copier; in sof_ipc4_build_time_info()
846 time_info->llp_offset = offsetof(struct sof_ipc4_fw_registers, in sof_ipc4_build_time_info()
851 sof_mailbox_read(sdev, time_info->llp_offset, &llp_slot, sizeof(llp_slot)); in sof_ipc4_build_time_info()
855 time_info->llp_offset += sizeof(llp_slot); in sof_ipc4_build_time_info()
862 time_info->llp_offset = offsetof(struct sof_ipc4_fw_registers, in sof_ipc4_build_time_info()
865 sof_mailbox_read(sdev, time_info->llp_offset, &llp_slot, sizeof(llp_slot)); in sof_ipc4_build_time_info()
869 time_info->llp_offset += sizeof(llp_slot); in sof_ipc4_build_time_info()
876 time_info->llp_offset = offsetof(struct sof_ipc4_fw_registers, in sof_ipc4_build_time_info()
878 sof_mailbox_read(sdev, time_info->llp_offset, &llp_slot, sizeof(llp_slot)); in sof_ipc4_build_time_info()
880 time_info->llp_offset = 0; in sof_ipc4_build_time_info()
890 struct sof_ipc4_timestamp_info *time_info; in sof_ipc4_pcm_hw_params() local
897 time_info = sof_ipc4_sps_to_time_info(&spcm->stream[substream->stream]); in sof_ipc4_pcm_hw_params()
899 if (!time_info) in sof_ipc4_pcm_hw_params()
902 time_info->stream_start_offset = SOF_IPC4_INVALID_STREAM_POSITION; in sof_ipc4_pcm_hw_params()
903 time_info->llp_offset = 0; in sof_ipc4_pcm_hw_params()
913 struct sof_ipc4_timestamp_info *time_info) in sof_ipc4_get_stream_start_offset() argument
915 struct sof_ipc4_copier *host_copier = time_info->host_copier; in sof_ipc4_get_stream_start_offset()
916 struct sof_ipc4_copier *dai_copier = time_info->dai_copier; in sof_ipc4_get_stream_start_offset()
939 time_info->stream_start_offset = ppl_reg.stream_start_offset; in sof_ipc4_get_stream_start_offset()
940 do_div(time_info->stream_start_offset, dai_sample_size); in sof_ipc4_get_stream_start_offset()
941 time_info->stream_end_offset = ppl_reg.stream_end_offset; in sof_ipc4_get_stream_start_offset()
942 do_div(time_info->stream_end_offset, dai_sample_size); in sof_ipc4_get_stream_start_offset()
949 time_info->boundary = div64_u64(~((u64)0), in sof_ipc4_get_stream_start_offset()
952 time_info->delay = 0; in sof_ipc4_get_stream_start_offset()
963 struct sof_ipc4_timestamp_info *time_info; in sof_ipc4_pcm_pointer() local
976 time_info = sof_ipc4_sps_to_time_info(sps); in sof_ipc4_pcm_pointer()
977 if (!time_info) in sof_ipc4_pcm_pointer()
985 if (time_info->stream_start_offset == SOF_IPC4_INVALID_STREAM_POSITION) { in sof_ipc4_pcm_pointer()
986 ret = sof_ipc4_get_stream_start_offset(sdev, substream, sps, time_info); in sof_ipc4_pcm_pointer()
1003 if (!time_info->llp_offset) { in sof_ipc4_pcm_pointer()
1008 sof_mailbox_read(sdev, time_info->llp_offset, &llp, sizeof(llp)); in sof_ipc4_pcm_pointer()
1011 dai_cnt += time_info->stream_end_offset; in sof_ipc4_pcm_pointer()
1037 if (dai_cnt < time_info->stream_start_offset) { in sof_ipc4_pcm_pointer()
1038 host_cnt += time_info->stream_start_offset - dai_cnt; in sof_ipc4_pcm_pointer()
1041 dai_cnt -= time_info->stream_start_offset; in sof_ipc4_pcm_pointer()
1045 div64_u64_rem(dai_cnt, time_info->boundary, &dai_cnt); in sof_ipc4_pcm_pointer()
1056 time_info->delay = time_info->boundary - tail_cnt + head_cnt; in sof_ipc4_pcm_pointer()
1060 time_info->delay = head_cnt - tail_cnt; in sof_ipc4_pcm_pointer()
1077 struct sof_ipc4_timestamp_info *time_info; in sof_ipc4_pcm_delay() local
1084 time_info = sof_ipc4_sps_to_time_info(&spcm->stream[substream->stream]); in sof_ipc4_pcm_delay()
1090 if (time_info) in sof_ipc4_pcm_delay()
1091 return time_info->delay; in sof_ipc4_pcm_delay()