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 */ 65typedef 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 */ 128void shmDebug_registerDump(TI_HANDLE hWhalBus); 129int shmDebug_PrintRxRegs(TI_HANDLE hWhalBus); 130int shmDebug_PrintTxRegs(TI_HANDLE hWhalBus); 131int shmDebug_PrintScrPadRegs(TI_HANDLE hWhalBus); 132int shmDebug_PrintListRegs(TI_HANDLE hWhalBus, UINT32 RegAddr); 133void shmDebug_MemPrint(TI_HANDLE hWhalBus, UINT32 MemAddr); 134void whalBus_MemCopyFrom (TI_HANDLE hWhalBus, UINT8 *Dest, char *SrcOffset, int Len); 135void shmDebug_macRegisterDump(TI_HANDLE hWhalBus); 136void shmDebug_phyRegisterDump(TI_HANDLE hWhalBus); 137 138 139#endif /* _WHAL_SHM_BUS_H */ 140