1*53ee8cc1Swenshuai.xi #include "MsTypes.h"
2*53ee8cc1Swenshuai.xi #if defined(MSOS_TYPE_LINUX_KERNEL)
3*53ee8cc1Swenshuai.xi #include <linux/slab.h>
4*53ee8cc1Swenshuai.xi #include <linux/string.h>
5*53ee8cc1Swenshuai.xi #else
6*53ee8cc1Swenshuai.xi #include <stdio.h>
7*53ee8cc1Swenshuai.xi #include <string.h>
8*53ee8cc1Swenshuai.xi #endif
9*53ee8cc1Swenshuai.xi #include "drvVBI_v2.h"
10*53ee8cc1Swenshuai.xi #include "drvVBI_private.h"
11*53ee8cc1Swenshuai.xi #include "utopia_dapi.h"
12*53ee8cc1Swenshuai.xi #include "drvVBI.h"
13*53ee8cc1Swenshuai.xi #include "drvDMX_TTX.h"
14*53ee8cc1Swenshuai.xi #include "MsOS.h"
15*53ee8cc1Swenshuai.xi #include "utopia.h"
16*53ee8cc1Swenshuai.xi #include "ULog.h"
17*53ee8cc1Swenshuai.xi #define VBI_DEBUG 0
18*53ee8cc1Swenshuai.xi
19*53ee8cc1Swenshuai.xi #if (VBI_DEBUG == 1)
20*53ee8cc1Swenshuai.xi #define VBI_DEBUG_MSG(x) x
21*53ee8cc1Swenshuai.xi #else
22*53ee8cc1Swenshuai.xi #define VBI_DEBUG_MSG(x)
23*53ee8cc1Swenshuai.xi #endif
24*53ee8cc1Swenshuai.xi
25*53ee8cc1Swenshuai.xi
VBIRegisterToUtopia(FUtopiaOpen ModuleType)26*53ee8cc1Swenshuai.xi void VBIRegisterToUtopia(FUtopiaOpen ModuleType)
27*53ee8cc1Swenshuai.xi {
28*53ee8cc1Swenshuai.xi void* pUtopiaModule = NULL;
29*53ee8cc1Swenshuai.xi
30*53ee8cc1Swenshuai.xi VBI_DEBUG_MSG(ULOGD("VBI", "\n[VBI INFO] vbi register start\n"));
31*53ee8cc1Swenshuai.xi
32*53ee8cc1Swenshuai.xi // 1. deal with module
33*53ee8cc1Swenshuai.xi UtopiaModuleCreate(MODULE_VBI, 8, &pUtopiaModule);
34*53ee8cc1Swenshuai.xi UtopiaModuleRegister(pUtopiaModule);
35*53ee8cc1Swenshuai.xi UtopiaModuleSetupFunctionPtr(pUtopiaModule, (FUtopiaOpen)VBIOpen, (FUtopiaClose)VBIClose, (FUtopiaIOctl)VBIIoctl);
36*53ee8cc1Swenshuai.xi #ifdef CONFIG_UTOPIA_PROC_DBG_SUPPORT
37*53ee8cc1Swenshuai.xi UtopiaModuleRegisterMdbNode("vbi", (FUtopiaMdbIoctl)VBIMdbIoctl);
38*53ee8cc1Swenshuai.xi #endif
39*53ee8cc1Swenshuai.xi #if defined(MSOS_TYPE_LINUX_KERNEL)
40*53ee8cc1Swenshuai.xi UtopiaModuleSetupSTRFunctionPtr(pUtopiaModule,(FUtopiaSTR)VBIStr);
41*53ee8cc1Swenshuai.xi UtopiaModuleSetSTRPrivate(pUtopiaModule, sizeof(VBI_INSTANT_PRIVATE));
42*53ee8cc1Swenshuai.xi #endif
43*53ee8cc1Swenshuai.xi
44*53ee8cc1Swenshuai.xi // 2. deal with resource (2 resources for DTV & ATV)
45*53ee8cc1Swenshuai.xi void* psResource = NULL;
46*53ee8cc1Swenshuai.xi UtopiaModuleAddResourceStart(pUtopiaModule, VBI_POOL_ID_VBI0);
47*53ee8cc1Swenshuai.xi UtopiaResourceCreate("VBI0", sizeof(VBI_RESOURCE_PRIVATE), &psResource);
48*53ee8cc1Swenshuai.xi UtopiaResourceRegister(pUtopiaModule, psResource, VBI_POOL_ID_VBI0);
49*53ee8cc1Swenshuai.xi UtopiaModuleAddResourceEnd(pUtopiaModule, VBI_POOL_ID_VBI0);
50*53ee8cc1Swenshuai.xi
51*53ee8cc1Swenshuai.xi psResource = NULL;
52*53ee8cc1Swenshuai.xi UtopiaModuleAddResourceStart(pUtopiaModule, VBI_POOL_ID_VBI1);
53*53ee8cc1Swenshuai.xi UtopiaResourceCreate("VBI1", sizeof(VBI_RESOURCE_PRIVATE), &psResource);
54*53ee8cc1Swenshuai.xi UtopiaResourceRegister(pUtopiaModule, psResource, VBI_POOL_ID_VBI1);
55*53ee8cc1Swenshuai.xi UtopiaModuleAddResourceEnd(pUtopiaModule, VBI_POOL_ID_VBI1);
56*53ee8cc1Swenshuai.xi
57*53ee8cc1Swenshuai.xi }
58*53ee8cc1Swenshuai.xi
59*53ee8cc1Swenshuai.xi #ifdef CONFIG_UTOPIA_PROC_DBG_SUPPORT
VBIMdbIoctl(MS_U32 cmd,const void * const pArgs)60*53ee8cc1Swenshuai.xi MS_U32 VBIMdbIoctl(MS_U32 cmd, const void* const pArgs)
61*53ee8cc1Swenshuai.xi {
62*53ee8cc1Swenshuai.xi MDBCMD_CMDLINE_PARAMETER *paraCmdLine;
63*53ee8cc1Swenshuai.xi MDBCMD_GETINFO_PARAMETER *paraGetInfo;
64*53ee8cc1Swenshuai.xi VBI_DrvStatus _vbiStatus;
65*53ee8cc1Swenshuai.xi switch(cmd)
66*53ee8cc1Swenshuai.xi {
67*53ee8cc1Swenshuai.xi case MDBCMD_CMDLINE:
68*53ee8cc1Swenshuai.xi paraCmdLine = (MDBCMD_CMDLINE_PARAMETER *)pArgs;
69*53ee8cc1Swenshuai.xi paraCmdLine->result = MDBRESULT_SUCCESS_FIN;
70*53ee8cc1Swenshuai.xi break;
71*53ee8cc1Swenshuai.xi case MDBCMD_GETINFO:
72*53ee8cc1Swenshuai.xi paraGetInfo = (MDBCMD_GETINFO_PARAMETER *)pArgs;
73*53ee8cc1Swenshuai.xi MdbPrint(paraGetInfo->u64ReqHdl,"---------MStar vbi state---------\n");
74*53ee8cc1Swenshuai.xi if(FALSE == MDrv_VBI_GetStatus(&_vbiStatus))
75*53ee8cc1Swenshuai.xi {
76*53ee8cc1Swenshuai.xi MdbPrint(paraGetInfo->u64ReqHdl,"Not Initialized\n", _vbiStatus.eInitType);
77*53ee8cc1Swenshuai.xi }
78*53ee8cc1Swenshuai.xi else
79*53ee8cc1Swenshuai.xi {
80*53ee8cc1Swenshuai.xi switch(_vbiStatus.eInitType)
81*53ee8cc1Swenshuai.xi {
82*53ee8cc1Swenshuai.xi case E_VBI_TELETEXT:
83*53ee8cc1Swenshuai.xi MdbPrint(paraGetInfo->u64ReqHdl,"state : TTX\n");
84*53ee8cc1Swenshuai.xi MdbPrint(paraGetInfo->u64ReqHdl,"pktcnt : %d\n", MDrv_VBI_TTX_GetPacketCount());
85*53ee8cc1Swenshuai.xi break;
86*53ee8cc1Swenshuai.xi case E_VBI_CC:
87*53ee8cc1Swenshuai.xi MdbPrint(paraGetInfo->u64ReqHdl,"state : CC\n");
88*53ee8cc1Swenshuai.xi MdbPrint(paraGetInfo->u64ReqHdl,"pktcnt : %d\n", MDrv_VBI_CC_GetInfo(VBI_CC_PACKET_COUNT));
89*53ee8cc1Swenshuai.xi break;
90*53ee8cc1Swenshuai.xi case E_VBI_WSS:
91*53ee8cc1Swenshuai.xi MdbPrint(paraGetInfo->u64ReqHdl,"state : WSS\n");
92*53ee8cc1Swenshuai.xi break;
93*53ee8cc1Swenshuai.xi default:
94*53ee8cc1Swenshuai.xi break;
95*53ee8cc1Swenshuai.xi }
96*53ee8cc1Swenshuai.xi }
97*53ee8cc1Swenshuai.xi paraGetInfo->result = MDBRESULT_SUCCESS_FIN;
98*53ee8cc1Swenshuai.xi break;
99*53ee8cc1Swenshuai.xi default:
100*53ee8cc1Swenshuai.xi break;
101*53ee8cc1Swenshuai.xi }
102*53ee8cc1Swenshuai.xi return 0;
103*53ee8cc1Swenshuai.xi }
104*53ee8cc1Swenshuai.xi #endif
105*53ee8cc1Swenshuai.xi
106*53ee8cc1Swenshuai.xi #if defined(MSOS_TYPE_LINUX_KERNEL)
VBIStr(MS_U32 u32PowerState,void * pModule)107*53ee8cc1Swenshuai.xi MS_U32 VBIStr(MS_U32 u32PowerState, void* pModule)
108*53ee8cc1Swenshuai.xi {
109*53ee8cc1Swenshuai.xi MS_U32 u32Return = UTOPIA_STATUS_FAIL;
110*53ee8cc1Swenshuai.xi
111*53ee8cc1Swenshuai.xi if ((u32PowerState == E_POWER_SUSPEND) || (u32PowerState == E_POWER_RESUME))
112*53ee8cc1Swenshuai.xi {
113*53ee8cc1Swenshuai.xi u32Return = _MDrv_VBI_SetPowerState(u32PowerState);
114*53ee8cc1Swenshuai.xi }
115*53ee8cc1Swenshuai.xi else
116*53ee8cc1Swenshuai.xi {
117*53ee8cc1Swenshuai.xi u32Return = UTOPIA_STATUS_FAIL;
118*53ee8cc1Swenshuai.xi }
119*53ee8cc1Swenshuai.xi return u32Return;// for success
120*53ee8cc1Swenshuai.xi }
121*53ee8cc1Swenshuai.xi #endif
122*53ee8cc1Swenshuai.xi
VBIOpen(void ** ppInstance,const void * const pAttribute)123*53ee8cc1Swenshuai.xi MS_U32 VBIOpen(void** ppInstance, const void* const pAttribute)
124*53ee8cc1Swenshuai.xi {
125*53ee8cc1Swenshuai.xi VBI_DEBUG_MSG(ULOGD("VBI", "\n[VBI INFO] vbi open start\n"));
126*53ee8cc1Swenshuai.xi
127*53ee8cc1Swenshuai.xi VBI_INSTANT_PRIVATE *pVbiPri = NULL;
128*53ee8cc1Swenshuai.xi void *pVbiPriVoid = NULL;
129*53ee8cc1Swenshuai.xi //UTOPIA_TRACE(MS_UTOPIA_DB_LEVEL_TRACE,ULOGD("VBI", "enter %s %d\n",__FUNCTION__,__LINE__));
130*53ee8cc1Swenshuai.xi
131*53ee8cc1Swenshuai.xi UtopiaInstanceCreate(sizeof(VBI_INSTANT_PRIVATE), ppInstance);
132*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(*ppInstance, &pVbiPriVoid);
133*53ee8cc1Swenshuai.xi
134*53ee8cc1Swenshuai.xi pVbiPri = (VBI_INSTANT_PRIVATE*)pVbiPriVoid;
135*53ee8cc1Swenshuai.xi // For ATV
136*53ee8cc1Swenshuai.xi pVbiPri->fpVBIGetLibVer = (IOCTL_VBI_GETLIBVER )MDrv_VBI_GetLibVer;
137*53ee8cc1Swenshuai.xi pVbiPri->fpVBIGetInfo = (IOCTL_VBI_GETINFO )MDrv_VBI_GetInfo;
138*53ee8cc1Swenshuai.xi pVbiPri->fpVBIGetStatus = (IOCTL_VBI_GETSTATUS )_MDrv_VBI_GetStatus;
139*53ee8cc1Swenshuai.xi pVbiPri->fpVBISetDbgLevel = (IOCTL_VBI_SET_DBGLEVEL )MDrv_VBI_SetDbgLevel;
140*53ee8cc1Swenshuai.xi pVbiPri->fpVBIInit = (IOCTL_VBI_INIT )_MDrv_VBI_Init;
141*53ee8cc1Swenshuai.xi pVbiPri->fpVBIExit = (IOCTL_VBI_EXIT )_MDrv_VBI_Exit;
142*53ee8cc1Swenshuai.xi pVbiPri->fpVBIRegisterCB = (IOCTL_VBI_REGISTERCB )_MDrv_VBI_RegisterCB;
143*53ee8cc1Swenshuai.xi pVbiPri->fpVBIRingBufferReset = (IOCTL_VBI_RINGBUFFER_RESET )_MDrv_VBI_RingBuffer_Reset;
144*53ee8cc1Swenshuai.xi pVbiPri->fpVBIInitializeTTXSlicer = (IOCTL_VBI_INITIALIZETTXSLICER )_MDrv_VBI_InitializeTTXSlicer;
145*53ee8cc1Swenshuai.xi pVbiPri->fpVBIEnableTTXSlicer = (IOCTL_VBI_ENABLETTXSLICER )_MDrv_VBI_EnableTTXSlicer;
146*53ee8cc1Swenshuai.xi pVbiPri->fpVBIIsVPSReady = (IOCTL_VBI_ISVPS_READY )_MDrv_VBI_IsVPS_Ready;
147*53ee8cc1Swenshuai.xi pVbiPri->fpVBIIsTTXReady = (IOCTL_VBI_ISTTX_READY )_MDrv_VBI_IsTTX_Ready;
148*53ee8cc1Swenshuai.xi pVbiPri->fpVBIIsWSSReady = (IOCTL_VBI_ISWSS_READY )_MDrv_VBI_IsWSS_Ready;
149*53ee8cc1Swenshuai.xi pVbiPri->fpVBIGetWSSData = (IOCTL_VBI_GETWSS_DATA )_MDrv_VBI_GetWSS_Data;
150*53ee8cc1Swenshuai.xi pVbiPri->fpVBIGetVPSData = (IOCTL_VBI_GETVPS_DATA )_MDrv_VBI_GetVPS_Data;
151*53ee8cc1Swenshuai.xi pVbiPri->fpVBISetVideoStandard = (IOCTL_VBI_SETVIDEOSTANDARD )_MDrv_VBI_SetVideoStandard;
152*53ee8cc1Swenshuai.xi pVbiPri->fpVBITTXPacketBufferIsEmpty = (IOCTL_VBI_TTX_PACKETBUFFERISEMPTY )_MDrv_VBI_TTX_PacketBufferIsEmpty;
153*53ee8cc1Swenshuai.xi pVbiPri->fpVBITTXCheckCircuitReady = (IOCTL_VBI_TTX_CHECKCIRCUITREADY )_MDrv_VBI_TTX_CheckCircuitReady;
154*53ee8cc1Swenshuai.xi pVbiPri->fpVBITTXGetPacketCount = (IOCTL_VBI_TTX_GETPACKETCOUNT )_MDrv_VBI_TTX_GetPacketCount;
155*53ee8cc1Swenshuai.xi pVbiPri->fpVBITTXGetPackets = (IOCTL_VBI_TTX_GETPACKETS )_MDrv_VBI_TTX_GetPackets;
156*53ee8cc1Swenshuai.xi pVbiPri->fpVBITTXGetPacket = (IOCTL_VBI_TTX_GETPACKET )_MDrv_VBI_TTX_GetPacket;
157*53ee8cc1Swenshuai.xi pVbiPri->fpVBITTXPacktetBufferIsOverflow = (IOCTL_VBI_TTX_PACKETBUFFERISOVERFLOW )_MDrv_VBI_TTX_PacketBufferIsOverflow;
158*53ee8cc1Swenshuai.xi pVbiPri->fpVBITTXPacketBufferGetNoOfOverflows = (IOCTL_VBI_TTX_PACKETBUFFERGETNOOFOVERFLOWS)_MDrv_VBI_TTX_PacketBufferGetNoOfOverflows;
159*53ee8cc1Swenshuai.xi pVbiPri->fpVBITTXEnableLine = (IOCTL_VBI_TTX_ENABLELINE )_MDrv_VBI_TTX_EnableLine;
160*53ee8cc1Swenshuai.xi pVbiPri->fpVBISyncMemory = (IOCTL_VBI_SYNCMEMORY )_MDrv_VBI_SyncMemory;
161*53ee8cc1Swenshuai.xi pVbiPri->fpVBICCInitSlicer = (IOCTL_VBI_CC_INITSLICER )_MDrv_VBI_CC_InitSlicer;
162*53ee8cc1Swenshuai.xi pVbiPri->fpVBICCInitYPbYr = (IOCTL_VBI_CC_INITYPBYR )_MDrv_VBI_CC_InitYPbYr;
163*53ee8cc1Swenshuai.xi pVbiPri->fpVBICCSetDataRate = (IOCTL_VBI_CC_SETDATARATE )_MDrv_VBI_CC_SetDataRate;
164*53ee8cc1Swenshuai.xi pVbiPri->fpVBICCGetInfo = (IOCTL_VBI_CC_GETINFO )_MDrv_VBI_CC_GetInfo;
165*53ee8cc1Swenshuai.xi pVbiPri->fpVBICCSetFrameCnt = (IOCTL_VBI_CC_SETFRAMECNT )_MDrv_VBI_CC_SetFrameCnt;
166*53ee8cc1Swenshuai.xi pVbiPri->fpVBICCEnableSlicer = (IOCTL_VBI_CC_ENABLESLICER )_MDrv_VBI_CC_EnableSlicer;
167*53ee8cc1Swenshuai.xi pVbiPri->fpVBICCEnableLine = (IOCTL_VBI_CC_ENABLELINE )_MDrv_VBI_CC_EnableLine;
168*53ee8cc1Swenshuai.xi pVbiPri->fpVBICCSetSCWindowLen = (IOCTL_VBI_CC_SETSCWINDOWLEN )_MDrv_VBI_CC_SetSCWindowLen;
169*53ee8cc1Swenshuai.xi pVbiPri->fpVBICCSetVideoStandard = (IOCTL_VBI_CC_SETVIDEOSTANDARD )_MDrv_VBI_CC_SetStandard;
170*53ee8cc1Swenshuai.xi pVbiPri->fpVBIWSSSetVpsByteNum = (IOCTL_VBI_WSS_SETVPSBYTENUM )_MDrv_VBI_WSS_SetVpsByteNum;
171*53ee8cc1Swenshuai.xi pVbiPri->fpVBISuspend = (IOCTL_VBI_SUSPEND )_MDrv_VBI_Suspend;
172*53ee8cc1Swenshuai.xi pVbiPri->fpVBIResume = (IOCTL_VBI_RESUME )_MDrv_VBI_Resume;
173*53ee8cc1Swenshuai.xi pVbiPri->fpVBISetPowerState = (IOCTL_VBI_SETPOWERSTATE )_MDrv_VBI_SetPowerState;
174*53ee8cc1Swenshuai.xi
175*53ee8cc1Swenshuai.xi // For DTV
176*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXRingBufferReset = (IOCTL_DMX_TTX_RINGBUFFER_RESET )_MDrv_DMX_TTX_RingBuffer_Reset;
177*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXInit = (IOCTL_DMX_TTX_INIT )_MDrv_DMX_TTX_Init;
178*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXExit = (IOCTL_DMX_TTX_EXIT )_MDrv_DMX_TTX_Exit;
179*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXSetFilterID = (IOCTL_DMX_TTX_SETFILTERID )_MDrv_DMX_TTX_SetFilterID;
180*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXSetCB = (IOCTL_DMX_TTX_SETCB )_MDrv_DMX_TTX_SetCB;
181*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXPacketBufferIsEmpty = (IOCTL_DMX_TTX_PACKETBUFFERISEMPTY )_MDrv_DMX_TTX_PacketBufferIsEmpty;
182*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXGetPackets = (IOCTL_DMX_TTX_GETPACKETS )_MDrv_DMX_TTX_GetPackets;
183*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXGetPacket = (IOCTL_DMX_TTX_GETPACKET )_MDrv_DMX_TTX_GetPacket;
184*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXPacketBufferIsOverflow = (IOCTL_DMX_TTX_PACKETBUFFERISOVERFLOW )_MDrv_DMX_TTX_PacketBufferIsOverflow;
185*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXPacketBufferGetNoOfOverflows = (IOCTL_DMX_TTX_PACKETBUFFERGETNOOFOVERFLOWS)_MDrv_DMX_TTX_PacketBufferGetNoOfOverflows;
186*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXSuspend = (IOCTL_DMX_TTX_SUSPEND )_MDrv_DMX_TTX_Suspend;
187*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXResume = (IOCTL_DMX_TTX_RESUME )_MDrv_DMX_TTX_Resume;
188*53ee8cc1Swenshuai.xi pVbiPri->fpDMXTTXSetPowerState = (IOCTL_DMX_TTX_SETPOWERSTATE )_MDrv_DMX_TTX_SetPowerState;
189*53ee8cc1Swenshuai.xi
190*53ee8cc1Swenshuai.xi return UTOPIA_STATUS_SUCCESS;
191*53ee8cc1Swenshuai.xi }
192*53ee8cc1Swenshuai.xi
VBIIoctl(void * pInstance,MS_U32 u32Cmd,void * pArgs)193*53ee8cc1Swenshuai.xi MS_U32 VBIIoctl(void* pInstance, MS_U32 u32Cmd, void* pArgs)
194*53ee8cc1Swenshuai.xi {
195*53ee8cc1Swenshuai.xi //UTOPIA_TRACE(MS_UTOPIA_DB_LEVEL_TRACE,ULOGD("VBI", "enter %s %d\n",__FUNCTION__,__LINE__));
196*53ee8cc1Swenshuai.xi VBI_DEBUG_MSG(ULOGD("VBI", "\n[VBI INFO] vbi ioctl cmd = %ld\n",u32Cmd));
197*53ee8cc1Swenshuai.xi MS_U32 u32Ret = UTOPIA_STATUS_FAIL;
198*53ee8cc1Swenshuai.xi VBI_INSTANT_PRIVATE* psVbiInstPri = NULL;
199*53ee8cc1Swenshuai.xi void* pModule = NULL;
200*53ee8cc1Swenshuai.xi void* pResource_atv = NULL;
201*53ee8cc1Swenshuai.xi void* pResource_dtv = NULL;
202*53ee8cc1Swenshuai.xi
203*53ee8cc1Swenshuai.xi UtopiaInstanceGetModule(pInstance, &pModule);
204*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&psVbiInstPri); // Get instance
205*53ee8cc1Swenshuai.xi
206*53ee8cc1Swenshuai.xi PVBI_GETLIBVER pGetLibVer = NULL;
207*53ee8cc1Swenshuai.xi PVBI_GETINFO_PARAM pGetInfoParam = NULL;
208*53ee8cc1Swenshuai.xi PVBI_GETSTATUS pGetStatus = NULL;
209*53ee8cc1Swenshuai.xi PVBI_SETDBGLEVEL pSetDbgLevel = NULL;
210*53ee8cc1Swenshuai.xi PVBI_INIT_TYPE pInitType = NULL;
211*53ee8cc1Swenshuai.xi PVBI_REGISTER_CB pRegisterCB = NULL;
212*53ee8cc1Swenshuai.xi PVBI_INITIALIZER_TTX_SLICER pInitializerTTXSlicer = NULL;
213*53ee8cc1Swenshuai.xi PVBI_ENABLE_TTX_SLICER pEnableTTXSlicer = NULL;
214*53ee8cc1Swenshuai.xi PVBI_GET_VPS_DATA pGetVPSData = NULL;
215*53ee8cc1Swenshuai.xi PVBI_SET_VIDEO_STANDARD pSetVideoStandard = NULL;
216*53ee8cc1Swenshuai.xi PVBI_TTX_GET_PACKETS pGetPackets = NULL;
217*53ee8cc1Swenshuai.xi PVBI_TTX_GET_PACKET pGetPacket = NULL;
218*53ee8cc1Swenshuai.xi PVBI_TTX_ENABLE_LINE pEnableLine = NULL;
219*53ee8cc1Swenshuai.xi PVBI_SYNC_MEMORY pSyncMemory = NULL;
220*53ee8cc1Swenshuai.xi PVBI_CC_INIT_SLICER pCCInitSlicer = NULL;
221*53ee8cc1Swenshuai.xi PVBI_CC_INIT_YPBYR pCCInitYPbYr = NULL;
222*53ee8cc1Swenshuai.xi PVBI_CC_SETDATARATE pCCSetDataRate = NULL;
223*53ee8cc1Swenshuai.xi PVBI_CC_GETINFO pGetInfo = NULL;
224*53ee8cc1Swenshuai.xi PVBI_CC_SET_FRAMECNT pCCSetFrameCnt = NULL;
225*53ee8cc1Swenshuai.xi PVBI_CC_ENABLE_SLICER pCCEnableSlicer = NULL;
226*53ee8cc1Swenshuai.xi PVBI_CC_ENABLE_LINE pCCEnableLine = NULL;
227*53ee8cc1Swenshuai.xi PVBI_CC_SET_SC_WND_LEN pCCSetWndLen = NULL;
228*53ee8cc1Swenshuai.xi PVBI_VBI_WSS_VPSBYTENUM pWSSSetVpsByteCnt = NULL;
229*53ee8cc1Swenshuai.xi PVBI_GET_RAW_VPS_DATA pGetRawVPSData = NULL;
230*53ee8cc1Swenshuai.xi PDMX_TTX_SET_FILTERID pDMXSetFilterID = NULL;
231*53ee8cc1Swenshuai.xi PDMX_TTX_SET_CB pDMXSetCB = NULL;
232*53ee8cc1Swenshuai.xi
233*53ee8cc1Swenshuai.xi PVBI_CMD pVbiCmd = NULL;
234*53ee8cc1Swenshuai.xi PDMX_TTX_CMD pDmxTtxCmd = NULL;
235*53ee8cc1Swenshuai.xi
236*53ee8cc1Swenshuai.xi PVBI_GET_DATA pGetData = NULL;
237*53ee8cc1Swenshuai.xi PVBI_BOOL pCheckTureFalse = NULL;
238*53ee8cc1Swenshuai.xi PVBI_GET_RESULT pGetResult = NULL;
239*53ee8cc1Swenshuai.xi PVBI_PROTECT_MEMORY pProtectMemory = NULL;
240*53ee8cc1Swenshuai.xi
241*53ee8cc1Swenshuai.xi VBI_DrvInfo *pVBIInfo;
242*53ee8cc1Swenshuai.xi
243*53ee8cc1Swenshuai.xi if(u32Cmd <= MDrv_CMD_VBI_WSS_SetVpsByteNum || u32Cmd == MDrv_CMD_VBI_Exit)
244*53ee8cc1Swenshuai.xi {
245*53ee8cc1Swenshuai.xi if(UtopiaResourceObtain(pModule, VBI_POOL_ID_VBI0, &pResource_atv) == UTOPIA_STATUS_FAIL)
246*53ee8cc1Swenshuai.xi {
247*53ee8cc1Swenshuai.xi return UTOPIA_STATUS_ERR_RESOURCE;
248*53ee8cc1Swenshuai.xi }
249*53ee8cc1Swenshuai.xi }
250*53ee8cc1Swenshuai.xi else
251*53ee8cc1Swenshuai.xi {
252*53ee8cc1Swenshuai.xi if(UtopiaResourceObtain(pModule, VBI_POOL_ID_VBI1, &pResource_dtv) == UTOPIA_STATUS_FAIL)
253*53ee8cc1Swenshuai.xi {
254*53ee8cc1Swenshuai.xi return UTOPIA_STATUS_ERR_RESOURCE;
255*53ee8cc1Swenshuai.xi }
256*53ee8cc1Swenshuai.xi }
257*53ee8cc1Swenshuai.xi
258*53ee8cc1Swenshuai.xi switch(u32Cmd)
259*53ee8cc1Swenshuai.xi {
260*53ee8cc1Swenshuai.xi //=============================================
261*53ee8cc1Swenshuai.xi // ATV - TTX, CC
262*53ee8cc1Swenshuai.xi //=============================================
263*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_GetLibVer:
264*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_GetLibVer\n");
265*53ee8cc1Swenshuai.xi pGetLibVer = (PVBI_GETLIBVER)pArgs;
266*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpVBIGetLibVer(pGetLibVer->ppVersion) == TRUE)
267*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
268*53ee8cc1Swenshuai.xi break;
269*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_GetInfo:
270*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_GetInfo\n");
271*53ee8cc1Swenshuai.xi pGetInfoParam = (PVBI_GETINFO_PARAM)pArgs;
272*53ee8cc1Swenshuai.xi pVBIInfo = psVbiInstPri->fpVBIGetInfo();
273*53ee8cc1Swenshuai.xi memcpy (pGetInfoParam,pVBIInfo,sizeof(VBI_DrvInfo));
274*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
275*53ee8cc1Swenshuai.xi break;
276*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_GetStatus:
277*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_GetStatus\n");
278*53ee8cc1Swenshuai.xi pGetStatus = (PVBI_GETSTATUS)pArgs;
279*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpVBIGetStatus(pGetStatus->pDrvStatus) == TRUE)
280*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
281*53ee8cc1Swenshuai.xi break;
282*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_SetDbgLevel:
283*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_SetDbgLevel\n");
284*53ee8cc1Swenshuai.xi pSetDbgLevel = (PVBI_SETDBGLEVEL)pArgs;
285*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpVBISetDbgLevel(pSetDbgLevel->u16DbgSwitch) == TRUE)
286*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
287*53ee8cc1Swenshuai.xi break;
288*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_Init:
289*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_Init\n");
290*53ee8cc1Swenshuai.xi pInitType = (PVBI_INIT_TYPE)pArgs;
291*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpVBIInit(pInitType->cmd, pInitType->type) == TRUE)
292*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
293*53ee8cc1Swenshuai.xi break;
294*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_RegisterCB:
295*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_RegisterCB\n");
296*53ee8cc1Swenshuai.xi pRegisterCB = (PVBI_REGISTER_CB)pArgs;
297*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBIRegisterCB(pRegisterCB->pFN,
298*53ee8cc1Swenshuai.xi pRegisterCB->bufferAddr,
299*53ee8cc1Swenshuai.xi pRegisterCB->length);
300*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
301*53ee8cc1Swenshuai.xi break;
302*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_RingBuffer_Reset:
303*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_RingBuffer_Reset\n");
304*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBIRingBufferReset();
305*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
306*53ee8cc1Swenshuai.xi break;
307*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_InitializeTTXSlicer:
308*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_InitializeTTXSlicer\n");
309*53ee8cc1Swenshuai.xi pInitializerTTXSlicer = (PVBI_INITIALIZER_TTX_SLICER)pArgs;
310*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBIInitializeTTXSlicer(pInitializerTTXSlicer->bufferAddr,
311*53ee8cc1Swenshuai.xi pInitializerTTXSlicer->packetCount);
312*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
313*53ee8cc1Swenshuai.xi break;
314*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_EnableTTXSlicer:
315*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_EnableTTXSlicer\n");
316*53ee8cc1Swenshuai.xi pEnableTTXSlicer = (PVBI_ENABLE_TTX_SLICER)pArgs;
317*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBIEnableTTXSlicer(pEnableTTXSlicer->bEnable);
318*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
319*53ee8cc1Swenshuai.xi break;
320*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_IsVPS_Ready:
321*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_IsVPS_Ready\n");
322*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
323*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck = psVbiInstPri->fpVBIIsVPSReady();
324*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
325*53ee8cc1Swenshuai.xi break;
326*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_IsTTX_Ready:
327*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_IsTTX_Ready\n");
328*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
329*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck = psVbiInstPri->fpVBIIsTTXReady();
330*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
331*53ee8cc1Swenshuai.xi break;
332*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_IsWSS_Ready:
333*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_IsWSS_Ready\n");
334*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
335*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck = psVbiInstPri->fpVBIIsWSSReady();
336*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
337*53ee8cc1Swenshuai.xi break;
338*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_GetWSS_Data:
339*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_GetWSS_Data\n");
340*53ee8cc1Swenshuai.xi pGetData = (PVBI_GET_DATA)pArgs;
341*53ee8cc1Swenshuai.xi pGetData->u16data = psVbiInstPri->fpVBIGetWSSData();
342*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
343*53ee8cc1Swenshuai.xi break;
344*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_GetVPS_Data:
345*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_GetVPS_Data\n");
346*53ee8cc1Swenshuai.xi pGetVPSData = (PVBI_GET_VPS_DATA)pArgs;
347*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBIGetVPSData(pGetVPSData->lowerWord, pGetVPSData->higherWord);
348*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
349*53ee8cc1Swenshuai.xi break;
350*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_GetRawVPS_Data:
351*53ee8cc1Swenshuai.xi //printf("VBIIoctl - MDrv_CMD_VBI_GetVPS_Data\n");
352*53ee8cc1Swenshuai.xi pGetRawVPSData = (PVBI_GET_RAW_VPS_DATA)pArgs;
353*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBIGetRawVPSData(&pGetRawVPSData->byte0, &pGetRawVPSData->byte1, &pGetRawVPSData->byte2, &pGetRawVPSData->byte3);
354*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
355*53ee8cc1Swenshuai.xi break;
356*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_SetVideoStandard:
357*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_SetVideoStandard\n");
358*53ee8cc1Swenshuai.xi pSetVideoStandard = (PVBI_SET_VIDEO_STANDARD)pArgs;
359*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBISetVideoStandard(pSetVideoStandard->eStandard);
360*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
361*53ee8cc1Swenshuai.xi break;
362*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_TTX_PacketBufferIsEmpty:
363*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_TTX_PacketBufferIsEmpty\n");
364*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
365*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck= psVbiInstPri->fpVBITTXPacketBufferIsEmpty();
366*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
367*53ee8cc1Swenshuai.xi break;
368*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_TTX_CheckCircuitReady:
369*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_TTX_CheckCircuitReady\n");
370*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
371*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck = psVbiInstPri->fpVBITTXCheckCircuitReady();
372*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
373*53ee8cc1Swenshuai.xi break;
374*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_TTX_GetPacketCount:
375*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_TTX_GetPacketCount\n");
376*53ee8cc1Swenshuai.xi pGetData = (PVBI_GET_DATA)pArgs;
377*53ee8cc1Swenshuai.xi pGetData->u16data = psVbiInstPri->fpVBITTXGetPacketCount();
378*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
379*53ee8cc1Swenshuai.xi break;
380*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_TTX_GetPackets:
381*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_TTX_GetPackets\n");
382*53ee8cc1Swenshuai.xi pGetPackets = (PVBI_TTX_GET_PACKETS)pArgs;
383*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpVBITTXGetPackets(pGetPackets->dataAddr, pGetPackets->length) == TRUE)
384*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
385*53ee8cc1Swenshuai.xi break;
386*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_TTX_GetPacket:
387*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_TTX_GetPacket\n");
388*53ee8cc1Swenshuai.xi pGetPacket = (PVBI_TTX_GET_PACKET)pArgs;
389*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpVBITTXGetPacket(pGetPacket->packetAddress) == TRUE)
390*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
391*53ee8cc1Swenshuai.xi break;
392*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_TTX_PacketBufferIsOverflow:
393*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_TTX_PacketBufferIsOverflow\n");
394*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
395*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck = psVbiInstPri->fpVBITTXPacktetBufferIsOverflow();
396*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
397*53ee8cc1Swenshuai.xi break;
398*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_TTX_PacketBufferGetNoOfOverflows:
399*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_TTX_PacketBufferGetNoOfOverflows\n");
400*53ee8cc1Swenshuai.xi pGetData = (PVBI_GET_DATA)pArgs;
401*53ee8cc1Swenshuai.xi pGetData->u16data = psVbiInstPri->fpVBITTXPacketBufferGetNoOfOverflows();
402*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
403*53ee8cc1Swenshuai.xi break;
404*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_TTX_EnableLine:
405*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_TTX_EnableLine\n");
406*53ee8cc1Swenshuai.xi pEnableLine = (PVBI_TTX_ENABLE_LINE)pArgs;
407*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBITTXEnableLine(pEnableLine->StartLine,
408*53ee8cc1Swenshuai.xi pEnableLine->EndLine);
409*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
410*53ee8cc1Swenshuai.xi break;
411*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_SyncMemory:
412*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_SyncMemory\n");
413*53ee8cc1Swenshuai.xi pSyncMemory = (PVBI_SYNC_MEMORY)pArgs;
414*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpVBISyncMemory(pSyncMemory->u32Start, pSyncMemory->u32Size) == TRUE)
415*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
416*53ee8cc1Swenshuai.xi break;
417*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_CC_InitSlicer:
418*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_CC_InitSlicer\n");
419*53ee8cc1Swenshuai.xi pCCInitSlicer = (PVBI_CC_INIT_SLICER)pArgs;
420*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBICCInitSlicer(pCCInitSlicer->u32RiuAddr,
421*53ee8cc1Swenshuai.xi pCCInitSlicer->bufferAddr,
422*53ee8cc1Swenshuai.xi pCCInitSlicer->packetCount);
423*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
424*53ee8cc1Swenshuai.xi break;
425*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_CC_InitYPbYr:
426*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_CC_InitYPbYr\n");
427*53ee8cc1Swenshuai.xi pCCInitYPbYr = (PVBI_CC_INIT_YPBYR)pArgs;
428*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBICCInitYPbYr(pCCInitYPbYr->cvbs_no);
429*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
430*53ee8cc1Swenshuai.xi break;
431*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_CC_SetDataRate:
432*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_CC_SetDataRate\n");
433*53ee8cc1Swenshuai.xi pCCSetDataRate = (PVBI_CC_SETDATARATE)pArgs;
434*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpVBICCSetDataRate(pCCSetDataRate->ptable) == TRUE)
435*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
436*53ee8cc1Swenshuai.xi break;
437*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_CC_GetInfo:
438*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_CC_GetInfo\n");
439*53ee8cc1Swenshuai.xi pGetInfo = (PVBI_CC_GETINFO)pArgs;
440*53ee8cc1Swenshuai.xi pGetInfo->info = psVbiInstPri->fpVBICCGetInfo(pGetInfo->selector);
441*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
442*53ee8cc1Swenshuai.xi break;
443*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_CC_SetFrameCnt:
444*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_CC_SetFrameCnt\n");
445*53ee8cc1Swenshuai.xi pCCSetFrameCnt = (PVBI_CC_SET_FRAMECNT)pArgs;
446*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBICCSetFrameCnt(pCCSetFrameCnt->cnt);
447*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
448*53ee8cc1Swenshuai.xi break;
449*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_CC_EnableSlicer:
450*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_CC_EnableSlicer\n");
451*53ee8cc1Swenshuai.xi pCCEnableSlicer = (PVBI_CC_ENABLE_SLICER)pArgs;
452*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBICCEnableSlicer(pCCEnableSlicer->bEnable);
453*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
454*53ee8cc1Swenshuai.xi break;
455*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_CC_EnableLine:
456*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_CC_EnableLine\n");
457*53ee8cc1Swenshuai.xi pCCEnableLine = (PVBI_CC_ENABLE_LINE)pArgs;
458*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBICCEnableLine(pCCEnableLine->StartLine,
459*53ee8cc1Swenshuai.xi pCCEnableLine->EndLine,
460*53ee8cc1Swenshuai.xi pCCEnableLine->mode);
461*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
462*53ee8cc1Swenshuai.xi break;
463*53ee8cc1Swenshuai.xi
464*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_CC_SetSCWindowLen:
465*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_CC_SetSCWindowLen\n");
466*53ee8cc1Swenshuai.xi pCCSetWndLen = (PVBI_CC_SET_SC_WND_LEN)pArgs;
467*53ee8cc1Swenshuai.xi pCCSetWndLen->bRet = psVbiInstPri->fpVBICCSetSCWindowLen(pCCSetWndLen->u8Len);
468*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
469*53ee8cc1Swenshuai.xi break;
470*53ee8cc1Swenshuai.xi
471*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_CC_SetVideoStandard:
472*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_CC_SetVideoStandard\n");
473*53ee8cc1Swenshuai.xi pSetVideoStandard = (PVBI_SET_VIDEO_STANDARD)pArgs;
474*53ee8cc1Swenshuai.xi pSetVideoStandard->bRet = psVbiInstPri->fpVBICCSetVideoStandard(pSetVideoStandard->eStandard);
475*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
476*53ee8cc1Swenshuai.xi break;
477*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_WSS_SetVpsByteNum:
478*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_WSS_SetVpsByteNum\n");
479*53ee8cc1Swenshuai.xi pWSSSetVpsByteCnt = (PVBI_VBI_WSS_VPSBYTENUM)pArgs;
480*53ee8cc1Swenshuai.xi psVbiInstPri->fpVBIWSSSetVpsByteNum(pWSSSetVpsByteCnt->cnt);
481*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
482*53ee8cc1Swenshuai.xi break;
483*53ee8cc1Swenshuai.xi
484*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_Suspend:
485*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_Suspend\n");
486*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
487*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck = psVbiInstPri->fpVBISuspend();
488*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
489*53ee8cc1Swenshuai.xi break;
490*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_Resume:
491*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_Resume\n");
492*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
493*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck = psVbiInstPri->fpVBIResume();
494*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
495*53ee8cc1Swenshuai.xi break;
496*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_SetPowerState:
497*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_SetPowerState\n");
498*53ee8cc1Swenshuai.xi pGetResult = (PVBI_GET_RESULT)pArgs;
499*53ee8cc1Swenshuai.xi pGetResult->u32result= psVbiInstPri->fpVBISetPowerState(pGetResult->u16PowerState);
500*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
501*53ee8cc1Swenshuai.xi break;
502*53ee8cc1Swenshuai.xi
503*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_ProtectMemory:
504*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_ProtectMemory\n");
505*53ee8cc1Swenshuai.xi pProtectMemory = (PVBI_PROTECT_MEMORY)pArgs;
506*53ee8cc1Swenshuai.xi pProtectMemory->bRet = psVbiInstPri->fpVBIProtectMemory(pProtectMemory->bEnable,
507*53ee8cc1Swenshuai.xi pProtectMemory->phyAddr,
508*53ee8cc1Swenshuai.xi pProtectMemory->u32Size);
509*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
510*53ee8cc1Swenshuai.xi break;
511*53ee8cc1Swenshuai.xi //=============================================
512*53ee8cc1Swenshuai.xi // DTV - TTX
513*53ee8cc1Swenshuai.xi //=============================================
514*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_RingBuffer_Reset:
515*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_RingBuffer_Reset\n");
516*53ee8cc1Swenshuai.xi psVbiInstPri->fpDMXTTXRingBufferReset();
517*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
518*53ee8cc1Swenshuai.xi break;
519*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_Init:
520*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_Init\n");
521*53ee8cc1Swenshuai.xi pInitializerTTXSlicer = (PVBI_INITIALIZER_TTX_SLICER)pArgs;
522*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpDMXTTXInit(pInitializerTTXSlicer->cmd, pInitializerTTXSlicer->bufferAddr, pInitializerTTXSlicer->packetCount) == TRUE)
523*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
524*53ee8cc1Swenshuai.xi break;
525*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_SetFilterID:
526*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_SetFilterID\n");
527*53ee8cc1Swenshuai.xi pDMXSetFilterID = (PDMX_TTX_SET_FILTERID)pArgs;
528*53ee8cc1Swenshuai.xi psVbiInstPri->fpDMXTTXSetFilterID(pDMXSetFilterID->fid);
529*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
530*53ee8cc1Swenshuai.xi break;
531*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_SetCB:
532*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_SetCB\n");
533*53ee8cc1Swenshuai.xi pDMXSetCB = (PDMX_TTX_SET_CB)pArgs;
534*53ee8cc1Swenshuai.xi psVbiInstPri->fpDMXTTXSetCB(pDMXSetCB->fn);
535*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
536*53ee8cc1Swenshuai.xi break;
537*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_PacketBufferIsEmpty:
538*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_PacketBufferIsEmpty\n");
539*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
540*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck = psVbiInstPri->fpDMXTTXPacketBufferIsEmpty();
541*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
542*53ee8cc1Swenshuai.xi break;
543*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_GetPackets:
544*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_GetPackets\n");
545*53ee8cc1Swenshuai.xi pGetPackets = (PVBI_TTX_GET_PACKETS)pArgs;
546*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpDMXTTXGetPackets(pGetPackets->dataAddr, pGetPackets->length) == TRUE)
547*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
548*53ee8cc1Swenshuai.xi break;
549*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_GetPacket:
550*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_GetPacket\n");
551*53ee8cc1Swenshuai.xi pGetPacket = (PVBI_TTX_GET_PACKET)pArgs;
552*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpDMXTTXGetPacket(pGetPacket->packetAddress) == TRUE)
553*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
554*53ee8cc1Swenshuai.xi break;
555*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_PacketBufferIsOverflow:
556*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_PacketBufferIsOverflow\n");
557*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
558*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck = psVbiInstPri->fpDMXTTXPacketBufferIsOverflow();
559*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
560*53ee8cc1Swenshuai.xi break;
561*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_PacketBufferGetNoOfOverflows:
562*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_PacketBufferGetNoOfOverflows\n");
563*53ee8cc1Swenshuai.xi pGetData = (PVBI_GET_DATA)pArgs;
564*53ee8cc1Swenshuai.xi pGetData->u16data = psVbiInstPri->fpDMXTTXPacketBufferGetNoOfOverflows();
565*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
566*53ee8cc1Swenshuai.xi break;
567*53ee8cc1Swenshuai.xi case MDrv_CMD_VBI_Exit:
568*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_VBI_Exit\n");
569*53ee8cc1Swenshuai.xi pVbiCmd = (PVBI_CMD)pArgs;
570*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpVBIExit(pVbiCmd->cmd) == TRUE)
571*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
572*53ee8cc1Swenshuai.xi break;
573*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_Exit:
574*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_Exit\n");
575*53ee8cc1Swenshuai.xi pDmxTtxCmd = (PDMX_TTX_CMD)pArgs;
576*53ee8cc1Swenshuai.xi if(psVbiInstPri->fpDMXTTXExit(pDmxTtxCmd->cmd) == TRUE)
577*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
578*53ee8cc1Swenshuai.xi break;
579*53ee8cc1Swenshuai.xi
580*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_Suspend:
581*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_Suspend\n");
582*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
583*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck = psVbiInstPri->fpDMXTTXSuspend();
584*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
585*53ee8cc1Swenshuai.xi break;
586*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_Resume:
587*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_Resume\n");
588*53ee8cc1Swenshuai.xi pCheckTureFalse = (PVBI_BOOL)pArgs;
589*53ee8cc1Swenshuai.xi pCheckTureFalse->bCheck = psVbiInstPri->fpDMXTTXResume();
590*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
591*53ee8cc1Swenshuai.xi break;
592*53ee8cc1Swenshuai.xi case MDrv_CMD_DMX_TTX_SetPowerState:
593*53ee8cc1Swenshuai.xi //ULOGD("VBI", "VBIIoctl - MDrv_CMD_DMX_TTX_SetPowerState\n");
594*53ee8cc1Swenshuai.xi pGetResult = (PVBI_GET_RESULT)pArgs;
595*53ee8cc1Swenshuai.xi pGetResult->u32result= psVbiInstPri->fpDMXTTXSetPowerState(pGetResult->u16PowerState);
596*53ee8cc1Swenshuai.xi u32Ret = UTOPIA_STATUS_SUCCESS;
597*53ee8cc1Swenshuai.xi break;
598*53ee8cc1Swenshuai.xi default:
599*53ee8cc1Swenshuai.xi break;
600*53ee8cc1Swenshuai.xi };
601*53ee8cc1Swenshuai.xi
602*53ee8cc1Swenshuai.xi if(u32Cmd <= MDrv_CMD_VBI_WSS_SetVpsByteNum || u32Cmd == MDrv_CMD_VBI_Exit )
603*53ee8cc1Swenshuai.xi {
604*53ee8cc1Swenshuai.xi UtopiaResourceRelease(pResource_atv);
605*53ee8cc1Swenshuai.xi }
606*53ee8cc1Swenshuai.xi else
607*53ee8cc1Swenshuai.xi {
608*53ee8cc1Swenshuai.xi UtopiaResourceRelease(pResource_dtv);
609*53ee8cc1Swenshuai.xi }
610*53ee8cc1Swenshuai.xi
611*53ee8cc1Swenshuai.xi //UTOPIA_TRACE(MS_UTOPIA_DB_LEVEL_TRACE,ULOGD("VBI", "leave %s %d\n",__FUNCTION__,__LINE__));
612*53ee8cc1Swenshuai.xi return u32Ret; // FIXME: error code
613*53ee8cc1Swenshuai.xi }
614*53ee8cc1Swenshuai.xi
VBIClose(void * pInstance)615*53ee8cc1Swenshuai.xi MS_U32 VBIClose(void* pInstance)
616*53ee8cc1Swenshuai.xi {
617*53ee8cc1Swenshuai.xi UtopiaInstanceDelete(pInstance);
618*53ee8cc1Swenshuai.xi return UTOPIA_STATUS_SUCCESS;
619*53ee8cc1Swenshuai.xi }
620*53ee8cc1Swenshuai.xi
621