1 /*---------------------------------------------------------------------------*
2   Project:  TwlSDK - NWM - libraries
3   File:     nwm_arm9_private.h
4 
5   Copyright 2007-2008 Nintendo. All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law. They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Date:: 2008-09-26#$
14   $Rev: 8688 $
15   $Author: sato_masaki $
16  *---------------------------------------------------------------------------*/
17 
18 #ifndef LIBRARIES_NWM_ARM9_NWM_ARM9_PRIVATE_H__
19 #define LIBRARIES_NWM_ARM9_NWM_ARM9_PRIVATE_H__
20 
21 #ifdef  __cplusplus
22 extern "C" {
23 #endif
24 
25 /*===========================================================================*/
26 
27 #ifdef SDK_TWL
28 #include <twl.h>
29 #else
30 #include <nitro.h>
31 #endif
32 
33 #include "nwm_common_private.h"
34 
35 /*---------------------------------------------------------------------------*
36     Constant Definitions
37  *---------------------------------------------------------------------------*/
38 
39 
40 /*---------------------------------------------------------------------------*
41     Macro Definitions
42  *---------------------------------------------------------------------------*/
43 
44 #define     NWM_CHECK_RESULT( res )      \
45     if( (( res ) != NWM_RETCODE_SUCCESS) && (( res ) != NWM_RETCODE_OPERATING) ) \
46     {                                   \
47         return ( res );                 \
48     }
49 
50 /*---------------------------------------------------------------------------*
51     Structure Definitions
52  *---------------------------------------------------------------------------*/
53 
54 #ifdef NWM_SUPPORT_HWRESET
55 extern PMExitCallbackInfo hwResetCbInfo;
56 #endif
57 
58 /*---------------------------------------------------------------------------*
59     Private Function Prototypes
60  *---------------------------------------------------------------------------*/
61 
62 void NWMi_ReceiveFifo9(PXIFifoTag tag, u32 fifo_buf_adr, BOOL err);
63 void NWMi_SetCallbackTable(NWMApiid id, NWMCallbackFunc callback);
64 void NWMi_SetReceiveCallbackTable(NWMFramePort port, NWMCallbackFunc callback);
65 NWMRetCode NWMi_SendCommand(NWMApiid id, u16 paramNum, ...);
66 NWMRetCode NWMi_SendCommandDirect(void *data, u32 length);
67 NWMRetCode NWMi_CheckState(s32 paramNum, ...);
68 NWMArm9Buf *NWMi_GetSystemWork(void);
69 NWMRetCode NWMi_CheckInitialized(void);
70 void NWMi_ClearFifoRecvFlag(void);
71 NWMRetCode NWMi_RegisterFirmware(void* addr, u32 size);
72 
73 BOOL NWMi_CheckEnableFlag(void);
74 
75 #ifdef NWM_SUPPORT_HWRESET
76 void NWMi_ForceExit(void *arg);
77 #endif
78 
NWMi_IsAPIActive(u16 apiid)79 inline BOOL NWMi_IsAPIActive(u16 apiid)
80 {
81     NWMArm9Buf *sys = NWMi_GetSystemWork();
82 
83     if (sys) {
84 
85         DC_InvalidateRange(&sys->status->apiActiveFlag[apiid], sizeof(u8));
86 
87         return (sys->status->apiActiveFlag[apiid] == 1) ? TRUE:FALSE;
88     }
89     return FALSE;
90 }
91 
92 /*
93   These functions can be called only by launcher.
94  */
95 
96 NWMRetCode NWMi_InstallFirmware(NWMCallbackFunc callback, void* addr, u32 size, BOOL isColdstart);
97 u32 NWMi_GetFirmImageOffset(void* addr, u32 fwType);
98 u32 NWMi_GetFirmImageLength(void* addr, u32 fwType);
99 u8* NWMi_GetFirmImageHashAddress(void* addr, u32 fwType);
100 
101 BOOL NWMi_CheckFirmDataParamIntegrity(void);
102 
103 /*
104    Private API functions
105  */
106 
107 #ifdef NWM_INCLUDE_FIRM
108 NWMRetCode NWMi_LoadDeviceEx(NWMCallbackFunc callback); /* Transfers wireless firmware */
109 #endif
110 
111 // for ARM9 WPA supplicant
112 NWMRetCode NWMi_SetWPAKey(NWMCallbackFunc callback, u8 cipherType, u8 macAddr[6], u8 keyIndex, u8 keyLen, u8* keyData, u8 keyRsc[8]);
113 
114 // for ARM9 WPA supplicant
115 NWMRetCode NWMi_SetWPAParams(NWMCallbackFunc callback, u32 operation, u32 value);
116 
117 NWMRetCode NWMi_CreateQoS(NWMCallbackFunc callback, NWMQoSParam *param);
118 
119 /*===========================================================================*/
120 
121 
122 
123 #ifdef  __cplusplus
124 }       /* extern "C" */
125 #endif
126 
127 #endif /* LIBRARIES_NWM_ARM9_NWM_ARM9_PRIVATE_H__ */
128 
129 /*---------------------------------------------------------------------------*
130   End of file
131  *---------------------------------------------------------------------------*/
132