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