/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ /* * This file is provided under a dual BSD/GPLv2 license. When using or * redistributing this file, you may do so under either license. * * Copyright(c) 2023 Intel Corporation */ #ifndef __SOUND_SOC_SOF_IPC4_TELEMETRY_H #define __SOUND_SOC_SOF_IPC4_TELEMETRY_H /* Target code */ enum sof_ipc4_coredump_tgt_code { COREDUMP_TGT_UNKNOWN = 0, COREDUMP_TGT_X86, COREDUMP_TGT_X86_64, COREDUMP_TGT_ARM_CORTEX_M, COREDUMP_TGT_RISC_V, COREDUMP_TGT_XTENSA, }; #define COREDUMP_ARCH_HDR_ID 'A' #define COREDUMP_HDR_ID0 'Z' #define COREDUMP_HDR_ID1 'E' #define XTENSA_BLOCK_HDR_VER 2 #define XTENSA_CORE_DUMP_SEPARATOR 0x0DEC0DEB #define XTENSA_CORE_AR_REGS_COUNT 16 #define XTENSA_SOC_INTEL_ADSP 3 #define XTENSA_TOOL_CHAIN_ZEPHYR 1 #define XTENSA_TOOL_CHAIN_XCC 2 /* Coredump header */ struct sof_ipc4_coredump_hdr { /* 'Z', 'E' as identifier of file */ char id[2]; /* Identify the version of the header */ u16 hdr_version; /* Indicate which target (e.g. architecture or SoC) */ u16 tgt_code; /* Size of uintptr_t in power of 2. (e.g. 5 for 32-bit, 6 for 64-bit) */ u8 ptr_size_bits; u8 flag; /* Reason for the fatal error */ u32 reason; } __packed; /* Architecture-specific block header */ struct sof_ipc4_coredump_arch_hdr { /* COREDUMP_ARCH_HDR_ID to indicate this is a architecture-specific block */ char id; /* Identify the version of this block */ u16 hdr_version; /* Number of bytes following the header */ u16 num_bytes; } __packed; struct sof_ipc4_telemetry_slot_data { u32 separator; struct sof_ipc4_coredump_hdr hdr; struct sof_ipc4_coredump_arch_hdr arch_hdr; u32 arch_data[]; } __packed; void sof_ipc4_create_exception_debugfs_node(struct snd_sof_dev *sdev); #endif