xref: /linux/drivers/staging/rtl8723bs/include/rtw_efuse.h (revision 7362b5b493102c6b71827c2da22117b475528f6d)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. */
3 
4 #ifndef __RTW_EFUSE_H__
5 #define __RTW_EFUSE_H__
6 
7 #define	PGPKT_DATA_SIZE		8
8 
9 #define	EFUSE_WIFI				0
10 #define	EFUSE_BT				1
11 
12 enum {
13 	TYPE_EFUSE_MAX_SECTION				= 0,
14 	TYPE_EFUSE_REAL_CONTENT_LEN			= 1,
15 	TYPE_AVAILABLE_EFUSE_BYTES_BANK		= 2,
16 	TYPE_AVAILABLE_EFUSE_BYTES_TOTAL	= 3,
17 	TYPE_EFUSE_MAP_LEN					= 4,
18 	TYPE_EFUSE_PROTECT_BYTES_BANK		= 5,
19 	TYPE_EFUSE_CONTENT_LEN_BANK			= 6,
20 };
21 
22 #define		EFUSE_MAX_MAP_LEN		512
23 
24 #define		EFUSE_MAX_HW_SIZE		512
25 #define		EFUSE_MAX_SECTION_BASE	16
26 
27 #define EXT_HEADER(header) ((header & 0x1F) == 0x0F)
28 #define ALL_WORDS_DISABLED(wde)	((wde & 0x0F) == 0x0F)
29 #define GET_HDR_OFFSET_2_0(header) ((header & 0xE0) >> 5)
30 
31 #define		EFUSE_REPEAT_THRESHOLD_			3
32 
33 /*  */
34 /* 	The following is for BT Efuse definition */
35 /*  */
36 #define		EFUSE_BT_MAX_MAP_LEN		1024
37 #define		EFUSE_MAX_BANK			4
38 #define		EFUSE_MAX_BT_BANK		(EFUSE_MAX_BANK-1)
39 /*  */
40 /*--------------------------Define Parameters-------------------------------*/
41 #define		EFUSE_MAX_WORD_UNIT			4
42 
43 /*------------------------------Define structure----------------------------*/
44 struct pgpkt_struct {
45 	u8 offset;
46 	u8 word_en;
47 	u8 data[8];
48 	u8 word_cnts;
49 };
50 
51 /*------------------------------Define structure----------------------------*/
52 struct efuse_hal {
53 	u8 fakeEfuseBank;
54 	u32 fakeEfuseUsedBytes;
55 	u8 fakeEfuseContent[EFUSE_MAX_HW_SIZE];
56 	u8 fakeEfuseInitMap[EFUSE_MAX_MAP_LEN];
57 	u8 fakeEfuseModifiedMap[EFUSE_MAX_MAP_LEN];
58 
59 	u16 BTEfuseUsedBytes;
60 	u8 BTEfuseUsedPercentage;
61 	u8 BTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
62 	u8 BTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN];
63 	u8 BTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN];
64 
65 	u16 fakeBTEfuseUsedBytes;
66 	u8 fakeBTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
67 	u8 fakeBTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN];
68 	u8 fakeBTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN];
69 };
70 
71 
72 /*------------------------Export global variable----------------------------*/
73 extern u8 fakeEfuseBank;
74 extern u32 fakeEfuseUsedBytes;
75 extern u8 fakeEfuseContent[];
76 extern u8 fakeEfuseInitMap[];
77 extern u8 fakeEfuseModifiedMap[];
78 
79 extern u32 BTEfuseUsedBytes;
80 extern u8 BTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
81 extern u8 BTEfuseInitMap[];
82 extern u8 BTEfuseModifiedMap[];
83 
84 extern u32 fakeBTEfuseUsedBytes;
85 extern u8 fakeBTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
86 extern u8 fakeBTEfuseInitMap[];
87 extern u8 fakeBTEfuseModifiedMap[];
88 /*------------------------Export global variable----------------------------*/
89 
90 u8 Efuse_CalculateWordCnts(u8 word_en);
91 u8 efuse_OneByteRead(struct adapter *padapter, u16 addr, u8 *data);
92 
93 u8 EFUSE_Read1Byte(struct adapter *padapter, u16 Address);
94 void EFUSE_ShadowMapUpdate(struct adapter *padapter, u8 efuseType);
95 void EFUSE_ShadowRead(struct adapter *padapter, u8 Type, u16 Offset, u32 *Value);
96 void Rtw_Hal_ReadMACAddrFromFile(struct adapter *padapter);
97 u32 Rtw_Hal_readPGDataFromConfigFile(struct adapter *padapter);
98 
99 #endif
100