#ifndef __DRV_TECH_HDR_H__
#define __DRV_TECH_HDR_H__

#include "general.h"
#include "x_hal_5381.h"
#include "typedef.h"
#include "x_debug.h"
#include "x_util.h"
#include "hw_sw.h"
#include "hw_techni.h"
#include "x_chip_id.h"


#define  TECHNI_VIDEO_INFO       1
#define  TECHNI_METADATA_INFO    2

#define  TECHNI_RUN_MODE_MASK         3
    #define OTT_MODE_OFF             (0)
    #define OTT_MODE_ON              (1)


#define TECHNI_METADATA_DEBUG_OTT      0x1
//#define TECHNI_VERIFICATION            0x8
//#define TECHNI_DEBUG_CRC               0x20

typedef struct
{
    UINT32 u4Arg1;
    UPTR   u4Arg2;
    UINT32 u4Arg3;
    UINT32 u4Arg4;
    UINT32 u4Arg5;
} TECHNI_MSG_T;
extern UINT32 BrightnessTeam[17];

/********************************** TECHNICOLOR HDR  ****************************************/
/*****************************************************************************************/

extern INT32 DRVCUST_GetDisplayBri(void);
extern INT32 DRVCUST_GetDisplayOETF(void);
void vDrvTechniHDRSetDisplayBri(UINT32 Display_Brightness);
void vDrvTechniHDRSetDisplayOETF(UINT32 Display_OETF);
void vDrvTechniHDRLoop(void *pvArgs);
void vDrvTechniMLInit(void);
void vTechniHDR_SendEvent(TECHNI_MSG_T tMsg);
void vDrvTechnicolorSetSource(UINT32 src);
void vDrvTechnicolorSetCustSourceInfo(UINT8 u1IsTechniHDRFlg);
BOOL vDrvDI_Dump_TechniC(struct file *filep);
void vDrvTechniColorDumpTest(void);
UINT8 vDrvGetTechniHDRFlag(void);
void vDrvSetTechniHDRBypass(UINT32 u4bypass);
void vDrvSetTechniHDREnable(UINT8 u1Enable);
void vTechniHDR_Info_Query(void);
UINT32 vDrvTechniHDRGetDisplayBri(void);
UINT32 vDrvTechniHDRGetDisplayOETF(void);
void vSetfgTechniMainLoop(UINT8 u1fgloop);
void vDrvTechniHDRResume(void);
void vDrvTechniHDRHWInit(void);
void vDrvTechniHDRMetadataInit(void);
void vDrvTechniResetReg(void);
#endif
