You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
2.8 KiB

3 years ago
/******************************************************************************
Copyright (C), 2001-2011, Hisilicon Tech. Co., Ltd.
******************************************************************************
File Name : hi3511_ext.h
Version : Initial Draft
Author : Hisilicon multimedia software group
Created : 2006/12/22
Description :
History :
1.Date : 2006/12/22
Author : c42025
Modification: Created file
2.Date : 2008/02/21
Author : c42025
Modification: add function CMPI_QueryModules, for solving AE6D02922
3.Date : 2008/02/26
Author : c42025
Modification: Defect Form : AE6D02922, add two functions "FN_MOD_Notify"
and "FN_MOD_QueryState" .
4.Date : 2008/03/03
Author : c42025
Modification: add structure definition "MOD_NAME_S"
******************************************************************************/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/types.h>
#include <linux/list.h>
#include "hi_type.h"
#include "hi_errno.h"
#ifndef __MOD_EXT_H__
#define __MOD_EXT_H__
#define MAX_MPP_MODULES HI_ID_BUTT
#define VERSION_MAGIC 20150804
#define MAX_MOD_NAME 16
typedef enum hiMOD_NOTICE_ID_E
{
MOD_NOTICE_STOP = 0x11,
}MOD_NOTICE_ID_E;
typedef enum hiMOD_STATE_E
{
MOD_STATE_FREE = 0x11,
MOD_STATE_BUSY = 0X22,
}MOD_STATE_E;
typedef HI_S32 FN_MOD_Init(HI_VOID *);
typedef HI_VOID FN_MOD_Exit(HI_VOID);
typedef HI_VOID FN_MOD_Notify(MOD_NOTICE_ID_E enNoticeId);
typedef HI_VOID FN_MOD_QueryState(MOD_STATE_E *pstState);
typedef HI_U32 FN_MOD_VerChecker(HI_VOID);
typedef struct hiMPP_MODULE_S
{
struct list_head list;
struct module *pstOwner;
HI_CHAR aModName[MAX_MOD_NAME];
MOD_ID_E enModId;
FN_MOD_Init *pfnInit;
FN_MOD_Exit *pfnExit;
FN_MOD_QueryState *pfnQueryState;
FN_MOD_Notify *pfnNotify;
FN_MOD_VerChecker *pfnVerChecker;
HI_BOOL bInited;
HI_VOID *pstExportFuncs;
HI_VOID *pData;
HI_CHAR *pVersion;
}UMAP_MODULE_S;
extern HI_CHAR *CMPI_GetModuleName(MOD_ID_E enModId);
extern UMAP_MODULE_S *CMPI_GetModuleById(MOD_ID_E enModId);
extern HI_VOID *CMPI_GetModuleFuncById(MOD_ID_E enModId);
extern HI_VOID CMPI_StopModules(HI_VOID);
extern HI_S32 CMPI_QueryModules(HI_VOID);
extern HI_S32 CMPI_InitModules(HI_VOID);
extern HI_VOID CMPI_ExitModules(HI_VOID);
extern HI_S32 CMPI_RegisterModule(UMAP_MODULE_S *pstModules);
extern HI_VOID CMPI_UnRegisterModule(MOD_ID_E enModId);
#define FUNC_ENTRY(type,id) ((type*)CMPI_GetModuleFuncById(id))
#define CHECK_FUNC_ENTRY(id) (CMPI_GetModuleFuncById(id) != NULL)
#define FUNC_ENTRY_NULL(id) (!CHECK_FUNC_ENTRY(id))
#endif /* __MOD_EXT_H__ */