Sound Open Firmware
Loading...
Searching...
No Matches

IPC4 Base Firmware parameters, memory configuration, and status definitions. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ipc4_phys_mem_pages
 Free physical memory page descriptor. More...
 
struct  ipc4_notification_mask_info
 Notification mask configuration structure (IPC4_NOTIFICATION_MASK). More...
 
struct  ipc4_astate
 A-State frequency and load threshold entry. More...
 
struct  ipc4_astate_table
 Power Manager A-State configuration table (IPC4_ASTATE_TABLE). More...
 
struct  ipc4_dma_control
 Direct DMA Gateway Control structure (IPC4_DMA_CONTROL). More...
 
struct  ipc4_perf_data_item
 Single component performance measurement data item. More...
 
struct  ipc4_perf_data_item_mi
 Module instance performance data with internal iteration metrics. More...
 
struct  ipc4_global_perf_data
 Global DSP performance report payload (IPC4_GLOBAL_PERF_DATA). More...
 
struct  ipc4_scheduler_config
 Scheduler tick and timer configuration (IPC4_SCHEDULER_CONFIGURATION). More...
 
struct  ipc4_system_time
 64-bit system timestamp split into lower and upper 32-bit words. More...
 
struct  ipc4_system_time_info
 Host and DSP system time pairing for clock synchronization. More...
 
struct  ipc4_ext_system_time
 Extended host/DSP system time with RTC and ART timestamps. More...
 
struct  ipc4_resource_kcps
 KCPS resource allocation descriptor. More...
 
struct  ipc4_resource_memory
 Memory resource allocation descriptor. More...
 
struct  ipc4_resource_request
 Resource allocation request structure (IPC4_RESOURCE_ALLOCATION_REQUEST). More...
 
struct  ipc4_sram_state_page_alloc
 SRAM page allocation bitmask array. More...
 
struct  ipc4_sram_state_info
 Detailed SRAM state and power bank information (IPC4_MEMORY_STATE_INFO_GET). More...
 
struct  ipc4_library_props
 Properties of a dynamic or preloaded external library. More...
 
struct  ipc4_libraries_info
 Library information report payload (IPC4_LIBRARIES_INFO_GET). More...
 
struct  ipc4_log_state_info
 Logging configuration and state control (IPC4_ENABLE_LOGS). More...
 
struct  task_props
 Single task properties within scheduler information. More...
 
struct  scheduler_props
 Core scheduler properties and scheduled tasks. More...
 
struct  schedulers_info
 Complete scheduler topology report (IPC4_SCHEDULERS_INFO_GET). More...
 
struct  perf_data_item
 FW component performance measurement item. More...
 
struct  ext_perf_data_item
 Extended component performance metrics with DSP cycle counts. More...
 
struct  extended_global_perf_data
 Extended global performance data report (IPC4_EXTENDED_GLOBAL_PERF_DATA). More...
 
struct  perf_data_item_comp
 Component performance data with wall clock cycle metrics. More...
 
struct  global_perf_data
 Global DSP performance summary. More...
 

Macros

#define IPC4_MAX_CLK_STATES   0
 Clock states count.
 
#define IPC4_MAX_SRC_QUEUE   8
 Maximum source queue count supported by IPC4.
 
#define IPC4_MAX_DST_QUEUE   8
 Maximum destination queue count supported by IPC4.
 
#define IPC4_MAX_MODULE_INSTANCES   256
 Maximum module instance count for a single module supported by IPC4.
 
#define IPC4_MAX_LL_TASKS_PER_PRI_COUNT   16
 Maximum low-latency tasks for a schedule priority count supported by IPC4.
 
#define IPC4_MAX_DP_TASKS_COUNT   16
 Maximum data-processing tasks count supported by IPC4.
 
#define IPC4_MAX_LIBS_COUNT   16
 Maximum external libraries count supported by IPC4.
 
#define IPC4_MAX_PPL_COUNT   32
 Maximum pipeline count supported by IPC4.
 
#define IPC4_UNDERRUN_AT_GATEWAY_NOTIFICATION_MASK_IDX   0
 Notification bit index: gateway underrun notification.
 
