Files
soc-codegen-template/include_lib/driver/cpu/br28/asm/power/m2p_msg.h
T
2026-08-19 16:05:36 +08:00

90 lines
1.6 KiB
C

#ifndef __M2P_MSG_H__
#define __M2P_MSG_H__
//m2p用户消息类型
enum {
M2P_MSG_ACK = BIT(0),
M2P_MSG_TEST = BIT(1),
M2P_MSG_COMMOM = BIT(2),
M2P_MSG_CTMU = BIT(3),
M2P_MSG_SENSOR = BIT(4),
M2P_MSG_VAD = BIT(5),
};
//测试
struct m2p_msg_test {
u8 dat;
};
//测试
struct m2p_msg_ack {
u8 dat;
};
//公共消息
struct m2p_msg_common {
u8 dat;
};
//触摸消息
struct m2p_msg_ctmu {
u8 dat;
};
//vad
struct m2p_msg_vad {
u8 dat;
};
//m2p用户消息格式
struct m2p_msg_head {
u16 type :
MSG_TYPE_BIT_LEN;
u16 len :
MSG_PARAM_BIT_LEN;
u8 index :
MSG_INDEX_BIT;
u8 ack :
MSG_ACK_BIT;
} __attribute__((packed));
struct m2p_msg {
struct m2p_msg_head head;
union {
struct m2p_msg_ack ack;
struct m2p_msg_test test;
struct m2p_msg_common com;
struct m2p_msg_ctmu ctmu;
struct m2p_msg_vad vad;
} u;
} __attribute__((packed));
//m2p用户消息对应处理
struct m2p_msg_handler {
u8 type;
void (*handler)(struct m2p_msg *);
} __attribute__((packed));
#define REGISTER_M2P_MSG_HANDLER(_type, fn, pri) \
const struct m2p_msg_handler _##fn SEC_USED(.m2p_msg_handler)= { \
.type = _type, \
.handler = fn, \
}
extern struct m2p_msg_handler m2p_msg_handler_begin[];
extern struct m2p_msg_handler m2p_msg_handler_end[];
#define list_for_each_m2p_msg_handler(p) \
for (p = m2p_msg_handler_begin; p < m2p_msg_handler_end; p++)
int m2p_get_msg(int len, struct m2p_msg *msg);
int m2p_post_msg(int len, struct m2p_msg *msg);
int m2p_post_sync_msg(int len, struct m2p_msg *msg, u8 abandon, int timeout);
void msys_to_p11_sys_cmd(u8 cmd);
#endif