Sound Open Firmware
Loading...
Searching...
No Matches
idc.h File Reference

IDC header file. More...

Include dependency graph for idc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  idc_payload
 IDC message payload. More...
struct  idc_msg
 IDC message. More...
struct  idc
 IDC data. More...

Macros

#define IDC_BLOCKING   0
 IDC send blocking flag.
#define IDC_NON_BLOCKING   1
 IDC send non-blocking flag.
#define IDC_POWER_UP   2
 IDC send core power up flag.
#define IDC_POWER_DOWN   3
 IDC send core power down flag.
#define IDC_DEADLINE   100
 IDC task deadline.
#define IDC_ROM_WAKE_VERSION   0x2
 ROM wake version parsed by ROM during core wake up.
#define IDC_TYPE_SHIFT   24
 IDC message type.
#define IDC_TYPE_MASK   0x7f
#define IDC_TYPE(x)
#define IDC_HEADER_MASK   0xffffff
 IDC message header.
#define IDC_HEADER(x)
#define IDC_EXTENSION_MASK   0x3fffffff
 IDC message extension.
#define IDC_EXTENSION(x)
#define IDC_MSG_POWER_UP
 IDC power up message.
#define IDC_MSG_POWER_UP_EXT   IDC_EXTENSION(SOF_TEXT_START >> 2)
#define IDC_MSG_POWER_DOWN   IDC_TYPE(0x2)
 IDC power down message.
#define IDC_MSG_POWER_DOWN_EXT   IDC_EXTENSION(0x0)
#define IDC_MSG_NOTIFY   IDC_TYPE(0x3)
 IDC notify message.
#define IDC_MSG_NOTIFY_EXT   IDC_EXTENSION(0x0)
#define IDC_MSG_IPC   IDC_TYPE(0x4)
 IDC IPC processing message.
#define IDC_MSG_IPC_EXT   IDC_EXTENSION(0x0)
#define IDC_MSG_PARAMS   IDC_TYPE(0x5)
 IDC component params message.
#define IDC_MSG_PARAMS_EXT(x)
#define IDC_MSG_PREPARE   IDC_TYPE(0x6)
 IDC component prepare message.
#define IDC_MSG_PREPARE_EXT(x)
#define IDC_MSG_TRIGGER   IDC_TYPE(0x7)
 IDC component trigger message.
#define IDC_MSG_TRIGGER_EXT(x)
#define IDC_MSG_RESET   IDC_TYPE(0x8)
 IDC component reset message.
#define IDC_MSG_RESET_EXT(x)
#define IDC_MSG_PREPARE_D0ix   IDC_TYPE(0x9)
 IDC prepare D0ix message.
#define IDC_MSG_PREPARE_D0ix_EXT   IDC_EXTENSION(0x0)
#define IDC_MSG_SECONDARY_CORE_CRASHED   IDC_TYPE(0xA)
 IDC secondary core crashed notify message.
#define IDC_MSG_SECONDARY_CORE_CRASHED_EXT(x)
#define IDC_MSG_AMS   IDC_TYPE(0xB)
 IDC process async msg.
#define IDC_MSG_AMS_EXT   IDC_EXTENSION(0x0)
#define IDC_HEADER_TO_AMS_SLOT_MASK(x)
#define IDC_MSG_BIND   IDC_TYPE(0xD)
#define IDC_MSG_UNBIND   IDC_TYPE(0xE)
#define IDC_MSG_GET_ATTRIBUTE   IDC_TYPE(0xF)
#define IDC_MSG_FREE   IDC_TYPE(0x10)
 IDC component delete message.
#define IDC_MSG_FREE_EXT(x)
#define IDC_MSG_PPL_STATE   IDC_TYPE(0xC)
 IDC pipeline set state message.
#define IDC_PPL_STATE_PPL_ID_SHIFT   0
#define IDC_PPL_STATE_PPL_ID_MASK   MASK(23, 0)
#define IDC_PPL_STATE_PHASE_SHIFT   24
#define IDC_PPL_STATE_PHASE_MASK   MASK(27, 24)
#define IDC_PPL_STATE_PHASE_SET(x)
#define IDC_PPL_STATE_PHASE_GET(x)
#define IDC_PPL_STATE_PHASE_PREPARE   BIT(0)
#define IDC_PPL_STATE_PHASE_TRIGGER   BIT(1)
#define IDC_PPL_STATE_PHASE_ONESHOT
#define IDC_MSG_PPL_STATE_EXT(_ppl_id, _action)
#define IDC_SCC_CORE_SHIFT   0
 IDC_MSG_SECONDARY_CORE_CRASHED header fields.
