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