Skip to content

Commit

Permalink
base_fw: Add perf measurement state set ipc
Browse files Browse the repository at this point in the history
Adds performance measurement state ipc to change the state of
performance measurement.

Signed-off-by: Tobiasz Dryjanski <[email protected]>
  • Loading branch information
tobonex committed Jan 24, 2024
1 parent 89ebad7 commit 0129077
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion src/audio/base_fw.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@
#if defined(CONFIG_SOC_SERIES_INTEL_ACE)
#include <intel_adsp_hda.h>
#endif
#include <sof/debug/telemetry/telemetry.h>
#include <sof/audio/module_adapter/module/generic.h>
#include <sof/schedule/dp_schedule.h>
#include <sof/schedule/ll_schedule.h>
#ifdef CONFIG_TELEMETRY
#include <sof/debug/telemetry/telemetry.h>
#include "adsp_debug_window.h"
#include "mem_window.h"
#endif

#if CONFIG_ACE_V1X_ART_COUNTER || CONFIG_ACE_V1X_RTC_COUNTER
#include <zephyr/device.h>
Expand Down Expand Up @@ -505,6 +507,30 @@ int schedulers_info_get(uint32_t *data_off_size,
return 0;
}

void set_perf_meas_state(const char *data)
{
#ifdef CONFIG_TELEMETRY
enum ipc4_perf_measurements_state_set state = *data;

struct telemetry_wnd_data *wnd_data =
(struct telemetry_wnd_data *)ADSP_DW->slots[DW_TELEMETRY_SLOT];
struct system_tick_info *systick_info =
(struct system_tick_info *)wnd_data->system_tick_info;

switch (state) {
case IPC4_PERF_MEASUREMENTS_DISABLED:
break;
case IPC4_PERF_MEASUREMENTS_STOPPED:
for (int i = 0; i < CONFIG_MAX_CORE_COUNT; i++)
systick_info[i].peak_utilization = 0;
break;
case IPC4_PERF_MEASUREMENTS_STARTED:
case IPC4_PERF_MEASUREMENTS_PAUSED:
break;
}
#endif
}

static int basefw_get_large_config(struct comp_dev *dev,
uint32_t param_id,
bool first_block,
Expand Down Expand Up @@ -580,6 +606,7 @@ static int basefw_set_large_config(struct comp_dev *dev,
case IPC4_FW_CONFIG:
return basefw_set_fw_config(first_block, last_block, data_offset, data);
case IPC4_PERF_MEASUREMENTS_STATE:
set_perf_meas_state(data);
return 0;
case IPC4_SYSTEM_TIME:
return basefw_set_system_time(param_id, first_block,
Expand Down

0 comments on commit 0129077

Please sign in to comment.