(6/6) bcm57xx: package
[openwrt/svn-archive/archive.git] / package / broadcom-57xx / src / tcp_seg.c
1 /******************************************************************************/
2 /* */
3 /* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2002 - 2004 Broadcom */
4 /* Corporation. */
5 /* All rights reserved. */
6 /* */
7 /* This program is free software; you can redistribute it and/or modify */
8 /* it under the terms of the GNU General Public License as published by */
9 /* the Free Software Foundation, located in the file LICENSE. */
10 /* */
11 /* History: */
12 /* */
13 /******************************************************************************/
14
15 #include "mm.h"
16
17 #ifdef INCLUDE_TCP_SEG_SUPPORT
18 #include "fw_stkoffld.h"
19 #include "fw_lso05.h"
20
21 LM_UINT32 LM_GetStkOffLdFirmwareSize(PLM_DEVICE_BLOCK pDevice)
22 {
23 LM_UINT32 FwSize;
24
25 if (T3_ASIC_REV(pDevice->ChipRevId) == T3_ASIC_REV_5750)
26 {
27 return 0;
28 }
29 if (T3_ASIC_REV(pDevice->ChipRevId) == T3_ASIC_REV_5705)
30 {
31 FwSize = (LM_UINT32)(t3StkOffLd05FwTextLen +
32 t3StkOffLd05FwRodataLen +
33 t3StkOffLd05FwDataLen +
34 t3StkOffLd05FwSbssLen +
35 t3StkOffLd05FwBssLen);
36 }
37 else
38 {
39 FwSize = (LM_UINT32)(t3StkOffLdFwTextLen +
40 t3StkOffLdFwRodataLen +
41 t3StkOffLdFwDataLen +
42 t3StkOffLdFwSbssLen +
43 t3StkOffLdFwBssLen);
44 }
45
46 return FwSize;
47 }
48
49 LM_STATUS LM_LoadStkOffLdFirmware(PLM_DEVICE_BLOCK pDevice)
50 {
51 T3_FWIMG_INFO FwImgInfo;
52 LM_UINT32 Cpu;
53
54 if (T3_ASIC_IS_575X_PLUS(pDevice->ChipRevId))
55 {
56 return LM_STATUS_SUCCESS;
57 }
58 if (T3_ASIC_REV(pDevice->ChipRevId) == T3_ASIC_REV_5705)
59 {
60 FwImgInfo.StartAddress = t3StkOffLd05FwStartAddr;
61 FwImgInfo.Text.Buffer = (PLM_UINT8)t3StkOffLd05FwText;
62 FwImgInfo.Text.Offset = t3StkOffLd05FwTextAddr;
63 FwImgInfo.Text.Length = t3StkOffLd05FwTextLen;
64 FwImgInfo.ROnlyData.Buffer = (PLM_UINT8)t3StkOffLd05FwRodata;
65 FwImgInfo.ROnlyData.Offset = t3StkOffLd05FwRodataAddr;
66 FwImgInfo.ROnlyData.Length = t3StkOffLd05FwRodataLen;
67 FwImgInfo.Data.Buffer = (PLM_UINT8)t3StkOffLd05FwData;
68 FwImgInfo.Data.Offset = t3StkOffLd05FwDataAddr;
69 FwImgInfo.Data.Length = t3StkOffLd05FwDataLen;
70 FwImgInfo.Sbss.Offset = t3StkOffLd05FwSbssAddr;
71 FwImgInfo.Sbss.Length = t3StkOffLd05FwSbssLen;
72 FwImgInfo.Bss.Offset = t3StkOffLd05FwBssAddr;
73 FwImgInfo.Bss.Length = t3StkOffLd05FwBssLen;
74 Cpu = T3_RX_CPU_ID;
75 }
76 else
77 {
78 FwImgInfo.StartAddress = t3StkOffLdFwStartAddr;
79 FwImgInfo.Text.Buffer = (PLM_UINT8)t3StkOffLdFwText;
80 FwImgInfo.Text.Offset = t3StkOffLdFwTextAddr;
81 FwImgInfo.Text.Length = t3StkOffLdFwTextLen;
82 FwImgInfo.ROnlyData.Buffer = (PLM_UINT8)t3StkOffLdFwRodata;
83 FwImgInfo.ROnlyData.Offset = t3StkOffLdFwRodataAddr;
84 FwImgInfo.ROnlyData.Length = t3StkOffLdFwRodataLen;
85 FwImgInfo.Data.Buffer = (PLM_UINT8)t3StkOffLdFwData;
86 FwImgInfo.Data.Offset = t3StkOffLdFwDataAddr;
87 FwImgInfo.Data.Length = t3StkOffLdFwDataLen;
88 FwImgInfo.Sbss.Offset = t3StkOffLdFwSbssAddr;
89 FwImgInfo.Sbss.Length = t3StkOffLdFwSbssLen;
90 FwImgInfo.Bss.Offset = t3StkOffLdFwBssAddr;
91 FwImgInfo.Bss.Length = t3StkOffLdFwBssLen;
92 Cpu = T3_TX_CPU_ID;
93 }
94
95 if (LM_LoadFirmware(pDevice,
96 &FwImgInfo,
97 Cpu,
98 Cpu) != LM_STATUS_SUCCESS)
99 {
100 return LM_STATUS_FAILURE;
101 }
102
103 return LM_STATUS_SUCCESS;
104 }
105
106 #endif /* INCLUDE_TCP_SEG_SUPPORT */