[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit
Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/cp/ps/driver/inc/misc/drvs_rpmsg.h b/cp/ps/driver/inc/misc/drvs_rpmsg.h
new file mode 100755
index 0000000..7690bf8
--- /dev/null
+++ b/cp/ps/driver/inc/misc/drvs_rpmsg.h
@@ -0,0 +1,538 @@
+/*******************************************************************************
+ * Copyright by ZTE Corporation.
+ *
+ * File Name:
+ * File Mark:
+ * Description:
+ * Others:
+ * Version: 0.1
+ * Author: zhangdongdong
+ * Date: 2015-10-21
+ * History 1:
+ * Date:
+ * Version:
+ * Author:
+ * Modification:
+ * History 2:
+ ********************************************************************************/
+
+#ifndef _DRVS_RPMSG_H
+#define _DRVS_RPMSG_H
+
+/*******************************************************************************
+* Include files *
+*******************************************************************************/
+#include "ram_config.h"
+
+/*******************************************************************************
+* Macro *
+*******************************************************************************/
+#define RPMSG_WRITE_INT (0x1)
+#define RPMSG_READ_POLL (0x1<<1)
+
+#define CHANNEL_FLAG 0x1
+
+#define M0AP_CHANNEL_MAXID 10
+/*******************************************************************************
+* Types *
+*******************************************************************************/
+
+/*-----------------------[Begin] [used by normal]-----------------------------*/
+/*channels definition*/
+#define DRIVER channel_0
+#define PSM channel_1
+#define USB_ADB channel_2
+
+
+#define WAN1 channel_3
+#define WAN2 channel_4
+#define WAN3 channel_5
+#define WAN4 channel_6
+
+#define DTMF channel_7
+#define DEV_BUFFREE channel_8
+
+#define AMT channel_9
+#define RAMDUMP channel_10
+
+#define VSIM channel_11
+#define ISMS channel_12
+
+#define IPSEC1 channel_13
+#define IPSEC2 channel_14
+#define IPSEC3 channel_15
+#define IPSEC4 channel_16
+
+
+typedef enum _T_ZDrvRpMsg_MsgActor
+{
+#ifdef _OS_TOS
+ ICP_MSG_ACTOR_A9,
+#endif
+ ICP_MSG_ACTOR_ZSP,
+ ICP_RPMSG_ACTOR_M0,
+ MAX_RPMSG_ACTOR
+} T_ZDrvRpMsg_MsgActor;
+
+typedef enum _T_ZDrvRpMsg_ChID
+{
+ CHANNEL_BASEID,
+
+ channel_0 = CHANNEL_BASEID, //driver just for AP<->PS
+ channel_1, //PSM
+ channel_2, //USB_DETCT
+ channel_3, //USB_ADB
+ channel_4, //WAN
+ channel_5, //LAN1
+ channel_6, //LAN2
+ channel_7, //DEV_BUFMALLOC
+ channel_8, //DEV_BUFFREE
+ channel_9, //AT
+ CHANNEL_PS2M0_MAXID,
+
+ channel_10 = CHANNEL_PS2M0_MAXID, //AMT
+ channel_11, //LOG
+ channel_12, //FOTA
+
+ channel_13,
+ channel_14,
+ channel_15,
+ channel_16,
+ channel_17,
+ channel_18,
+ channel_19,
+ channel_20,
+ channel_21,
+ channel_22,
+ channel_23,
+ channel_24,
+ channel_25,
+ channel_26,
+ channel_27,
+ channel_28,
+ channel_29,
+ channel_30,
+ channel_31,
+ channel_32,
+ channel_33,
+ channel_34,
+ channel_35,
+ channel_36,
+ channel_37,
+ channel_38,
+ channel_39,
+ channel_40,
+ channel_41,
+ channel_42,
+ channel_43,
+ channel_44,
+ channel_45,
+ channel_46,
+ channel_47,
+ channel_48,
+ channel_49,
+ channel_50,
+ channel_51,
+ channel_52,
+ channel_53,
+ channel_54,
+ channel_55,
+ channel_56,
+ channel_57,
+ channel_58,
+ channel_59,
+ channel_60,
+ channel_61,
+ channel_62,
+ channel_63,
+
+ PSAP_CHANNEL_MAXID
+}T_ZDrvRpMsg_ChID;
+
+typedef struct _T_ZDrvRpMsg_Msg
+{
+ T_ZDrvRpMsg_MsgActor actorID;
+ T_ZDrvRpMsg_ChID chID;
+ UINT32 flag; /*bit0:is need send icp int 1:y; 0:n*/
+ /*bit1: read mode 1:poll; 0:semaphore*/
+ VOID *buf;
+ UINT32 len;
+} T_ZDrvRpMsg_Msg;
+
+typedef enum _T_ZDrvRpMsg_ErrCode
+{
+ RPMSG_INVALID_PARAMETER = -101, //²ÎÊý²»ÕýÈ·
+ RPMSG_SPACE_NOT_ENOUGH = -102, //¿Õ¼ä²»×ã¹»
+ RPMSG_CHANNEL_ALREADY_EXIST = -103, //ͨµÀÒѾ´æÔÚ
+ RPMSG_CHANNEL_INEXISTANCE = -104, //ͨµÀ²»´æÔÚ
+ RPMSG_CHANNEL_MSG_ERR = -105, //ͨµÀÖÐÏûÏ¢´íÎó
+ RPMSG_CHANNEL_NOMSG = -107, //ͨµÀÖÐûÓÐÏûÏ¢
+}
+T_ZDrvRpMsg_ErrCode;
+
+typedef VOID (*T_ZDrvRpMsg_CallbackFunction)(VOID *buf, UINT32 len);/*for normal*/
+
+/*******************************************************************************
+* Function Prototypes *
+*******************************************************************************/
+
+/*******************************************************************************
+* Function: zDrvRpMsg_CreateChannel
+* Description: This function is used for create channel to send message;
+* Parameters:
+* Input:
+* actorID:remote cpu
+* chID: ID of channel
+* size: size of channel
+* Output:None
+*
+* Returns:
+* DRV_SUCCESS: successfully .
+* DRV_ERROR: fail .
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_CreateChannel (T_ZDrvRpMsg_MsgActor actorID, T_ZDrvRpMsg_ChID chID, UINT32 size);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_RegCallBack
+* Description: This function is used for registing callback functions;
+* Parameters:
+* Input:
+* actor: core id.
+* chID : channel id
+* callback: callback function
+* Output:None
+*
+* Returns:
+* DRV_SUCCESS: successfully .
+* other: fail .
+*
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_RegCallBack(T_ZDrvRpMsg_MsgActor actorID, T_ZDrvRpMsg_ChID chID, T_ZDrvRpMsg_CallbackFunction callback);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_MaskInt
+* Description: This function is used for mask ICP interrupt from another core;
+* Parameters:
+* Input:
+* actor: which core.
+* bit_map: which interrupts will be masked.
+* Output:None
+*
+* Returns:
+* None
+*
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_MaskInt(T_ZDrvRpMsg_MsgActor actorID, T_ZDrvRpMsg_ChID chID);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_UnmaskInt
+* Description: This function is used for unmask ICP interrupt from another core;
+* Parameters:
+* Input:
+* actor: which core.
+* bit_map: which interrupts will be unmasked.
+* Output:None
+*
+* Returns:
+* None
+*
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_UnmaskInt(T_ZDrvRpMsg_MsgActor actorID, T_ZDrvRpMsg_ChID chID);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_Write
+* Description: This function is used for sending message to remote cpu, mutex;
+* Parameters:
+* Input:
+* pMsg: the msg which will be sent
+* Output:None
+*
+* Returns:
+* DRV_SUCCESS: successfully send msg.
+* other: fail to send msg.
+*
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_Write(const T_ZDrvRpMsg_Msg *pMsg);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_WriteWithId
+* Description: This function is used for ps&phy to send msg to remote cpu.
+* Parameters:
+* Input:
+* msgId:msg id that ps will put into the ring buffer
+* pMsg: the msg which will be sent
+* Output:None
+*
+* Returns:
+* DRV_SUCCESS: successfully send msg.
+* other: fail to send msg.
+*
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_WriteWithId(UINT32 msgId, const T_ZDrvRpMsg_Msg *pMsg);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_WriteLockIrq
+* Description: This function is used for sending message to remote cpu, no mutex;
+* Parameters:
+* Input:
+* pMsg: the msg which will be sent
+* Output:None
+*
+* Returns:
+* DRV_SUCCESS: successfully send msg.
+* other: fail to send msg.
+*
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_WriteLockIrq(const T_ZDrvRpMsg_Msg *pMsg);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_Read
+* Description: This function is used for reading message;
+* Parameters:
+* Input:
+* pMsg:message which will be read
+* Output:
+* pMsg
+*
+* Returns:
+* DRV_SUCCESS: successfully .
+* other: fail .
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_Read(const T_ZDrvRpMsg_Msg *pMsg);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_ReadWithId
+* Description: This function is used for ps&phy to read message from remote cpu;
+* Parameters:
+* Input:
+* pMsgId:msg id that ps will get from the ring buffer
+* pMsg:message which will be read
+* Output:
+* pMsg
+*
+* Returns:
+* DRV_SUCCESS: successfully .
+* other: fail .
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_ReadWithId(UINT32 *pMsgId, const T_ZDrvRpMsg_Msg *pMsg);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_ReadWithIdLockIrq
+* Description: This function is used for reading message;
+* Parameters:
+* Input:
+* pMsgId:msg id that ps will get from the ring buffer
+* pMsg:message which will be read
+* Output:
+* pMsg
+*
+* Returns:
+* DRV_SUCCESS: successfully .
+* other: fail .
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_ReadWithIdLockIrq(UINT32 *pMsgId, const T_ZDrvRpMsg_Msg *pMsg);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_ReadLockIrq
+* Description: This function is used for reading message;
+* Parameters:
+* Input:
+* pMsg:message which will be read
+* Output:
+* pMsg
+*
+* Returns:
+* DRV_SUCCESS: successfully .
+* other: fail .
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_ReadLockIrq(const T_ZDrvRpMsg_Msg *pMsg);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_ChIsEmpty
+* Description: This function is used for checking the channel used to receive message is empty or not;
+* Parameters:
+* Input:
+* actorID:remote cpu
+* chID:channel id
+* Output:None
+*
+* Returns:
+* TRUE: channel is empty .
+* FALSE: channel is not empty .
+*
+* Others:
+********************************************************************************/
+BOOL zDrvRpMsg_ChIsEmpty(T_ZDrvRpMsg_MsgActor actorID, T_ZDrvRpMsg_ChID chID);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_WriteChIsEmpty
+* Description: This function is used for checking the channel used to send message is empty or not;
+* Parameters:
+* Input:
+* actorID:remote cpu
+* chID:channel id
+* Output:None
+*
+* Returns:
+* TRUE: channel is empty .
+* FALSE: channel is not empty .
+*
+* Others:
+********************************************************************************/
+BOOL zDrvRpMsg_WriteChIsEmpty(T_ZDrvRpMsg_MsgActor actorID, T_ZDrvRpMsg_ChID chID);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_CreateBlock
+* Description: This function is used for create block channel to send message;
+* Parameters:
+* Input:
+* actorID:remote cpu
+* chID: ID of channel
+* blkSize: size of block, 4 bytes reserve at leaset
+* blkNums: numbers of block
+* memtype: 0:iram 1:ddr
+* Output:None
+*
+* Returns:
+* DRV_SUCCESS: successfully .
+* DRV_ERROR: fail .
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_CreateBlock(T_ZDrvRpMsg_MsgActor actorID, T_ZDrvRpMsg_ChID chID, UINT32 blkSize, UINT32 blkNums, UINT32 memType);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_GetWriteAddr
+* Description: This function is used for getting write addr;
+* Parameters:
+* Input:
+* actorID:remote processor id
+* chID:channel id
+* Output:
+* wrAddr:addr for write
+*
+* Returns:
+* positive: success
+* negative: fail .
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_GetWriteAddr(T_ZDrvRpMsg_MsgActor actorID, T_ZDrvRpMsg_ChID chID, VOID **wrAddr);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_WriteUpdate
+* Description: This function is used for reading message;
+* Parameters:
+* Input:
+* actorID:remote processor id
+* chID:channel id
+* addr:addr for update
+* len:update len
+* intFlag: 0:without icp int 1:with icp int
+* Output:
+* NULL
+*
+* Returns:
+* positive: len
+* negative: fail .
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_WriteUpdate(T_ZDrvRpMsg_MsgActor actorID, T_ZDrvRpMsg_ChID chID, UINT32 addr, UINT32 len, BOOL intFlag);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_GetReadAddr
+* Description: This function is used for getting read addr;
+* Parameters:
+* Input:
+* actorID:remote processor id
+* chID:channel id
+* Output:
+* rdAddr:addr for read
+*
+* Returns:
+* positive: len
+* negative: fail .
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_GetReadAddr(T_ZDrvRpMsg_MsgActor actorID, T_ZDrvRpMsg_ChID chID, VOID **rdAddr);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_ReadUpdate
+* Description: This function is used for reading message;
+* Parameters:
+* Input:
+* actorID:remote processor id
+* chID:channel id
+* addr:update addr
+* Output:
+* NULL
+*
+* Returns:
+* positive: len
+* negative: fail .
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_ReadUpdate(T_ZDrvRpMsg_MsgActor actorID, T_ZDrvRpMsg_ChID chID, UINT32 addr);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_Initiate
+* Description: This function is used to init rpmsg module;
+* Parameters:
+* Input:
+* null
+*
+* Output:None
+*
+* Returns:
+* DRV_SUCCESS: successfully .
+* other: fail .
+*
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvRpMsg_Initiate (VOID);
+
+/*******************************************************************************
+* Function: zDrvRpMsg_ReadExit
+* Description: This function is used to exit from the block read func,for ctrm;
+* Parameters:
+* Input:
+* null
+*
+* Output:None
+*
+* Returns:
+* null .
+*
+*
+*
+* Others:
+********************************************************************************/
+VOID zDrvRpMsg_ReadExit(T_ZDrvRpMsg_MsgActor actor, T_ZDrvRpMsg_ChID chID);
+
+#endif