#define IDC_SCC_CORE_MASK   0xff
#define IDC_SCC_CORE(x)
#define IDC_SCC_REASON_SHIFT   8
#define IDC_SCC_REASON_MASK   0xff
#define IDC_SCC_REASON(x)
#define IDC_SCC_REASON_WATCHDOG   0x00
 Secondary core crash reasons.
#define IDC_SCC_REASON_EXCEPTION   0x01
#define iTS(x)
 Decodes IDC message type.
#define IDC_MAX_PAYLOAD_SIZE   (DCACHE_LINE_SIZE * 2)
 Max IDC message payload size in bytes.
#define IDC_FREE_IRQ_ONLY   BIT(0)
 IDC free function flags.

Functions

static struct idc_payload * idc_payload_get (struct idc *idc, uint32_t core)
void idc_enable_interrupts (int target_core, int source_core)
void idc_free (uint32_t flags)
int platform_idc_init (void)
int platform_idc_restore (void)
enum task_state idc_do_cmd (void *data)
void idc_cmd (struct idc_msg *msg)
int idc_msg_status_get (uint32_t core)
int idc_init (void)
void idc_init_thread (void)
int idc_send_msg (struct idc_msg *msg, uint32_t mode)
struct idc ** idc_get (void)

Variables

struct tr_ctx idc_tr

Detailed Description

Macro Definition Documentation

◆ IDC_BLOCKING

#define IDC_BLOCKING   0

IDC send blocking flag.

◆ IDC_DEADLINE

#define IDC_DEADLINE   100

IDC task deadline.

◆ IDC_EXTENSION

#define IDC_EXTENSION ( x)
Value:
#define IDC_EXTENSION_MASK
IDC message extension.
Definition idc.h:53

◆ IDC_EXTENSION_MASK

#define IDC_EXTENSION_MASK   0x3fffffff

IDC message extension.

◆ IDC_FREE_IRQ_ONLY

#define IDC_FREE_IRQ_ONLY   BIT(0)

IDC free function flags.

disable only irqs

◆ IDC_HEADER

#define IDC_HEADER ( x)
Value:
#define IDC_HEADER_MASK
IDC message header.
Definition idc.h:49

◆ IDC_HEADER_MASK

#define IDC_HEADER_MASK   0xffffff

IDC message header.

◆ IDC_HEADER_TO_AMS_SLOT_MASK

#define IDC_HEADER_TO_AMS_SLOT_MASK ( x)
Value:
(x & 0xFFFF)

◆ IDC_MAX_PAYLOAD_SIZE

#define IDC_MAX_PAYLOAD_SIZE   (DCACHE_LINE_SIZE * 2)

Max IDC message payload size in bytes.

◆ IDC_MSG_AMS

#define IDC_MSG_AMS   IDC_TYPE(0xB)

IDC process async msg.

◆ IDC_MSG_AMS_EXT

#define IDC_MSG_AMS_EXT   IDC_EXTENSION(0x0)

◆ IDC_MSG_BIND

#define IDC_MSG_BIND   IDC_TYPE(0xD)

◆ IDC_MSG_FREE

#define IDC_MSG_FREE   IDC_TYPE(0x10)

IDC component delete message.

◆ IDC_MSG_FREE_EXT

#define IDC_MSG_FREE_EXT ( x)
Value:
#define IDC_EXTENSION(x)
Definition idc.h:54

◆ IDC_MSG_GET_ATTRIBUTE

#define IDC_MSG_GET_ATTRIBUTE   IDC_TYPE(0xF)

◆ IDC_MSG_IPC

#define IDC_MSG_IPC   IDC_TYPE(0x4)

IDC IPC processing message.

◆ IDC_MSG_IPC_EXT

#define IDC_MSG_IPC_EXT   IDC_EXTENSION(0x0)

◆ IDC_MSG_NOTIFY

#define IDC_MSG_NOTIFY   IDC_TYPE(0x3)

