/******************************************************************************/ /* */ /* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2002 - 2004 Broadcom */ /* Corporation. */ /* All rights reserved. */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation, located in the file LICENSE. */ /* */ /* History: */ /* */ /******************************************************************************/ #include "mm.h" #ifdef INCLUDE_TCP_SEG_SUPPORT #include "fw_stkoffld.h" #include "fw_lso05.h" LM_UINT32 LM_GetStkOffLdFirmwareSize(PLM_DEVICE_BLOCK pDevice) { LM_UINT32 FwSize; if (T3_ASIC_REV(pDevice->ChipRevId) == T3_ASIC_REV_5750) { return 0; } if (T3_ASIC_REV(pDevice->ChipRevId) == T3_ASIC_REV_5705) { FwSize = (LM_UINT32)(t3StkOffLd05FwTextLen + t3StkOffLd05FwRodataLen + t3StkOffLd05FwDataLen + t3StkOffLd05FwSbssLen + t3StkOffLd05FwBssLen); } else { FwSize = (LM_UINT32)(t3StkOffLdFwTextLen + t3StkOffLdFwRodataLen + t3StkOffLdFwDataLen + t3StkOffLdFwSbssLen + t3StkOffLdFwBssLen); } return FwSize; } LM_STATUS LM_LoadStkOffLdFirmware(PLM_DEVICE_BLOCK pDevice) { T3_FWIMG_INFO FwImgInfo; LM_UINT32 Cpu; if (T3_ASIC_IS_575X_PLUS(pDevice->ChipRevId)) { return LM_STATUS_SUCCESS; } if (T3_ASIC_REV(pDevice->ChipRevId) == T3_ASIC_REV_5705) { FwImgInfo.StartAddress = t3StkOffLd05FwStartAddr; FwImgInfo.Text.Buffer = (PLM_UINT8)t3StkOffLd05FwText; FwImgInfo.Text.Offset = t3StkOffLd05FwTextAddr; FwImgInfo.Text.Length = t3StkOffLd05FwTextLen; FwImgInfo.ROnlyData.Buffer = (PLM_UINT8)t3StkOffLd05FwRodata; FwImgInfo.ROnlyData.Offset = t3StkOffLd05FwRodataAddr; FwImgInfo.ROnlyData.Length = t3StkOffLd05FwRodataLen; FwImgInfo.Data.Buffer = (PLM_UINT8)t3StkOffLd05FwData; FwImgInfo.Data.Offset = t3StkOffLd05FwDataAddr; FwImgInfo.Data.Length = t3StkOffLd05FwDataLen; FwImgInfo.Sbss.Offset = t3StkOffLd05FwSbssAddr; FwImgInfo.Sbss.Length = t3StkOffLd05FwSbssLen; FwImgInfo.Bss.Offset = t3StkOffLd05FwBssAddr; FwImgInfo.Bss.Length = t3StkOffLd05FwBssLen; Cpu = T3_RX_CPU_ID; } else { FwImgInfo.StartAddress = t3StkOffLdFwStartAddr; FwImgInfo.Text.Buffer = (PLM_UINT8)t3StkOffLdFwText; FwImgInfo.Text.Offset = t3StkOffLdFwTextAddr; FwImgInfo.Text.Length = t3StkOffLdFwTextLen; FwImgInfo.ROnlyData.Buffer = (PLM_UINT8)t3StkOffLdFwRodata; FwImgInfo.ROnlyData.Offset = t3StkOffLdFwRodataAddr; FwImgInfo.ROnlyData.Length = t3StkOffLdFwRodataLen; FwImgInfo.Data.Buffer = (PLM_UINT8)t3StkOffLdFwData; FwImgInfo.Data.Offset = t3StkOffLdFwDataAddr; FwImgInfo.Data.Length = t3StkOffLdFwDataLen; FwImgInfo.Sbss.Offset = t3StkOffLdFwSbssAddr; FwImgInfo.Sbss.Length = t3StkOffLdFwSbssLen; FwImgInfo.Bss.Offset = t3StkOffLdFwBssAddr; FwImgInfo.Bss.Length = t3StkOffLdFwBssLen; Cpu = T3_TX_CPU_ID; } if (LM_LoadFirmware(pDevice, &FwImgInfo, Cpu, Cpu) != LM_STATUS_SUCCESS) { return LM_STATUS_FAILURE; } return LM_STATUS_SUCCESS; } #endif /* INCLUDE_TCP_SEG_SUPPORT */