Lines Matching refs:core_data
118 struct sof_mtrace_core_data *core_data = inode->i_private; in sof_ipc4_mtrace_dfs_open() local
121 mutex_lock(&core_data->buffer_lock); in sof_ipc4_mtrace_dfs_open()
123 if (core_data->log_buffer) { in sof_ipc4_mtrace_dfs_open()
132 core_data->log_buffer = kmalloc(SOF_IPC4_DEBUG_SLOT_SIZE, GFP_KERNEL); in sof_ipc4_mtrace_dfs_open()
133 if (!core_data->log_buffer) { in sof_ipc4_mtrace_dfs_open()
141 kfree(core_data->log_buffer); in sof_ipc4_mtrace_dfs_open()
146 mutex_unlock(&core_data->buffer_lock); in sof_ipc4_mtrace_dfs_open()
151 static bool sof_wait_mtrace_avail(struct sof_mtrace_core_data *core_data) in sof_wait_mtrace_avail() argument
156 if (core_data->host_read_ptr != core_data->dsp_write_ptr) in sof_wait_mtrace_avail()
162 add_wait_queue(&core_data->trace_sleep, &wait); in sof_wait_mtrace_avail()
168 remove_wait_queue(&core_data->trace_sleep, &wait); in sof_wait_mtrace_avail()
170 if (core_data->host_read_ptr != core_data->dsp_write_ptr) in sof_wait_mtrace_avail()
179 struct sof_mtrace_core_data *core_data = file->private_data; in sof_ipc4_mtrace_dfs_read() local
181 struct snd_sof_dev *sdev = core_data->sdev; in sof_ipc4_mtrace_dfs_read()
183 void *log_buffer = core_data->log_buffer; in sof_ipc4_mtrace_dfs_read()
195 if (!sof_wait_mtrace_avail(core_data)) { in sof_ipc4_mtrace_dfs_read()
204 if (core_data->slot_offset == SOF_IPC4_INVALID_SLOT_OFFSET) in sof_ipc4_mtrace_dfs_read()
208 log_buffer_offset = core_data->slot_offset + (sizeof(u32) * 2); in sof_ipc4_mtrace_dfs_read()
212 read_ptr = core_data->host_read_ptr; in sof_ipc4_mtrace_dfs_read()
213 write_ptr = core_data->dsp_write_ptr; in sof_ipc4_mtrace_dfs_read()
233 core_data->id, read_ptr, write_ptr, avail); in sof_ipc4_mtrace_dfs_read()
263 sof_mailbox_write(sdev, core_data->slot_offset, &read_ptr, sizeof(read_ptr)); in sof_ipc4_mtrace_dfs_read()
267 core_data->host_read_ptr = read_ptr; in sof_ipc4_mtrace_dfs_read()
280 struct sof_mtrace_core_data *core_data = inode->i_private; in sof_ipc4_mtrace_dfs_release() local
284 mutex_lock(&core_data->buffer_lock); in sof_ipc4_mtrace_dfs_release()
285 kfree(core_data->log_buffer); in sof_ipc4_mtrace_dfs_release()
286 core_data->log_buffer = NULL; in sof_ipc4_mtrace_dfs_release()
287 mutex_unlock(&core_data->buffer_lock); in sof_ipc4_mtrace_dfs_release()
483 struct sof_mtrace_core_data *core_data = &priv->cores[i]; in ipc4_mtrace_disable() local
485 core_data->host_read_ptr = 0; in ipc4_mtrace_disable()
486 core_data->dsp_write_ptr = 0; in ipc4_mtrace_disable()
487 wake_up(&core_data->trace_sleep); in ipc4_mtrace_disable()
500 struct sof_mtrace_core_data *core_data; in sof_mtrace_find_core_slots() local
519 core_data = &priv->cores[core]; in sof_mtrace_find_core_slots()
526 core_data->slot_offset = sdev->debug_box.offset; in sof_mtrace_find_core_slots()
527 core_data->slot_offset += SOF_IPC4_DEBUG_SLOT_SIZE * (i + 1); in sof_mtrace_find_core_slots()
529 if (core_data->delayed_pos_update) { in sof_mtrace_find_core_slots()
531 core_data->delayed_pos_update = false; in sof_mtrace_find_core_slots()
570 struct sof_mtrace_core_data *core_data = &priv->cores[i]; in ipc4_mtrace_init() local
572 init_waitqueue_head(&core_data->trace_sleep); in ipc4_mtrace_init()
573 mutex_init(&core_data->buffer_lock); in ipc4_mtrace_init()
574 core_data->sdev = sdev; in ipc4_mtrace_init()
575 core_data->id = i; in ipc4_mtrace_init()
616 struct sof_mtrace_core_data *core_data; in sof_ipc4_mtrace_update_pos() local
625 core_data = &priv->cores[core]; in sof_ipc4_mtrace_update_pos()
627 if (core_data->slot_offset == SOF_IPC4_INVALID_SLOT_OFFSET) { in sof_ipc4_mtrace_update_pos()
628 core_data->delayed_pos_update = true; in sof_ipc4_mtrace_update_pos()
633 sof_mailbox_read(sdev, core_data->slot_offset + sizeof(u32), in sof_ipc4_mtrace_update_pos()
634 &core_data->dsp_write_ptr, 4); in sof_ipc4_mtrace_update_pos()
635 core_data->dsp_write_ptr -= core_data->dsp_write_ptr % 4; in sof_ipc4_mtrace_update_pos()
639 core, core_data->host_read_ptr, core_data->dsp_write_ptr); in sof_ipc4_mtrace_update_pos()
641 wake_up(&core_data->trace_sleep); in sof_ipc4_mtrace_update_pos()