IDC notify message.

◆ IDC_MSG_NOTIFY_EXT

#define IDC_MSG_NOTIFY_EXT   IDC_EXTENSION(0x0)

◆ IDC_MSG_PARAMS

#define IDC_MSG_PARAMS   IDC_TYPE(0x5)

IDC component params message.

◆ IDC_MSG_PARAMS_EXT

#define IDC_MSG_PARAMS_EXT ( x)
Value:

◆ IDC_MSG_POWER_DOWN

#define IDC_MSG_POWER_DOWN   IDC_TYPE(0x2)

IDC power down message.

◆ IDC_MSG_POWER_DOWN_EXT

#define IDC_MSG_POWER_DOWN_EXT   IDC_EXTENSION(0x0)

◆ IDC_MSG_POWER_UP

#define IDC_MSG_POWER_UP
Value:
(IDC_TYPE(0x1) | \
IDC_HEADER(IDC_ROM_WAKE_VERSION))
#define IDC_ROM_WAKE_VERSION
ROM wake version parsed by ROM during core wake up.
Definition idc.h:41
#define IDC_TYPE(x)
Definition idc.h:46

IDC power up message.

◆ IDC_MSG_POWER_UP_EXT

#define IDC_MSG_POWER_UP_EXT   IDC_EXTENSION(SOF_TEXT_START >> 2)

◆ IDC_MSG_PPL_STATE

#define IDC_MSG_PPL_STATE   IDC_TYPE(0xC)

IDC pipeline set state message.

◆ IDC_MSG_PPL_STATE_EXT

#define IDC_MSG_PPL_STATE_EXT ( _ppl_id,
_action )
Value:
#define IDC_PPL_STATE_PHASE_SET(x)
Definition idc.h:117
#define IDC_PPL_STATE_PPL_ID_MASK
Definition idc.h:114

◆ IDC_MSG_PREPARE

#define IDC_MSG_PREPARE   IDC_TYPE(0x6)

IDC component prepare message.

◆ IDC_MSG_PREPARE_D0ix

#define IDC_MSG_PREPARE_D0ix   IDC_TYPE(0x9)

IDC prepare D0ix message.

◆ IDC_MSG_PREPARE_D0ix_EXT

#define IDC_MSG_PREPARE_D0ix_EXT   IDC_EXTENSION(0x0)

◆ IDC_MSG_PREPARE_EXT

#define IDC_MSG_PREPARE_EXT ( x)
Value:

◆ IDC_MSG_RESET

#define IDC_MSG_RESET   IDC_TYPE(0x8)

IDC component reset message.

◆ IDC_MSG_RESET_EXT

#define IDC_MSG_RESET_EXT ( x)
Value:

◆ IDC_MSG_SECONDARY_CORE_CRASHED

#define IDC_MSG_SECONDARY_CORE_CRASHED   IDC_TYPE(0xA)

IDC secondary core crashed notify message.

◆ IDC_MSG_SECONDARY_CORE_CRASHED_EXT

#define IDC_MSG_SECONDARY_CORE_CRASHED_EXT ( x)
Value:

◆ IDC_MSG_TRIGGER

#define IDC_MSG_TRIGGER   IDC_TYPE(0x7)

IDC component trigger message.

◆ IDC_MSG_TRIGGER_EXT

#define IDC_MSG_TRIGGER_EXT ( x)
Value:

◆ IDC_MSG_UNBIND

#define IDC_MSG_UNBIND   IDC_TYPE(0xE)

◆ IDC_NON_BLOCKING

#define IDC_NON_BLOCKING   1

IDC send non-blocking flag.

◆ IDC_POWER_DOWN

#define IDC_POWER_DOWN   3

IDC send core power down flag.

◆ IDC_POWER_UP

#define IDC_POWER_UP   2

IDC send core power up flag.

◆ IDC_PPL_STATE_PHASE_GET

#define IDC_PPL_STATE_PHASE_GET ( x)
Value:
#define IDC_PPL_STATE_PHASE_SHIFT
Definition idc.h:115
#define IDC_PPL_STATE_PHASE_MASK
Definition idc.h:116

◆ IDC_PPL_STATE_PHASE_MASK

#define IDC_PPL_STATE_PHASE_MASK   MASK(27, 24)

