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