xref: /utopia/UTPA2-700.0.x/modules/dscmb/api/nsk2hdi/nsk2hdi_nsk2.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi 
2*53ee8cc1Swenshuai.xi #include <stdlib.h>
3*53ee8cc1Swenshuai.xi #include <string.h>
4*53ee8cc1Swenshuai.xi #include "MsCommon.h"
5*53ee8cc1Swenshuai.xi 
6*53ee8cc1Swenshuai.xi #include "nsk_dbg.h"
7*53ee8cc1Swenshuai.xi 
8*53ee8cc1Swenshuai.xi #include "nsk_282.h"
9*53ee8cc1Swenshuai.xi #include "nsk_dbg.h"
10*53ee8cc1Swenshuai.xi #include "nsk_3014.h"
11*53ee8cc1Swenshuai.xi #include "hdi_121.h"
12*53ee8cc1Swenshuai.xi #include "drvNSK2.h"
13*53ee8cc1Swenshuai.xi #include "nsk2hdi_header.h"
14*53ee8cc1Swenshuai.xi #include "drvDSCMB.h"
15*53ee8cc1Swenshuai.xi 
16*53ee8cc1Swenshuai.xi /*****************************************************************************\
17*53ee8cc1Swenshuai.xi   \Definitions
18*53ee8cc1Swenshuai.xi \*****************************************************************************/
19*53ee8cc1Swenshuai.xi //#define NSK2DataProbe
20*53ee8cc1Swenshuai.xi #define MaxNSK2HandleNum    10
21*53ee8cc1Swenshuai.xi 
22*53ee8cc1Swenshuai.xi 
23*53ee8cc1Swenshuai.xi /*****************************************************************************\
24*53ee8cc1Swenshuai.xi   \ typedef struct
25*53ee8cc1Swenshuai.xi \*****************************************************************************/
26*53ee8cc1Swenshuai.xi 
27*53ee8cc1Swenshuai.xi typedef struct _NSK2_Info_
28*53ee8cc1Swenshuai.xi {
29*53ee8cc1Swenshuai.xi     MS_BOOL         alloc;
30*53ee8cc1Swenshuai.xi     NDS_ULONG       Nsk_ID;
31*53ee8cc1Swenshuai.xi     MS_U32          handle_id;
32*53ee8cc1Swenshuai.xi } NSK2_Info;
33*53ee8cc1Swenshuai.xi 
34*53ee8cc1Swenshuai.xi 
35*53ee8cc1Swenshuai.xi /*****************************************************************************\
36*53ee8cc1Swenshuai.xi   \ local variables
37*53ee8cc1Swenshuai.xi \*****************************************************************************/
38*53ee8cc1Swenshuai.xi 
39*53ee8cc1Swenshuai.xi 
40*53ee8cc1Swenshuai.xi /*****************************************************************************\
41*53ee8cc1Swenshuai.xi   \ global variables
42*53ee8cc1Swenshuai.xi \*****************************************************************************/
43*53ee8cc1Swenshuai.xi HDINSK2_NSKEVENT_CB_FN  *_gcb_routine = NULL;
44*53ee8cc1Swenshuai.xi void                    *_gNSKcookie = NULL;
45*53ee8cc1Swenshuai.xi NSK2HDI_HANDLE          _gNsk_handle;
46*53ee8cc1Swenshuai.xi 
47*53ee8cc1Swenshuai.xi NSK2_Info NSK2Info[MaxNSK2HandleNum];
48*53ee8cc1Swenshuai.xi 
49*53ee8cc1Swenshuai.xi 
50*53ee8cc1Swenshuai.xi /*****************************************************************************\
51*53ee8cc1Swenshuai.xi   \ NSK2HDI general functions
52*53ee8cc1Swenshuai.xi \*****************************************************************************/
53*53ee8cc1Swenshuai.xi 
54*53ee8cc1Swenshuai.xi 
55*53ee8cc1Swenshuai.xi /*****************************************************************************\
56*53ee8cc1Swenshuai.xi   \ NSK device
57*53ee8cc1Swenshuai.xi \*****************************************************************************/
58*53ee8cc1Swenshuai.xi 
59*53ee8cc1Swenshuai.xi 
60*53ee8cc1Swenshuai.xi 
NSKHDI_NskDevice_Open(NSK2HDI_DEVICE_ID Nsk_ID,NSK2HDI_HANDLE * Nsk_handle)61*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_Open (NSK2HDI_DEVICE_ID   Nsk_ID,
62*53ee8cc1Swenshuai.xi                                       NSK2HDI_HANDLE      *Nsk_handle)
63*53ee8cc1Swenshuai.xi {
64*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter, Nsk_ID = %x\n",Nsk_ID));
65*53ee8cc1Swenshuai.xi 
66*53ee8cc1Swenshuai.xi     MS_U32 i;
67*53ee8cc1Swenshuai.xi 
68*53ee8cc1Swenshuai.xi     if(*Nsk_handle != NULL)
69*53ee8cc1Swenshuai.xi     {
70*53ee8cc1Swenshuai.xi         NSK_ERROR(("Nsk_handle is not NULL\n"));
71*53ee8cc1Swenshuai.xi     }
72*53ee8cc1Swenshuai.xi 
73*53ee8cc1Swenshuai.xi     for(i = 0; i < MaxNSK2HandleNum; i++)
74*53ee8cc1Swenshuai.xi     {
75*53ee8cc1Swenshuai.xi         if (NSK2Info[i].alloc == FALSE)
76*53ee8cc1Swenshuai.xi         {
77*53ee8cc1Swenshuai.xi             break;
78*53ee8cc1Swenshuai.xi         }
79*53ee8cc1Swenshuai.xi     }
80*53ee8cc1Swenshuai.xi     if (i == MaxNSK2HandleNum)
81*53ee8cc1Swenshuai.xi     {
82*53ee8cc1Swenshuai.xi         return (NSK2HDI_STATUS_FAILED);
83*53ee8cc1Swenshuai.xi     }
84*53ee8cc1Swenshuai.xi 
85*53ee8cc1Swenshuai.xi 
86*53ee8cc1Swenshuai.xi     //should allocate dscmb here....
87*53ee8cc1Swenshuai.xi     NSK2Info[i].alloc = TRUE;
88*53ee8cc1Swenshuai.xi     NSK2Info[i].handle_id = i;
89*53ee8cc1Swenshuai.xi     NSK2Info[i].Nsk_ID = Nsk_ID;
90*53ee8cc1Swenshuai.xi 
91*53ee8cc1Swenshuai.xi 
92*53ee8cc1Swenshuai.xi     *Nsk_handle = (NSK2HDI_HANDLE)&NSK2Info[i].handle_id;
93*53ee8cc1Swenshuai.xi 
94*53ee8cc1Swenshuai.xi     NSK_TRACE(("Nsk_ID = 0x%x, NSK_handle = 0x%x\n",Nsk_ID,NSK2Info[i].handle_id));
95*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
96*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
97*53ee8cc1Swenshuai.xi }
98*53ee8cc1Swenshuai.xi 
NSKHDI_NskDevice_Close(NSK2HDI_HANDLE Nsk_handle)99*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_Close (NSK2HDI_HANDLE Nsk_handle)
100*53ee8cc1Swenshuai.xi {
101*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter\n"));
102*53ee8cc1Swenshuai.xi     MS_U32 u32Handle = NSKHDI_GetHandle(Nsk_handle);
103*53ee8cc1Swenshuai.xi     NSK_TRACE(("u32Handle = 0x%08x\n",u32Handle));
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi     NSK2Info[u32Handle].alloc = FALSE;
106*53ee8cc1Swenshuai.xi     NSK2Info[u32Handle].handle_id = 0;
107*53ee8cc1Swenshuai.xi 
108*53ee8cc1Swenshuai.xi 
109*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
110*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
111*53ee8cc1Swenshuai.xi }
112*53ee8cc1Swenshuai.xi 
NSKHDI_NskDevice_Read8(NSK2HDI_HANDLE Nsk_handle,NDS_ULONG register_offset,NDS_ULONG data_size,NDS_UBYTE * data)113*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_Read8 (NSK2HDI_HANDLE      Nsk_handle,
114*53ee8cc1Swenshuai.xi                                        NDS_ULONG           register_offset,
115*53ee8cc1Swenshuai.xi                                        NDS_ULONG           data_size,
116*53ee8cc1Swenshuai.xi                                        NDS_UBYTE           *data)
117*53ee8cc1Swenshuai.xi {
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi     //call to read data from NSK2 register...
120*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter\n"));
121*53ee8cc1Swenshuai.xi     MS_U32 u32Handle = NSKHDI_GetHandle(Nsk_handle);
122*53ee8cc1Swenshuai.xi     NSK_TRACE(("Nsk_handle = 0x%x, offset = 0x%x, data_size = 0x%x\n", u32Handle,register_offset,data_size));
123*53ee8cc1Swenshuai.xi 
124*53ee8cc1Swenshuai.xi     MDrv_NSK2_ReadData8(register_offset,data_size,data);
125*53ee8cc1Swenshuai.xi 
126*53ee8cc1Swenshuai.xi #ifdef NSK2DataProbe
127*53ee8cc1Swenshuai.xi     NDS_UBYTE *pData = (NDS_UBYTE *)data;
128*53ee8cc1Swenshuai.xi     NDS_ULONG  u32Data_Size = data_size;
129*53ee8cc1Swenshuai.xi     NSK_TRACE(("\n( "));
130*53ee8cc1Swenshuai.xi     while(u32Data_Size>0)
131*53ee8cc1Swenshuai.xi     {
132*53ee8cc1Swenshuai.xi         printf("%x, ",*pData++);
133*53ee8cc1Swenshuai.xi         u32Data_Size --;
134*53ee8cc1Swenshuai.xi     }
135*53ee8cc1Swenshuai.xi     printf(")\n");
136*53ee8cc1Swenshuai.xi #endif
137*53ee8cc1Swenshuai.xi 
138*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
139*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
140*53ee8cc1Swenshuai.xi }
141*53ee8cc1Swenshuai.xi 
142*53ee8cc1Swenshuai.xi 
NSKHDI_NskDevice_Write8(NSK2HDI_HANDLE Nsk_handle,NDS_ULONG register_offset,NDS_ULONG data_size,const NDS_UBYTE * data)143*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_Write8 (NSK2HDI_HANDLE     Nsk_handle,
144*53ee8cc1Swenshuai.xi                                         NDS_ULONG          register_offset,
145*53ee8cc1Swenshuai.xi                                         NDS_ULONG          data_size,
146*53ee8cc1Swenshuai.xi                                         const NDS_UBYTE    *data)
147*53ee8cc1Swenshuai.xi {
148*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter\n"));
149*53ee8cc1Swenshuai.xi     MS_U32 u32Handle = NSKHDI_GetHandle(Nsk_handle);
150*53ee8cc1Swenshuai.xi     NSK_TRACE(("Nsk_handle = 0x%x, offset = 0x%x, data_size = 0x%x\n", u32Handle,register_offset,data_size));
151*53ee8cc1Swenshuai.xi 
152*53ee8cc1Swenshuai.xi #ifdef NSK2DataProbe
153*53ee8cc1Swenshuai.xi     NDS_UBYTE *pData = (NDS_UBYTE *)data;
154*53ee8cc1Swenshuai.xi     NDS_ULONG  u32Data_Size = data_size;
155*53ee8cc1Swenshuai.xi     NSK_TRACE(("\n( "));
156*53ee8cc1Swenshuai.xi     while(u32Data_Size>0)
157*53ee8cc1Swenshuai.xi     {
158*53ee8cc1Swenshuai.xi         printf("%x, ",*pData++);
159*53ee8cc1Swenshuai.xi         u32Data_Size --;
160*53ee8cc1Swenshuai.xi     }
161*53ee8cc1Swenshuai.xi     printf(")\n");
162*53ee8cc1Swenshuai.xi #endif
163*53ee8cc1Swenshuai.xi 
164*53ee8cc1Swenshuai.xi 
165*53ee8cc1Swenshuai.xi     MDrv_NSK2_WriteData8(register_offset,data_size,(MS_U8 *)data);
166*53ee8cc1Swenshuai.xi 
167*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
168*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
169*53ee8cc1Swenshuai.xi }
170*53ee8cc1Swenshuai.xi 
NSKHDI_NskDevice_Read32(NSK2HDI_HANDLE Nsk_handle,NDS_ULONG register_offset,NDS_ULONG data_size,NDS_ULONG * data)171*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_Read32 (NSK2HDI_HANDLE     Nsk_handle,
172*53ee8cc1Swenshuai.xi                                         NDS_ULONG          register_offset,
173*53ee8cc1Swenshuai.xi                                         NDS_ULONG          data_size,
174*53ee8cc1Swenshuai.xi                                         NDS_ULONG          *data)
175*53ee8cc1Swenshuai.xi {
176*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter\n"));
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi     MS_U32 u32Handle = NSKHDI_GetHandle(Nsk_handle);
179*53ee8cc1Swenshuai.xi     NSK_TRACE(("Nsk_handle = 0x%x, offset = 0x%x, data_size = 0x%x\n", u32Handle,register_offset,data_size));
180*53ee8cc1Swenshuai.xi 
181*53ee8cc1Swenshuai.xi 
182*53ee8cc1Swenshuai.xi     MDrv_NSK2_ReadData32(register_offset,data_size, (MS_U32 *)data);
183*53ee8cc1Swenshuai.xi 
184*53ee8cc1Swenshuai.xi #ifdef NSK2DataProbe
185*53ee8cc1Swenshuai.xi     NDS_ULONG *pData = (NDS_ULONG *)data;
186*53ee8cc1Swenshuai.xi     NDS_ULONG  u32Data_Size = data_size;
187*53ee8cc1Swenshuai.xi 
188*53ee8cc1Swenshuai.xi     NSK_TRACE(("\n( "));
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi     while(u32Data_Size>0)
191*53ee8cc1Swenshuai.xi     {
192*53ee8cc1Swenshuai.xi         printf("%x, ",*pData++);
193*53ee8cc1Swenshuai.xi         u32Data_Size --;
194*53ee8cc1Swenshuai.xi     }
195*53ee8cc1Swenshuai.xi     printf(")\n");
196*53ee8cc1Swenshuai.xi #endif
197*53ee8cc1Swenshuai.xi 
198*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
199*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
200*53ee8cc1Swenshuai.xi }
201*53ee8cc1Swenshuai.xi 
NSKHDI_NskDevice_Write32(NSK2HDI_HANDLE Nsk_handle,NDS_ULONG register_offset,NDS_ULONG data_size,const NDS_ULONG * data)202*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_Write32 (NSK2HDI_HANDLE     Nsk_handle,
203*53ee8cc1Swenshuai.xi                                          NDS_ULONG          register_offset,
204*53ee8cc1Swenshuai.xi                                          NDS_ULONG          data_size,
205*53ee8cc1Swenshuai.xi                                          const NDS_ULONG    *data)
206*53ee8cc1Swenshuai.xi {
207*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter\n"));
208*53ee8cc1Swenshuai.xi     MS_U32 u32Handle = NSKHDI_GetHandle(Nsk_handle);
209*53ee8cc1Swenshuai.xi     NSK_TRACE(("Nsk_handle = 0x%x, offset = 0x%x, data_size = 0x%x\n", u32Handle,register_offset,data_size));
210*53ee8cc1Swenshuai.xi 
211*53ee8cc1Swenshuai.xi #ifdef NSK2DataProbe
212*53ee8cc1Swenshuai.xi     NDS_ULONG *pData = (NDS_ULONG *)data;
213*53ee8cc1Swenshuai.xi     NDS_ULONG  u32Data_Size = data_size;
214*53ee8cc1Swenshuai.xi 
215*53ee8cc1Swenshuai.xi     NSK_TRACE(("\n( "));
216*53ee8cc1Swenshuai.xi 
217*53ee8cc1Swenshuai.xi     while(u32Data_Size>0)
218*53ee8cc1Swenshuai.xi     {
219*53ee8cc1Swenshuai.xi         printf("%x, ",*pData++);
220*53ee8cc1Swenshuai.xi         u32Data_Size --;
221*53ee8cc1Swenshuai.xi     }
222*53ee8cc1Swenshuai.xi     printf(")\n");
223*53ee8cc1Swenshuai.xi #endif
224*53ee8cc1Swenshuai.xi 
225*53ee8cc1Swenshuai.xi     MDrv_NSK2_WriteData32(register_offset,data_size, (MS_U32 *)data);
226*53ee8cc1Swenshuai.xi 
227*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
228*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
229*53ee8cc1Swenshuai.xi }
230*53ee8cc1Swenshuai.xi 
231*53ee8cc1Swenshuai.xi 
NSKHDI_NskDevice_ExecuteCmd(NSK2HDI_HANDLE Nsk_handle,NDS_ULONG command,NDS_ULONG control,NDS_ULONG register_offset,NDS_ULONG data_size,const NDS_UBYTE * data)232*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_ExecuteCmd (NSK2HDI_HANDLE     Nsk_handle,
233*53ee8cc1Swenshuai.xi                                             NDS_ULONG          command,
234*53ee8cc1Swenshuai.xi                                             NDS_ULONG          control,
235*53ee8cc1Swenshuai.xi                                             NDS_ULONG          register_offset,
236*53ee8cc1Swenshuai.xi                                             NDS_ULONG          data_size,
237*53ee8cc1Swenshuai.xi                                             const NDS_UBYTE    *data)
238*53ee8cc1Swenshuai.xi {
239*53ee8cc1Swenshuai.xi 
240*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter\n"));
241*53ee8cc1Swenshuai.xi     MS_U32 u32Handle = NSKHDI_GetHandle(Nsk_handle);
242*53ee8cc1Swenshuai.xi     NSK_TRACE(("Nsk_handle = 0x%x, command = 0x%x, control = 0x%x, offset = 0x%x, data_size = 0x%x\n", u32Handle,command,control,register_offset,data_size));
243*53ee8cc1Swenshuai.xi 
244*53ee8cc1Swenshuai.xi     NSK_TRACE(("data = %p\n",data));
245*53ee8cc1Swenshuai.xi 
246*53ee8cc1Swenshuai.xi #ifdef NSK2DataProbe
247*53ee8cc1Swenshuai.xi     NDS_UBYTE *pData = (NDS_UBYTE *)data;
248*53ee8cc1Swenshuai.xi     NDS_ULONG  u32Data_Size = data_size;
249*53ee8cc1Swenshuai.xi     NSK_TRACE(("\n( "));
250*53ee8cc1Swenshuai.xi     while(u32Data_Size>0)
251*53ee8cc1Swenshuai.xi     {
252*53ee8cc1Swenshuai.xi         printf("%x, ",*pData++);
253*53ee8cc1Swenshuai.xi         u32Data_Size --;
254*53ee8cc1Swenshuai.xi     }
255*53ee8cc1Swenshuai.xi     printf(")\n");
256*53ee8cc1Swenshuai.xi #endif
257*53ee8cc1Swenshuai.xi 
258*53ee8cc1Swenshuai.xi     //MDrv_NSK2_WriteData32(register_offset,data_size, (MS_U32*)data);
259*53ee8cc1Swenshuai.xi     MDrv_NSK2_ExcuteCmd( command, control, register_offset, data_size, data);
260*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
261*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
262*53ee8cc1Swenshuai.xi }
263*53ee8cc1Swenshuai.xi 
264*53ee8cc1Swenshuai.xi 
265*53ee8cc1Swenshuai.xi 
_NSK2_Notify(MS_U32 reason,MS_U32 acpuError)266*53ee8cc1Swenshuai.xi void _NSK2_Notify(MS_U32  reason, MS_U32 acpuError)
267*53ee8cc1Swenshuai.xi {
268*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter, reason = 0x%x, acpuError = 0x%x\n",reason, acpuError));
269*53ee8cc1Swenshuai.xi 
270*53ee8cc1Swenshuai.xi     if(_gcb_routine != NULL)
271*53ee8cc1Swenshuai.xi     {
272*53ee8cc1Swenshuai.xi         _gcb_routine(_gNsk_handle,_gNSKcookie,reason,acpuError);
273*53ee8cc1Swenshuai.xi     }
274*53ee8cc1Swenshuai.xi 
275*53ee8cc1Swenshuai.xi     //NSK_TRACE(("Exit\n"));
276*53ee8cc1Swenshuai.xi }
277*53ee8cc1Swenshuai.xi 
NSKHDI_NskDevice_RegisterEventCB(NSK2HDI_HANDLE Nsk_handle,HDINSK2_NSKEVENT_CB_FN * cb_routine,void * cookie)278*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_RegisterEventCB ( NSK2HDI_HANDLE          Nsk_handle,
279*53ee8cc1Swenshuai.xi                                                   HDINSK2_NSKEVENT_CB_FN  *cb_routine,
280*53ee8cc1Swenshuai.xi                                                   void                    *cookie)
281*53ee8cc1Swenshuai.xi {
282*53ee8cc1Swenshuai.xi     MS_U32 u32Handle = NSKHDI_GetHandle(Nsk_handle);
283*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter, Nsk_handle = 0x%x, cb_routine = 0x%p\n",u32Handle,cb_routine));
284*53ee8cc1Swenshuai.xi 
285*53ee8cc1Swenshuai.xi 
286*53ee8cc1Swenshuai.xi     //it might need to  change the way to keep handle.....
287*53ee8cc1Swenshuai.xi     _gcb_routine = cb_routine;
288*53ee8cc1Swenshuai.xi     _gNsk_handle = Nsk_handle;
289*53ee8cc1Swenshuai.xi     _gNSKcookie = cookie;
290*53ee8cc1Swenshuai.xi 
291*53ee8cc1Swenshuai.xi     MDrv_NSK2_SetIntNotify(&_NSK2_Notify);
292*53ee8cc1Swenshuai.xi     //cb_routine = &_NSK2_Notify;
293*53ee8cc1Swenshuai.xi 
294*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
295*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
296*53ee8cc1Swenshuai.xi }
297*53ee8cc1Swenshuai.xi 
NSKHDI_NskDevice_AcknowledgeKte(NSK2HDI_HANDLE Nsk_handle)298*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_AcknowledgeKte(NSK2HDI_HANDLE Nsk_handle)
299*53ee8cc1Swenshuai.xi {
300*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter\n"));
301*53ee8cc1Swenshuai.xi 
302*53ee8cc1Swenshuai.xi 
303*53ee8cc1Swenshuai.xi     MDrv_NSK2_DriveKteAck();
304*53ee8cc1Swenshuai.xi     //NSK2DBG_KTEValid(0,0);
305*53ee8cc1Swenshuai.xi 
306*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
307*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
308*53ee8cc1Swenshuai.xi }
NSKHDI_NskDevice_BasicInitializationComplete(NSK2HDI_HANDLE Nsk_handle,NDS_ULONG stage)309*53ee8cc1Swenshuai.xi 
310*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_BasicInitializationComplete( NSK2HDI_HANDLE Nsk_handle, NDS_ULONG stage)
311*53ee8cc1Swenshuai.xi {
312*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter\n"));
313*53ee8cc1Swenshuai.xi     MS_U32 u32Handle = NSKHDI_GetHandle(Nsk_handle);
314*53ee8cc1Swenshuai.xi     NSK_TRACE(("Nsk_handle = 0x%x, stage = 0x%x\n",u32Handle,stage));
315*53ee8cc1Swenshuai.xi 
316*53ee8cc1Swenshuai.xi     MDrv_NSK2_BasicInitializationComplete();
317*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
318*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
319*53ee8cc1Swenshuai.xi }
NSKHDI_NskDevice_UpdateNVCounter(NSK2HDI_HANDLE Nsk_handle)320*53ee8cc1Swenshuai.xi 
321*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_UpdateNVCounter(NSK2HDI_HANDLE Nsk_handle)
322*53ee8cc1Swenshuai.xi {
323*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter\n"));
324*53ee8cc1Swenshuai.xi 
325*53ee8cc1Swenshuai.xi     MS_U32 status;
326*53ee8cc1Swenshuai.xi     status = MDrv_NSK21_IncrementNvCounter();
327*53ee8cc1Swenshuai.xi     MDrv_NSK2_DriveKteAck();
328*53ee8cc1Swenshuai.xi 
329*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
330*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
331*53ee8cc1Swenshuai.xi }
NSKHDI_NskDevice_WriteOTPKey(NSK2HDI_HANDLE Nsk_handle,NDS_ULONG desc_size,const NDS_UBYTE * desc)332*53ee8cc1Swenshuai.xi 
333*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_WriteOTPKey(NSK2HDI_HANDLE     Nsk_handle,
334*53ee8cc1Swenshuai.xi                                             NDS_ULONG          desc_size,
335*53ee8cc1Swenshuai.xi                                             const NDS_UBYTE    *desc)
336*53ee8cc1Swenshuai.xi {
337*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter\n"));
338*53ee8cc1Swenshuai.xi     NSK_TRACE(("desc_size = %x, desc = %p\n",desc_size,desc));
339*53ee8cc1Swenshuai.xi 
340*53ee8cc1Swenshuai.xi     MS_U32 i;
341*53ee8cc1Swenshuai.xi     MS_U8 *pDesc = (MS_U8 *)desc;
342*53ee8cc1Swenshuai.xi     for(i=0;i<desc_size;i++)
343*53ee8cc1Swenshuai.xi     {
344*53ee8cc1Swenshuai.xi         printf(" (%d, %x) \n", i, pDesc[i]);
345*53ee8cc1Swenshuai.xi     }
346*53ee8cc1Swenshuai.xi 
347*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
348*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
349*53ee8cc1Swenshuai.xi }
NSKHDI_NskDevice_SetOneShotGenInBit(NSK2HDI_HANDLE Nsk_handle,NDS_ULONG bits)350*53ee8cc1Swenshuai.xi 
351*53ee8cc1Swenshuai.xi NSK2HDI_STATUS NSKHDI_NskDevice_SetOneShotGenInBit(NSK2HDI_HANDLE     Nsk_handle,
352*53ee8cc1Swenshuai.xi                                                    NDS_ULONG          bits)
353*53ee8cc1Swenshuai.xi {
354*53ee8cc1Swenshuai.xi     NSK_TRACE(("Enter\n"));
355*53ee8cc1Swenshuai.xi 
356*53ee8cc1Swenshuai.xi     MS_U32 MaskVal, XorVal;
357*53ee8cc1Swenshuai.xi     XorVal = (MS_U32)bits;
358*53ee8cc1Swenshuai.xi     MaskVal = (~XorVal);
359*53ee8cc1Swenshuai.xi     MDrv_NSK21_ModifyGenIn(MaskVal, XorVal);
360*53ee8cc1Swenshuai.xi 
361*53ee8cc1Swenshuai.xi     NSK_TRACE(("Exit\n"));
362*53ee8cc1Swenshuai.xi     return NSK2HDI_STATUS_OK;
363*53ee8cc1Swenshuai.xi }
364 
365