#define IPC4_UNDERRUN_AT_MIXER_NOTIFICATION_MASK_IDX   1
 Notification bit index: mixer underrun notification.
 
#define IPC4_BUDGET_VIOLATION_NOTIFICATION_MASK_IDX   2
 Notification bit index: budget violation notification.
 
#define IPC4_OVERRUN_AT_GATEWAY_NOTIFICATION_MASK_IDX   3
 Notification bit index: gateway overrun notification.
 
#define IPC4_LPSRAM_STATE   0
 LP-SRAM state indicator index.
 
#define IPC4_HPSRAM_STATE   1
 HP-SRAM state indicator index.
 

Enumerations

enum  ipc4_basefw_params {
  IPC4_DSP_PROPERTIES = 0 , IPC4_DSP_RESOURCE_STATE = 1 , IPC4_RESERVED = 2 , IPC4_NOTIFICATION_MASK = 3 ,
  IPC4_ASTATE_TABLE = 4 , IPC4_DMA_CONTROL = 5 , IPC4_ENABLE_LOGS = 6 , IPC4_FW_CONFIG = 7 ,
  IPC4_HW_CONFIG_GET = 8 , IPC4_MODULES_INFO_GET = 9 , IPC4_PIPELINE_LIST_INFO_GET = 10 , IPC4_PIPELINE_PROPS_GET = 11 ,
  IPC4_SCHEDULERS_INFO_GET = 12 , IPC4_GATEWAYS_INFO_GET = 13 , IPC4_MEMORY_STATE_INFO_GET = 14 , IPC4_POWER_STATE_INFO_GET = 15 ,
  IPC4_LIBRARIES_INFO_GET = 16 , IPC4_PERF_MEASUREMENTS_STATE = 17 , IPC4_GLOBAL_PERF_DATA = 18 , IPC4_L2_CACHE_INFO_GET = 19 ,
  IPC4_SYSTEM_TIME = 20 , IPC4_PERFORMANCE_CONFIGURATION = 21 , IPC4_REGISTER_KCPS = 22 , IPC4_RESOURCE_ALLOCATION_REQUEST = 23 ,
  IPC4_IO_PERF_MEASUREMENTS_STATE = 24 , IPC4_IO_GLOBAL_PERF_DATA = 25 , IPC4_GET_MODULE_ID = 26 , IPC4_EXTENDED_SYSTEM_TIME = 27 ,
  IPC4_TELEMETRY_STATE = 28 , IPC4_TELEMETRY_DATA = 29 , IPC4_EXTENDED_GLOBAL_PERF_DATA = 30 , IPC4_SDW_OWNERSHIP = 31 ,
  IPC4_MIC_PRIVACY_HW_MANAGED_STATE_CHANGE = 35 , IPC4_SET_MIC_PRIVACY_FW_MANAGED_POLICY_MASK = 36
}
 IPC4 Base Firmware configuration and query parameter IDs. More...
 
enum  ipc4_fw_config_params {
  IPC4_FW_VERSION_FW_CFG = 0 , IPC4_MEMORY_RECLAIMED_FW_CFG = 1 , IPC4_SLOW_CLOCK_FREQ_HZ_FW_CFG = 2 , IPC4_FAST_CLOCK_FREQ_HZ_FW_CFG = 3 ,
  IPC4_DMA_BUFFER_CONFIG_FW_CFG = 4 , IPC4_ALH_SUPPORT_LEVEL_FW_CFG = 5 , IPC4_DL_MAILBOX_BYTES_FW_CFG = 6 , IPC4_UL_MAILBOX_BYTES_FW_CFG = 7 ,
  IPC4_TRACE_LOG_BYTES_FW_CFG = 8 , IPC4_MAX_PPL_CNT_FW_CFG = 9 , IPC4_MAX_ASTATE_COUNT_FW_CFG = 10 , IPC4_MAX_MODULE_PIN_COUNT_FW_CFG = 11 ,
  IPC4_MODULES_COUNT_FW_CFG = 12 , IPC4_MAX_MOD_INST_COUNT_FW_CFG = 13 , IPC4_MAX_LL_TASKS_PER_PRI_COUNT_FW_CFG = 14 , IPC4_LL_PRI_COUNT = 15 ,
  IPC4_MAX_DP_TASKS_COUNT_FW_CFG = 16 , IPC4_MAX_LIBS_COUNT_FW_CFG = 17 , IPC4_SCHEDULER_CONFIGURATION = 18 , IPC4_XTAL_FREQ_HZ_FW_CFG = 19 ,
  IPC4_CLOCKS_CONFIGURATION = 20 , IPC4_UAOL_SUPPORT = 21 , IPC4_POWER_GATING_POLICY = 22 , IPC4_ASSERT_MODE = 23 ,
  IPC4_TELEMETRY_BUFFER_SIZE = 24 , IPC4_BUS_HARDWARE_ID = 25 , IPC4_DEBUG_WINDOW_SIZE = 26 , IPC4_KPB_RT_SINK_COUNT = 27 ,
  IPC4_DMI_FORCE_L1_EXIT = 28 , IPC4_FW_CONTEXT_SAVE = 29 , IPC4_FW_MIN_HOST_BUFFER_PERIODS = 33 , IPC4_FW_SOF_INFO = 35 ,
  IPC4_FW_CFG_PARAMS_COUNT , IPC4_MAX_FW_CFG_PARAM = IPC4_FW_CFG_PARAMS_COUNT - 1
}
 Firmware configuration parameter TLV IDs returned by IPC4_FW_CONFIG. More...
 
