/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) 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) 2018 Intel Corporation. All rights reserved. */ #ifndef __INCLUDE_UAPI_SOUND_SOF_USER_TRACE_H__ #define __INCLUDE_UAPI_SOUND_SOF_USER_TRACE_H__ /* * Host system time. * * This property is used by the driver to pass down information about * current system time. It is expressed in us. * FW translates timestamps (in log entries, probe pockets) to this time * domain. * * (cavs: SystemTime). */ struct system_time { uint32_t val_l; /* Lower dword of current host time value */ uint32_t val_u; /* Upper dword of current host time value */ } __packed; #define LOG_ENABLE 1 /* Enable logging */ #define LOG_DISABLE 0 /* Disable logging */ #define LOG_LEVEL_CRITICAL 1 /* (FDK fatal) */ #define LOG_LEVEL_VERBOSE 2 /* * Layout of a log fifo. */ struct log_buffer_layout { uint32_t read_ptr; /*read pointer */ uint32_t write_ptr; /* write pointer */ uint32_t buffer[0]; /* buffer */ } __packed; /* * Log buffer status reported by FW. */ struct log_buffer_status { uint32_t core_id; /* ID of core that logged to other half */ } __packed; #define TRACE_ID_LENGTH 12 /* * Log entry header. * * The header is followed by an array of arguments (uint32_t[]). * Number of arguments is specified by the params_num field of log_entry */ struct log_entry_header { uint32_t id_0 : TRACE_ID_LENGTH; /* e.g. Pipeline ID */ uint32_t id_1 : TRACE_ID_LENGTH; /* e.g. Component ID */ uint32_t core_id : 8; /* Reporting core's id */ uint64_t timestamp; /* Timestamp (in dsp ticks) */ uint32_t log_entry_address; /* Address of log entry in ELF */ } __packed; #endif