108 lines · c
1/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */2/*3 * This file is provided under a dual BSD/GPLv2 license. When using or4 * redistributing this file, you may do so under either license.5 *6 * Copyright(c) 2018 Intel Corporation7 */8 9#ifndef __INCLUDE_SOUND_SOF_TRACE_H__10#define __INCLUDE_SOUND_SOF_TRACE_H__11 12#include <sound/sof/header.h>13#include <sound/sof/stream.h>14 15/*16 * DMA for Trace17 */18 19#define SOF_TRACE_FILENAME_SIZE 3220 21/* DMA for Trace params info - SOF_IPC_DEBUG_DMA_PARAMS */22/* Deprecated - use sof_ipc_dma_trace_params_ext */23struct sof_ipc_dma_trace_params {24 struct sof_ipc_cmd_hdr hdr;25 struct sof_ipc_host_buffer buffer;26 uint32_t stream_tag;27} __packed;28 29/* DMA for Trace params info - SOF_IPC_DEBUG_DMA_PARAMS_EXT */30struct sof_ipc_dma_trace_params_ext {31 struct sof_ipc_cmd_hdr hdr;32 struct sof_ipc_host_buffer buffer;33 uint32_t stream_tag;34 uint64_t timestamp_ns; /* in nanosecond */35 uint32_t reserved[8];36} __packed;37 38/* DMA for Trace params info - SOF_IPC_DEBUG_DMA_PARAMS */39struct sof_ipc_dma_trace_posn {40 struct sof_ipc_reply rhdr;41 uint32_t host_offset; /* Offset of DMA host buffer */42 uint32_t overflow; /* overflow bytes if any */43 uint32_t messages; /* total trace messages */44} __packed;45 46/* Values used in sof_ipc_trace_filter_elem: */47 48/* bits 6..0 */49#define SOF_IPC_TRACE_FILTER_ELEM_SET_LEVEL 0x01 /**< trace level for selected components */50#define SOF_IPC_TRACE_FILTER_ELEM_BY_UUID 0x02 /**< filter by uuid key */51#define SOF_IPC_TRACE_FILTER_ELEM_BY_PIPE 0x03 /**< filter by pipeline */52#define SOF_IPC_TRACE_FILTER_ELEM_BY_COMP 0x04 /**< filter by component id */53 54/* bit 7 */55#define SOF_IPC_TRACE_FILTER_ELEM_FIN 0x80 /**< mark last filter in set */56 57/* bits 31..8: Unused */58 59/** part of sof_ipc_trace_filter, ABI3.17 */60struct sof_ipc_trace_filter_elem {61 uint32_t key; /**< SOF_IPC_TRACE_FILTER_ELEM_ {LEVEL, UUID, COMP, PIPE} */62 uint32_t value; /**< element value */63} __packed;64 65/** Runtime tracing filtration data - SOF_IPC_TRACE_FILTER_UPDATE, ABI3.17 */66struct sof_ipc_trace_filter {67 struct sof_ipc_cmd_hdr hdr; /**< IPC command header */68 uint32_t elem_cnt; /**< number of entries in elems[] array */69 uint32_t reserved[8]; /**< reserved for future usage */70 /** variable size array with new filtering settings */71 struct sof_ipc_trace_filter_elem elems[];72} __packed;73 74/*75 * Commom debug76 */77 78/*79 * SOF panic codes80 */81#define SOF_IPC_PANIC_MAGIC 0x0dead00082#define SOF_IPC_PANIC_MAGIC_MASK 0x0ffff00083#define SOF_IPC_PANIC_CODE_MASK 0x00000fff84#define SOF_IPC_PANIC_MEM (SOF_IPC_PANIC_MAGIC | 0x0)85#define SOF_IPC_PANIC_WORK (SOF_IPC_PANIC_MAGIC | 0x1)86#define SOF_IPC_PANIC_IPC (SOF_IPC_PANIC_MAGIC | 0x2)87#define SOF_IPC_PANIC_ARCH (SOF_IPC_PANIC_MAGIC | 0x3)88#define SOF_IPC_PANIC_PLATFORM (SOF_IPC_PANIC_MAGIC | 0x4)89#define SOF_IPC_PANIC_TASK (SOF_IPC_PANIC_MAGIC | 0x5)90#define SOF_IPC_PANIC_EXCEPTION (SOF_IPC_PANIC_MAGIC | 0x6)91#define SOF_IPC_PANIC_DEADLOCK (SOF_IPC_PANIC_MAGIC | 0x7)92#define SOF_IPC_PANIC_STACK (SOF_IPC_PANIC_MAGIC | 0x8)93#define SOF_IPC_PANIC_IDLE (SOF_IPC_PANIC_MAGIC | 0x9)94#define SOF_IPC_PANIC_WFI (SOF_IPC_PANIC_MAGIC | 0xa)95#define SOF_IPC_PANIC_ASSERT (SOF_IPC_PANIC_MAGIC | 0xb)96 97/* panic info include filename and line number98 * filename array will not include null terminator if fully filled99 */100struct sof_ipc_panic_info {101 struct sof_ipc_hdr hdr;102 uint32_t code; /* SOF_IPC_PANIC_ */103 uint8_t filename[SOF_TRACE_FILENAME_SIZE];104 uint32_t linenum;105} __packed;106 107#endif108