8#ifndef __SOF_LIB_AMS_H__
9#define __SOF_LIB_AMS_H__
13#include <ipc/topology.h>
19#define AMS_INVALID_MSG_TYPE 0
21#define AMS_INVALID_SLOT 0xFF
23#define AMS_ANY_ID 0xFFFF
26#define AMS_SERVICE_UUID_TABLE_SIZE 16
28#define AMS_ROUTING_TABLE_SIZE 16
30#define AMS_MAX_MSG_SIZE 0x1000
153 uint32_t *message_type_id);
168 uint16_t instance_id);
184 uint16_t instance_id);
205 uint16_t instance_id,
221 uint16_t instance_id,
245 uint16_t module_id, uint16_t instance_id);
249 return sof_get()->ams_shared_ctx;
254 uint32_t *message_type_id) {
return 0; }
258 uint16_t instance_id) {
return 0; }
262 uint16_t instance_id) {
return 0; }
266 uint16_t instance_id,
268 void *ctx) {
return 0; }
272 uint16_t instance_id,
278 uint16_t instance_id) {
return 0; }
287#if CONFIG_SMP && CONFIG_AMS
static int ams_register_producer(uint32_t message_type_id, uint16_t module_id, uint16_t instance_id)
Definition ams.h:256
static int ams_unregister_consumer(uint32_t message_type_id, uint16_t module_id, uint16_t instance_id, ams_msg_callback_fn function)
Definition ams.h:270
#define AMS_ROUTING_TABLE_SIZE
Definition ams.h:28
#define AMS_MAX_MSG_SIZE
Definition ams.h:30
static int ams_send_mi(const struct ams_message_payload *payload, uint16_t module_id, uint16_t instance_id)
Definition ams.h:277
static int ams_send(const struct ams_message_payload *payload)
Definition ams.h:275
static int process_incoming_message(uint32_t slot)
Definition ams.h:290
void(* ams_msg_callback_fn)(const struct ams_message_payload *const ams_message_payload, void *ctx)
ams_msg_callback_fn
Definition ams.h:67
static int ams_init(void)
Definition ams.h:252
static int ams_register_consumer(uint32_t message_type_id, uint16_t module_id, uint16_t instance_id, ams_msg_callback_fn function, void *ctx)
Definition ams.h:264
static struct ams_shared_context * ams_ctx_get(void)
Definition ams.h:280
static int ams_unregister_producer(uint32_t message_type_id, uint16_t module_id, uint16_t instance_id)
Definition ams.h:260
static int ams_get_message_type_id(const uint8_t *message_uuid, uint32_t *message_type_id)
Definition ams.h:253
#define AMS_SERVICE_UUID_TABLE_SIZE
Definition ams.h:26
struct async_message_service ** arch_ams_get(void)
#define UUID_SIZE
UUID is 16 bytes long.
Definition uuid.h:26
struct sof * sof_get(void)
Internal struct ams_consumer_entry.
Definition ams.h:77
ams_msg_callback_fn consumer_callback
Definition ams.h:81
void * ctx
Definition ams.h:83
uint8_t consumer_instance_id
Definition ams.h:87
uint32_t message_type_id
Definition ams.h:79
uint16_t consumer_module_id
Definition ams.h:85
uint8_t consumer_core_id
Definition ams.h:89
struct ams_shared_context * shared
Definition ams.h:124
IXC message payload.
Definition ams.h:37
uint8_t * message
Definition ams.h:49
uint16_t producer_instance_id
Definition ams.h:45
uint32_t message_type_id
Definition ams.h:41
uint16_t producer_module_id
Definition ams.h:43
uint32_t message_length
Definition ams.h:47
uint8_t producer_instance_id
Definition ams.h:98
uint16_t producer_module_id
Definition ams.h:96
uint32_t message_type_id
Definition ams.h:94
struct uuid_idx uuid_table[AMS_SERVICE_UUID_TABLE_SIZE]
Definition ams.h:113
uint32_t slot_uses[CONFIG_CORE_COUNT]
Definition ams.h:115
uint32_t last_used_msg_id
Definition ams.h:110
uint32_t slot_done[CONFIG_CORE_COUNT]
Definition ams.h:117
struct ams_slot slots[CONFIG_CORE_COUNT]
Definition ams.h:119
struct ams_consumer_entry rt_table[AMS_ROUTING_TABLE_SIZE]
Definition ams.h:111
struct ams_producer producer_table[AMS_ROUTING_TABLE_SIZE]
Definition ams.h:112
struct coherent c
Definition ams.h:108
uint16_t instance_id
Definition ams.h:54
uint16_t module_id
Definition ams.h:53
struct ams_message_payload msg
Definition ams.h:56
uint32_t __aligned(PLATFORM_DCACHE_ALIGN) pad[]
union ams_slot::@215313021324150325262356264241064275320220165153 u
uint8_t msg_raw[AMS_MAX_MSG_SIZE]
Definition ams.h:57
uint32_t pending_slots
Definition ams.h:130
struct task ams_task
Definition ams.h:128
struct async_message_service * ams
Definition ams.h:129
struct ams_context * ams_context
Definition ams.h:137
Task used by schedulers.
Definition task.h:56
uint8_t message_uuid[UUID_SIZE]
Definition ams.h:103
uint32_t message_type_id
Definition ams.h:102