1*53ee8cc1Swenshuai.xi #include <linux/kernel.h>
2*53ee8cc1Swenshuai.xi #include <linux/string.h>
3*53ee8cc1Swenshuai.xi #include <linux/slab.h>
4*53ee8cc1Swenshuai.xi #include <linux/uaccess.h>
5*53ee8cc1Swenshuai.xi
6*53ee8cc1Swenshuai.xi #include "MsTypes.h"
7*53ee8cc1Swenshuai.xi #include "utopia.h"
8*53ee8cc1Swenshuai.xi #include "drvAESDMA.h"
9*53ee8cc1Swenshuai.xi #include "drvAESDMA_v2.h"
10*53ee8cc1Swenshuai.xi #include "CIPHER_adp.h"
11*53ee8cc1Swenshuai.xi
12*53ee8cc1Swenshuai.xi
13*53ee8cc1Swenshuai.xi #include "utopia_adp.h"
14*53ee8cc1Swenshuai.xi //#include "MsOS.h"
15*53ee8cc1Swenshuai.xi
16*53ee8cc1Swenshuai.xi UADP_SDT_0_DEF(NULL);
17*53ee8cc1Swenshuai.xi //Top
18*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_INIT[10];
19*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_FILE_INOUT[10];
20*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_SEL_ENG[10];
21*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_SET_PS[10];
22*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_NOTIFY[10];
23*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_RAND[10];
24*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_SHA_CALCULATE[10];
25*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_SHA_CALCULATE_MANUAL[10];
26*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_RSA_CALCULATE[10];
27*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_RSA_OUTPUT[10];
28*53ee8cc1Swenshuai.xi
29*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_SetKeyList[10];
30*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_SetIvList[10];
31*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_SetKeyExList[10];
32*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_SetIvExList[10];
33*53ee8cc1Swenshuai.xi
34*53ee8cc1Swenshuai.xi //Bottom
35*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_DrvAESDMA_RSASig[10];
36*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_DrvAESDMA_RSAKey[10];
37*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_DrvAESDMA_RSAOut[10];
38*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_DrvAESDMA_HASHCFG[10];
39*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_DrvAESDMA_SHADataInfo[10];
40*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_DrvAESDMA_SecureInfo[10];
41*53ee8cc1Swenshuai.xi
42*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_ParserSetScrmbPattern[10];
43*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_ParserPyPassPid[10];
44*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_ParserSetPid[10];
45*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_ParserEncrypt[10];
46*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_ParserDecrypt[10];
47*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_ParserSetAddedScrmbPattern[10];
48*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_GetStatus[10];
49*53ee8cc1Swenshuai.xi //UADP_STRUCT_POINTER_TABLE spt_AESDMA_MDrvProcessCipher[10];
50*53ee8cc1Swenshuai.xi
51*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_START[10];
52*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_SetDefaultCAVid[10];
53*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_AllocKeySlot[10];
54*53ee8cc1Swenshuai.xi UADP_STRUCT_POINTER_TABLE spt_AESDMA_FreeKeySlot[10];
55*53ee8cc1Swenshuai.xi
AESDMA_adp_Init(FUtopiaIOctl * pIoctl)56*53ee8cc1Swenshuai.xi MS_U32 AESDMA_adp_Init(FUtopiaIOctl* pIoctl)
57*53ee8cc1Swenshuai.xi {
58*53ee8cc1Swenshuai.xi
59*53ee8cc1Swenshuai.xi //set table
60*53ee8cc1Swenshuai.xi printk("AESDMA_adp_Init\n");
61*53ee8cc1Swenshuai.xi
62*53ee8cc1Swenshuai.xi UADPBypassSetSPT(&spt_AESDMA_INIT[0],UADP_SPT_SELF_SIZE,0, sizeof(AESDMA_INIT));
63*53ee8cc1Swenshuai.xi UADPBypassSetSPT(&spt_AESDMA_INIT[1],UADP_SPT_END , 0, 0);
64*53ee8cc1Swenshuai.xi
65*53ee8cc1Swenshuai.xi UADPBypassSetSPT(&spt_AESDMA_FILE_INOUT[0],UADP_SPT_SELF_SIZE,0, sizeof(AESDMA_FILE_INOUT));
66*53ee8cc1Swenshuai.xi UADPBypassSetSPT(&spt_AESDMA_FILE_INOUT[1],UADP_SPT_END , 0, 0);
67*53ee8cc1Swenshuai.xi
68*53ee8cc1Swenshuai.xi
69*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_SEL_ENG[0], sizeof(AESDMA_SEL_ENG));
70*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_SEL_ENG[1]);
71*53ee8cc1Swenshuai.xi
72*53ee8cc1Swenshuai.xi
73*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_SET_PS[0],sizeof(AESDMA_SET_PS));
74*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_SET_PS[1]);
75*53ee8cc1Swenshuai.xi
76*53ee8cc1Swenshuai.xi
77*53ee8cc1Swenshuai.xi UADP_SDT_BGN (&spt_AESDMA_NOTIFY[0], sizeof(AESDMA_NOTIFY));
78*53ee8cc1Swenshuai.xi UADP_SDT_KIND(&spt_AESDMA_NOTIFY[1], AESDMA_NOTIFY, UADP_SDT_AT, pfCallback,NULL);
79*53ee8cc1Swenshuai.xi UADP_SDT_FIN(&spt_AESDMA_NOTIFY[2]);
80*53ee8cc1Swenshuai.xi
81*53ee8cc1Swenshuai.xi
82*53ee8cc1Swenshuai.xi UADP_SDT_BGN (&spt_AESDMA_RAND[0], sizeof(AESDMA_RAND));
83*53ee8cc1Swenshuai.xi UADP_SDT_KIND(&spt_AESDMA_RAND[1], AESDMA_RAND, UADP_SDT_P2N, u32PABuf,NULL);
84*53ee8cc1Swenshuai.xi UADP_SDT_FIN(&spt_AESDMA_RAND[2]);
85*53ee8cc1Swenshuai.xi
86*53ee8cc1Swenshuai.xi
87*53ee8cc1Swenshuai.xi UADPBypassSetSPT(&spt_SHA_CALCULATE[0],UADP_SPT_SELF_SIZE,0, sizeof(SHA_CALCULATE));
88*53ee8cc1Swenshuai.xi UADPBypassSetSPT(&spt_SHA_CALCULATE[1],UADP_SPT_END , 0, 0);
89*53ee8cc1Swenshuai.xi
90*53ee8cc1Swenshuai.xi
91*53ee8cc1Swenshuai.xi UADP_SDT_BGN (&spt_SHA_CALCULATE_MANUAL[0], sizeof(SHA_CALCULATE_MANUAL));
92*53ee8cc1Swenshuai.xi UADP_SDT_KIND(&spt_SHA_CALCULATE_MANUAL[1], SHA_CALCULATE_MANUAL, UADP_SDT_P2N, pu8SetIV,NULL);
93*53ee8cc1Swenshuai.xi UADP_SDT_FIN(&spt_SHA_CALCULATE_MANUAL[2]);
94*53ee8cc1Swenshuai.xi
95*53ee8cc1Swenshuai.xi //bottom
96*53ee8cc1Swenshuai.xi
97*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_DrvAESDMA_RSAKey[0],sizeof(DrvAESDMA_RSAKey));
98*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_DrvAESDMA_RSAKey[1]);
99*53ee8cc1Swenshuai.xi
100*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_DrvAESDMA_RSASig[0],sizeof(DrvAESDMA_RSASig));
101*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_DrvAESDMA_RSASig[1]);
102*53ee8cc1Swenshuai.xi
103*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_DrvAESDMA_RSAOut[0],sizeof(DrvAESDMA_RSAOut));
104*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_DrvAESDMA_RSAOut[1]);
105*53ee8cc1Swenshuai.xi
106*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_DrvAESDMA_SecureInfo[0],sizeof(DrvAESDMA_SecureInfo));
107*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_DrvAESDMA_SecureInfo[1]);
108*53ee8cc1Swenshuai.xi
109*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_DrvAESDMA_SHADataInfo[0], sizeof(DrvAESDMA_SHADataInfo));
110*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_DrvAESDMA_SHADataInfo[1]);
111*53ee8cc1Swenshuai.xi
112*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_DrvAESDMA_HASHCFG[0], sizeof(DrvAESDMA_HASHCFG));
113*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_DrvAESDMA_HASHCFG[3]);
114*53ee8cc1Swenshuai.xi
115*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_SetKeyList[0],sizeof(MS_U32)*4);
116*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_SetKeyList[1]);
117*53ee8cc1Swenshuai.xi
118*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_SetIvList[0],sizeof(MS_U32)*4);
119*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_SetIvList[1]);
120*53ee8cc1Swenshuai.xi
121*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_SetKeyExList[0],sizeof(AESDMA_SET_KEY_EX));
122*53ee8cc1Swenshuai.xi UADP_SDT_KIND(&spt_AESDMA_SetKeyExList[1], AESDMA_SET_KEY_EX, UADP_SDT_P2N, pu8Key,NULL);
123*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_SetKeyExList[2]);
124*53ee8cc1Swenshuai.xi
125*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_SetIvExList[0],sizeof(AESDMA_SET_IV_EX));
126*53ee8cc1Swenshuai.xi UADP_SDT_KIND(&spt_AESDMA_SetIvExList[1], AESDMA_SET_IV_EX, UADP_SDT_P2N, pu8IV,NULL);
127*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_SetIvExList[2]);
128*53ee8cc1Swenshuai.xi
129*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_ParserSetScrmbPattern[0], sizeof(AESDMA_PARSER_CONFIGURATIONS));
130*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_ParserSetScrmbPattern[1]);
131*53ee8cc1Swenshuai.xi
132*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_ParserPyPassPid[0], sizeof(AESDMA_PARSER_PID_CONFIGURATIONS));
133*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_ParserPyPassPid[1]);
134*53ee8cc1Swenshuai.xi
135*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_ParserSetPid[0], sizeof(AESDMA_PARSER_PID_CONFIGURATIONS));
136*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_ParserSetPid[1]);
137*53ee8cc1Swenshuai.xi
138*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_ParserEncrypt[0], sizeof(DrvAESDMA_ParserMode));
139*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_ParserEncrypt[1]);
140*53ee8cc1Swenshuai.xi
141*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_ParserDecrypt[0], sizeof(DrvAESDMA_ParserMode));
142*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_ParserDecrypt[1]);
143*53ee8cc1Swenshuai.xi
144*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_ParserSetAddedScrmbPattern[0], sizeof(AESDMA_PARSER_CONFIGURATIONS));
145*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_ParserSetAddedScrmbPattern[1]);
146*53ee8cc1Swenshuai.xi
147*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_GetStatus[0], sizeof(MS_U32));
148*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_GetStatus[1]);
149*53ee8cc1Swenshuai.xi
150*53ee8cc1Swenshuai.xi // UADP_SPT_BGN(&spt_AESDMA_MDrvProcessCipher[0], sizeof(HDCP_CIPHER));
151*53ee8cc1Swenshuai.xi // UADP_SPT_FIN(&spt_AESDMA_MDrvProcessCipher[1]);
152*53ee8cc1Swenshuai.xi
153*53ee8cc1Swenshuai.xi UADPBypassSetSPT(&spt_AESDMA_START[0],UADP_SPT_SELF_SIZE,0, sizeof(AESDMA_START));
154*53ee8cc1Swenshuai.xi UADPBypassSetSPT(&spt_AESDMA_START[1],UADP_SPT_END , 0, 0);
155*53ee8cc1Swenshuai.xi
156*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_SetDefaultCAVid[0], sizeof(AESDMA_CAVID));
157*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_SetDefaultCAVid[1]);
158*53ee8cc1Swenshuai.xi
159*53ee8cc1Swenshuai.xi UADP_SDT_BGN (&spt_AESDMA_AllocKeySlot[0], sizeof(AESDMA_ALLOC_KEY_SLOT));
160*53ee8cc1Swenshuai.xi UADP_SDT_KIND(&spt_AESDMA_AllocKeySlot[1], AESDMA_ALLOC_KEY_SLOT, UADP_SDT_P2N, pu32KeyIndex,NULL);
161*53ee8cc1Swenshuai.xi UADP_SDT_FIN(&spt_AESDMA_AllocKeySlot[2]);
162*53ee8cc1Swenshuai.xi
163*53ee8cc1Swenshuai.xi UADP_SPT_BGN(&spt_AESDMA_FreeKeySlot[0], sizeof(AESDMA_KEY_INDEX));
164*53ee8cc1Swenshuai.xi UADP_SPT_FIN(&spt_AESDMA_FreeKeySlot[1]);
165*53ee8cc1Swenshuai.xi
166*53ee8cc1Swenshuai.xi UADP_SDT_NAME2(RSA_CALCULATE,RSA_CALCULATE,UADP_SDT_P2N,pstSign,DrvAESDMA_RSASig,UADP_SDT_P2N,pstKey,DrvAESDMA_RSAKey);
167*53ee8cc1Swenshuai.xi UADP_SDT_NAME1(RSA_OUTPUT,RSA_OUTPUT,UADP_SDT_P2N,pstRSAOut,DrvAESDMA_RSAOut);
168*53ee8cc1Swenshuai.xi
169*53ee8cc1Swenshuai.xi *pIoctl= (FUtopiaIOctl)AESDMA_adp_Ioctl;
170*53ee8cc1Swenshuai.xi return 0;
171*53ee8cc1Swenshuai.xi
172*53ee8cc1Swenshuai.xi }
173*53ee8cc1Swenshuai.xi
174*53ee8cc1Swenshuai.xi /*
175*53ee8cc1Swenshuai.xi MS_U32 AESDMA_DDI_Open(void* pInstant,const void* const pAttribute)
176*53ee8cc1Swenshuai.xi {
177*53ee8cc1Swenshuai.xi return UtopiaOpen(MODULE_AESDMA,pInstant,0,pAttribute);
178*53ee8cc1Swenshuai.xi }
179*53ee8cc1Swenshuai.xi */
AESDMA_adp_Ioctl(void * pInstanceTmp,MS_U32 u32Cmd,void * const pArgs)180*53ee8cc1Swenshuai.xi MS_U32 AESDMA_adp_Ioctl(void* pInstanceTmp, MS_U32 u32Cmd, void* const pArgs)
181*53ee8cc1Swenshuai.xi {
182*53ee8cc1Swenshuai.xi MS_U32 u32Ret = UTOPIA_STATUS_FAIL;
183*53ee8cc1Swenshuai.xi char buffer_arg[2048];
184*53ee8cc1Swenshuai.xi
185*53ee8cc1Swenshuai.xi switch(u32Cmd)
186*53ee8cc1Swenshuai.xi {
187*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_Init :
188*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_INIT,NULL,buffer_arg,sizeof(buffer_arg));
189*53ee8cc1Swenshuai.xi break;
190*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SetIV:
191*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_SetIvList,NULL,buffer_arg,sizeof(buffer_arg));
192*53ee8cc1Swenshuai.xi break;
193*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_Reset:
194*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
195*53ee8cc1Swenshuai.xi break;
196*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SetFileInOut:
197*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_FILE_INOUT, NULL, buffer_arg, sizeof(buffer_arg));
198*53ee8cc1Swenshuai.xi break;
199*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SetKey:
200*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_SetKeyList,NULL,buffer_arg,sizeof(buffer_arg));
201*53ee8cc1Swenshuai.xi break;
202*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SelEng:
203*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_SEL_ENG,NULL,buffer_arg,sizeof(buffer_arg));
204*53ee8cc1Swenshuai.xi break;
205*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_Start:
206*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_INIT, NULL,buffer_arg,sizeof(buffer_arg));
207*53ee8cc1Swenshuai.xi break;
208*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_GetStatus:
209*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_GetStatus,spt_AESDMA_GetStatus,buffer_arg,sizeof(buffer_arg));
210*53ee8cc1Swenshuai.xi break;
211*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_IsFinished:
212*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
213*53ee8cc1Swenshuai.xi break;
214*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SetClk:
215*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
216*53ee8cc1Swenshuai.xi break;
217*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SetSecureKey:
218*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
219*53ee8cc1Swenshuai.xi break;
220*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SetPS:
221*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_SET_PS,NULL,buffer_arg,sizeof(buffer_arg));
222*53ee8cc1Swenshuai.xi break;
223*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_PSRelease:
224*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
225*53ee8cc1Swenshuai.xi break;
226*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_GetPSMatchedByteCNT:
227*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
228*53ee8cc1Swenshuai.xi break;
229*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_GetPSMatchedPTN:
230*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
231*53ee8cc1Swenshuai.xi break;
232*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_Notify:
233*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_NOTIFY,NULL,buffer_arg,sizeof(buffer_arg));
234*53ee8cc1Swenshuai.xi break;
235*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_Rand:
236*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
237*53ee8cc1Swenshuai.xi break;
238*53ee8cc1Swenshuai.xi case MDrv_CMD_RSA_Calculate:
239*53ee8cc1Swenshuai.xi {
240*53ee8cc1Swenshuai.xi // void* pDatatmp_RSASig;
241*53ee8cc1Swenshuai.xi // void* pDatatmp_RSAKey;
242*53ee8cc1Swenshuai.xi // RSA_CALCULATE tmp_RSA;
243*53ee8cc1Swenshuai.xi //
244*53ee8cc1Swenshuai.xi // pDatatmp_RSASig = kmalloc(sizeof (DrvAESDMA_RSASig),GFP_KERNEL);
245*53ee8cc1Swenshuai.xi // pDatatmp_RSAKey = kmalloc(sizeof (DrvAESDMA_RSAKey),GFP_KERNEL);
246*53ee8cc1Swenshuai.xi //
247*53ee8cc1Swenshuai.xi // copy_from_user(&tmp_RSA,pArgs,sizeof (RSA_CALCULATE));
248*53ee8cc1Swenshuai.xi // copy_from_user(pDatatmp_RSASig, tmp_RSA.pstSign, sizeof (DrvAESDMA_RSASig));
249*53ee8cc1Swenshuai.xi // copy_from_user(pDatatmp_RSAKey, tmp_RSA.pstKey, sizeof (DrvAESDMA_RSAKey));
250*53ee8cc1Swenshuai.xi //
251*53ee8cc1Swenshuai.xi // tmp_RSA.pstSign = pDatatmp_RSASig;
252*53ee8cc1Swenshuai.xi // tmp_RSA.pstKey = pDatatmp_RSAKey;
253*53ee8cc1Swenshuai.xi //
254*53ee8cc1Swenshuai.xi // u32Ret = UtopiaIoctl(pInstanceTmp,u32Cmd,&tmp_RSA);
255*53ee8cc1Swenshuai.xi // free(pDatatmp_RSASig);
256*53ee8cc1Swenshuai.xi // free(pDatatmp_RSAKey);
257*53ee8cc1Swenshuai.xi
258*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_RSA_CALCULATE,spt_RSA_CALCULATE,buffer_arg,sizeof(buffer_arg));
259*53ee8cc1Swenshuai.xi }
260*53ee8cc1Swenshuai.xi break;
261*53ee8cc1Swenshuai.xi case MDrv_CMD_RSA_IsFinished:
262*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
263*53ee8cc1Swenshuai.xi break;
264*53ee8cc1Swenshuai.xi case MDrv_CMD_RSA_Output:
265*53ee8cc1Swenshuai.xi {
266*53ee8cc1Swenshuai.xi // void* pDatatmp_RSAOut;
267*53ee8cc1Swenshuai.xi // void* pDatatmp_RSAUserOut;
268*53ee8cc1Swenshuai.xi // RSA_OUTPUT tmp_RSA;
269*53ee8cc1Swenshuai.xi //
270*53ee8cc1Swenshuai.xi // pDatatmp_RSAOut = kmalloc(sizeof (DrvAESDMA_RSAOut),GFP_KERNEL);
271*53ee8cc1Swenshuai.xi //
272*53ee8cc1Swenshuai.xi // copy_from_user(&tmp_RSA,pArgs,sizeof (RSA_OUTPUT));
273*53ee8cc1Swenshuai.xi // copy_from_user(pDatatmp_RSAOut, tmp_RSA.pstRSAOut, sizeof (RSA_OUTPUT));
274*53ee8cc1Swenshuai.xi //
275*53ee8cc1Swenshuai.xi // pDatatmp_RSAUserOut = tmp_RSA.pstRSAOut;
276*53ee8cc1Swenshuai.xi // tmp_RSA.pstRSAOut = pDatatmp_RSAOut;
277*53ee8cc1Swenshuai.xi //
278*53ee8cc1Swenshuai.xi // u32Ret = UtopiaIoctl(pInstanceTmp,u32Cmd,&tmp_RSA);
279*53ee8cc1Swenshuai.xi //
280*53ee8cc1Swenshuai.xi // copy_to_user(pDatatmp_RSAUserOut, tmp_RSA.pstRSAOut, sizeof(DrvAESDMA_RSAOut));
281*53ee8cc1Swenshuai.xi // free(pDatatmp_RSAOut);
282*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_RSA_OUTPUT,spt_RSA_OUTPUT,buffer_arg,sizeof(buffer_arg));
283*53ee8cc1Swenshuai.xi }
284*53ee8cc1Swenshuai.xi break;
285*53ee8cc1Swenshuai.xi case MDrv_CMD_SHA_Calculate:
286*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_SHA_CALCULATE,spt_SHA_CALCULATE,buffer_arg,sizeof(buffer_arg));
287*53ee8cc1Swenshuai.xi break;
288*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_Memcpy:
289*53ee8cc1Swenshuai.xi u32Ret=UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
290*53ee8cc1Swenshuai.xi break;
291*53ee8cc1Swenshuai.xi case MDrv_CMD_SHA_CalculateManual:
292*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_SHA_CALCULATE_MANUAL,spt_SHA_CALCULATE_MANUAL,buffer_arg,sizeof(buffer_arg));
293*53ee8cc1Swenshuai.xi break;
294*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_PARSER_MASKSCRMB:
295*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
296*53ee8cc1Swenshuai.xi break;
297*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_PARSER_SETSCRMBPATTERN:
298*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_ParserSetScrmbPattern,NULL,buffer_arg,sizeof(buffer_arg));
299*53ee8cc1Swenshuai.xi break;
300*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_PARSER_BYPASSPID:
301*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_ParserPyPassPid,NULL,buffer_arg,sizeof(buffer_arg));
302*53ee8cc1Swenshuai.xi break;
303*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_PARSER_SETPID:
304*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_ParserSetPid,NULL,buffer_arg,sizeof(buffer_arg));
305*53ee8cc1Swenshuai.xi break;
306*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_PARSER_ENCRYPT:
307*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_ParserEncrypt,NULL,buffer_arg,sizeof(buffer_arg));
308*53ee8cc1Swenshuai.xi break;
309*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_PARSER_DECRYPT:
310*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_ParserDecrypt,NULL,buffer_arg,sizeof(buffer_arg));
311*53ee8cc1Swenshuai.xi break;
312*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_PARSER_Start:
313*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
314*53ee8cc1Swenshuai.xi break;
315*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_PARSER_SETADDEDSCRMBPATTERN:
316*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_ParserSetAddedScrmbPattern,NULL,buffer_arg,sizeof(buffer_arg));
317*53ee8cc1Swenshuai.xi break;
318*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_PARSER_QUERYPIDCOUNT:
319*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
320*53ee8cc1Swenshuai.xi break;
321*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_ENABLE_Two_Key:
322*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
323*53ee8cc1Swenshuai.xi break;
324*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SetOddKey:
325*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_SetKeyList,NULL,buffer_arg,sizeof(buffer_arg));
326*53ee8cc1Swenshuai.xi break;
327*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SetOddIV:
328*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_SetIvList,NULL,buffer_arg,sizeof(buffer_arg));
329*53ee8cc1Swenshuai.xi break;
330*53ee8cc1Swenshuai.xi case MDrv_CMD_IS_SECRETKEY_IN_NORMAL_BLANK:
331*53ee8cc1Swenshuai.xi u32Ret= UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
332*53ee8cc1Swenshuai.xi break;
333*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SetKey_Ex:
334*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_SetKeyExList,NULL,buffer_arg,sizeof(buffer_arg));
335*53ee8cc1Swenshuai.xi break;
336*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SetIV_Ex:
337*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_SetIvExList,NULL,buffer_arg,sizeof(buffer_arg));
338*53ee8cc1Swenshuai.xi break;
339*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_SetDefaultCAVid:
340*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_SetDefaultCAVid,NULL,buffer_arg,sizeof(buffer_arg));
341*53ee8cc1Swenshuai.xi break;
342*53ee8cc1Swenshuai.xi case MDrv_CMD_HDCP_MDrv_PROCESSCIPHER:
343*53ee8cc1Swenshuai.xi // u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_MDrvProcessCipher,NULL,buffer_arg,sizeof(buffer_arg));
344*53ee8cc1Swenshuai.xi break;
345*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_AllocKeySlot:
346*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_AllocKeySlot,NULL,buffer_arg,sizeof(buffer_arg));
347*53ee8cc1Swenshuai.xi break;
348*53ee8cc1Swenshuai.xi case MDrv_CMD_AESDMA_FreeKeySlot:
349*53ee8cc1Swenshuai.xi u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AESDMA_FreeKeySlot,NULL,buffer_arg,sizeof(buffer_arg));
350*53ee8cc1Swenshuai.xi break;
351*53ee8cc1Swenshuai.xi
352*53ee8cc1Swenshuai.xi
353*53ee8cc1Swenshuai.xi //case MDrv_CMD_Event_Poll:
354*53ee8cc1Swenshuai.xi // UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
355*53ee8cc1Swenshuai.xi default:
356*53ee8cc1Swenshuai.xi break;
357*53ee8cc1Swenshuai.xi
358*53ee8cc1Swenshuai.xi }
359*53ee8cc1Swenshuai.xi
360*53ee8cc1Swenshuai.xi
361*53ee8cc1Swenshuai.xi return u32Ret;
362*53ee8cc1Swenshuai.xi // return UtopiaIoctl(pModuleDDI->pInstant,u32Cmd,arg);
363*53ee8cc1Swenshuai.xi }
364*53ee8cc1Swenshuai.xi
365*53ee8cc1Swenshuai.xi
366*53ee8cc1Swenshuai.xi
367*53ee8cc1Swenshuai.xi
368