diff options
| author | Daiqian Hu <[email protected]> | 2016-11-21 08:54:24 +0800 |
|---|---|---|
| committer | Daiqian Hu <[email protected]> | 2016-11-21 08:54:24 +0800 |
| commit | a95eaad088f61aa55da9d73015cf1ed86e64a67e (patch) | |
| tree | 15b498a08a4aee4b7f8b1627d39c965b3aa3ba98 /network/wlan/WDI/HAL/HalEfuse.h | |
| parent | 1aa0338ec5418345ea0c383e92b4fa19f7c98425 (diff) | |
Re-submit for WDI sample driver to GitHub
Submit WDI sample driver to GitHub for RS1.
Diffstat (limited to 'network/wlan/WDI/HAL/HalEfuse.h')
| -rw-r--r-- | network/wlan/WDI/HAL/HalEfuse.h | 461 |
1 files changed, 461 insertions, 0 deletions
diff --git a/network/wlan/WDI/HAL/HalEfuse.h b/network/wlan/WDI/HAL/HalEfuse.h new file mode 100644 index 00000000..9bfe9d94 --- /dev/null +++ b/network/wlan/WDI/HAL/HalEfuse.h @@ -0,0 +1,461 @@ +/****************************************************************************** + * + * (c) Copyright 2008, RealTEK Technologies Inc. All Rights Reserved. + * + * 03/04/2011 Cosa Modify + * +******************************************************************************/ +#ifndef __INC_HAL_EFUSE_H__ +#define __INC_HAL_EFUSE_H__ + +//============================================= +// Here we define which chip need to be supported or not +//============================================= +#define SUPPORT_EFUSE 1 +#if(SUPPORT_EFUSE == 1) + +#define EFUSE_SUPPORT_92S 1 +#define EFUSE_SUPPORT_92C 1 +#define EFUSE_SUPPORT_92D 1 +#define EFUSE_SUPPORT_8188E 1 +#define EFUSE_SUPPORT_8188F 1 +#define EFUSE_SUPPORT_8812A 1 +#define EFUSE_SUPPORT_8811A 1 +#define EFUSE_SUPPORT_8821A 1 +#define EFUSE_SUPPORT_8192E 1 +#define EFUSE_SUPPORT_8814A 1 +#define EFUSE_SUPPORT_8723B 1 +#define EFUSE_SUPPORT_8703B 1 +#define EFUSE_SUPPORT_8822B 1 +#define EFUSE_SUPPORT_8723D 1 + +#else +#define EFUSE_SUPPORT_92S 0 +#define EFUSE_SUPPORT_92C 0 +#define EFUSE_SUPPORT_92D 0 +#define EFUSE_SUPPORT_8188E 0 +#define EFUSE_SUPPORT_8188F 0 +#define EFUSE_SUPPORT_8812A 0 +#define EFUSE_SUPPORT_8192E 0 +#define EFUSE_SUPPORT_8814A 0 +#endif +//============================================= + + +#define HWSET_MAX_SIZE_128 128 +#define HWSET_MAX_SIZE_256 256 +#define HWSET_MAX_SIZE_512 512 + +#define EFUSE_BANK_SIZE 512 + +#define EFUSE_ERROE_HANDLE 1 +/*--------------------------Define Parameters-------------------------------*/ +#define EFUSE_INIT_MAP 0 +#define EFUSE_MODIFY_MAP 1 + +#define _TRUE 1 +#define _FALSE 0 + +#define EFUSE_CLK_CTRL EFUSE_CTRL +#ifdef BIT + #undef BIT +#endif +#define BIT(x) (1 << (x)) + + +#define PG_STATE_HEADER 0x01 +#define PG_STATE_WORD_0 0x02 +#define PG_STATE_WORD_1 0x04 +#define PG_STATE_WORD_2 0x08 +#define PG_STATE_WORD_3 0x10 +#define PG_STATE_DATA 0x20 + +#define PG_SWBYTE_H 0x01 +#define PG_SWBYTE_L 0x02 + +#define PGPKT_DATA_SIZE 8 + +#define EFUSE_WIFI 0 +#define EFUSE_BT 1 + +enum{ + VOLTAGE_V25 = 0x03, + LDOE25_SHIFT = 28 , + }; + +enum _EFUSE_DEF_TYPE { + TYPE_EFUSE_MAX_SECTION = 0, + TYPE_EFUSE_REAL_CONTENT_LEN = 1, + TYPE_AVAILABLE_EFUSE_BYTES_BANK = 2, + TYPE_AVAILABLE_EFUSE_BYTES_TOTAL = 3, + TYPE_EFUSE_MAP_LEN = 4, + TYPE_EFUSE_PROTECT_BYTES_BANK = 5, + TYPE_EFUSE_CONTENT_LEN_BANK = 6, +}; + +#define EFUSE_MAX_MAP_LEN 1024 +#define EFUSE_MAX_HW_SIZE 1024 + +#define EFUSE_MAX_SECTION_BASE 16 + +typedef enum _PACKAGE_TYPE_E +{ + PACKAGE_DEFAULT, + PACKAGE_QFN68, + PACKAGE_TFBGA90, + PACKAGE_TFBGA80, + PACKAGE_TFBGA79 +}PACKAGE_TYPE_E; + + +#define IS_AVAILABLE_EFUSE_ADDR(_Adapter, _Addr) \ + (IS_HARDWARE_TYPE_8188E(_Adapter) ? AVAILABLE_EFUSE_ADDR_88E(_Addr) : AVAILABLE_EFUSE_ADDR_92C(_Addr)) +#define IS_AVAILABLE_BT_EFUSE_ADDR(_eFuse_Addr, _endBank) (_eFuse_Addr < (_endBank+1) * EFUSE_MAX_BANK_SIZE) + +#define EXT_HEADER(header) ((header & 0x1F ) == 0x0F) +#define ALL_WORDS_DISABLED(wde) ((wde & 0x0F) == 0x0F) +#define GET_HDR_OFFSET_2_0(header) ( (header & 0xE0) >> 5) + +#define EFUSE_REPEAT_THRESHOLD_ 0 +#define EFUSE_REPEAT_HEADER_THRESHOLD 0 + +#define EFUSE_MAP_LEN 128 +#define EFUSE_MAX_SECTION 16 +#define EFUSE_MAX_WORD_UNIT 4 + +// +// <Roger_Notes> To prevent out of boundary programming case, leave 1byte and program full section +// 9bytes + 1byt + 5bytes and pre 1byte. +// For worst case: +// | 1byte|----8bytes----|1byte|--5bytes--| +// | | Reserved(14bytes) | +// +#define EFUSE_OOB_PROTECT_BYTES 15 // PG data exclude header, dummy 6 bytes frome CP test and reserved 1byte. + + +//============================================= + +#define IS_MASKED_MP(ic, txt, offset) (EFUSE_IsAddressMasked_MP_##ic##txt(offset)) +#define IS_MASKED_TC(ic, txt, offset) (EFUSE_IsAddressMasked_TC_##ic##txt(offset)) +#define GET_MASK_ARRAY_LEN_MP(ic, txt) (EFUSE_GetArrayLen_MP_##ic##txt()) +#define GET_MASK_ARRAY_LEN_TC(ic, txt) (EFUSE_GetArrayLen_TC_##ic##txt()) +#define GET_MASK_ARRAY_MP(ic, txt, offset) (EFUSE_GetMaskArray_MP_##ic##txt(offset)) +#define GET_MASK_ARRAY_TC(ic, txt, offset) (EFUSE_GetMaskArray_TC_##ic##txt(offset)) + + +#define IS_MASKED(ic, txt, offset) ((pHalData->bIsMPChip) ? IS_MASKED_MP(ic,txt, offset) : IS_MASKED_TC(ic,txt, offset)) +#define GET_MASK_ARRAY_LEN(ic, txt) ((pHalData->bIsMPChip) ? GET_MASK_ARRAY_LEN_MP(ic,txt) : GET_MASK_ARRAY_LEN_TC(ic,txt)) +#define GET_MASK_ARRAY(ic, txt, out) do {((pHalData->bIsMPChip) ? GET_MASK_ARRAY_MP(ic,txt, out) : GET_MASK_ARRAY_TC(ic,txt, out));} while(0) + + + +//============================================= +// The following is for BT Efuse definition +//============================================= +#define EFUSE_BT_MAX_MAP_LEN 1024 +#define EFUSE_MAX_BANK 4 +#define EFUSE_MAX_BANK_SIZE 512 +#define EFUSE_MAX_BT_BANK (EFUSE_MAX_BANK-1) +//============================================= +/*--------------------------Define Parameters-------------------------------*/ + + +/*------------------------------Define structure----------------------------*/ +typedef struct PG_PKT_STRUCT_A{ + UINT8 offset; + UINT8 word_en; + UINT8 data[8]; + u1Byte word_cnts; +}PGPKT_STRUCT,*PPGPKT_STRUCT; + + +typedef struct _EFUSE_HAL{ + u1Byte fakeEfuseBank; + u4Byte fakeEfuseUsedBytes; + u1Byte fakeEfuseContent[EFUSE_MAX_HW_SIZE]; + u1Byte fakeEfuseInitMap[EFUSE_MAX_MAP_LEN]; + u1Byte fakeEfuseModifiedMap[EFUSE_MAX_MAP_LEN]; + + u4Byte EfuseUsedBytes; + u1Byte EfuseUsedPercentage; + + u2Byte BTEfuseUsedBytes; + u1Byte BTEfuseUsedPercentage; + u1Byte BTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE]; + u1Byte BTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN]; + u1Byte BTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN]; + + u2Byte fakeBTEfuseUsedBytes; + u1Byte fakeBTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE]; + u1Byte fakeBTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN]; + u1Byte fakeBTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN]; + + // EFUSE Configuration, initialized in HAL_CmnInitPGData(). + const u2Byte MaxSecNum_WiFi; + const u2Byte MaxSecNum_BT; + const u2Byte WordUnit; + const u2Byte PhysicalLen_WiFi; + const u2Byte PhysicalLen_BT; + const u2Byte LogicalLen_WiFi; + const u2Byte LogicalLen_BT; + const u2Byte BankSize; + const u2Byte TotalBankNum; + const u2Byte BankNum_WiFi; + const u2Byte BankNum_BT; + const u2Byte OOBProtectBytes; + const u2Byte ProtectBytes; + const u2Byte BankAvailBytes; + const u2Byte TotalAvailBytes_WiFi; + const u2Byte TotalAvailBytes_BT; + + const u2Byte HeaderRetry; + const u2Byte DataRetry; + + RT_ERROR_CODE Status; +}EFUSE_HAL, *PEFUSE_HAL; +/*------------------------------Define structure----------------------------*/ + + +/*------------------------Export global variable----------------------------*/ +/*------------------------Export global variable----------------------------*/ + +/*------------------------Export Marco Definition---------------------------*/ + +/*------------------------Export Marco Definition---------------------------*/ + + +/*--------------------------Exported Function prototype---------------------*/ + +extern VOID +EFUSE_ShadowRead( + IN PADAPTER pAdapter, + IN u1Byte ByteCount, + IN u2Byte Offset, + IN OUT u4Byte *Value ); + +extern VOID +EFUSE_MaskedShadowRead( + IN PADAPTER pAdapter, + IN u1Byte ByteCount, + IN u2Byte Offset, + IN OUT u4Byte *Value ); + +extern VOID +EFUSE_ShadowWrite( + IN PADAPTER pAdapter, + IN u1Byte Type, + IN u2Byte Offset, + IN OUT u4Byte Value ); +BOOLEAN +EFUSE_ShadowUpdate( + IN PADAPTER pAdapter, + IN BOOLEAN bPseudoTest + ); +BOOLEAN +EFUSE_ShadowUpdateChk( + IN PADAPTER pAdapter, + IN u1Byte efuseType, + IN BOOLEAN bPseudoTest); +VOID +EFUSE_RenewShadowMaps( + IN PADAPTER pAdapter, + IN u1Byte efuseType, + IN BOOLEAN bPseudoTest); + + +extern VOID +EFUSE_ForceWriteVendorId( + IN PADAPTER pAdapter); + +BOOLEAN +EFUSE_ProgramMap( + IN PADAPTER Adapter, + IN ps1Byte pFileName, + IN u1Byte TableType, + IN BOOLEAN bPseudoTest); // 0=Shadow 1=Real Efuse + +extern VOID +EFUSE_ResetLoader( + IN PADAPTER pAdapter); + + + +VOID +Hal_InitEfuseVars( + IN PEFUSE_HAL pEfuseHal + ); + + +VOID +Hal_ReadEFuseByIC( + PADAPTER Adapter, + u1Byte efuseType, + u2Byte _offset, + u2Byte _size_byte, + u1Byte *pbuf, + IN BOOLEAN bPseudoTest + ); +VOID +Hal_ReadEFuse_Pseudo( + PADAPTER Adapter, + u1Byte efuseType, + u2Byte _offset, + u2Byte _size_byte, + u1Byte *pbuf, + IN BOOLEAN bPseudoTest + ); +VOID +EFUSE_LoadMap( + IN PADAPTER pAdapter, + IN u1Byte efuseType, + IN OUT u1Byte *Efuse, + IN BOOLEAN bPseudoTest); + +VOID +EFUSE_PowerSwitch( + IN PADAPTER pAdapter, + IN UINT8 bWrite, + IN UINT8 PwrState); +INT32 +EFUSE_PgPacketWrite( + IN PADAPTER pAdapter, + IN UINT8 efuseType, + IN UINT8 offset, + IN UINT8 word_en, + IN UINT8 *data, + IN BOOLEAN bPseudoTest); + +VOID +EFUSE_FakeShadowRead1Byte( + IN PADAPTER pAdapter, + IN u1Byte efuseType, + IN u2Byte Offset, + IN OUT UINT8 *Value ); +VOID +EFUSE_FakeShadowWrite1Byte( + IN PADAPTER pAdapter, + IN u2Byte Offset, + IN UINT8 Value ); +BOOLEAN +EFUSE_FakeContentRead1Byte( + IN PADAPTER pAdapter, + IN u2Byte Offset, + IN OUT UINT8 *Value ); +BOOLEAN +EFUSE_FakeContentWrite1Byte( + IN PADAPTER pAdapter, + IN u2Byte Offset, + IN UINT8 Value ); +VOID +EFUSE_GetEfuseDefinition( + IN PADAPTER pAdapter, + IN u1Byte efuseType, + IN u1Byte type, + OUT pu2Byte pOut, + IN BOOLEAN bPseudoTest + ); +u2Byte +EFUSE_GetCurrentSize( + IN PADAPTER pAdapter, + IN u1Byte efuseType, + IN BOOLEAN bPseudoTest); +UINT8 +EFUSE_CalculateWordCnts( + IN UINT8 word_en); + +void +EFUSE_WordEnableDataRead( IN UINT8 word_en, + IN UINT8 *sourdata, + IN UINT8 *targetdata); +INT32 +EFUSE_OneByteRead( + IN PADAPTER pAdapter, + IN u2Byte addr, + IN UINT8 *data, + IN BOOLEAN bPseudoTest); +INT32 +EFUSE_OneByteWrite( + IN PADAPTER pAdapter, + IN u2Byte addr, + IN UINT8 data, + IN BOOLEAN bPseudoTest); + +INT32 +EFUSE_PgPacketRead( IN PADAPTER pAdapter, + IN UINT8 offset, + IN UINT8 *data, + IN BOOLEAN bPseudoTest); +UINT8 +EFUSE_WordEnableDataWrite( IN PADAPTER pAdapter, + IN u2Byte efuse_addr, + IN UINT8 word_en, + IN UINT8 *data, + IN BOOLEAN bPseudoTest); + +BOOLEAN +EFUSE_ContentWrite1Byte( + IN PADAPTER pAdapter, + IN UINT8 bank, + IN u2Byte Offset, + IN UINT8 Value ); + +VOID +efuse_ShadowRead1Byte_BT( + IN PADAPTER pAdapter, + IN u2Byte Offset, + IN OUT UINT8 *Value ); +VOID +EFUSE_ShadowReadBT( + IN PADAPTER pAdapter, + IN u1Byte Type, + IN u2Byte Offset, + IN OUT u4Byte *Value ); +VOID +efuse_ShadowWrite1Byte_BT( + IN PADAPTER pAdapter, + IN u2Byte Offset, + IN UINT8 Value ); +VOID +EFUSE_ShadowWriteBT( + IN PADAPTER pAdapter, + IN u1Byte Type, + IN u2Byte Offset, + IN OUT u4Byte Value ); +VOID +EFUSE_FakeShadowWrite1Byte_BT( + IN PADAPTER pAdapter, + IN u2Byte Offset, + IN UINT8 Value ); + +BOOLEAN +EFUSE_SwitchToBank( + IN PADAPTER pAdapter, + IN u1Byte bank, + IN BOOLEAN bPseudoTest + ); +BOOLEAN +EFUSE_ShadowUpdateBT( + IN PADAPTER pAdapter, + IN BOOLEAN bPseudoTest + ); +u1Byte +EFUSE_GetFakeEfusebank( + IN PADAPTER Adapter + ); +VOID +EFUSE_SetFakeEfusebank( + IN PADAPTER Adapter, + IN u1Byte bank + ); + +VOID +Hal_EEValueCheck( + IN u1Byte EEType, + IN PVOID pInValue, + OUT PVOID pOutValue + ); + +/*--------------------------Exported Function prototype---------------------*/ + +#endif + |
