• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2 **+-----------------------------------------------------------------------+**
3 **|                                                                       |**
4 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
5 **| All rights reserved.                                                  |**
6 **|                                                                       |**
7 **| Redistribution and use in source and binary forms, with or without    |**
8 **| modification, are permitted provided that the following conditions    |**
9 **| are met:                                                              |**
10 **|                                                                       |**
11 **|  * Redistributions of source code must retain the above copyright     |**
12 **|    notice, this list of conditions and the following disclaimer.      |**
13 **|  * Redistributions in binary form must reproduce the above copyright  |**
14 **|    notice, this list of conditions and the following disclaimer in    |**
15 **|    the documentation and/or other materials provided with the         |**
16 **|    distribution.                                                      |**
17 **|  * Neither the name Texas Instruments nor the names of its            |**
18 **|    contributors may be used to endorse or promote products derived    |**
19 **|    from this software without specific prior written permission.      |**
20 **|                                                                       |**
21 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
22 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
23 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
24 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
25 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
26 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
27 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
28 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
29 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
30 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
31 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
32 **|                                                                       |**
33 **+-----------------------------------------------------------------------+**
34 ****************************************************************************/
35 
36 /****************************************************************************
37  *
38  *   MODULE:  shmBus.h
39  *   PURPOSE: Shared memory Bus access object
40  *
41  ****************************************************************************/
42 
43 #ifndef _WHAL_SHM_BUS_H
44 #define _WHAL_SHM_BUS_H
45 
46 #include "whalHwEeprom.h"
47 #include "whalBus_Api.h"
48 #include "TNETWIF.h"
49 #include "whalTrace.h"
50 
51 
52 /*
53  * Use this flag to optimize FW download.
54  * By default this flag is disabled, because the
55  * FW image may be stored at ROM addresses
56  */
57 #undef  USE_NO_CHUNK_COPY
58 
59 
60 /* Firmware image load chunk size */
61 #define CHUNK_SIZE          512
62 
63 
64 /* CLASS whalBus */
65 typedef struct _whalBus_T
66 {
67     TI_HANDLE               hTNETWIF;
68     TI_HANDLE               hTnetwDrv;
69     HwEeprom_T             *pHwEeprom;
70     WhalTrace_T            *pTrc;
71     TI_HANDLE               hOs;
72     TI_HANDLE               hReport;
73     TI_HANDLE               hWhalCtrl;
74     UINT8                  *pFwBuf;       /* Firmware image ptr */
75     UINT32                  uFwLastAddr;  /* Firmware image length */
76     UINT8                  *pEEPROMBuf;   /* EEPROM image ptr */
77     UINT32                  uEEPROMLen;   /* EEPROM image length */
78     UINT8                  *pEEPROMCurPtr;
79     UINT32                  uEEPROMCurLen;
80     BootAttr_T              BootAttr;
81     TI_HANDLE               hHwCtrl;
82     TI_STATUS               DownloadStatus;
83     fnotify_t               fCb;          /* Upper module callback for the init stage */
84     TI_HANDLE               hCb;          /* Upper module handle for the init stage */
85     UINT32                  uInitStage;   /* Init stage */
86     UINT32                  uResetStage;  /* Reset statge */
87     UINT32                  uEEPROMStage; /* EEPROM burst stage */
88     UINT32                  uInitData;    /* Init state machine temporary data */
89     UINT32                  uElpCmd;      /* ELP command image */
90     UINT32                  uChipId;      /* Chip ID */
91     UINT32                  uBootData;    /* Boot state machine temporary data */
92     UINT32                  uSelfClearTime;
93     UINT8                   uEEPROMBurstLen;
94     UINT8                   uEEPROMBurstLoop;
95     UINT32                  uEEPROMRegAddr;
96     TI_STATUS               uEEPROMStatus;
97     UINT32                  uNVSStartAddr;
98     UINT32                  uNVSNumChar;
99     UINT32                  uNVSNumByte;
100     /* use a struct to write buffers on the bus - used for extra bytes reserving */
101     PADDING (UINT32         uNVSTempWord)
102     TI_STATUS               uNVSStatus;
103     UINT32                  uScrPad6;
104     UINT32                  uRefFreq;
105     UINT32                  uInitSeqStage;
106     TI_STATUS               uInitSeqStatus;
107     UINT32                  uLoadStage;
108     UINT32                  uChunkNum;
109     UINT32                  uPartitionLimit;
110     UINT32                  uFinStage;
111     UINT32                  uFinData;
112     UINT32                  uFinLoop;
113     /* Temporary buffer for FW chunk storage */
114   #ifdef USE_NO_CHUNK_COPY
115     UINT8                   auFwTmpBuf [TNETWIF_WRITE_OFFSET_BYTES];
116   #else
117     UINT8                   auFwTmpBuf [TNETWIF_WRITE_OFFSET_BYTES + CHUNK_SIZE];
118   #endif
119     /* size of the Fw image, retrieved from the image itself */
120     UINT32                  uFwDataLen;
121 
122 	BOOL					recoveryProcess;
123 
124 } whalBus_T;
125 
126 
127 /* Debug */
128 void shmDebug_registerDump(TI_HANDLE hWhalBus);
129 int  shmDebug_PrintRxRegs(TI_HANDLE hWhalBus);
130 int  shmDebug_PrintTxRegs(TI_HANDLE hWhalBus);
131 int  shmDebug_PrintScrPadRegs(TI_HANDLE hWhalBus);
132 int  shmDebug_PrintListRegs(TI_HANDLE hWhalBus, UINT32 RegAddr);
133 void shmDebug_MemPrint(TI_HANDLE hWhalBus, UINT32 MemAddr);
134 void whalBus_MemCopyFrom (TI_HANDLE hWhalBus, UINT8 *Dest, char *SrcOffset, int Len);
135 void shmDebug_macRegisterDump(TI_HANDLE hWhalBus);
136 void shmDebug_phyRegisterDump(TI_HANDLE hWhalBus);
137 
138 
139 #endif /* _WHAL_SHM_BUS_H */
140