From e0b66ad4dce6db175b566c3bbb0e975d0f0dcb2d Mon Sep 17 00:00:00 2001 From: sato_masaki Date: Thu, 28 Feb 2008 00:04:06 +0000 Subject: [PATCH] =?UTF-8?q?NWM=E3=81=AE=E6=94=B9=E5=A4=89=E3=81=AB?= =?UTF-8?q?=E4=BC=B4=E3=81=86=E4=BF=AE=E6=AD=A3=E3=80=82=EF=BC=88=E3=81=A8?= =?UTF-8?q?=E3=82=8A=E3=81=82=E3=81=88=E3=81=9A=E3=83=93=E3=83=AB=E3=83=89?= =?UTF-8?q?=E3=81=8C=E9=80=9A=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@756 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../Launcher/ARM9/src/loadWlanFirm.c | 44 +++++++++---------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c b/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c index 5ff96255..fa39c8d5 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c @@ -47,6 +47,8 @@ static void nwmCallback(void* arg); static s32 readFirmwareBinary(u8 *buffer, s32 bufSize); static BOOL verifyWlanfirmSignature(u8* buffer, u32 length); +extern NWMRetCode NWMi_InstallFirmware(NWMCallbackFunc callback, void* addr, u32 size); + static inline u16 SCFG_GetBondingOption(void) { return (u16)(*(u8*)(HW_SYS_CONF_BUF+HWi_WSYS08_OFFSET) & HWi_WSYS08_OP_OPT_MASK); @@ -58,25 +60,20 @@ void nwmCallback(void* arg) NWMCallback *cb = (NWMCallback*)arg; switch (cb->apiid) { - case NWM_APIID_LOAD_DEVICE: + case NWM_APIID_INSTALL_FIRMWARE: if (cb->retcode == NWM_RETCODE_SUCCESS) { - NWMRetCode err; - OS_TPrintf("Wlan firm:Load Device success!\n"); - err = NWM_UnloadDevice(nwmCallback); + OS_TPrintf("Wlan firm:FW download success!\n"); +#if (MEASURE_WIRELESS_INITTIME == 1) + OS_TPrintf("Wlan firm:LoadTime=%dmsec\n", OS_TicksToMilliSeconds(OS_GetTick() - startTick)); +#endif + OS_TPrintf("Wlan firm:Wlan firmware has been installed successfully!\n"); + SYSM_Free( fwBuffer ); + /* [TODO:] osSendMessage */ } else { - OS_TPrintf("Wlan firm:Load Device Timeout Error!\n"); + OS_TPrintf("Wlan firm:FW download Timeout Error!\n"); SYSM_Free( fwBuffer ); } break; - case NWM_APIID_UNLOAD_DEVICE: - OS_TPrintf("Wlan firm:Unload Device success!\n"); -#if (MEASURE_WIRELESS_INITTIME == 1) - OS_TPrintf("Wlan firm:LoadTime=%dmsec\n", OS_TicksToMilliSeconds(OS_GetTick() - startTick)); -#endif - OS_TPrintf("Wlan firm:Wlan firmware has been installed successfully!\n"); - SYSM_Free( fwBuffer ); - /* [TODO:] osSendMessage */ - break; default: OS_TWarning("Wlan firm:Error(invalid apiid=0x%04X)!\n", cb->apiid); SYSM_Free( fwBuffer ); @@ -177,10 +174,10 @@ BOOL verifyWlanfirmSignature(u8* buffer, u32 length) #endif pPubkey = OSi_GetFromFirmAddr()->rsa_pubkey[WLANFIRM_PUBKEY_INDEX]; - pSign = (u8*)((u32)buffer + (u32)hdr->rsv); + pSign = (u8*)((u32)buffer + (u32)hdr->sofs); txtVector[0] = buffer; - txtlenVector[0] = (u32)hdr->rsv; /* 署名の直前までのLength */ + txtlenVector[0] = (u32)hdr->sofs; /* 署名の直前までのLength */ txtVector[1] = (u8*)(txtVector[0] + txtlenVector[0] + (u32)SIGN_LENGTH); txtlenVector[1] = length - txtlenVector[0] - (u32)SIGN_LENGTH; @@ -287,16 +284,17 @@ BOOL InstallWirelessFirmware(void) NWM_Init(nwmBuf, sizeof(nwmBuf), 3); /* 3 -> DMA no. */ - if ( 0 < flen ) - { - (void)NWMi_InstallFirmware(fwBuffer, (u32)flen); - } - #if (MEASURE_WIRELESS_INITTIME == 1) startTick = OS_GetTick(); #endif - err = NWM_LoadDevice(nwmCallback); - + + if ( 0 < flen ) + { + err = NWMi_InstallFirmware(nwmCallback, fwBuffer, (u32)flen); + } else if (flen <= 0) { + err = NWMi_InstallFirmware(nwmCallback, NULL, (u32)flen); + } + /* osRecvMessage */ /* [TODO:] 無線ロード処理の完了をメインルーチンへ通知するための仕組みを考える必要あり。