Sound Open Firmware
Loading...
Searching...
No Matches
dma-trace.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 *
3 * Copyright(c) 2016 Intel Corporation. All rights reserved.
4 *
5 * Author: Yan Wang <yan.wang@linux.intel.com>
6 */
7
8#ifndef __SOF_TRACE_DMA_TRACE_H__
9#define __SOF_TRACE_DMA_TRACE_H__
10
11#include <sof/lib/dma.h>
12#include <rtos/task.h>
13#include <rtos/sof.h>
14#include <rtos/spinlock.h>
15#include <ipc/trace.h>
16#include <stdint.h>
17
18struct ipc_msg;
19struct sof;
20
22 void *w_ptr; /* buffer write pointer */
23 void *r_ptr; /* buffer read position */
24 void *addr; /* buffer base address */
25 void *end_addr; /* buffer end address */
26 uint32_t size; /* size of buffer in bytes */
27 uint32_t avail; /* bytes available to read */
28};
29
33 struct dma_copy dc;
35 struct ipc_msg *msg;
36 uint32_t host_size;
38 uint32_t enabled;
40 uint32_t stream_tag;
42 uint32_t dma_copy_align; /* Minimal chunk of data possible to be
43 * copied by dma connected to host
44 */
45 uint32_t dropped_entries; /* amount of dropped entries */
46 struct k_spinlock lock; /* dma trace lock */
47 uint64_t time_delta; /* difference between the host time */
48};
49
53 struct dma_sg_elem_array *elem_array,
54 uint32_t host_size);
57void dma_trace_flush(void *destination);
58void dma_trace_on(void);
59void dma_trace_off(void);
60
61void dtrace_event(const char *e, uint32_t size);
62void dtrace_event_atomic(const char *e, uint32_t length);
63
64static inline bool dma_trace_initialized(const struct dma_trace_data *d)
65{
66 return d && d->dmatb.addr;
67}
68
69static inline struct dma_trace_data *dma_trace_data_get(void)
70{
71 return sof_get()->dmat;
72}
73
74static inline uint32_t dtrace_calc_buf_margin(struct dma_trace_buf *buffer)
75{
76 return (char *)buffer->end_addr - (char *)buffer->w_ptr;
77}
78
79#endif /* __SOF_TRACE_DMA_TRACE_H__ */
static bool dma_trace_initialized(const struct dma_trace_data *d)
Definition dma-trace.h:64
void dma_trace_disable(struct dma_trace_data *d)
static uint32_t dtrace_calc_buf_margin(struct dma_trace_buf *buffer)
Definition dma-trace.h:74
void dtrace_event(const char *e, uint32_t size)
void dma_trace_flush(void *destination)
void dtrace_event_atomic(const char *e, uint32_t length)
void dma_trace_on(void)
int dma_trace_init_early(struct sof *sof)
int dma_trace_enable(struct dma_trace_data *d)
int dma_trace_init_complete(struct dma_trace_data *d)
static struct dma_trace_data * dma_trace_data_get(void)
Definition dma-trace.h:69
void dma_trace_off(void)
int dma_trace_host_buffer(struct dma_trace_data *d, struct dma_sg_elem_array *elem_array, uint32_t host_size)
struct sof * sof_get(void)
IPC definitions.
Definition dma.h:253
Definition dma.h:161
SG elem array.
Definition dma.h:155
Definition dma-trace.h:21
void * end_addr
Definition dma-trace.h:25
void * w_ptr
Definition dma-trace.h:22
uint32_t avail
Definition dma-trace.h:27
void * addr
Definition dma-trace.h:24
uint32_t size
Definition dma-trace.h:26
void * r_ptr
Definition dma-trace.h:23
Definition dma-trace.h:30
struct dma_copy dc
Definition dma-trace.h:33
struct ipc_msg * msg
Definition dma-trace.h:35
uint32_t stream_tag
Definition dma-trace.h:40
struct dma_trace_buf dmatb
Definition dma-trace.h:32
struct dma_sg_config config
Definition dma-trace.h:31
uint32_t dropped_entries
Definition dma-trace.h:45
uint64_t time_delta
Definition dma-trace.h:47
struct task dmat_work
Definition dma-trace.h:37
uint32_t dma_copy_align
Definition dma-trace.h:42
struct sof_ipc_dma_trace_posn posn
Definition dma-trace.h:34
uint32_t active_stream_tag
Definition dma-trace.h:41
uint32_t host_size
Definition dma-trace.h:36
uint32_t copy_in_progress
Definition dma-trace.h:39
uint32_t enabled
Definition dma-trace.h:38
struct k_spinlock lock
Definition dma-trace.h:46
Definition msg.h:33
Definition trace.h:48
General firmware context.
Definition sof.h:44
struct dma_trace_data * dmat
Definition sof.h:58
Task used by schedulers.
Definition task.h:56
uint32_t length
Definition tlv.h:1