ddd809f9e5
This is the bcm57xx package. I have tested default vlan functions, but I dont have the equipment to test more advanced setups. The default vlan setup seems to be working fine. I also added the activate_gpio parameter which will make the driver activate the switch via gpio before probing for it. I'm not sure which method is best for autoload. For the wrt350n, I need the activate_gpio parameter. But its probably not a good idea to add that to the autoload file. On a system without a bcm57xx switch, isn't it a bad idea to mess with the gpios looking for the switch? Ideally, wouldn't it be best to load the bcm57xx module from broadcom-diag, after it has determined which router its on? I tried using 'request_module' from there, but had no success. For now, I am relying on preinit to load the bcm57xx module with activate_gpio param, after it has failed to load switch_robo and switch_adm. Signed-off-by: Ben Pfountz <netprince (at) vt (dot) edu> SVN-Revision: 11471
107 lines
3.8 KiB
C
107 lines
3.8 KiB
C
/******************************************************************************/
|
|
/* */
|
|
/* 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 */
|