blob: a045245aa4daefbc48b5fa8e1a021299ad839e62 [file] [log] [blame]
/*******************************************************************************
* Copyright (C) Marvell International Ltd. and its affiliates
*
* Marvell GPL License Option
*
* If you received this File from Marvell, you may opt to use, redistribute and/or
* modify this File in accordance with the terms and conditions of the General
* Public License Version 2, June 1991 (the "GPL License"), a copy of which is
* available along with the File in the license.txt file or by writing to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
* on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
*
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
* WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
* DISCLAIMED. The GPL License provides additional details about this warranty
* disclaimer.
********************************************************************************/
#ifndef __CC_TYPE_H__
#define __CC_TYPE_H__
#include <linux/slab.h> /* kmalloc() */
#ifndef TRUE
#define TRUE (1)
#endif
#ifndef FALSE
#define FALSE (0)
#endif
#ifndef True
#define True (1)
#endif
#ifndef False
#define False (0)
#endif
#ifndef NULL
#define NULL ((void *)0)
#endif
#define MV_ASSERT( a ) BUG_ON(!(a))
typedef unsigned char UCHAR;
typedef char CHAR;
typedef UCHAR BOOL;
typedef UCHAR BOOLEAN;
typedef short SHORT;
typedef unsigned short USHORT;
typedef int INT;
typedef unsigned int UINT;
typedef long LONG;
typedef unsigned long ULONG;
typedef long long LONGLONG;
typedef unsigned long long ULONGLONG;
typedef void VOID;
typedef void* PTR;
typedef void** PHANDLE;
typedef void* HANDLE;
typedef void* PVOID;
typedef UCHAR BYTE;
typedef CHAR INT8;
typedef UCHAR UINT8;
typedef short INT16;
typedef unsigned short UINT16;
typedef int INT32;
typedef unsigned int UINT32;
typedef long long INT64;
typedef unsigned long long UINT64;
typedef unsigned int SIZE_T;
typedef signed intHRESULT;
typedef signed int HRESULT;
typedef UINT8 MV_OSAL_CPUID_U8_t;
typedef UINT8 MV_OSAL_ProcessID_U8_t;
typedef UINT16 MV_OSAL_PortID_U16_t;
typedef UINT32 MV_OSAL_ServiceID_U32_t;
typedef UINT32 MV_CC_ServiceID_U32_t;
typedef void *MV_CC_HANDLE;
typedef MV_CC_HANDLE MV_CC_HANDLE_MsgQ_t;
typedef struct _MV_CC_ICCAddr {
MV_OSAL_CPUID_U8_t m_CPU;
MV_OSAL_ProcessID_U8_t m_Process;
MV_OSAL_PortID_U16_t m_Port;
} MV_CC_ICCAddr_t, *pMV_CC_ICCAddr_t;
typedef struct _MV_CC_DSS_ServiceInfo {
// public info
MV_CC_ServiceID_U32_t m_ServiceID;
UINT8 m_SrvLevel;
UINT8 m_SrvType;
UINT8 m_Pad1;
UINT8 m_Pad2;
// private info
UINT8 m_Data[24];
} MV_CC_DSS_ServiceInfo_t, *pMV_CC_DSS_ServiceInfo_t;
typedef struct _MV_CC_DSS_ServiceInfo_MsgQ {
// public info
MV_CC_ServiceID_U32_t m_ServiceID;
UINT8 m_SrvLevel;
UINT8 m_SrvType;
UINT8 m_Pad1;
UINT8 m_Pad2;
// private info
MV_CC_ICCAddr_t m_SrvAddr;
UINT32 m_NMsgsMax;
UINT8 m_Blank[16];
} MV_CC_DSS_ServiceInfo_MsgQ_t, *pMV_CC_DSS_ServiceInfo_MsgQ_t;
typedef struct _MV_CC_DSS_ServiceInfo_MsgQEx {
// public info
MV_CC_ServiceID_U32_t m_ServiceID;
UINT8 m_SrvLevel;
UINT8 m_SrvType;
UINT8 m_Pad1;
UINT8 m_Pad2;
// private info
MV_CC_ICCAddr_t m_SrvAddr;
UINT32 m_NMsgsMax;
UINT32 m_MsgLenMax;
CHAR m_Blank[12];
} MV_CC_DSS_ServiceInfo_MsgQEx_t, *pMV_CC_DSS_ServiceInfo_MsgQEx_t;
typedef struct _MV_CC_DSS_ServiceInfo_RPC {
// public info
MV_CC_ServiceID_U32_t m_ServiceID;
UINT8 m_SrvLevel;
UINT8 m_SrvType;
UINT8 m_Pad1;
UINT8 m_Pad2;
// private info
MV_CC_ICCAddr_t m_SrvAddr;
UINT32 m_RegCmdListNum;
CHAR m_Blank[16];
} MV_CC_DSS_ServiceInfo_RPC_t, *pMV_CC_DSS_ServiceInfo_RPC_t;
typedef struct _MV_CC_DSS_ServiceInfo_CBuf {
// public info
MV_CC_ServiceID_U32_t m_ServiceID;
UINT8 m_SrvLevel;
UINT8 m_SrvType;
UINT8 m_Pad1;
UINT8 m_Pad2;
// private info
UINT32 m_seqid;
UINT32 m_CBufBody_SHMOffset;
UINT32 m_BufSize;
UINT32 m_EndBlockSize;
UINT32 m_Flags;
MV_CC_ServiceID_U32_t m_NoticeMsgQSID;
} MV_CC_DSS_ServiceInfo_CBuf_t, *pMV_CC_DSS_ServiceInfo_CBuf_t;
typedef struct _MV_CC_DSS_ServiceInfo_DataList {
UINT32 m_ListNum;
UINT32 m_DataNum;
UINT32 m_MaxNum;
MV_CC_DSS_ServiceInfo_t m_SrvInfo[];
} MV_CC_DSS_ServiceInfo_DataList_t, *pMV_CC_DSS_ServiceInfo_DataList_t;
typedef enum _MV_CC_CBufCtrlType {
//MV_CC_CBufCtrlType_None = 0, /* Cbuf NULL Object */
MV_CC_CBufCtrlType_Consumer = 1, /* Cbuf Consumer(Server) Object */
MV_CC_CBufCtrlType_Producer = 2, /* Cbuf Producer(client) Object */
} MV_CC_CBufCtrlType_t;
typedef void (*t_buffer_notifier_cb)(HANDLE hBuffer, INT fullness, UINT tag);
#define MV_GENERIC_BUF_TYPE_XBV 1
typedef struct t_buffer_notifier {
//! consumer use here
INT m_Lwm;
t_buffer_notifier_cb m_LwmCallback;
UINT m_ConsumerInfo;
UINT m_LwmCBLast;
//! producer register here
INT m_Hwm;
t_buffer_notifier_cb m_HwmCallback;
UINT m_ProducerInfo;
UINT m_HwmCBLast;
}Buffer_Notifier_t;
typedef enum _MV_CC_SrvLevel_U8 {
MV_CC_SrvLevel_ITC = 0, /* Inter-Thread Communication */
MV_CC_SrvLevel_IPC = 1, /* Inter-Process Communication */
MV_CC_SrvLevel_ICC = 2, /* Inter-CPU Communication */
MV_CC_NoCCSrvLevel = 0xFF /* No CC Service */
} MV_CC_SrvLevel_U8_t;
typedef enum _MV_CC_SrvType_U8 {
MV_CC_SrvType_MsgQ = 0, /* Message Queue Service */
MV_CC_SrvType_RPC = 1, /* RPC Service */
MV_CC_SrvType_CBuf = 2, /* Circular Buffer Service */
MV_CC_SrvType_MsgQEx = 3, /* Message Queue Extension Service */
MV_CC_SrvType_RPCClnt = 4, /* RPC Client */
MV_CC_SrvType_Max = 5,
MV_CC_NoCCSrvType = 0xFF /* No CC Service */
} MV_CC_SrvType_U8_t;
typedef struct {
//! Message ID
UINT32 m_MsgID;
//! Message 1st Parameter
UINT32 m_Param1;
//! Message 2nd Parameter
UINT32 m_Param2;
} MV_CC_MSG_t, *pMV_CC_MSG_t;
#define MV_OSAL_Malloc(x) kmalloc((x), GFP_KERNEL)
#define MV_OSAL_Free(p) do { \
if ((p) != NULL) { \
kfree(p); \
(p) = NULL; \
} \
} while(0);
#define MV_CC_FlagSet(x,a,n,m) ((a)?((x)|=(n)):((x)&=(m)))
#define MV_CC_FlagGet(x,n) (((x)&(n))?(1):(0))
#define MV_CC_FlagCopyXtoY(x,y,n,m) (((x)&(n))?((y)|=(n)):((y)&=(m)))
#define MV_CC_BitSet(x,n) ((x)|=(n))
#define MV_CC_BitClean(x,n) ((x)&=(~n))
#define MV_CC_BitGet(x,n) (((x)&(n))?(1):(0))
#define MV_CC_DBG_Warning(x, s, ...)
#define MV_CC_DBG_Info(...)
#define MV_CC_DBG_Error(x, s, ...) {return x;}
#define MV_CC_CBUF_FLAGS_ALIGNMENT (UINT32)(0x00000001)
#define MV_CC_CBUF_FLAGS_ALIGNMENT_MASK (UINT32)(0xFFFFFFFE)
#define MV_CC_CBUF_FLAGS_ALIGNMENT_No (UINT32)(0)
#define MV_CC_CBUF_FLAGS_ALIGNMENT_Yes (UINT32)(1)
#define MV_CC_HAL_MEMBOUNDARY (64)
#define ERROR_SHM_MALLOC_FAILED (0xFFFFFFFF)
#define GaloisMemmove memmove
#define GaloisMemcpy memcpy
#define GaloisMemClear(buf, n) memset((buf), 0, (n))
#define GaloisMemSet(buf, c, n) memset((buf), (c), (n))
#define GaloisMemComp(buf1, buf2, n) memcmp((buf1), (buf2), (n))
#define MV_CC_CCUDP_HEAD_BYTEOFFSET (0)
#define MV_CC_CCUDP_HEAD_BYTESIZE (0)
#define MV_CC_ICCFIFO_FRAME_SIZE (128)
#define MV_CC_CCUDP_DATA_BYTEOFFSET (MV_CC_CCUDP_HEAD_BYTEOFFSET + \
MV_CC_CCUDP_HEAD_BYTESIZE)
#define MV_CC_RPC_HEAD_BYTEOFFSET (MV_CC_CCUDP_DATA_BYTEOFFSET)
#define MV_CC_RPC_HEAD_BYTESIZE (8)
#define MV_CC_MSGQ_HEAD_BYTEOFFSET (MV_CC_CCUDP_DATA_BYTEOFFSET)
#define MV_CC_MSGQ_HEAD_BYTESIZE (2)
#define MV_CC_MSGQ_DATA_BYTEOFFSET (MV_CC_MSGQ_HEAD_BYTEOFFSET + \
MV_CC_MSGQ_HEAD_BYTESIZE)
#define MV_CC_MSGQ_DATA_BYTESIZE_MAX (MV_CC_ICCFIFO_FRAME_SIZE - \
MV_CC_MSGQ_DATA_BYTEOFFSET)
#define MV_CC_MSGQ_DATA_MSGEXLEN_MAX (MV_CC_MSGQ_DATA_BYTESIZE_MAX - 1)
typedef struct {
UINT8 m_MsgLen;
UINT8 m_Data[MV_CC_MSGQ_DATA_MSGEXLEN_MAX];
} MV_CC_MSGEx_t, *pMV_CC_MSGEx_t;
#endif