xref: /utopia/UTPA2-700.0.x/modules/ve/drv/ve/tvencoder_private.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 #ifndef _TVE_PRIVATE_
2 #define _TVE_PRIVATE_
3 
4 #include "drvTVEncoder.h"
5 #include "utopia_relation.h"
6 
7 #define MAGIC_NUM 0x12345678
8 
9 typedef const VE_DrvInfo *                         (*IOCTL_VE_GetInfo)                            (void);
10 typedef VE_Result                                      (*IOCTL_VE_GetStatus)                        (VE_DrvStatus* pDrvStatus);
11 typedef void                                             (*IOCTL_VE_SetDbgLevel)                    (MS_U16 level);
12 typedef void                                             (*IOCTL_VE_SwitchInputSource)         (PMS_Switch_VE_Src_Info pSwitchInfo);
13 typedef MS_SWITCH_VE_SRC_STATUS          (*IOCTL_VE_SetInputSource)               (PMS_VE_InputSrc_Info pInputSrcInfo);
14 typedef void                                             (*IOCTL_VE_SwitchOuputDest)             (PMS_Switch_VE_Dest_Info pSwitchInfo);
15 typedef void                                             (*IOCTL_VE_SetOutputCtrl)                   (PMS_VE_Output_Ctrl pOutputCtrl);
16 typedef MS_BOOL                                      (*IOCTL_VE_SetOutputVideoStd)          (MS_VE_VIDEOSYS VideoSystem);
17 typedef void                                             (*IOCTL_VE_SetMemoryBaseAddr)       (MS_PHY phyMIUAddress, MS_U32 u32MIUSize);
18 typedef void                                             (*IOCTL_VE_Init)                                      (MS_PHY u32MIUAddress);
19 typedef MS_BOOL                                      (*IOCTL_VE_Exit)                                     (void);
20 typedef void                                             (*IOCTL_VE_SetWSSData)                     (MS_BOOL bEn, MS_U16 u16WSSData);
21 typedef MS_U16                                      (*IOCTL_VE_GetWSSData)                      (void);
22 typedef void                                            (*IOCTL_VE_SetMode)                             (MS_VE_Set_Mode_Type *pVESetMode);
23 typedef void                                             (*IOCTL_VE_SetBlackScreen)                 (MS_BOOL bEn);
24 typedef MS_BOOL                                     (*IOCTL_VE_IsBlackScreenEnabled)       (void);
25 typedef void                                            (*IOCTL_VE_SetTtxBuffer)                        (MS_PHY u32StartAddr, MS_U32 u32Size);
26 typedef MS_BOOL                                     (*IOCTL_VE_GetTtxReadDoneStatus)            (void);
27 typedef void                                            (*IOCTL_VE_EnableCcSw)                              (MS_BOOL bEnable);
28 typedef void                                            (*IOCTL_VE_SetCcRange)                          (MS_U16 odd_start, MS_U16 odd_end, MS_U16 even_start, MS_U16 enen_end);
29 typedef void                                            (*IOCTL_VE_SendCcData)                          (MS_BOOL bIsOdd, MS_U16 data);
30 typedef void                                        (*IOCTL_VE_set_display_window)                     (MS_VE_WINDOW_TYPE stDispWin);
31 typedef void                                         (*IOCTL_VE_SetOSD)                                     (MS_BOOL bEnable);
32 typedef void                                            (*IOCTL_VE_SetRGBIn)                   (MS_BOOL bEnable);
33 typedef MS_VE_VIDEOSYS                       (*IOCTL_VE_Get_Output_Video_Std)                     (void);
34 typedef void                                            (*IOCTL_VE_SetCaptureMode)                             (MS_BOOL bEnable);
35 typedef MS_BOOL                                  (*IOCTL_VE_GetDstInfo)                      (MS_VE_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo);
36 typedef void                                     (*IOCTL_VE_Set_TestPattern)                            (MS_BOOL bEn);
37 typedef VE_Result                               (*IOCTL_VE_DisableRegWrite)                         (MS_BOOL bFlag);
38 typedef VE_Result                               (*IOCTL_VE_AdjustPositionBase)                      (MS_S32 s32WAddrAdjustment, MS_S32 s32RAddrAdjustment);
39 typedef VE_Result                               (*IOCTL_VE_Set_Customer_Scaling)                 (MS_VE_CusScalingInfo *pstVECusScalingInfo);
40 typedef void                                        (*IOCTL_VE_InitVECapture)                          (PMS_VE_Output_CAPTURE pVECapture);
41 typedef MS_BOOL                                  (*IOCTL_VE_EnaVECapture)                    (PMS_VE_VECAPTURESTATE pstVECapState);
42 typedef VE_Result                               (*IOCTL_VE_Adjust_FrameStart)                         (MS_VE_WINDOW_TYPE *stSrcWin,MS_S16 pixel_offset);
43 typedef MS_U32                                  (*IOCTL_TVE_SetPowerState)                       (EN_POWER_MODE u16PowerState);
44 typedef MS_BOOL                                  (*IOCTL_VE_SetCusTable)                 (MS_VE_VIDEOSYS VideoSystem, MS_U8* pTbl);
45 typedef void                                        (*IOCTL_VE_EnableCusTable)                             (MS_BOOL bEnable);
46 typedef VE_Result                               (*IOCTL_VE_SetFrameColor)                     (MS_U32 u32aRGB);
47 typedef VE_Result                                (*IOCTL_VE_Set_OSDLayer)                  (MS_VE_OSD_LAYER_SEL eVideoOSDLayer);
48 typedef MS_VE_OSD_LAYER_SEL              (*IOCTL_VE_Get_OSDLayer)                    (void);
49 typedef VE_Result                                   (*IOCTL_VE_Set_VideoAlpha)                    (MS_U8 u8Val);
50 typedef VE_Result                                (*IOCTL_VE_Get_VideoAlpha)                        (MS_U8 *pu8Val);
51 typedef VE_Result                                (*IOCTL_VE_DCS_SetType)                   (MS_BOOL bEnable, MS_U32 eType);
52 typedef VE_Result                                (*IOCTL_VE_DCS_SetActivationKey)                                  (MS_U8 *pu8ActivationKeyTbl, MS_U8 u8ActivationKeyTblSize);
53 typedef VE_Result                                   (*IOCTL_VE_ReloadSetting)                 (void);
54 typedef MS_BOOL                                     (*IOCTL_VE_GetConfig)               (void* pInstance, MS_PHY *pMIUAddress);
55 
56 
57 typedef struct __attribute__((packed))
58 {
59     MS_BOOL bInited_Drv;
60     MS_U32  u32Magic;
61     MS_PHY u32MIUAddress;
62 }TVENCODER_RESOURCE_PRIVATE;
63 
64 typedef struct
65 {
66     //MS_BOOL bInited_Drv;
67     //IOCTL_TVENCODER_SETINPUTSRC fpTVESetInputSRC;
68     IOCTL_VE_GetInfo                fpVE_GetInfo;
69     IOCTL_VE_GetStatus              fpVE_GetStatus;
70     IOCTL_VE_SetDbgLevel                fpVE_SetDbgLevel;
71     IOCTL_VE_SwitchInputSource              fpVE_SwitchInputSource;
72     IOCTL_VE_SetInputSource                 fpVE_SetInputSource;
73     IOCTL_VE_SwitchOuputDest                fpVE_SwitchOuputDest;
74     IOCTL_VE_SetOutputCtrl              fpVE_SetOutputCtrl;
75     IOCTL_VE_SetOutputVideoStd              fpVE_SetOutputVideoStd;
76     IOCTL_VE_SetMemoryBaseAddr              fpVE_SetMemoryBaseAddr;
77     IOCTL_VE_Init               fpVE_Init;
78     IOCTL_VE_Exit               fpVE_Exit;
79     IOCTL_VE_SetWSSData             fpVE_SetWSSData;
80     IOCTL_VE_GetWSSData             fpVE_GetWSSData;
81     IOCTL_VE_SetMode                fpVE_SetMode;
82     IOCTL_VE_SetBlackScreen             fpVE_SetBlackScreen;
83     IOCTL_VE_IsBlackScreenEnabled               fpVE_IsBlackScreenEnabled;
84     IOCTL_VE_SetTtxBuffer               fpVE_SetTtxBuffer;
85     IOCTL_VE_GetTtxReadDoneStatus               fpVE_GetTtxReadDoneStatus;
86     IOCTL_VE_EnableCcSw             fpVE_EnableCcSw;
87     IOCTL_VE_SetCcRange             fpVE_SetCcRange;
88     IOCTL_VE_SendCcData             fpVE_SendCcData;
89     IOCTL_VE_set_display_window            fpVE_set_display_window;
90     IOCTL_VE_SetOSD             fpVE_SetOSD;
91     IOCTL_VE_SetRGBIn               fpVE_SetRGBIn;
92     IOCTL_VE_Get_Output_Video_Std               fpVE_Get_Output_Video_Std;
93     IOCTL_VE_SetCaptureMode             fpVE_SetCaptureMode;
94     IOCTL_VE_GetDstInfo             fpVE_GetDstInfo;
95     IOCTL_VE_Set_TestPattern                fpVE_Set_TestPattern;
96     IOCTL_VE_DisableRegWrite                fpVE_DisableRegWrite;
97     IOCTL_VE_AdjustPositionBase             fpVE_AdjustPositionBase;
98     IOCTL_VE_Set_Customer_Scaling               fpVE_Set_Customer_Scaling;
99     IOCTL_VE_InitVECapture              fpVE_InitVECapture;
100     IOCTL_VE_EnaVECapture               fpVE_EnaVECapture;
101     IOCTL_VE_Adjust_FrameStart              fpVE_Adjust_FrameStart;
102     IOCTL_TVE_SetPowerState             fpTVE_SetPowerState;
103     IOCTL_VE_SetCusTable                fpVE_SetCusTable;
104     IOCTL_VE_EnableCusTable             fpVE_EnableCusTable;
105     IOCTL_VE_SetFrameColor              fpVE_SetFrameColor;
106     IOCTL_VE_Set_OSDLayer               fpVE_Set_OSDLayer;
107     IOCTL_VE_Get_OSDLayer               fpVE_Get_OSDLayer;
108     IOCTL_VE_Set_VideoAlpha             fpVE_Set_VideoAlpha;
109     IOCTL_VE_Get_VideoAlpha             fpVE_Get_VideoAlpha;
110     IOCTL_VE_DCS_SetType                fpVE_DCS_SetType;
111     IOCTL_VE_DCS_SetActivationKey               fpVE_DCS_SetActivationKey;
112     IOCTL_VE_ReloadSetting              fpVE_ReloadSetting;
113     IOCTL_VE_GetConfig              fpVE_GetConfig;
114 
115 }TVENCODER_INSTANT_PRIVATE;
116 
117 
118 ////////////////////////////////////////////////////////////////////////////////
119 // Reduce driver code size
120 ////////////////////////////////////////////////////////////////////////////////
121 
122 #define _MODULE_VE_U1_U2_RELATION \
123         URELATION(fpVE_GetInfo,(IOCTL_VE_GetInfo)_MDrv_VE_GetInfo,MDrv_VE_GetInfo) \
124         URELATION(fpVE_GetStatus,(IOCTL_VE_GetStatus)_MDrv_VE_GetStatus,MDrv_VE_GetStatus) \
125         URELATION(fpVE_SetDbgLevel,(IOCTL_VE_SetDbgLevel)_MDrv_VE_SetDbgLevel,MDrv_VE_SetDbgLevel) \
126         URELATION(fpVE_SwitchInputSource,(IOCTL_VE_SwitchInputSource)_MDrv_VE_SwitchInputSource,MDrv_VE_SwitchInputSource) \
127         URELATION(fpVE_SetInputSource,(IOCTL_VE_SetInputSource)_MDrv_VE_SetInputSource,MDrv_VE_SetInputSource) \
128         URELATION(fpVE_SwitchOuputDest,(IOCTL_VE_SwitchOuputDest)_MDrv_VE_SwitchOuputDest,MDrv_VE_SwitchOuputDest) \
129         URELATION(fpVE_SetOutputCtrl,(IOCTL_VE_SetOutputCtrl)_MDrv_VE_SetOutputCtrl,MDrv_VE_SetOutputCtrl) \
130         URELATION(fpVE_SetOutputVideoStd,(IOCTL_VE_SetOutputVideoStd)_MDrv_VE_SetOutputVideoStd,MDrv_VE_SetOutputVideoStd) \
131         URELATION(fpVE_Init,(IOCTL_VE_Init)_MDrv_VE_Init,MDrv_VE_Init) \
132         URELATION(fpVE_Exit,(IOCTL_VE_Exit)_MDrv_VE_Exit,MDrv_VE_Exit) \
133         URELATION(fpVE_SetWSSData,(IOCTL_VE_SetWSSData)_MDrv_VE_SetWSSData,MDrv_VE_SetWSSData) \
134         URELATION(fpVE_GetWSSData,(IOCTL_VE_GetWSSData)_MDrv_VE_GetWSSData,MDrv_VE_GetWSSData) \
135         URELATION(fpVE_SetMode,(IOCTL_VE_SetMode)_MDrv_VE_SetMode,MDrv_VE_SetMode) \
136         URELATION(fpVE_SetBlackScreen,(IOCTL_VE_SetBlackScreen)_MDrv_VE_SetBlackScreen,MDrv_VE_SetBlackScreen) \
137         URELATION(fpVE_IsBlackScreenEnabled,(IOCTL_VE_IsBlackScreenEnabled)_MDrv_VE_IsBlackScreenEnabled,MDrv_VE_IsBlackScreenEnabled) \
138         URELATION(fpVE_SetTtxBuffer,(IOCTL_VE_SetTtxBuffer)_MDrv_VE_SetTtxBuffer,MDrv_VE_SetTtxBuffer) \
139         URELATION(fpVE_GetTtxReadDoneStatus,(IOCTL_VE_GetTtxReadDoneStatus)_MDrv_VE_GetTtxReadDoneStatus,MDrv_VE_GetTtxReadDoneStatus) \
140         URELATION(fpVE_EnableCcSw,(IOCTL_VE_EnableCcSw)_MDrv_VE_EnableCcSw,MDrv_VE_EnableCcSw) \
141         URELATION(fpVE_SetCcRange,(IOCTL_VE_SetCcRange)_MDrv_VE_SetCcRange,MDrv_VE_SetCcRange) \
142         URELATION(fpVE_SendCcData,(IOCTL_VE_SendCcData)_MDrv_VE_SendCcData,MDrv_VE_SendCcData) \
143         URELATION(fpVE_set_display_window,(IOCTL_VE_set_display_window)_MDrv_VE_set_display_window,MDrv_VE_set_display_window) \
144         URELATION(fpVE_SetOSD,(IOCTL_VE_SetOSD)_MDrv_VE_SetOSD,MDrv_VE_SetOSD) \
145         URELATION(fpVE_SetRGBIn,(IOCTL_VE_SetRGBIn)_MDrv_VE_SetRGBIn,MDrv_VE_SetRGBIn) \
146         URELATION(fpVE_Get_Output_Video_Std,(IOCTL_VE_Get_Output_Video_Std)_MDrv_VE_Get_Output_Video_Std,MDrv_VE_Get_Output_Video_Std) \
147         URELATION(fpVE_SetCaptureMode,(IOCTL_VE_SetCaptureMode)_MDrv_VE_SetCaptureMode,MDrv_VE_SetCaptureMode) \
148         URELATION(fpVE_GetDstInfo,(IOCTL_VE_GetDstInfo)_MApi_VE_GetDstInfo,MApi_VE_GetDstInfo) \
149         URELATION(fpVE_Set_TestPattern,(IOCTL_VE_Set_TestPattern)_MDrv_VE_Set_TestPattern,MDrv_VE_Set_TestPattern) \
150         URELATION(fpVE_DisableRegWrite,(IOCTL_VE_DisableRegWrite)_MDrv_VE_DisableRegWrite,MDrv_VE_DisableRegWrite) \
151         URELATION(fpVE_AdjustPositionBase,(IOCTL_VE_AdjustPositionBase)_MDrv_VE_AdjustPositionBase,MDrv_VE_AdjustPositionBase) \
152         URELATION(fpVE_Set_Customer_Scaling,(IOCTL_VE_Set_Customer_Scaling)_MDrv_VE_Set_Customer_Scaling,MDrv_VE_Set_Customer_Scaling) \
153         URELATION(fpVE_InitVECapture,(IOCTL_VE_InitVECapture)_MDrv_VE_InitVECapture,MDrv_VE_InitVECapture) \
154         URELATION(fpVE_EnaVECapture,(IOCTL_VE_EnaVECapture)_MDrv_VE_EnaVECapture,MDrv_VE_EnaVECapture) \
155         URELATION(fpVE_Adjust_FrameStart,(IOCTL_VE_Adjust_FrameStart)_MDrv_VE_Adjust_FrameStart,MDrv_VE_Adjust_FrameStart) \
156         URELATION(fpTVE_SetPowerState,(IOCTL_TVE_SetPowerState)_MDrv_TVE_SetPowerState,MDrv_TVE_SetPowerState) \
157         URELATION(fpVE_SetCusTable,(IOCTL_VE_SetCusTable)_MDrv_VE_SetCusTable,MDrv_VE_SetCusTable) \
158         URELATION(fpVE_EnableCusTable,(IOCTL_VE_EnableCusTable)_MDrv_VE_EnableCusTable,MDrv_VE_EnableCusTable) \
159         URELATION(fpVE_SetFrameColor,(IOCTL_VE_SetFrameColor)_MDrv_VE_SetFrameColor,MDrv_VE_SetFrameColor) \
160         URELATION(fpVE_Set_OSDLayer,(IOCTL_VE_Set_OSDLayer)_MDrv_VE_Set_OSDLayer,MDrv_VE_Set_OSDLayer) \
161         URELATION(fpVE_Get_OSDLayer,(IOCTL_VE_Get_OSDLayer)_MDrv_VE_Get_OSDLayer,MDrv_VE_Get_OSDLayer) \
162         URELATION(fpVE_Set_VideoAlpha,(IOCTL_VE_Set_VideoAlpha)_MDrv_VE_Set_VideoAlpha,MDrv_VE_Set_VideoAlpha) \
163         URELATION(fpVE_Get_VideoAlpha,(IOCTL_VE_Get_VideoAlpha)_MDrv_VE_Get_VideoAlpha,MDrv_VE_Get_VideoAlpha) \
164         URELATION(fpVE_GetConfig,(IOCTL_VE_GetConfig)_MDrv_VE_GetConfig,MDrv_VE_GetConfig)
165 
166 
167 typedef struct
168 {
169     MS_U32 VE_Reg[2];
170 }VE_REGS_SAVE_AREA;
171 const VE_DrvInfo * _MDrv_VE_GetInfo(void);
172 VE_Result _MDrv_VE_GetStatus(VE_DrvStatus* pDrvStatus);
173 void _MDrv_VE_SetDbgLevel(MS_U16 level);
174 void _MDrv_VE_SwitchInputSource(PMS_Switch_VE_Src_Info pSwitchInfo);
175 MS_SWITCH_VE_SRC_STATUS _MDrv_VE_SetInputSource(PMS_VE_InputSrc_Info pInputSrcInfo);
176 void _MDrv_VE_SwitchOuputDest(PMS_Switch_VE_Dest_Info pSwitchInfo);
177 void _MDrv_VE_SetOutputCtrl(PMS_VE_Output_Ctrl pOutputCtrl);
178 MS_BOOL _MDrv_VE_SetOutputVideoStd(MS_VE_VIDEOSYS VideoSystem);
179 void _MDrv_VE_SetMemoryBaseAddr(MS_PHY phyMIUAddress, MS_U32 u32MIUSize);
180 void _MDrv_VE_Init(MS_PHY u32MIUAddress);
181 MS_BOOL _MDrv_VE_Exit(void);
182 void _MDrv_VE_SetWSSData(MS_BOOL bEn, MS_U16 u16WSSData);
183 MS_U16 _MDrv_VE_GetWSSData(void);
184 void _MDrv_VE_SetMode(MS_VE_Set_Mode_Type *pVESetMode);
185 void _MDrv_VE_SetBlackScreen(MS_BOOL bEn);
186 MS_BOOL _MDrv_VE_IsBlackScreenEnabled(void);
187 void _MDrv_VE_SetTtxBuffer(MS_PHY u32StartAddr, MS_U32 u32Size);
188 MS_BOOL _MDrv_VE_GetTtxReadDoneStatus(void);
189 void _MDrv_VE_EnableCcSw(MS_BOOL bEnable);
190 void _MDrv_VE_SetCcRange(MS_U16 odd_start, MS_U16 odd_end, MS_U16 even_start, MS_U16 enen_end);
191 void _MDrv_VE_SendCcData(MS_BOOL bIsOdd, MS_U16 data);
192 void _MDrv_VE_set_display_window(MS_VE_WINDOW_TYPE stDispWin);
193 void _MDrv_VE_SetOSD(MS_BOOL bEnable);
194 void _MDrv_VE_SetRGBIn(MS_BOOL bEnable);
195 MS_VE_VIDEOSYS _MDrv_VE_Get_Output_Video_Std(void);
196 void _MDrv_VE_SetCaptureMode(MS_BOOL bEnable);
197 MS_BOOL _MApi_VE_GetDstInfo(MS_VE_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo);
198 void _MDrv_VE_Set_TestPattern(MS_BOOL bEn);
199 VE_Result _MDrv_VE_DisableRegWrite(MS_BOOL bFlag);
200 VE_Result _MDrv_VE_AdjustPositionBase(MS_S32 s32WAddrAdjustment, MS_S32 s32RAddrAdjustment);
201 VE_Result  _MDrv_VE_Set_Customer_Scaling(MS_VE_CusScalingInfo *pstVECusScalingInfo);
202 void _MDrv_VE_InitVECapture(PMS_VE_Output_CAPTURE pVECapture);
203 MS_BOOL _MDrv_VE_EnaVECapture(PMS_VE_VECAPTURESTATE pstVECapState);
204 VE_Result _MDrv_VE_Adjust_FrameStart(MS_VE_WINDOW_TYPE *stSrcWin,MS_S16 pixel_offset);
205 MS_U32 _MDrv_TVE_SetPowerState(EN_POWER_MODE u16PowerState);
206 
207 MS_BOOL _MDrv_VE_SetCusTable(MS_VE_VIDEOSYS VideoSystem, MS_U8* pTbl);
208 void _MDrv_VE_EnableCusTable(MS_BOOL bEnable);
209 VE_Result _MDrv_VE_SetFrameColor(MS_U32 u32aRGB);
210 VE_Result _MDrv_VE_Set_OSDLayer(MS_VE_OSD_LAYER_SEL eVideoOSDLayer);
211 MS_VE_OSD_LAYER_SEL _MDrv_VE_Get_OSDLayer(void);
212 VE_Result _MDrv_VE_Set_VideoAlpha(MS_U8 u8Val);
213 VE_Result _MDrv_VE_Get_VideoAlpha(MS_U8 *pu8Val);
214 
215 VE_Result _MDrv_VE_DCS_SetType(MS_BOOL bEnable, MS_U32 eType);
216 VE_Result _MDrv_VE_DCS_SetActivationKey(MS_U8 *pu8ActivationKeyTbl, MS_U8 u8ActivationKeyTblSize);
217 
218 VE_Result _MDrv_VE_ReloadSetting(void);
219 
220 MS_BOOL _MDrv_VE_GetConfig(void* pInstance, MS_PHY *pMIUAddress);
221 
222 MS_U32 TVENCODEROpen(void** ppInstance, const void* const pAttribute);
223 MS_U32 TVENCODERClose(void* pInstance);
224 MS_U32 TVENCODERIoctl(void* pInstance, MS_U32 u32Cmd, void* pArgs);
225 
226 #endif //_TVE_PRIVATE_
227