[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