74 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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
 |