enum  ipc4_fw_sof_info_params { IPC4_SOF_CODEC_INFO = 0 , IPC4_SOF_CFG_PARAMS_COUNT , IPC4_MAX_SOF_CFG_PARAM = IPC4_SOF_CFG_PARAMS_COUNT - 1 }
 Tuple-based parameters for SOF specific info under IPC4_FW_SOF_INFO. More...
 
enum  ipc4_hw_config_params {
  IPC4_CAVS_VER_HW_CFG = 0 , IPC4_DSP_CORES_HW_CFG = 1 , IPC4_MEM_PAGE_BYTES_HW_CFG = 2 , IPC4_TOTAL_PHYS_MEM_PAGES_HW_CFG = 3 ,
  IPC4_I2S_CAPS_HW_CFG = 4 , IPC4_GPDMA_CAPS_HW_CFG = 5 , IPC4_GATEWAY_COUNT_HW_CFG = 6 , IPC4_HP_EBB_COUNT_HW_CFG = 7 ,
  IPC4_LP_EBB_COUNT_HW_CFG = 8 , IPC4_EBB_SIZE_BYTES_HW_CFG = 9 , IPC4_UAOL_CAPS_HW_CFG = 10 , IPC4_INTEL_MIC_PRIVACY_CAPS_HW_CFG = 11
}
 Hardware configuration parameter TLV IDs returned by IPC4_HW_CONFIG_GET. More...
 
enum  ipc4_memory_type { IPC4_HP_SRAM_MEMORY = 0 , IPC4_LP_SRAM_MEMORY = 1 }
 SRAM power memory type. More...
 
enum  ipc4_resource_state_request { IPC4_FREE_PHYS_MEM_PAGES = 0 }
 DSP resource state request types. More...
 
enum  ipc4_clock_src {
  IPC4_CLOCK_SRC_XTAL = 0 , IPC4_CLOCK_SRC_LP_RING_OSC , IPC4_CLOCK_SRC_HP_RING_OSC , IPC4_CLOCK_SRC_WOV_XTAL ,
  IPC4_CLOCK_SRC_INVALID , IPC4_CLOCK_SRC_MAX_IDX = IPC4_CLOCK_SRC_INVALID - 1
}
 Hardware clock source selection. More...
 
enum  ipc4_perf_measurements_state_set { IPC4_PERF_MEASUREMENTS_DISABLED = 0 , IPC4_PERF_MEASUREMENTS_STOPPED = 1 , IPC4_PERF_MEASUREMENTS_STARTED = 2 , IPC4_PERF_MEASUREMENTS_PAUSED = 3 }
 Performance measurement process states. More...
 
enum  ipc4_low_latency_interrupt_source { IPC4_LOW_POWER_TIMER_INTERRUPT_SOURCE = 1 , IPC4_DMA_GATEWAY_INTERRUPT_SOURCE = 2 }
 Low latency interrupt source types. More...
 
