Lines Matching defs:time_info
42 * @time_info: pointer to time info struct if it is supported, otherwise NULL
46 struct sof_ipc4_timestamp_info *time_info;
56 return stream_priv->time_info;
438 struct sof_ipc4_timestamp_info *time_info;
440 time_info = sof_ipc4_sps_to_time_info(&spcm->stream[substream->stream]);
444 if (ret || !time_info)
456 time_info->stream_end_offset += pos;
459 time_info->stream_end_offset = 0;
530 struct sof_ipc4_timestamp_info *time_info;
536 time_info = sof_ipc4_sps_to_time_info(&spcm->stream[substream->stream]);
537 if (time_info)
538 time_info->stream_start_offset = SOF_IPC4_INVALID_STREAM_POSITION;
834 kfree(stream_priv->time_info);
845 struct sof_ipc4_timestamp_info *time_info;
886 time_info = kzalloc(sizeof(*time_info), GFP_KERNEL);
887 if (!time_info) {
892 stream_priv->time_info = time_info;
903 struct sof_ipc4_timestamp_info *time_info;
923 /* both host and dai copier must be valid for time_info */
929 time_info = sof_ipc4_sps_to_time_info(sps);
930 time_info->host_copier = host_copier;
931 time_info->dai_copier = dai_copier;
932 time_info->llp_offset = offsetof(struct sof_ipc4_fw_registers,
937 sof_mailbox_read(sdev, time_info->llp_offset, &llp_slot, sizeof(llp_slot));
941 time_info->llp_offset += sizeof(llp_slot);
948 time_info->llp_offset = offsetof(struct sof_ipc4_fw_registers,
951 sof_mailbox_read(sdev, time_info->llp_offset, &llp_slot, sizeof(llp_slot));
955 time_info->llp_offset += sizeof(llp_slot);
962 time_info->llp_offset = offsetof(struct sof_ipc4_fw_registers,
964 sof_mailbox_read(sdev, time_info->llp_offset, &llp_slot, sizeof(llp_slot));
966 time_info->llp_offset = 0;
976 struct sof_ipc4_timestamp_info *time_info;
983 time_info = sof_ipc4_sps_to_time_info(&spcm->stream[substream->stream]);
985 if (!time_info)
988 time_info->stream_start_offset = SOF_IPC4_INVALID_STREAM_POSITION;
989 time_info->llp_offset = 0;
999 struct sof_ipc4_timestamp_info *time_info)
1001 struct sof_ipc4_copier *host_copier = time_info->host_copier;
1002 struct sof_ipc4_copier *dai_copier = time_info->dai_copier;
1015 * While the firmware does not supports time_info reporting for
1026 time_info->stream_start_offset = substream->runtime->rate / MSEC_PER_SEC;
1041 time_info->stream_start_offset = ppl_reg.stream_start_offset;
1042 do_div(time_info->stream_start_offset, dai_sample_size);
1043 time_info->stream_end_offset = ppl_reg.stream_end_offset;
1044 do_div(time_info->stream_end_offset, dai_sample_size);
1052 time_info->boundary = div64_u64(~((u64)0),
1055 time_info->delay = 0;
1066 struct sof_ipc4_timestamp_info *time_info;
1079 time_info = sof_ipc4_sps_to_time_info(sps);
1080 if (!time_info)
1088 if (time_info->stream_start_offset == SOF_IPC4_INVALID_STREAM_POSITION) {
1089 ret = sof_ipc4_get_stream_start_offset(sdev, substream, sps, time_info);
1106 if (!time_info->llp_offset) {
1111 sof_mailbox_read(sdev, time_info->llp_offset, &llp, sizeof(llp));
1114 dai_cnt += time_info->stream_end_offset;
1140 if (dai_cnt < time_info->stream_start_offset) {
1141 host_cnt += time_info->stream_start_offset - dai_cnt;
1144 dai_cnt -= time_info->stream_start_offset;
1148 div64_u64_rem(dai_cnt, time_info->boundary, &dai_cnt);
1159 time_info->delay = time_info->boundary - tail_cnt + head_cnt;
1163 time_info->delay = head_cnt - tail_cnt;
1180 struct sof_ipc4_timestamp_info *time_info;
1187 time_info = sof_ipc4_sps_to_time_info(&spcm->stream[substream->stream]);
1193 if (time_info)
1194 return time_info->delay;