Sound Open Firmware
Loading...
Searching...
No Matches
Hardware Telemetry & Performance Monitoring

Core system ticks, CPU cycle utilization, component performance tracking, and SRAM Window 0/3 telemetry status registers. More...

Collaboration diagram for Hardware Telemetry & Performance Monitoring:

Files

file  mailbox.h
 SRAM Window 0 firmware status registers and telemetry offset definitions.
 
file  performance_monitor.h
 Component performance measurement, cycle accounting, and Memory Window 3 slots.
 
file  telemetry.h
 Hardware telemetry metrics, CPU cycle accounting, and Memory Window telemetry slots.
 

Data Structures

struct  system_tick_info
 Per-core system tick and cycle execution metrics. More...
 
struct  telemetry_wnd_data
 Layout of telemetry data published in shared Memory Window. More...
 
struct  telemetry_perf_queue
 Circular queue tracking execution cycle history for rolling averages. More...
 

Macros

#define SRAM_REG_FW_STATUS   offsetof(struct ipc4_fw_registers, fsr)
 Offset to Firmware Status Register (FSR)
 
#define SRAM_REG_LAST_ERROR_CODE   offsetof(struct ipc4_fw_registers, lec)
 Offset to Last Error Code (LEC)
 
#define SRAM_REG_FW_PWR_STATUS   offsetof(struct ipc4_fw_registers, fps)
 Offset to Firmware Power Status (FPS)
 
#define SRAM_REG_LNEC   offsetof(struct ipc4_fw_registers, lnec)
 Offset to Last Native Error Code (LNEC)
 
#define SRAM_REG_LTR   offsetof(struct ipc4_fw_registers, ltr)
 Offset to Latency Tolerance Reporting (LTR)
 
#define SRAM_REG_ROM_INFO   offsetof(struct ipc4_fw_registers, rom_info)
 Offset to ROM bootstrap information.
 
#define SRAM_REG_ABI_VER   offsetof(struct ipc4_fw_registers, abi_ver)
 Offset to ABI version field.
 
#define SRAM_REG_SLAVE_CORE_STS   offsetof(struct ipc4_fw_registers, slave_core_sts)
 Offset to Secondary core power/run status.
 
#define SRAM_REG_PIPELINE_REGS   offsetof(struct ipc4_fw_registers, pipeline_regs)
 Offset to pipeline state register array.
 
#define SRAM_REG_PEAK_VOL_REGS   offsetof(struct ipc4_fw_registers, peak_vol_regs)
 Offset to peak volume meter register array.
 
#define SRAM_REG_LLP_GPDMA_READING_SLOTS   offsetof(struct ipc4_fw_registers, llp_gpdma_reading_slots)
 Offset to GPDMA linear link position reading slots.
 
#define SRAM_REG_LLP_SNDW_READING_SLOTS   offsetof(struct ipc4_fw_registers, llp_sndw_reading_slots)
 Offset to SoundWire link position reading slots.
 
#define SRAM_REG_LLP_EVAD_SLOTS   offsetof(struct ipc4_fw_registers, llp_evad_reading_slot)
 Offset to EVAD position reading slot.
 
#define SRAM_REG_FW_END   sizeof(struct ipc4_fw_registers)
 Total size boundary of Window 0 firmware register block.
 

Functions

void perf_data_item_comp_init (struct perf_data_item_comp *perf, uint32_t resource_id, uint32_t power_mode)
 Initializer for component performance data record.
 
struct perf_data_item_comp * perf_data_getnext (void)
 Allocate next free performance data slot from Memory Window 3.
 
int free_performance_data (struct perf_data_item_comp *item)
 Release an allocated performance data slot in Memory Window 3.
 
void perf_meas_set_state (enum ipc4_perf_measurements_state_set state)
 Set global performance measurement state machine.
 
enum ipc4_perf_measurements_state_set perf_meas_get_state (void)
 Query current global performance measurement state.
 
int get_performance_data (struct global_perf_data *const global_perf_data)
 Retrieve global aggregated performance telemetry data.
 
int get_extended_performance_data (struct extended_global_perf_data *const ext_global_perf_data)
 Retrieve extended global performance telemetry data with per-core breakdown.
 
int reset_performance_counters (void)
 Reset all performance measurement counters across all components.
 
int enable_performance_counters (void)
 Reinitialize and activate performance counters for all created components.
 
void disable_performance_counters (void)
 Disable performance counters and unregister records marked for removal.
 
void telemetry_update (uint32_t begin_ccount, uint32_t current_ccount)
 Update periodic telemetry metrics with elapsed core clock cycles.
 
struct system_tick_info * telemetry_get_systick_info_ptr (void)
 Retrieve pointer to system tick telemetry structure for current core.
 

Detailed Description

Core system ticks, CPU cycle utilization, component performance tracking, and SRAM Window 0/3 telemetry status registers.

Common SRAM Window 0 firmware status and telemetry register offsets.

Macro Definition Documentation

◆ SRAM_REG_ABI_VER

#define SRAM_REG_ABI_VER   offsetof(struct ipc4_fw_registers, abi_ver)

Offset to ABI version field.

◆ SRAM_REG_FW_END

#define SRAM_REG_FW_END   sizeof(struct ipc4_fw_registers)

Total size boundary of Window 0 firmware register block.

◆ SRAM_REG_FW_PWR_STATUS

