blob: 5a7c8f14a4920db0e082b9f4db3f54e7c8da26a5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
/******************************************************************************/
/* */
/* 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 */
|