xref: /utopia/UTPA2-700.0.x/modules/vd/drv/vbi/drvVBI_private.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 #include "drvVBI.h"
2 #include "drvDMX_TTX.h"
3 
4 #include "MsTypes.h"
5 
6 #ifndef __VBI_PRIVATE_H__
7 #define __VBI_PRIVATE_H__
8 
9 typedef enum E_VBI_RES_ID {
10     E_VBI_RESOURCE,
11 } eVbiResourceId;
12 
13 typedef struct
14 {
15     MS_S32 ReadPacketNumber;
16     MS_S32 WritePacketNumber;
17     MS_U16 NoOfPacketBufferOverflows;
18 
19     MS_BOOL pkt_received;
20     MS_BOOL PacketBufferOverflow;
21 } VBI_RING_BUFFER;
22 
23 typedef struct _VBI_RESOURCE_PRIVATE
24 {
25     MS_U32 Dummy;
26 } VBI_RESOURCE_PRIVATE;
27 
28 typedef MS_BOOL (*IOCTL_VBI_GETLIBVER)(const MSIF_Version **);
29 typedef VBI_DrvInfo * (*IOCTL_VBI_GETINFO)(void);
30 typedef MS_BOOL (*IOCTL_VBI_GETSTATUS)(VBI_DrvStatus*);
31 typedef MS_BOOL (*IOCTL_VBI_SET_DBGLEVEL)(MS_U16);
32 typedef MS_BOOL (*IOCTL_VBI_INIT)(EN_VBI_CMD, VBI_INIT_TYPE);
33 typedef MS_BOOL (*IOCTL_VBI_EXIT)(EN_VBI_CMD);
34 typedef void    (*IOCTL_VBI_REGISTERCB)(VBI_CB_FN, MS_PHY, MS_U32);
35 typedef void    (*IOCTL_VBI_RINGBUFFER_RESET)(void);
36 typedef void    (*IOCTL_VBI_INITIALIZETTXSLICER)(MS_PHY, MS_U16);
37 typedef void    (*IOCTL_VBI_ENABLETTXSLICER)(MS_BOOL);
38 typedef MS_BOOL (*IOCTL_VBI_ISVPS_READY)(void);
39 typedef MS_BOOL (*IOCTL_VBI_ISTTX_READY)(void);
40 typedef MS_BOOL (*IOCTL_VBI_ISWSS_READY)(void);
41 typedef MS_U16  (*IOCTL_VBI_GETWSS_DATA)(void);
42 typedef void    (*IOCTL_VBI_GETVPS_DATA)(MS_U8*, MS_U8*);
43 typedef void    (*IOCTL_VBI_SETVIDEOSTANDARD)(VBI_VIDEO_STANDARD);
44 typedef MS_BOOL (*IOCTL_VBI_TTX_PACKETBUFFERISEMPTY)(void);
45 typedef MS_BOOL (*IOCTL_VBI_TTX_CHECKCIRCUITREADY)(void);
46 typedef MS_U16  (*IOCTL_VBI_TTX_GETPACKETCOUNT)(void);
47 typedef MS_BOOL (*IOCTL_VBI_TTX_GETPACKETS)(MS_PHY, MS_U32*);
48 typedef MS_BOOL (*IOCTL_VBI_TTX_GETPACKET)(MS_PHY*);
49 typedef MS_BOOL (*IOCTL_VBI_TTX_PACKETBUFFERISOVERFLOW)( void );
50 typedef MS_U16  (*IOCTL_VBI_TTX_PACKETBUFFERGETNOOFOVERFLOWS)( void );
51 typedef void    (*IOCTL_VBI_TTX_ENABLELINE)(MS_U16, MS_U16);
52 typedef MS_BOOL (*IOCTL_VBI_SYNCMEMORY)( MS_U32, MS_U32);
53 typedef void    (*IOCTL_VBI_CC_INITSLICER)(MS_U32, MS_PHY, MS_U16);
54 typedef void    (*IOCTL_VBI_CC_INITYPBYR)(MS_U8);
55 typedef MS_U8   (*IOCTL_VBI_CC_SETDATARATE)(MS_U8*);
56 typedef MS_U32  (*IOCTL_VBI_CC_GETINFO)(MS_U32);
57 typedef void    (*IOCTL_VBI_CC_SETFRAMECNT)(MS_U8);
58 typedef void    (*IOCTL_VBI_CC_ENABLESLICER)(MS_BOOL);
59 typedef void    (*IOCTL_VBI_CC_ENABLELINE)(MS_U16, MS_U16, MS_U8);
60 typedef MS_BOOL (*IOCTL_VBI_CC_SETSCWINDOWLEN)(MS_U8);
61 typedef MS_BOOL (*IOCTL_VBI_CC_SETVIDEOSTANDARD)(VBI_VIDEO_STANDARD);
62 typedef void    (*IOCTL_VBI_WSS_SETVPSBYTENUM)(MS_U8);
63 typedef MS_BOOL (*IOCTL_VBI_GETRAWVPS_DATA)(MS_U8*, MS_U8*, MS_U8*, MS_U8*);
64 typedef MS_BOOL (*IOCTL_VBI_SUSPEND)( void );
65 typedef MS_BOOL (*IOCTL_VBI_RESUME)( void );
66 typedef MS_U32  (*IOCTL_VBI_SETPOWERSTATE)( EN_POWER_MODE );
67 typedef MS_U32  (*IOCTL_VBI_PROTECTMEMORY)( MS_BOOL, MS_PHY, MS_U32 );
68 
69 typedef void    (*IOCTL_DMX_TTX_RINGBUFFER_RESET)(void);
70 typedef MS_BOOL (*IOCTL_DMX_TTX_INIT)(EN_DMX_TTX_CMD, MS_PHY, MS_U16);
71 typedef MS_BOOL (*IOCTL_DMX_TTX_EXIT)(EN_DMX_TTX_CMD);
72 typedef void    (*IOCTL_DMX_TTX_SETFILTERID)(MS_U8);
73 typedef void    (*IOCTL_DMX_TTX_SETCB)(DMX_CB_FN);
74 typedef MS_BOOL (*IOCTL_DMX_TTX_PACKETBUFFERISEMPTY)(void);
75 typedef MS_BOOL (*IOCTL_DMX_TTX_GETPACKETS)(MS_PHY, MS_U32*);
76 typedef MS_BOOL (*IOCTL_DMX_TTX_GETPACKET)(MS_PHY*);
77 typedef MS_BOOL (*IOCTL_DMX_TTX_PACKETBUFFERISOVERFLOW)( void );
78 typedef MS_U16  (*IOCTL_DMX_TTX_PACKETBUFFERGETNOOFOVERFLOWS)( void );
79 typedef MS_BOOL (*IOCTL_DMX_TTX_SUSPEND)( void );
80 typedef MS_BOOL (*IOCTL_DMX_TTX_RESUME)( void );
81 typedef MS_U32  (*IOCTL_DMX_TTX_SETPOWERSTATE)( EN_POWER_MODE );
82 
83 typedef struct _VBI_INSTANT_PRIVATE
84 {
85     IOCTL_VBI_GETLIBVER                        fpVBIGetLibVer;
86     IOCTL_VBI_GETINFO                          fpVBIGetInfo;
87     IOCTL_VBI_GETSTATUS                        fpVBIGetStatus;
88     IOCTL_VBI_SET_DBGLEVEL                     fpVBISetDbgLevel;
89     IOCTL_VBI_INIT                             fpVBIInit;
90     IOCTL_VBI_EXIT                             fpVBIExit;
91     IOCTL_VBI_REGISTERCB                       fpVBIRegisterCB;
92     IOCTL_VBI_RINGBUFFER_RESET                 fpVBIRingBufferReset;
93     IOCTL_VBI_INITIALIZETTXSLICER              fpVBIInitializeTTXSlicer;
94     IOCTL_VBI_ENABLETTXSLICER                  fpVBIEnableTTXSlicer;
95     IOCTL_VBI_ISVPS_READY                      fpVBIIsVPSReady;
96     IOCTL_VBI_ISTTX_READY                      fpVBIIsTTXReady;
97     IOCTL_VBI_ISWSS_READY                      fpVBIIsWSSReady;
98     IOCTL_VBI_GETWSS_DATA                      fpVBIGetWSSData;
99     IOCTL_VBI_GETVPS_DATA                      fpVBIGetVPSData;
100     IOCTL_VBI_SETVIDEOSTANDARD                 fpVBISetVideoStandard;
101     IOCTL_VBI_TTX_PACKETBUFFERISEMPTY          fpVBITTXPacketBufferIsEmpty;
102     IOCTL_VBI_TTX_CHECKCIRCUITREADY            fpVBITTXCheckCircuitReady;
103     IOCTL_VBI_TTX_GETPACKETCOUNT               fpVBITTXGetPacketCount;
104     IOCTL_VBI_TTX_GETPACKETS                   fpVBITTXGetPackets;
105     IOCTL_VBI_TTX_GETPACKET                    fpVBITTXGetPacket;
106     IOCTL_VBI_TTX_PACKETBUFFERISOVERFLOW       fpVBITTXPacktetBufferIsOverflow;
107     IOCTL_VBI_TTX_PACKETBUFFERGETNOOFOVERFLOWS fpVBITTXPacketBufferGetNoOfOverflows;
108     IOCTL_VBI_TTX_ENABLELINE                   fpVBITTXEnableLine;
109     IOCTL_VBI_SYNCMEMORY                       fpVBISyncMemory;
110     IOCTL_VBI_CC_INITSLICER                    fpVBICCInitSlicer;
111     IOCTL_VBI_CC_INITYPBYR                     fpVBICCInitYPbYr;
112     IOCTL_VBI_CC_SETDATARATE                   fpVBICCSetDataRate;
113     IOCTL_VBI_CC_GETINFO                       fpVBICCGetInfo;
114     IOCTL_VBI_CC_SETFRAMECNT                   fpVBICCSetFrameCnt;
115     IOCTL_VBI_CC_ENABLESLICER                  fpVBICCEnableSlicer;
116     IOCTL_VBI_CC_ENABLELINE                    fpVBICCEnableLine;
117     IOCTL_VBI_CC_SETSCWINDOWLEN                fpVBICCSetSCWindowLen;
118     IOCTL_VBI_CC_SETVIDEOSTANDARD              fpVBICCSetVideoStandard;
119     IOCTL_VBI_GETRAWVPS_DATA                   fpVBIGetRawVPSData;
120     IOCTL_VBI_WSS_SETVPSBYTENUM                fpVBIWSSSetVpsByteNum;
121     IOCTL_VBI_SUSPEND                          fpVBISuspend;
122     IOCTL_VBI_RESUME                           fpVBIResume;
123     IOCTL_VBI_SETPOWERSTATE                    fpVBISetPowerState;
124     IOCTL_VBI_PROTECTMEMORY                    fpVBIProtectMemory;
125 
126     IOCTL_DMX_TTX_RINGBUFFER_RESET             fpDMXTTXRingBufferReset;
127     IOCTL_DMX_TTX_INIT                         fpDMXTTXInit;
128     IOCTL_DMX_TTX_EXIT                         fpDMXTTXExit;
129     IOCTL_DMX_TTX_SETFILTERID                  fpDMXTTXSetFilterID;
130     IOCTL_DMX_TTX_SETCB                        fpDMXTTXSetCB;
131     IOCTL_DMX_TTX_PACKETBUFFERISEMPTY          fpDMXTTXPacketBufferIsEmpty;
132     IOCTL_DMX_TTX_GETPACKETS                   fpDMXTTXGetPackets;
133     IOCTL_DMX_TTX_GETPACKET                    fpDMXTTXGetPacket;
134     IOCTL_DMX_TTX_PACKETBUFFERISOVERFLOW       fpDMXTTXPacketBufferIsOverflow;
135     IOCTL_DMX_TTX_PACKETBUFFERGETNOOFOVERFLOWS fpDMXTTXPacketBufferGetNoOfOverflows;
136     IOCTL_DMX_TTX_SUSPEND                      fpDMXTTXSuspend;
137     IOCTL_DMX_TTX_RESUME                       fpDMXTTXResume;
138     IOCTL_DMX_TTX_SETPOWERSTATE                fpDMXTTXSetPowerState;
139 
140 }VBI_INSTANT_PRIVATE;
141 
142 //---------------------------------------------------------------------------------------
143 MS_BOOL _MDrv_VBI_GetStatus(VBI_DrvStatus *pDrvStatus);
144 MS_BOOL _MDrv_VBI_Init(EN_VBI_CMD cmd, VBI_INIT_TYPE type);
145 MS_BOOL _MDrv_VBI_Exit(EN_VBI_CMD cmd);
146 void    _MDrv_VBI_RegisterCB(VBI_CB_FN pFN, MS_PHY bufferAddr, MS_U32 length);
147 void    _MDrv_VBI_RingBuffer_Reset(void);
148 void    _MDrv_VBI_InitializeTTXSlicer(MS_PHY bufferAddr, MS_U16 packetCount);
149 void    _MDrv_VBI_EnableTTXSlicer(MS_BOOL bEnable);
150 MS_BOOL _MDrv_VBI_IsVPS_Ready(void);
151 MS_BOOL _MDrv_VBI_IsTTX_Ready(void);
152 MS_BOOL _MDrv_VBI_IsWSS_Ready(void);
153 MS_U16  _MDrv_VBI_GetWSS_Data(void);
154 void    _MDrv_VBI_GetVPS_Data(MS_U8 *lowerWord, MS_U8 *higherWord);
155 void    _MDrv_VBI_SetVideoStandard(VBI_VIDEO_STANDARD eStandard);
156 MS_BOOL _MDrv_VBI_TTX_PacketBufferIsEmpty(void);
157 MS_BOOL _MDrv_VBI_TTX_CheckCircuitReady(void);
158 MS_U16  _MDrv_VBI_TTX_GetPacketCount(void);
159 MS_BOOL _MDrv_VBI_TTX_GetPackets(MS_PHY dataAddr, MS_U32 *length);
160 MS_BOOL _MDrv_VBI_TTX_GetPacket(MS_PHY *packetAddress);
161 MS_BOOL _MDrv_VBI_TTX_PacketBufferIsOverflow( void );
162 MS_U16  _MDrv_VBI_TTX_PacketBufferGetNoOfOverflows( void );
163 void    _MDrv_VBI_TTX_EnableLine(MS_U16 StartLine, MS_U16 EndLine);
164 MS_BOOL _MDrv_VBI_SyncMemory( MS_U32 u32Start, MS_U32 u32Size );
165 void    _MDrv_VBI_CC_InitSlicer(MS_VIRT u32RiuAddr, MS_PHY bufferAddr, MS_U16 packetCount);
166 void    _MDrv_VBI_CC_InitYPbYr(MS_U8 cvbs_no);
167 MS_U8   _MDrv_VBI_CC_SetDataRate(MS_U8 *ptable);
168 MS_U32  _MDrv_VBI_CC_GetInfo(MS_U32 selector);
169 void    _MDrv_VBI_CC_SetFrameCnt(MS_U8 cnt);
170 void    _MDrv_VBI_CC_EnableSlicer(MS_BOOL bEnable);
171 void    _MDrv_VBI_CC_EnableLine(MS_U16 StartLine, MS_U16 EndLine, MS_U8 mode);
172 MS_BOOL _MDrv_VBI_CC_SetSCWindowLen(MS_U8 u8Len);
173 MS_BOOL _MDrv_VBI_CC_SetStandard(VBI_VIDEO_STANDARD eStandard);
174 void    _MDrv_VBI_WSS_SetVpsByteNum(MS_U8 cnt);
175 void    _MDrv_VBI_GetRawVPS_Data(MS_U8 *byte0, MS_U8 *byte1, MS_U8 *byte2, MS_U8 *byte3);
176 MS_BOOL _MDrv_VBI_Suspend(void);
177 MS_BOOL _MDrv_VBI_Resume(void);
178 MS_U32  _MDrv_VBI_SetPowerState(EN_POWER_MODE u16PowerState);
179 
180 void    _MDrv_DMX_TTX_RingBuffer_Reset(void);
181 MS_BOOL _MDrv_DMX_TTX_Init(EN_DMX_TTX_CMD cmd, MS_PHY bufferAddr, MS_U16 packetCount);
182 MS_BOOL _MDrv_DMX_TTX_Exit(EN_DMX_TTX_CMD cmd);
183 void    _MDrv_DMX_TTX_SetFilterID(MS_U8 fid);
184 void    _MDrv_DMX_TTX_SetCB(DMX_CB_FN fn);
185 MS_BOOL _MDrv_DMX_TTX_PacketBufferIsEmpty(void);
186 MS_BOOL _MDrv_DMX_TTX_GetPackets(MS_PHY dataAddr, MS_U32 *length);
187 MS_BOOL _MDrv_DMX_TTX_GetPacket(MS_PHY *packetAddress);
188 MS_BOOL _MDrv_DMX_TTX_PacketBufferIsOverflow( void );
189 MS_U16  _MDrv_DMX_TTX_PacketBufferGetNoOfOverflows( void );
190 MS_BOOL _MDrv_DMX_TTX_Suspend(void);
191 MS_BOOL _MDrv_DMX_TTX_Resume(void);
192 MS_U32  _MDrv_DMX_TTX_SetPowerState(EN_POWER_MODE u16PowerState);
193 
194 //---------------------------------------------------------------------------------------
195 
196 void   VBIRegisterToUtopia(FUtopiaOpen ModuleType);
197 MS_U32 VBIOpen(void** ppInstance, const void* const pAttribute);
198 MS_U32 VBIClose(void* pInstance);
199 MS_U32 VBIIoctl(void* pInstance, MS_U32 u32Cmd, void* pArgs);
200 MS_U32 VBIStr(MS_U32 u32PowerState, void* pModule);
201 #ifdef CONFIG_UTOPIA_PROC_DBG_SUPPORT
202 MS_U32 VBIMdbIoctl(MS_U32 cmd, const void* const pArgs);
203 #endif
204 #endif //__VBI_PRIVATE_H__
205