blob: e39edba0ce0593ea1c27bb64afcd575715412980 [file] [log] [blame]
/*******************************************************************************
* Copyright by ZTE Corporation.
*
* File Name:
* File Mark:
* Description:
* Others:
* Version: 0.1
* Author: shideyou
* Date: 2013-7-8
* History 1:
* Date:
* Version:
* Author:
* Modification:
* History 2:
********************************************************************************/
#ifndef _DRVS_ICP_H
#define _DRVS_ICP_H
#include "ram_config.h"
#include "drvs_rpmsg.h"
/*******************************************************************************
* Macro *
*******************************************************************************/
/*******************************************************************************
* Types *
*******************************************************************************/
#if 0
typedef enum _T_HalIcp_MsgActor
{
ICP_MSG_ACTOR_M0,
ICP_MSG_ACTOR_PHY,
ICP_MSG_ACTOR_ARM = ICP_MSG_ACTOR_PHY,
MAX_ICP_MSG_ACTOR
} T_HalIcp_MsgActor;
typedef enum _T_HalIcp_ModuleId
{
ICP_ARM0_MODULE_ID_BASE, // 0
ICP_ARM0_MODULE_ID_DRV = ICP_ARM0_MODULE_ID_BASE,
ICP_ARM0_MODULE_ID_PSM, // 1
ICP_ARM0_MODULE_ID_OS, // 2
ICP_ARM0_MODULE_ID_LTEPS, // 3
ICP_ARM0_MODULE_ID_TDPS, // 4
ICP_ARM0_MODULE_ID_WPS, // 5
ICP_ARM0_MODULE_ID_LTEPSM, // 6
ICP_ARM0_MODULE_ID_TDPSM, // 7
ICP_ARM0_MODULE_ID_WPSM, // 8
MAX_ICP_ARM0_MODULE_ID = ICP_ARM0_MODULE_ID_WPSM,
ICP_ARM1_MODULE_ID_BASE, // 9
ICP_ARM1_MODULE_ID_DRV = ICP_ARM1_MODULE_ID_BASE,
ICP_ARM1_MODULE_ID_PSM, // 10
ICP_ARM1_MODULE_ID_OS, // 11
ICP_ARM1_MODULE_ID_LTEPHY, // 12
ICP_ARM1_MODULE_ID_TDPHY, // 13
ICP_ARM1_MODULE_ID_WPHY, // 14
ICP_ARM1_MODULE_ID_LTEPSM, // 15
ICP_ARM1_MODULE_ID_TDPSM, // 16
ICP_ARM1_MODULE_ID_WPSM, // 17
MAX_ICP_ARM1_MODULE_ID = ICP_ARM1_MODULE_ID_WPSM,
ICP_M0_MODULE_ID_BASE, // 18
ICP_M0_MODULE_ID_DRV = ICP_M0_MODULE_ID_BASE,
ICP_M0_MODULE_ID_PSM, // 19
ICP_M0_MODULE_ID_OS, // 20
MAX_ICP_M0_MODULE_ID = ICP_M0_MODULE_ID_OS,
MAX_ICP_MODULE_ID // 21
} T_HalIcp_ModuleId;
typedef enum _T_HalIcp_CallbackType
{
ICP_ISR_CALLBACK,
ICP_HISR_CALLBACK,
MAX_ICP_CALLBACK_TYPE
}T_HalIcp_CallbackType;
#endif
typedef struct _T_HalIcp_Dword
{
UINT32 low_word;
UINT32 high_word;
} T_HalIcp_Dword;
typedef struct _T_HalIcp_Msg
{
UINT32 SrcModId;
UINT32 desModId;
T_HalIcp_Dword IntInfo;
UINT32 sfn;
VOID *pBuf;
UINT32 len;
} T_HalIcp_Msg;
#if 0
typedef VOID (*T_HalIcp_CallbackFunction)(const T_HalIcp_Msg *pMsg);
/*******************************************************************************
* Function Prototypes *
*******************************************************************************/
/*******************************************************************************
* Function: zDrvIcp_RegCallback
* Description: This function is used for registing callback functions;
* Parameters:
* Input:
* me: which module regists callback function.
* from: which is this function for.
* callback: the callback function.
* callbackType: where is this function, isr or hisr.
*
* Output:None
*
* Returns:
* DRV_SUCCESS
* DRV_ERROR
*
* Others:
********************************************************************************/
SINT32 zDrvIcp_RegCallback(UINT32 me,
UINT32 from,
T_HalIcp_CallbackFunction callback,
T_HalIcp_CallbackType callbackType);
/*******************************************************************************
* Function: zDrvIcp_SendMsg
* Description: This function is used for sending ICP MSG;
* Parameters:
* Input:
* pMsg: the msg which will be sent
* Output:None
*
* Returns:
* DRV_SUCCESS: successfully send msg.
* DRV_ERROR: fail to send msg.
*
*
* Others:
********************************************************************************/
SINT32 zDrvIcp_SendMsg(const T_HalIcp_Msg *pMsg);
/*******************************************************************************
* Function: zDrvIcp_SendMsg_Psm
* Description: This function is used for sending ICP MSG during interrupt disabled;
* Parameters:
* Input:
* pMsg: the msg which will be sent
* Output:None
*
* Returns:
* DRV_SUCCESS: successfully send msg.
* DRV_ERROR: fail to send msg.
*
*
* Others:
********************************************************************************/
SINT32 zDrvIcp_SendMsg_Psm(const T_HalIcp_Msg *pMsg);
/*******************************************************************************
* Function: zDrvIcp_Mask
* 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 zDrvIcp_Mask(T_HalIcp_MsgActor actor, T_HalIcp_Dword bit_map);
/*******************************************************************************
* Function: zDrvIcp_Unmask
* 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 zDrvIcp_Unmask(T_HalIcp_MsgActor actor, T_HalIcp_Dword bit_map);
/*******************************************************************************
* Function: zDrvIcp_GetState
* Description: This function is used for getting state;
* Parameters:
* Input:
* actor: which core.
* Output:None
* pState: the current state.
*
* Returns:
* DRV_ERR_INVALID_PARAM
* DRV_SUCCESS
*
* Others:
********************************************************************************/
SINT32 zDrvIcp_GetState(T_HalIcp_MsgActor actor, T_HalIcp_Dword *pState);
/*******************************************************************************
* Function: zDrvIcp_ClearState
* Description: This function is used for clear state;
* Parameters:
* Input:
* actor: which core.
* bit_map: which bits' state will be clear, 0-not clear, 1-clear.
* Output:None
*
* Returns:
* None
*
*
* Others:
********************************************************************************/
SINT32 zDrvIcp_ClearState(T_HalIcp_MsgActor actor, T_HalIcp_Dword bit_map);
#endif
#endif /* _DRVS_ICP_H */