summaryrefslogtreecommitdiffstats
path: root/package/broadcom-57xx/src/tcp_seg.c
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 */