xref: /utopia/UTPA2-700.0.x/modules/vd/utopia_adaption/vbi/VBI_adp.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 #include <linux/kernel.h>
2 #include <linux/string.h>
3 #include <linux/slab.h>
4 
5 #include "MsTypes.h"
6 #include "utopia.h"
7 #include "drvVBI.h"
8 #include "drvVBI_v2.h"
9 #include "VBI_adp.h"
10 
11 
12 #include "utopia_adp.h"
13 
14 //VBI CC/TTX
15 
16 UADP_SPT_0NXT_DEF(VBI_BOOL);
17 UADP_SPT_0NXT_DEF(VBI_GET_DATA);
18 UADP_SPT_0NXT_DEF(VBI_GETINFO_PARAM);
19 
20 UADP_SPT_1NXT_DEF(VBI_GETSTATUS_PARAM);
21 UADP_SPT_0NXT_DEF(VBI_DrvStatus);      // member belong to VBI_GETSTATUS_PARAM
22 
23 UADP_SPT_0NXT_DEF(VBI_SETDBGLEVEL_PARAM);
24 UADP_SPT_0NXT_DEF(VBI_CMD);
25 UADP_SPT_0NXT_DEF(VBI_INIT_TYPE_PARAM);
26 UADP_SPT_0NXT_DEF(DMX_TTX_CMD);
27 UADP_SPT_0NXT_DEF(VBI_REGISTER_CB);
28 UADP_SPT_0NXT_DEF(VBI_INITIALIZER_TTX_SLICER);
29 UADP_SPT_0NXT_DEF(VBI_ENABLE_TTX_SLICER);
30 UADP_SPT_0NXT_DEF(VBI_GET_RAW_VPS_DATA);
31 
32 UADP_SPT_2NXT_DEF(VBI_GET_VPS_DATA);
33 
34 UADP_SPT_1NXT_DEF(VBI_TTX_GET_PACKETS);
35 UADP_SPT_1NXT_DEF(VBI_TTX_GET_PACKET);
36 UADP_SPT_0NXT_DEF(TYPE_U32);            // member belong to VBI_TTX_GET_PACKETS
37 UADP_SPT_0NXT_DEF(MS_PHYADDR);          // member belong to VBI_TTX_GET_PACKET
38 
39 
40 UADP_SPT_1NXT_DEF(VBI_CC_SETDATARATE);
41 UADP_SPT_0NXT_DEF(VBI_CC_TABLE);
42 
43 UADP_SPT_0NXT_DEF(VBI_SET_VIDEO_STANDARD);
44 UADP_SPT_0NXT_DEF(VBI_TTX_ENABLE_LINE);
45 UADP_SPT_0NXT_DEF(VBI_SYNC_MEMORY);
46 UADP_SPT_0NXT_DEF(VBI_CC_INIT_SLICER);
47 UADP_SPT_0NXT_DEF(VBI_CC_INIT_YPBYR);
48 
49 UADP_SPT_0NXT_DEF(VBI_CC_GETINFO);
50 UADP_SPT_0NXT_DEF(VBI_CC_SET_FRAMECNT);
51 UADP_SPT_0NXT_DEF(VBI_CC_ENABLE_LINE);
52 
53 //DMX TTX
54 UADP_SPT_0NXT_DEF(DMX_TTX_SET_FILTERID);
55 
56 extern UADP_STRUCT_POINTER_TABLE spt_MS_U8[];
57 extern UADP_STRUCT_POINTER_TABLE spt_MS_U32[];
58 extern UADP_STRUCT_POINTER_TABLE spt_MS_NULL[];
59 
VBI_adp_Init(FUtopiaIOctl * pIoctl)60 MS_U32 VBI_adp_Init(FUtopiaIOctl *pIoctl)
61 {
62 //member of struct
63     UADP_SPT_0NXT(VBI_DrvStatus);
64     UADP_SPT_0NXT(MS_PHYADDR);
65     UADP_SPT_0NXT(VBI_CC_TABLE);
66 
67 //set table
68     UADP_SPT_0NXT(VBI_BOOL);
69     UADP_SPT_0NXT(VBI_GET_DATA);
70     UADP_SPT_0NXT(VBI_GETINFO_PARAM);
71     UADP_SPT_0NXT(VBI_SETDBGLEVEL_PARAM);
72     UADP_SPT_0NXT(VBI_CMD);
73     UADP_SPT_0NXT(VBI_INIT_TYPE_PARAM);
74     UADP_SPT_0NXT(DMX_TTX_CMD);
75 
76     UADP_SPT_0NXT(VBI_ENABLE_TTX_SLICER);
77     UADP_SPT_0NXT(VBI_SET_VIDEO_STANDARD);
78     UADP_SPT_0NXT(VBI_TTX_ENABLE_LINE);
79     UADP_SPT_0NXT(VBI_SYNC_MEMORY);
80     UADP_SPT_0NXT(VBI_CC_INIT_YPBYR);
81     UADP_SPT_0NXT(VBI_CC_GETINFO);
82     UADP_SPT_0NXT(VBI_CC_SET_FRAMECNT);
83     UADP_SPT_0NXT(VBI_CC_ENABLE_LINE);
84     UADP_SPT_0NXT(VBI_GET_RAW_VPS_DATA);
85     //UADP_SDT_1(VBI_REGISTER_CB, UADP_SDT_AT, bufferAddr, MS_NULL);
86     //UADP_SDT_1(VBI_INITIALIZER_TTX_SLICER, UADP_SDT_AT, bufferAddr, MS_NULL);
87     //UADP_SDT_2(VBI_CC_INIT_SLICER, UADP_SDT_AT, u32RiuAddr, MS_NULL, UADP_SDT_AT, bufferAddr, MS_NULL);
88     UADP_SDT_1(VBI_CC_INIT_SLICER, UADP_SDT_AT, u32RiuAddr, MS_NULL);
89 
90     UADP_SDT_1(VBI_GETSTATUS_PARAM, UADP_SDT_P2N, pDrvStatus, VBI_DrvStatus);
91     //UADP_SDT_2(VBI_TTX_GET_PACKETS, UADP_SDT_AT, dataAddr, MS_NULL, UADP_SDT_P2N, length, MS_U32);
92     UADP_SDT_1(VBI_TTX_GET_PACKETS, UADP_SDT_P2N, length, MS_U32);
93     //UADP_SDT_1(VBI_TTX_GET_PACKET, UADP_SDT_P2N, packetAddress, MS_NULL);
94     UADP_SDT_1(VBI_CC_SETDATARATE, UADP_SDT_P2N, ptable, MS_U8);
95     UADP_SDT_2(VBI_GET_VPS_DATA, UADP_SDT_P2N, lowerWord, MS_U8, UADP_SDT_P2N, higherWord, MS_U8);
96     *pIoctl= (FUtopiaIOctl)VBI_adp_Ioctl;
97     return 0;
98 
99 }
100 
101 /*
102 MS_U32 VBI_DDI_Open(void* pInstant,const void* const pAttribute)
103 {
104     return UtopiaOpen(MODULE_AESDMA,pInstant,0,pAttribute);
105 }
106 */
VBI_adp_Ioctl(void * pInstanceTmp,MS_U32 u32Cmd,void * const pArgs)107 MS_U32 VBI_adp_Ioctl(void* pInstanceTmp, MS_U32 u32Cmd, void* const pArgs)
108 {
109     MS_U32 u32Ret;
110     char buffer_arg[1024];
111 
112     //printk("%s, u32Cmd = 0x%x\n", __FUNCTION__, (unsigned int)u32Cmd);
113     switch(u32Cmd)
114     {
115 
116         case MDrv_CMD_VBI_GetLibVer :
117             break;
118         case MDrv_CMD_VBI_GetInfo:
119             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_GETINFO_PARAM,NULL,buffer_arg,sizeof(buffer_arg));
120             break;
121         case MDrv_CMD_VBI_GetStatus:
122             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_GETSTATUS_PARAM,spt_VBI_GETSTATUS_PARAM,buffer_arg,sizeof(buffer_arg));
123             break;
124         case MDrv_CMD_VBI_SetDbgLevel:
125             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_SETDBGLEVEL_PARAM, NULL, buffer_arg, sizeof(buffer_arg));
126             break;
127         case MDrv_CMD_VBI_Init:
128             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_INIT_TYPE_PARAM, NULL, buffer_arg, sizeof(buffer_arg));
129             break;
130         case MDrv_CMD_VBI_RegisterCB:
131             //u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_REGISTER_CB,NULL,buffer_arg,sizeof(buffer_arg));
132             break;
133         case MDrv_CMD_VBI_RingBuffer_Reset:
134             u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
135             break;
136         case MDrv_CMD_VBI_InitializeTTXSlicer:
137             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_INITIALIZER_TTX_SLICER,NULL,buffer_arg,sizeof(buffer_arg));
138             break;
139         case MDrv_CMD_VBI_EnableTTXSlicer:
140             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_ENABLE_TTX_SLICER,NULL,buffer_arg,sizeof(buffer_arg));
141             break;
142         case MDrv_CMD_VBI_IsVPS_Ready:
143             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_BOOL,spt_VBI_BOOL,buffer_arg,sizeof(buffer_arg));
144             break;
145         case MDrv_CMD_VBI_IsTTX_Ready:
146             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_BOOL,spt_VBI_BOOL,buffer_arg,sizeof(buffer_arg));
147             break;
148         case MDrv_CMD_VBI_IsWSS_Ready:
149             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_BOOL,spt_VBI_BOOL,buffer_arg,sizeof(buffer_arg));
150             break;
151         case MDrv_CMD_VBI_GetWSS_Data:
152             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_GET_DATA,spt_VBI_GET_DATA,buffer_arg,sizeof(buffer_arg));
153             break;
154         case MDrv_CMD_VBI_GetVPS_Data:
155             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_GET_VPS_DATA,spt_VBI_GET_VPS_DATA,buffer_arg,sizeof(buffer_arg));
156             break;
157         case MDrv_CMD_VBI_GetRawVPS_Data:
158             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_GET_RAW_VPS_DATA,spt_VBI_GET_RAW_VPS_DATA,buffer_arg,sizeof(buffer_arg));
159             break;
160         case MDrv_CMD_VBI_SetVideoStandard:
161             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_SET_VIDEO_STANDARD,NULL,buffer_arg,sizeof(buffer_arg));
162             break;
163         case MDrv_CMD_VBI_TTX_PacketBufferIsEmpty:
164             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_BOOL,spt_VBI_BOOL,buffer_arg,sizeof(buffer_arg));
165             break;
166         case MDrv_CMD_VBI_TTX_CheckCircuitReady:
167             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_BOOL,spt_VBI_BOOL,buffer_arg,sizeof(buffer_arg));
168             break;
169         case MDrv_CMD_VBI_TTX_GetPacketCount:
170             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_GET_DATA,spt_VBI_GET_DATA,buffer_arg,sizeof(buffer_arg));
171             break;
172         case MDrv_CMD_VBI_TTX_GetPackets:
173             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_TTX_GET_PACKETS,spt_VBI_TTX_GET_PACKETS,buffer_arg,sizeof(buffer_arg));
174             break;
175         case MDrv_CMD_VBI_TTX_GetPacket:
176             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_TTX_GET_PACKET,spt_VBI_TTX_GET_PACKET,buffer_arg,sizeof(buffer_arg));
177             break;
178         case MDrv_CMD_VBI_TTX_PacketBufferIsOverflow:
179             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_BOOL,spt_VBI_BOOL,buffer_arg,sizeof(buffer_arg));
180             break;
181         case MDrv_CMD_VBI_TTX_PacketBufferGetNoOfOverflows:
182             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_GET_DATA,spt_VBI_GET_DATA,buffer_arg,sizeof(buffer_arg));
183             break;
184         case MDrv_CMD_VBI_TTX_EnableLine:
185             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_TTX_ENABLE_LINE,NULL,buffer_arg,sizeof(buffer_arg));
186             break;
187         case MDrv_CMD_VBI_SyncMemory:
188             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_SYNC_MEMORY,NULL,buffer_arg,sizeof(buffer_arg));
189             break;
190 
191         case MDrv_CMD_VBI_CC_InitSlicer:
192             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_CC_INIT_SLICER,NULL,buffer_arg,sizeof(buffer_arg));
193             break;
194 
195         case MDrv_CMD_VBI_CC_InitYPbYr:
196             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_CC_INIT_YPBYR,NULL,buffer_arg,sizeof(buffer_arg));
197             break;
198 
199         case MDrv_CMD_VBI_CC_SetDataRate:
200             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_CC_SETDATARATE,NULL,buffer_arg,sizeof(buffer_arg));
201             break;
202 
203         case MDrv_CMD_VBI_CC_GetInfo:
204             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_CC_GETINFO,spt_VBI_CC_GETINFO,buffer_arg,sizeof(buffer_arg));
205             break;
206 
207         case MDrv_CMD_VBI_CC_SetFrameCnt:
208             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_CC_SET_FRAMECNT,NULL,buffer_arg,sizeof(buffer_arg));
209             break;
210         case MDrv_CMD_VBI_CC_EnableSlicer:
211             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_ENABLE_TTX_SLICER,NULL,buffer_arg,sizeof(buffer_arg));
212             break;
213         case MDrv_CMD_VBI_CC_EnableLine:
214             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_CC_ENABLE_LINE,NULL,buffer_arg,sizeof(buffer_arg));
215             break;
216         case MDrv_CMD_VBI_WSS_SetVpsByteNum:
217             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_CC_SET_FRAMECNT,NULL,buffer_arg,sizeof(buffer_arg));
218             break;
219         //=============================================
220         // DTV - TTX
221         //=============================================
222 
223         case MDrv_CMD_DMX_TTX_RingBuffer_Reset:
224             u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
225             break;
226         case MDrv_CMD_DMX_TTX_Init:
227             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_INITIALIZER_TTX_SLICER,NULL,buffer_arg,sizeof(buffer_arg));
228             break;
229         case MDrv_CMD_DMX_TTX_SetFilterID:
230             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_DMX_TTX_SET_FILTERID,NULL,buffer_arg,sizeof(buffer_arg));
231             break;
232         case MDrv_CMD_DMX_TTX_SetCB:
233             // no function callback from kernel to user
234             break;
235         case MDrv_CMD_DMX_TTX_PacketBufferIsEmpty:
236             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_BOOL,spt_VBI_BOOL,buffer_arg,sizeof(buffer_arg));
237             break;
238         case MDrv_CMD_DMX_TTX_GetPackets:
239             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_TTX_GET_PACKETS,spt_VBI_TTX_GET_PACKETS,buffer_arg,sizeof(buffer_arg));
240             break;
241         case MDrv_CMD_DMX_TTX_GetPacket:
242             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_TTX_GET_PACKET,spt_VBI_TTX_GET_PACKET,buffer_arg,sizeof(buffer_arg));
243             break;
244         case MDrv_CMD_DMX_TTX_PacketBufferIsOverflow:
245             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_BOOL,spt_VBI_BOOL,buffer_arg,sizeof(buffer_arg));
246             break;
247         case MDrv_CMD_DMX_TTX_PacketBufferGetNoOfOverflows:
248             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_GET_DATA,spt_VBI_GET_DATA,buffer_arg,sizeof(buffer_arg));
249             break;
250         case MDrv_CMD_VBI_Exit:
251             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_VBI_CMD,NULL,buffer_arg,sizeof(buffer_arg));
252             break;
253         case MDrv_CMD_DMX_TTX_Exit:
254             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_DMX_TTX_CMD,NULL,buffer_arg,sizeof(buffer_arg));
255             break;
256 
257         default:
258             break;
259 
260     }
261 
262 
263     return u32Ret;
264    // return UtopiaIoctl(pModuleDDI->pInstant,u32Cmd,arg);
265 }
266 
267 
268 
269 
270