enum  ipc4_pipeline_attributes { IPC4_ULTRA_LOW_POWER = 0 , IPC4_AUTONOMOUS_RESET = 1 }
 Pipeline attributes flags. More...
 
enum  ipc4_resource_allocation_type { IPC4_RAT_DSP_KCPS = 0 , IPC4_RAT_MEMORY = 1 }
 Resource allocation request types. More...
 
enum  ipc4_alh_version { IPC4_ALH_NO_SUPPORT , IPC4_ALH_CAVS_1_8 = 0x10000 }
 Audio Hub Link (ALH) interface versions. More...
 
enum  ipc4_power_state_type { IPC4_ACTIVE_CORES_MASK = 0 , IPC4_CORE_KCPS = 1 }
 Power state query types. More...
 

Functions

struct ipc4_system_time_info * basefw_get_system_time_info (void)
 Get current DSP system time information for host-DSP clock synchronization.
 

Variables

static const uint32_t I2S_VER_30_PTL = 0x40000
 I2S IPC4 interface version for Panther Lake (PTL) platforms.
 

Detailed Description

IPC4 Base Firmware parameters, memory configuration, and status definitions.

NOTE: This ABI uses bit fields and is non portable.

Macro Definition Documentation

◆ IPC4_BUDGET_VIOLATION_NOTIFICATION_MASK_IDX

#define IPC4_BUDGET_VIOLATION_NOTIFICATION_MASK_IDX   2

Notification bit index: budget violation notification.

◆ IPC4_HPSRAM_STATE

#define IPC4_HPSRAM_STATE   1

HP-SRAM state indicator index.

◆ IPC4_LPSRAM_STATE

#define IPC4_LPSRAM_STATE   0

LP-SRAM state indicator index.

◆ IPC4_MAX_CLK_STATES

#define IPC4_MAX_CLK_STATES   0

Clock states count.

SOF FW performs autonomous management of clock sources. Set MAX_CLK_STATES to 0 in order to propagate this information through IPC and thus prevent reception of unsupported clock configuration.

◆ IPC4_MAX_DP_TASKS_COUNT

#define IPC4_MAX_DP_TASKS_COUNT   16

Maximum data-processing tasks count supported by IPC4.

◆ IPC4_MAX_DST_QUEUE

#define IPC4_MAX_DST_QUEUE   8

Maximum destination queue count supported by IPC4.

◆ IPC4_MAX_LIBS_COUNT

#define IPC4_MAX_LIBS_COUNT   16

Maximum external libraries count supported by IPC4.

◆ IPC4_MAX_LL_TASKS_PER_PRI_COUNT

#define IPC4_MAX_LL_TASKS_PER_PRI_COUNT   16

Maximum low-latency tasks for a schedule priority count supported by IPC4.

◆ IPC4_MAX_MODULE_INSTANCES

#define IPC4_MAX_MODULE_INSTANCES   256

Maximum module instance count for a single module supported by IPC4.

◆ IPC4_MAX_PPL_COUNT

#define IPC4_MAX_PPL_COUNT   32

Maximum pipeline count supported by IPC4.

◆ IPC4_MAX_SRC_QUEUE

#define IPC4_MAX_SRC_QUEUE   8

Maximum source queue count supported by IPC4.

◆ IPC4_OVERRUN_AT_GATEWAY_NOTIFICATION_MASK_IDX

#define IPC4_OVERRUN_AT_GATEWAY_NOTIFICATION_MASK_IDX   3

Notification bit index: gateway overrun notification.

◆ IPC4_UNDERRUN_AT_GATEWAY_NOTIFICATION_MASK_IDX

#define IPC4_UNDERRUN_AT_GATEWAY_NOTIFICATION_MASK_IDX   0

Notification bit index: gateway underrun notification.

◆ IPC4_UNDERRUN_AT_MIXER_NOTIFICATION_MASK_IDX

#define IPC4_UNDERRUN_AT_MIXER_NOTIFICATION_MASK_IDX   1

Notification bit index: mixer underrun notification.

Variable Documentation

◆ I2S_VER_30_PTL

const uint32_t I2S_VER_30_PTL = 0x40000
static

I2S IPC4 interface version for Panther Lake (PTL) platforms.