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

257 lines
13 KiB
C

#ifndef __LP_IPC_H__
#define __LP_IPC_H__
//=================================消息格式========================================
//消息buf大小
#define MAX_POOL 128
//消息类型
#define NO_MSG 0xff
//获取消息返回值
enum {
MSG_NO_ERROR = 0,
MSG_NO_MSG = 0,
MSG_EVENT_EXIST = -1,
MSG_NOT_EVENT = -2,
MSG_EVENT_PARAM_ERROR = -3,
MSG_BUF_NOT_ENOUGH = -4,
MSG_CBUF_ERROR = -5,
};
//消息头格式
#define MSG_HEADER_BYTE_LEN 3
#define MSG_HEADER_BIT_LEN (MSG_HEADER_BYTE_LEN*8)
#define MSG_HEADER_ALL_BIT ((1L<<MSG_HEADER_BIT_LEN) - 1)
#define MSG_INDEX_BIT 7
#define MSG_ACK_BIT 1
#define MSG_TYPE_BIT_LEN 12
#define MSG_PARAM_BIT_LEN (MSG_HEADER_BYTE_LEN*8-MSG_TYPE_BIT_LEN-MSG_INDEX_BIT-MSG_ACK_BIT)
//=================================M2P===========================================
//M2P中断索引
enum {
M2P_LP_INDEX = 0,
M2P_PF_INDEX,
M2P_LLP_INDEX,
M2P_P33_INDEX,
M2P_SF_INDEX,
M2P_CTMU_INDEX,
M2P_CCMD_INDEX, //common cmd
M2P_VAD_INDEX,
M2P_USER_INDEX,
M2P_WDT_INDEX,
M2P_SYNC_INDEX,
M2P_APP_INDEX,
};
#define M2P_LRC_PRD M2P_MESSAGE_ACCESS(0x000)
#define M2P_WDVDD M2P_MESSAGE_ACCESS(0x001)
#define M2P_LRC_TMR_50us M2P_MESSAGE_ACCESS(0x002)
#define M2P_LRC_TMR_200us M2P_MESSAGE_ACCESS(0x003)
#define M2P_LRC_TMR_600us M2P_MESSAGE_ACCESS(0x004)
#define M2P_VDDIO_KEEP M2P_MESSAGE_ACCESS(0x005)
#define M2P_LRC_KEEP M2P_MESSAGE_ACCESS(0x006)
#define M2P_SYNC_CMD M2P_MESSAGE_ACCESS(0x007)
#define M2P_MESSAGE_VAD_CMD M2P_MESSAGE_ACCESS(0x008)
#define M2P_MESSAGE_VAD_CBUF_RPTR M2P_MESSAGE_ACCESS(0x009)
#define M2P_VDDIO_KEEP_TYPE M2P_MESSAGE_ACCESS(0x00a)
#define M2P_RCH_FEQ_H M2P_MESSAGE_ACCESS(0x00b)
#define M2P_MEM_CONTROL M2P_MESSAGE_ACCESS(0x00c)
#define M2P_BTOSC_KEEP M2P_MESSAGE_ACCESS(0x00d)
#define M2P_CTMU_KEEP M2P_MESSAGE_ACCESS(0x00e)
#define M2P_RTC_KEEP M2P_MESSAGE_ACCESS(0x00f)
#define M2P_WDT_SYNC M2P_MESSAGE_ACCESS(0x010)
#define M2P_LIGHT_PDOWN_DVDD_VOL M2P_MESSAGE_ACCESS(0x011)
#define M2P_PVDD_LEVEL_SLEEP_TRIM M2P_MESSAGE_ACCESS(0x012)
/*触摸所有通道配置*/
#define M2P_CTMU_CMD M2P_MESSAGE_ACCESS(0x18)
#define M2P_CTMU_MSG M2P_MESSAGE_ACCESS(0x19)
#define M2P_CTMU_PRD0 M2P_MESSAGE_ACCESS(0x1a)
#define M2P_CTMU_PRD1 M2P_MESSAGE_ACCESS(0x1b)
#define M2P_CTMU_CH_ENABLE M2P_MESSAGE_ACCESS(0x1c)
#define M2P_CTMU_CH_DEBUG M2P_MESSAGE_ACCESS(0x1d)
#define M2P_CTMU_CH_CFG M2P_MESSAGE_ACCESS(0x1e)
#define M2P_CTMU_CH_WAKEUP_EN M2P_MESSAGE_ACCESS(0x1f)
#define M2P_CTMU_EARTCH_CH M2P_MESSAGE_ACCESS(0x20)
#define M2P_CTMU_TIME_BASE M2P_MESSAGE_ACCESS(0x21)
#define M2P_CTMU_LONG_TIMEL M2P_MESSAGE_ACCESS(0x22)
#define M2P_CTMU_LONG_TIMEH M2P_MESSAGE_ACCESS(0x23)
#define M2P_CTMU_HOLD_TIMEL M2P_MESSAGE_ACCESS(0x24)
#define M2P_CTMU_HOLD_TIMEH M2P_MESSAGE_ACCESS(0x25)
#define M2P_CTMU_SOFTOFF_LONG_TIMEL M2P_MESSAGE_ACCESS(0x26)
#define M2P_CTMU_SOFTOFF_LONG_TIMEH M2P_MESSAGE_ACCESS(0x27)
#define M2P_CTMU_LONG_PRESS_RESET_TIME_VALUE_L M2P_MESSAGE_ACCESS(0x28)//长按复位
#define M2P_CTMU_LONG_PRESS_RESET_TIME_VALUE_H M2P_MESSAGE_ACCESS(0x29)//长按复位
#define M2P_CTMU_INEAR_VALUE_L M2P_MESSAGE_ACCESS(0x2a)
#define M2P_CTMU_INEAR_VALUE_H M2P_MESSAGE_ACCESS(0x2b)
#define M2P_CTMU_OUTEAR_VALUE_L M2P_MESSAGE_ACCESS(0x2c)
#define M2P_CTMU_OUTEAR_VALUE_H M2P_MESSAGE_ACCESS(0x2d)
#define M2P_CTMU_EARTCH_TRIM_VALUE_L M2P_MESSAGE_ACCESS(0x2e)
#define M2P_CTMU_EARTCH_TRIM_VALUE_H M2P_MESSAGE_ACCESS(0x2f)
#define M2P_MASSAGE_CTMU_CH0_CFG0L 0x30
#define M2P_MASSAGE_CTMU_CH0_CFG0H 0x31
#define M2P_MASSAGE_CTMU_CH0_CFG1L 0x32
#define M2P_MASSAGE_CTMU_CH0_CFG1H 0x33
#define M2P_MASSAGE_CTMU_CH0_CFG2L 0x34
#define M2P_MASSAGE_CTMU_CH0_CFG2H 0x35
#define M2P_CTMU_CH0_CFG0L M2P_MESSAGE_ACCESS(0x30)
#define M2P_CTMU_CH0_CFG0H M2P_MESSAGE_ACCESS(0x31)
#define M2P_CTMU_CH0_CFG1L M2P_MESSAGE_ACCESS(0x32)
#define M2P_CTMU_CH0_CFG1H M2P_MESSAGE_ACCESS(0x33)
#define M2P_CTMU_CH0_CFG2L M2P_MESSAGE_ACCESS(0x34)
#define M2P_CTMU_CH0_CFG2H M2P_MESSAGE_ACCESS(0x35)
#define M2P_CTMU_CH1_CFG0L M2P_MESSAGE_ACCESS(0x38)
#define M2P_CTMU_CH1_CFG0H M2P_MESSAGE_ACCESS(0x39)
#define M2P_CTMU_CH1_CFG1L M2P_MESSAGE_ACCESS(0x3a)
#define M2P_CTMU_CH1_CFG1H M2P_MESSAGE_ACCESS(0x3b)
#define M2P_CTMU_CH1_CFG2L M2P_MESSAGE_ACCESS(0x3c)
#define M2P_CTMU_CH1_CFG2H M2P_MESSAGE_ACCESS(0x3d)
#define M2P_CTMU_CH2_CFG0L M2P_MESSAGE_ACCESS(0x40)
#define M2P_CTMU_CH2_CFG0H M2P_MESSAGE_ACCESS(0x41)
#define M2P_CTMU_CH2_CFG1L M2P_MESSAGE_ACCESS(0x42)
#define M2P_CTMU_CH2_CFG1H M2P_MESSAGE_ACCESS(0x43)
#define M2P_CTMU_CH2_CFG2L M2P_MESSAGE_ACCESS(0x44)
#define M2P_CTMU_CH2_CFG2H M2P_MESSAGE_ACCESS(0x45)
#define M2P_CTMU_CH3_CFG0L M2P_MESSAGE_ACCESS(0x48)
#define M2P_CTMU_CH3_CFG0H M2P_MESSAGE_ACCESS(0x49)
#define M2P_CTMU_CH3_CFG1L M2P_MESSAGE_ACCESS(0x4a)
#define M2P_CTMU_CH3_CFG1H M2P_MESSAGE_ACCESS(0x4b)
#define M2P_CTMU_CH3_CFG2L M2P_MESSAGE_ACCESS(0x4c)
#define M2P_CTMU_CH3_CFG2H M2P_MESSAGE_ACCESS(0x4d)
#define M2P_CTMU_CH4_CFG0L M2P_MESSAGE_ACCESS(0x50)
#define M2P_CTMU_CH4_CFG0H M2P_MESSAGE_ACCESS(0x51)
#define M2P_CTMU_CH4_CFG1L M2P_MESSAGE_ACCESS(0x52)
#define M2P_CTMU_CH4_CFG1H M2P_MESSAGE_ACCESS(0x53)
#define M2P_CTMU_CH4_CFG2L M2P_MESSAGE_ACCESS(0x54)
#define M2P_CTMU_CH4_CFG2H M2P_MESSAGE_ACCESS(0x55)
#define M2P_RVD2PVDD_EN M2P_MESSAGE_ACCESS(0x56)
#define M2P_PVDD_EXTERN_DCDC M2P_MESSAGE_ACCESS(0x57)
#define M2P_USER_PEND (0x58)
#define M2P_USER_MSG_TYPE (0x59)
#define M2P_USER_MSG_LEN0 (0x5a)
#define M2P_USER_MSG_LEN1 (0x5b)
#define M2P_USER_ADDR0 (0x5c)
#define M2P_USER_ADDR1 (0x5d)
#define M2P_USER_ADDR2 (0x5e)
#define M2P_USER_ADDR3 (0x5f)
enum {
CLOSE_P33_INTERRUPT = 1,
OPEN_P33_INTERRUPT,
LOWPOWER_PREPARE,
M2P_SPIN_LOCK,
M2P_SPIN_UNLOCK,
P2M_SPIN_LOCK,
P2M_SPIN_UNLOCK,
M2P_WDT_CLEAR,
P2M_RESERVED_CMD = 0xFF,
};
//=================================P2M===========================================
//P2M中断索引
enum {
P2M_LP_INDEX = 0,
P2M_PF_INDEX,
P2M_LLP_INDEX,
P2M_WK_INDEX,
P2M_WDT_INDEX,
P2M_LP_INDEX2,
P2M_CTMU_INDEX,
P2M_CTMU_POWUP,
P2M_REPLY_CCMD_INDEX, //reply common cmd
P2M_VAD_INDEX,
P2M_USER_INDEX,
P2M_BANK_INDEX,
P2M_REPLY_SYNC_INDEX,
P2M_APP_INDEX,
};
#define P2M_WKUP_SRC P2M_MESSAGE_ACCESS(0x000)
#define P2M_WKUP_PND0 P2M_MESSAGE_ACCESS(0x001)
#define P2M_WKUP_PND1 P2M_MESSAGE_ACCESS(0x002)
#define P2M_REPLY_SYNC_CMD P2M_MESSAGE_ACCESS(0x003)
#define P2M_MESSAGE_VAD_CMD P2M_MESSAGE_ACCESS(0x004)
#define P2M_MESSAGE_VAD_CBUF_WPTR P2M_MESSAGE_ACCESS(0x005)
#define P2M_MESSAGE_BANK_ADR_L P2M_MESSAGE_ACCESS(0x006)
#define P2M_MESSAGE_BANK_ADR_H P2M_MESSAGE_ACCESS(0x007)
#define P2M_MESSAGE_BANK_INDEX P2M_MESSAGE_ACCESS(0x008)
#define P2M_MESSAGE_BANK_ACK P2M_MESSAGE_ACCESS(0x009)
#define P2M_P11_HEAP_BEGIN_ADDR_L P2M_MESSAGE_ACCESS(0x00A)
#define P2M_P11_HEAP_BEGIN_ADDR_H P2M_MESSAGE_ACCESS(0x00B)
#define P2M_P11_HEAP_SIZE_L P2M_MESSAGE_ACCESS(0x00C)
#define P2M_P11_HEAP_SIZE_H P2M_MESSAGE_ACCESS(0x00D)
#define P2M_CTMU_KEY_EVENT P2M_MESSAGE_ACCESS(0x010)
#define P2M_CTMU_KEY_CNT P2M_MESSAGE_ACCESS(0x011)
#define P2M_CTMU_WKUP_MSG P2M_MESSAGE_ACCESS(0x012)
#define P2M_CTMU_EARTCH_EVENT P2M_MESSAGE_ACCESS(0x013)
#define P2M_MASSAGE_CTMU_CH0_L_RES 0x014
#define P2M_MASSAGE_CTMU_CH0_H_RES 0x015
#define P2M_CTMU_CH0_L_RES P2M_MESSAGE_ACCESS(0x014)
#define P2M_CTMU_CH0_H_RES P2M_MESSAGE_ACCESS(0x015)
#define P2M_CTMU_CH1_L_RES P2M_MESSAGE_ACCESS(0x016)
#define P2M_CTMU_CH1_H_RES P2M_MESSAGE_ACCESS(0x017)
#define P2M_CTMU_CH2_L_RES P2M_MESSAGE_ACCESS(0x018)
#define P2M_CTMU_CH2_H_RES P2M_MESSAGE_ACCESS(0x019)
#define P2M_CTMU_CH3_L_RES P2M_MESSAGE_ACCESS(0x01a)
#define P2M_CTMU_CH3_H_RES P2M_MESSAGE_ACCESS(0x01b)
#define P2M_CTMU_CH4_L_RES P2M_MESSAGE_ACCESS(0x01c)
#define P2M_CTMU_CH4_H_RES P2M_MESSAGE_ACCESS(0x01d)
#define P2M_CTMU_EARTCH_L_IIR_VALUE P2M_MESSAGE_ACCESS(0x01e)
#define P2M_CTMU_EARTCH_H_IIR_VALUE P2M_MESSAGE_ACCESS(0x01f)
#define P2M_CTMU_EARTCH_L_TRIM_VALUE P2M_MESSAGE_ACCESS(0x020)
#define P2M_CTMU_EARTCH_H_TRIM_VALUE P2M_MESSAGE_ACCESS(0x021)
#define P2M_CTMU_EARTCH_L_DIFF_VALUE P2M_MESSAGE_ACCESS(0x022)
#define P2M_CTMU_EARTCH_H_DIFF_VALUE P2M_MESSAGE_ACCESS(0x023)
#define P2M_AWKUP_P_PND P2M_MESSAGE_ACCESS(0x024)
#define P2M_AWKUP_N_PND P2M_MESSAGE_ACCESS(0x025)
#define P2M_WKUP_RTC P2M_MESSAGE_ACCESS(0x026)
#define P2M_CBUF_ADDR0 P2M_MESSAGE_ACCESS(0x027)
#define P2M_CBUF_ADDR1 P2M_MESSAGE_ACCESS(0x028)
#define P2M_CBUF_ADDR2 P2M_MESSAGE_ACCESS(0x029)
#define P2M_CBUF_ADDR3 P2M_MESSAGE_ACCESS(0x02a)
#define P2M_CBUF1_ADDR0 P2M_MESSAGE_ACCESS(0x02b)
#define P2M_CBUF1_ADDR1 P2M_MESSAGE_ACCESS(0x02c)
#define P2M_CBUF1_ADDR2 P2M_MESSAGE_ACCESS(0x02d)
#define P2M_CBUF1_ADDR3 P2M_MESSAGE_ACCESS(0x02e)
#define P2M_USER_PEND (0x038)//传感器使用或者开放客户使用
#define P2M_USER_MSG_TYPE (0x039)
#define P2M_USER_MSG_LEN0 (0x03a)
#define P2M_USER_MSG_LEN1 (0x03b)
#define P2M_USER_ADDR0 (0x03c)
#define P2M_USER_ADDR1 (0x03d)
#define P2M_USER_ADDR2 (0x03e)
#define P2M_USER_ADDR3 (0x040)
#include "m2p_msg.h"
#include "p2m_msg.h"
void msys_to_p11_sync_cmd(u8 cmd);
void lp_ipc_init();
#endif