◆ IDC_PPL_STATE_PHASE_ONESHOT

#define IDC_PPL_STATE_PHASE_ONESHOT
Value:
#define IDC_PPL_STATE_PHASE_PREPARE
Definition idc.h:121
#define IDC_PPL_STATE_PHASE_TRIGGER
Definition idc.h:122

◆ IDC_PPL_STATE_PHASE_PREPARE

#define IDC_PPL_STATE_PHASE_PREPARE   BIT(0)

◆ IDC_PPL_STATE_PHASE_SET

#define IDC_PPL_STATE_PHASE_SET ( x)

◆ IDC_PPL_STATE_PHASE_SHIFT

#define IDC_PPL_STATE_PHASE_SHIFT   24

◆ IDC_PPL_STATE_PHASE_TRIGGER

#define IDC_PPL_STATE_PHASE_TRIGGER   BIT(1)

◆ IDC_PPL_STATE_PPL_ID_MASK

#define IDC_PPL_STATE_PPL_ID_MASK   MASK(23, 0)

◆ IDC_PPL_STATE_PPL_ID_SHIFT

#define IDC_PPL_STATE_PPL_ID_SHIFT   0

◆ IDC_ROM_WAKE_VERSION

#define IDC_ROM_WAKE_VERSION   0x2

ROM wake version parsed by ROM during core wake up.

◆ IDC_SCC_CORE

#define IDC_SCC_CORE ( x)
Value:
#define IDC_SCC_CORE_SHIFT
IDC_MSG_SECONDARY_CORE_CRASHED header fields.
Definition idc.h:131
#define IDC_SCC_CORE_MASK
Definition idc.h:132

◆ IDC_SCC_CORE_MASK

#define IDC_SCC_CORE_MASK   0xff

◆ IDC_SCC_CORE_SHIFT

#define IDC_SCC_CORE_SHIFT   0

IDC_MSG_SECONDARY_CORE_CRASHED header fields.

◆ IDC_SCC_REASON

#define IDC_SCC_REASON ( x)
Value:
#define IDC_SCC_REASON_SHIFT
Definition idc.h:135
#define IDC_SCC_REASON_MASK
Definition idc.h:136

◆ IDC_SCC_REASON_EXCEPTION

#define IDC_SCC_REASON_EXCEPTION   0x01

◆ IDC_SCC_REASON_MASK

#define IDC_SCC_REASON_MASK   0xff

◆ IDC_SCC_REASON_SHIFT

#define IDC_SCC_REASON_SHIFT   8

◆ IDC_SCC_REASON_WATCHDOG

#define IDC_SCC_REASON_WATCHDOG   0x00

Secondary core crash reasons.

◆ IDC_TYPE

#define IDC_TYPE ( x)
Value:
#define IDC_TYPE_MASK
Definition idc.h:45
#define IDC_TYPE_SHIFT
IDC message type.
Definition idc.h:44

◆ IDC_TYPE_MASK

#define IDC_TYPE_MASK   0x7f

◆ IDC_TYPE_SHIFT

#define IDC_TYPE_SHIFT   24

IDC message type.

◆ iTS

#define iTS ( x)
Value:

Decodes IDC message type.

Function Documentation

◆ idc_cmd()

void idc_cmd ( struct idc_msg * msg)

◆ idc_do_cmd()

enum task_state idc_do_cmd ( void * data)

◆ idc_enable_interrupts()

void idc_enable_interrupts ( int target_core,
int source_core )

◆ idc_free()

void idc_free ( uint32_t flags)

◆ idc_get()

struct idc ** idc_get ( void )

◆ idc_init()

int idc_init ( void )

◆ idc_init_thread()

void idc_init_thread ( void )

◆ idc_msg_status_get()

int idc_msg_status_get ( uint32_t core)

◆ idc_payload_get()

struct idc_payload * idc_payload_get ( struct idc * idc,
uint32_t core )
inlinestatic

◆ idc_send_msg()

int idc_send_msg ( struct idc_msg * msg,
uint32_t mode )

◆ platform_idc_init()

int platform_idc_init ( void )

◆ platform_idc_restore()

int platform_idc_restore ( void )

Variable Documentation

◆ idc_tr

struct tr_ctx idc_tr
extern