#define SRAM_REG_FW_PWR_STATUS   offsetof(struct ipc4_fw_registers, fps)

Offset to Firmware Power Status (FPS)

◆ SRAM_REG_FW_STATUS

#define SRAM_REG_FW_STATUS   offsetof(struct ipc4_fw_registers, fsr)

Offset to Firmware Status Register (FSR)

◆ SRAM_REG_LAST_ERROR_CODE

#define SRAM_REG_LAST_ERROR_CODE   offsetof(struct ipc4_fw_registers, lec)

Offset to Last Error Code (LEC)

◆ SRAM_REG_LLP_EVAD_SLOTS

#define SRAM_REG_LLP_EVAD_SLOTS   offsetof(struct ipc4_fw_registers, llp_evad_reading_slot)

Offset to EVAD position reading slot.

◆ SRAM_REG_LLP_GPDMA_READING_SLOTS

#define SRAM_REG_LLP_GPDMA_READING_SLOTS   offsetof(struct ipc4_fw_registers, llp_gpdma_reading_slots)

Offset to GPDMA linear link position reading slots.

◆ SRAM_REG_LLP_SNDW_READING_SLOTS

#define SRAM_REG_LLP_SNDW_READING_SLOTS   offsetof(struct ipc4_fw_registers, llp_sndw_reading_slots)

Offset to SoundWire link position reading slots.

◆ SRAM_REG_LNEC

#define SRAM_REG_LNEC   offsetof(struct ipc4_fw_registers, lnec)

Offset to Last Native Error Code (LNEC)

◆ SRAM_REG_LTR

#define SRAM_REG_LTR   offsetof(struct ipc4_fw_registers, ltr)

Offset to Latency Tolerance Reporting (LTR)

◆ SRAM_REG_PEAK_VOL_REGS

#define SRAM_REG_PEAK_VOL_REGS   offsetof(struct ipc4_fw_registers, peak_vol_regs)

Offset to peak volume meter register array.

◆ SRAM_REG_PIPELINE_REGS

#define SRAM_REG_PIPELINE_REGS   offsetof(struct ipc4_fw_registers, pipeline_regs)

Offset to pipeline state register array.

◆ SRAM_REG_ROM_INFO

#define SRAM_REG_ROM_INFO   offsetof(struct ipc4_fw_registers, rom_info)

Offset to ROM bootstrap information.

◆ SRAM_REG_SLAVE_CORE_STS

#define SRAM_REG_SLAVE_CORE_STS   offsetof(struct ipc4_fw_registers, slave_core_sts)

Offset to Secondary core power/run status.

Function Documentation

◆ disable_performance_counters()

void disable_performance_counters ( void  )

Disable performance counters and unregister records marked for removal.

◆ enable_performance_counters()

int enable_performance_counters ( void  )

Reinitialize and activate performance counters for all created components.

Returns
0 on success, or negative error code on failure.

◆ free_performance_data()

int free_performance_data ( struct perf_data_item_comp *  item)

Release an allocated performance data slot in Memory Window 3.

Parameters
[in,out]itemPointer to performance data item to release.
Returns
0 on success, or negative error code if slot was already free.

◆ get_extended_performance_data()

int get_extended_performance_data ( struct extended_global_perf_data *const  ext_global_perf_data)

Retrieve extended global performance telemetry data with per-core breakdown.

Parameters
[out]ext_global_perf_dataDestination structure to populate.
Returns
0 on success, or negative error code on failure.

◆ get_performance_data()

int get_performance_data ( struct global_perf_data *const  global_perf_data)

Retrieve global aggregated performance telemetry data.

Parameters
[out]global_perf_dataDestination structure to populate.
Returns
0 on success, or negative error code on failure.

◆ perf_data_getnext()

struct perf_data_item_comp * perf_data_getnext ( void  )

Allocate next free performance data slot from Memory Window 3.

Returns
Pointer to allocated performance data record, or NULL if window is full.

◆ perf_data_item_comp_init()

void perf_data_item_comp_init ( struct perf_data_item_comp *  perf,
uint32_t  resource_id,
uint32_t  power_mode 
)

Initializer for component performance data record.

Parameters
[out]perfStructure to be initialized.
[in]resource_idUnique resource/component identifier.
[in]power_modeActive power mode.

◆ perf_meas_get_state()

enum ipc4_perf_measurements_state_set perf_meas_get_state ( void  )

Query current global performance measurement state.

Returns
Current measurement state enumeration value.

◆ perf_meas_set_state()

void perf_meas_set_state ( enum ipc4_perf_measurements_state_set  state)

Set global performance measurement state machine.

Parameters
[in]stateTarget measurement state (disabled, paused, enabled).

◆ reset_performance_counters()

int reset_performance_counters ( void  )

Reset all performance measurement counters across all components.

Returns
0 on success, or negative error code on failure.

◆ telemetry_get_systick_info_ptr()

struct system_tick_info * telemetry_get_systick_info_ptr ( void  )

Retrieve pointer to system tick telemetry structure for current core.

Returns
Pointer to struct system_tick_info in shared memory.

◆ telemetry_update()

void telemetry_update ( uint32_t  begin_ccount,
uint32_t  current_ccount 
)

Update periodic telemetry metrics with elapsed core clock cycles.

Parameters
begin_ccountCycle count snapshot at start of measurement interval.
current_ccountCycle count snapshot at end of measurement interval.