/******************************************************************************/ /** * * @file drv_adi.h * * @brief This file specifies the APIs provided to control ADI(Analog Digital Interface) * * @note Copyright (c) 2013 S2 Technology Co., Ltd. \n * All rights reserved. * * @author * ******************************************************************************/ #ifndef __DRV_ADI_H__ #define __DRV_ADI_H__ /******************************************************************************* * Header include ******************************************************************************/ #include "drv_types.h" #include "drv_vip_internal.h" //Pattern generator #define SINGLE_COLOR 0 #define COLOR_BAR 1 #define COLOR_BAR2 2 #define COLOR_GRAY_SCALE 3 #define GRAY_SCALE 4 #define GRAY_SCALE_PATTERN6 6 #define STRIPE_PTN 5 typedef enum _DRV_ADI_RESET_TYPE { eADI_RESET_TYPE_ADI = 0, eADI_RESET_TYPE_ADIX, eADI_RESET_TYPE_ADI_EXTS_SD, } DRV_ADI_RESET_TYPE; typedef enum _DRV_ADI_EXTS_HV_SYNC_SOURCE_SELECT { eADI_EXTS_HV_SYNC_SOURCE_SELECT_BYPASS = 0, eADI_EXTS_HV_SYNC_SOURCE_SELECT_NORMAL, } DRV_ADI_EXTS_HV_SYNC_SOURCE_SELECT; typedef enum _DRV_ADI_WINDOW_DIRECTION { eADI_WINDOW_DIRECTION_HORIZONTAL = 0, eADI_WINDOW_DIRECTION_VERTICAL, } DRV_ADI_WINDOW_DIRECTION; typedef enum _DRV_ADI_TOP_FIELD_TYPE { eADI_TOP_FIELD_TYPE_RED = 0, eADI_TOP_FIELD_TYPE_BLUE, } DRV_ADI_TOP_FIELD_TYPE; typedef enum _DRV_ADI_DOUBLE_CENTERING_FIELD_TYPE { eADI_DOUBLE_CENTERING_FIELD_TYPE_TOP = 0, eADI_DOUBLE_CENTERING_FIELD_TYPE_BOTTOM, } DRV_ADI_DOUBLE_CENTERING_FIELD_TYPE; typedef enum _DRV_ADI_SYNC_TYPE { eADI_SYNC_TYPE_HORIZONTAL = 0, eADI_SYNC_TYPE_VERTICAL, } DRV_ADI_SYNC_TYPE; typedef enum _DRV_ADI_CENTERING_METHOD { eADI_CENTERING_METHOD_BY_SYNC = 0, eADI_CENTERING_METHOD_BY_WINDOW, } DRV_ADI_CENTERING_METHOD; typedef enum _DRV_ADI_FIELD_POLARITY { eADI_FIELD_POLARITY_NEGATIVE = 0, eADI_FIELD_POLARITY_POSITIVE, } DRV_ADI_FIELD_POLARITY; typedef enum _DRV_ADI_OFFSET_COMPENSATION_DETECTION_MODE { eADI_OFFSET_COMPENSATION_DETECTION_MODE_LINE = 0, eADI_OFFSET_COMPENSATION_DETECTION_MODE_FIELD, } DRV_ADI_OFFSET_COMPENSATION_DETECTION_MODE; typedef enum _DRV_ADI_OFFSET_COMPENSATION_DETECTION_PIXELS { eADI_OFFSET_COMPENSATION_DETECTION_PIXELS_ODD = 0, eADI_OFFSET_COMPENSATION_DETECTION_PIXELS_EVEN, eADI_OFFSET_COMPENSATION_DETECTION_PIXELS_ODD_AND_EVEN, } DRV_ADI_OFFSET_COMPENSATION_DETECTION_PIXELS; typedef enum _DRV_ADI_PATTERN_TYPE { eADI_PATTERN_TYPE_SINGLE_COLOR = SINGLE_COLOR, eADI_PATTERN_TYPE_COLOR_BAR = COLOR_BAR, eADI_PATTERN_TYPE_COLOR_BAR2 = COLOR_BAR2, eADI_PATTERN_TYPE_COLOR_GRAY_SCALE = COLOR_GRAY_SCALE, eADI_PATTERN_TYPE_GRAY_SCALE = GRAY_SCALE, eADI_PATTERN_TYPE_GRAY_SCALE_PATTERN6 = GRAY_SCALE_PATTERN6, eADI_PATTERN_TYPE_STRIPE_PTN = STRIPE_PTN, } DRV_ADI_PATTERN_TYPE; typedef enum _DRV_ADI_COLOR_SEARCH_TYPE { eADI_COLOR_SEARCH_TYPE_G_Y = 0, eADI_COLOR_SEARCH_TYPE_B_CB = 1, eADI_COLOR_SEARCH_TYPE_R_CR = 2, } DRV_ADI_COLOR_SEARCH_TYPE; typedef struct _DRV_ADI_INPUT_CONFIG { UINT8 Source; UINT8 InputDataFormat; UINT8 IsInterlaceMode:1; UINT8 IsATVSource:1; UINT8 Reserved:6; } DRV_ADI_INPUT_CONFIG; typedef struct _DRV_ADI_PATTERN_PARAM { UINT16 InputWidth; UINT16 InputHeight; char* pPatch; DRV_ADI_PATTERN_TYPE Type; UINT16 Param1; UINT16 Param2; UINT16 Param3; BOOL IsInterlaceMode; } DRV_ADI_PATTERN_PARAM; void DRV_ADI_Init(void); void DRV_ADI_Reset(DRV_ADI_RESET_TYPE eType, BOOL fEnable); void DRV_ADI_SetSyncTimeout(DRV_ADI_SYNC_TYPE eType, UINT32 Value); void DRV_ADI_SetProgrammableSyncPosition(DRV_ADI_SYNC_TYPE eType, UINT32 Value); void DRV_ADI_InitProgrammableSyncPosition(void); UINT32 DRV_ADI_GetProgrammableSyncPosition(DRV_ADI_SYNC_TYPE eType); void DRV_ADI_EnableProgrammableSyncPosition(DRV_ADI_SYNC_TYPE eType, BOOL fEnable); BOOL DRV_ADI_IsProgrammableSyncPositionEnabled(DRV_ADI_SYNC_TYPE eType); void DRV_ADI_EnableAutoVSyncDelayAdjustment(BOOL fEnable); void DRV_ADI_SetVSyncEarlierIndicator(BOOL fFlag); void DRV_ADI_SetInputConfig(DRV_ADI_INPUT_CONFIG *pConfig); void DRV_ADI_SetSourceSelect(DRV_ADI_SOURCE eSource); DRV_ADI_SOURCE DRV_ADI_GetSourceSelect(void); void DRV_ADI_SetInputWindow(DRV_ADI_WINDOW_DIRECTION eDirection, UINT16 Start, UINT16 End); void DRV_ADI_GetInputWindow(DRV_ADI_WINDOW_DIRECTION eDirection, UINT16 *pStart, UINT16 *pEnd); void DRV_ADI_SetCaptureWindow(DRV_ADI_WINDOW_DIRECTION eDirection, UINT16 Start, UINT16 End); void DRV_ADI_GetCaptureWindow(DRV_ADI_WINDOW_DIRECTION eDirection, UINT16 *pStart, UINT16 *pEnd); void DRV_ADI_SetCenteringWindow(DRV_ADI_WINDOW_DIRECTION eDirection, UINT16 Start, UINT16 End); void DRV_ADI_SetCenteringMethod(DRV_ADI_CENTERING_METHOD eMethod); void DRV_ADI_EnableCentering(BOOL fEnable); BOOL DRV_ADI_IsCenteringEnabled(void); void DRV_ADI_SetDoubleCenteringFieldSelection(DRV_ADI_DOUBLE_CENTERING_FIELD_TYPE eType); void DRV_ADI_SetTopFieldVerticalAdjustment(INT8 Value); void DRV_ADI_SetBottomFieldVerticalAdjustment(INT8 Value); void DRV_ADI_SetYUV422HorizontalSize(UINT16 Value); void DRV_ADI_SetPixelsPerLineToGFX(UINT32 Value); void DRV_ADI_EnableColorSearch(DRV_ADI_COLOR_SEARCH_TYPE eType); void DRV_ADI_DisableColorSearch(void); BOOL DRV_ADI_IsColorSearchEnabled(void); void DRV_ADI_EnableColorFill(UINT8 Red, UINT8 Green, UINT8 Blue); void DRV_ADI_DisableColorFill(void); void DRV_ADI_EnableColorFillingInPanningArea(BOOL fEnable); void DRV_ADI_EnableCaptureWindowVerticalEnd(BOOL fEnable); void DRV_ADI_SetEXTSHVSyncSourceSelect(DRV_ADI_EXTS_HV_SYNC_SOURCE_SELECT eSelect); void DRV_ADI_SetEXTSTopField(DRV_ADI_TOP_FIELD_TYPE eType); void DRV_ADI_SetEXTSInterlaceMode(BOOL fFlag); void DRV_ADI_SetEXTSSyncThreshold(DRV_ADI_SYNC_TYPE eType, UINT32 Value); void DRV_ADI_SetEXTSRGBYActiveDetectionThreshold(UINT32 Value); void DRV_ADI_SetEXTSDisplayData(DRV_ADI_WINDOW_DIRECTION eDirection, UINT16 Start, UINT16 End); void DRV_ADI_GetEXTSDisplayData(DRV_ADI_WINDOW_DIRECTION eDirection, UINT16 *pStart, UINT16 *pEnd); void DRV_ADI_SetEXTSOffsetCompensationDetectionMode(DRV_ADI_OFFSET_COMPENSATION_DETECTION_MODE eMode); void DRV_ADI_SetEXTSOffsetCompensationDetectionPixels(DRV_ADI_OFFSET_COMPENSATION_DETECTION_PIXELS eOddEven); void DRV_ADI_SetEXTSAutoOffsetAdjustmentWindow(DRV_ADI_WINDOW_DIRECTION eDirection, UINT32 Start, UINT32 End); void DRV_ADI_EnableEXTSAutoOffsetDetection(BOOL fEnable); BOOL DRV_ADI_IsEXTSAutoOffsetDetectionEnabled(void); void DRV_ADI_SetHDMITopField(DRV_ADI_TOP_FIELD_TYPE eType); void DRV_ADI_SetHDMIFramePackingInterlaceMode(BOOL fFlag); void DRV_ADI_EnableHDMIFramePacking(BOOL fEnable); void DRV_ADI_SetMPEGFieldInputPolarity(DRV_ADI_FIELD_POLARITY ePolarity); void DRV_ADI_GeneratePattern(DRV_ADI_PATTERN_PARAM *pPatternParam); void DRV_ADI_PatternEnable(BOOL ucEnable); void DRV_ADI_ENABLE_AutoPolarityControl(BOOL fEnable); void DRV_VDI_SetColorCross_Y_Address(UINT32 f0, UINT32 f1, UINT32 f2,UINT32 f3, UINT32 f4, UINT32 f5, UINT32 f6, UINT32 f7); void DRV_VDI_SetColorCross_UV_Address(UINT32 f0, UINT32 f1, UINT32 f2,UINT32 f3, UINT32 f4, UINT32 f5, UINT32 f6, UINT32 f7); #endif