158391efdSNathan Chancellor /* SPDX-License-Identifier: GPL-2.0 */
2554c0a3aSHans de Goede /******************************************************************************
3554c0a3aSHans de Goede  *
4554c0a3aSHans de Goede  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
5554c0a3aSHans de Goede  *
6554c0a3aSHans de Goede  ******************************************************************************/
7554c0a3aSHans de Goede #ifndef __HAL_PHY_H__
8554c0a3aSHans de Goede #define __HAL_PHY_H__
9554c0a3aSHans de Goede 
10554c0a3aSHans de Goede 
11554c0a3aSHans de Goede #if DISABLE_BB_RF
12554c0a3aSHans de Goede #define	HAL_FW_ENABLE				0
13554c0a3aSHans de Goede #define	HAL_MAC_ENABLE			0
14554c0a3aSHans de Goede #define	HAL_BB_ENABLE				0
15554c0a3aSHans de Goede #define	HAL_RF_ENABLE				0
16554c0a3aSHans de Goede #else /*  FPGA_PHY and ASIC */
17554c0a3aSHans de Goede #define		HAL_FW_ENABLE				1
18554c0a3aSHans de Goede #define	HAL_MAC_ENABLE			1
19554c0a3aSHans de Goede #define	HAL_BB_ENABLE				1
20554c0a3aSHans de Goede #define	HAL_RF_ENABLE				1
21554c0a3aSHans de Goede #endif
22554c0a3aSHans de Goede 
23554c0a3aSHans de Goede #define	RF6052_MAX_TX_PWR			0x3F
24554c0a3aSHans de Goede #define	RF6052_MAX_REG_88E			0xFF
25554c0a3aSHans de Goede #define	RF6052_MAX_REG_92C			0x7F
26554c0a3aSHans de Goede 
27554c0a3aSHans de Goede #define	RF6052_MAX_REG	\
28554c0a3aSHans de Goede 		(RF6052_MAX_REG_88E > RF6052_MAX_REG_92C) ? RF6052_MAX_REG_88E: RF6052_MAX_REG_92C
29554c0a3aSHans de Goede 
30554c0a3aSHans de Goede #define GET_RF6052_REAL_MAX_REG(_Adapter)	RF6052_MAX_REG_92C
31554c0a3aSHans de Goede 
32554c0a3aSHans de Goede #define	RF6052_MAX_PATH				2
33554c0a3aSHans de Goede 
34554c0a3aSHans de Goede /*  */
35554c0a3aSHans de Goede /*  Antenna detection method, i.e., using single tone detection or RSSI reported from each antenna detected. */
36554c0a3aSHans de Goede /*  Added by Roger, 2013.05.22. */
37554c0a3aSHans de Goede /*  */
38554c0a3aSHans de Goede #define ANT_DETECT_BY_SINGLE_TONE	BIT0
39554c0a3aSHans de Goede #define ANT_DETECT_BY_RSSI				BIT1
40554c0a3aSHans de Goede #define IS_ANT_DETECT_SUPPORT_SINGLE_TONE(__Adapter)		((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_SINGLE_TONE)
41554c0a3aSHans de Goede #define IS_ANT_DETECT_SUPPORT_RSSI(__Adapter)		((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_RSSI)
42554c0a3aSHans de Goede 
43554c0a3aSHans de Goede 
44554c0a3aSHans de Goede /*--------------------------Define Parameters-------------------------------*/
45554c0a3aSHans de Goede enum BAND_TYPE {
46554c0a3aSHans de Goede 	BAND_ON_2_4G = 0,
47554c0a3aSHans de Goede 	BAND_ON_5G,
48554c0a3aSHans de Goede 	BAND_ON_BOTH,
49554c0a3aSHans de Goede 	BANDMAX
50554c0a3aSHans de Goede };
51554c0a3aSHans de Goede 
52554c0a3aSHans de Goede enum RF_TYPE {
53554c0a3aSHans de Goede 	RF_TYPE_MIN = 0,	/*  0 */
54554c0a3aSHans de Goede 	RF_8225 = 1,		/*  1 11b/g RF for verification only */
55554c0a3aSHans de Goede 	RF_8256 = 2,		/*  2 11b/g/n */
56554c0a3aSHans de Goede 	RF_8258 = 3,		/*  3 11a/b/g/n RF */
57554c0a3aSHans de Goede 	RF_6052 = 4,		/*  4 11b/g/n RF */
58554c0a3aSHans de Goede 	RF_PSEUDO_11N = 5,	/*  5, It is a temporality RF. */
59554c0a3aSHans de Goede 	RF_TYPE_MAX
60554c0a3aSHans de Goede };
61554c0a3aSHans de Goede 
62554c0a3aSHans de Goede enum RF_PATH {
63554c0a3aSHans de Goede 	RF_PATH_A = 0,
64554c0a3aSHans de Goede 	RF_PATH_B,
65554c0a3aSHans de Goede 	RF_PATH_C,
66554c0a3aSHans de Goede 	RF_PATH_D
67554c0a3aSHans de Goede };
68554c0a3aSHans de Goede 
69554c0a3aSHans de Goede #define	TX_1S			0
70554c0a3aSHans de Goede #define	TX_2S			1
71554c0a3aSHans de Goede #define	TX_3S			2
72554c0a3aSHans de Goede #define	TX_4S			3
73554c0a3aSHans de Goede 
74554c0a3aSHans de Goede #define	RF_PATH_MAX_92C_88E		2
75554c0a3aSHans de Goede #define	RF_PATH_MAX_90_8812		4	/* Max RF number 90 support */
76554c0a3aSHans de Goede 
77554c0a3aSHans de Goede enum ANTENNA_PATH {
78554c0a3aSHans de Goede        ANTENNA_NONE	= 0,
79554c0a3aSHans de Goede 	ANTENNA_D	= 1,
80554c0a3aSHans de Goede 	ANTENNA_C	= 2,
81554c0a3aSHans de Goede 	ANTENNA_CD	= 3,
82554c0a3aSHans de Goede 	ANTENNA_B	= 4,
83554c0a3aSHans de Goede 	ANTENNA_BD	= 5,
84554c0a3aSHans de Goede 	ANTENNA_BC	= 6,
85554c0a3aSHans de Goede 	ANTENNA_BCD	= 7,
86554c0a3aSHans de Goede 	ANTENNA_A	= 8,
87554c0a3aSHans de Goede 	ANTENNA_AD	= 9,
88554c0a3aSHans de Goede 	ANTENNA_AC	= 10,
89554c0a3aSHans de Goede 	ANTENNA_ACD	= 11,
90554c0a3aSHans de Goede 	ANTENNA_AB	= 12,
91554c0a3aSHans de Goede 	ANTENNA_ABD	= 13,
92554c0a3aSHans de Goede 	ANTENNA_ABC	= 14,
93554c0a3aSHans de Goede 	ANTENNA_ABCD	= 15
94554c0a3aSHans de Goede };
95554c0a3aSHans de Goede 
96554c0a3aSHans de Goede enum RF_CONTENT {
97554c0a3aSHans de Goede 	radioa_txt = 0x1000,
98554c0a3aSHans de Goede 	radiob_txt = 0x1001,
99554c0a3aSHans de Goede 	radioc_txt = 0x1002,
100554c0a3aSHans de Goede 	radiod_txt = 0x1003
101554c0a3aSHans de Goede };
102554c0a3aSHans de Goede 
103554c0a3aSHans de Goede enum BaseBand_Config_Type {
104554c0a3aSHans de Goede 	BaseBand_Config_PHY_REG = 0,			/* Radio Path A */
105554c0a3aSHans de Goede 	BaseBand_Config_AGC_TAB = 1,			/* Radio Path B */
106554c0a3aSHans de Goede 	BaseBand_Config_AGC_TAB_2G = 2,
107554c0a3aSHans de Goede 	BaseBand_Config_AGC_TAB_5G = 3,
108554c0a3aSHans de Goede 	BaseBand_Config_PHY_REG_PG
109554c0a3aSHans de Goede };
110554c0a3aSHans de Goede 
111554c0a3aSHans de Goede enum HW_BLOCK {
112554c0a3aSHans de Goede 	HW_BLOCK_MAC = 0,
113554c0a3aSHans de Goede 	HW_BLOCK_PHY0 = 1,
114554c0a3aSHans de Goede 	HW_BLOCK_PHY1 = 2,
115554c0a3aSHans de Goede 	HW_BLOCK_RF = 3,
116554c0a3aSHans de Goede 	HW_BLOCK_MAXIMUM = 4, /*  Never use this */
117554c0a3aSHans de Goede };
118554c0a3aSHans de Goede 
119554c0a3aSHans de Goede enum WIRELESS_MODE {
120554c0a3aSHans de Goede 	WIRELESS_MODE_UNKNOWN = 0x00,
121554c0a3aSHans de Goede 	WIRELESS_MODE_A = 0x01,
122554c0a3aSHans de Goede 	WIRELESS_MODE_B = 0x02,
123554c0a3aSHans de Goede 	WIRELESS_MODE_G = 0x04,
124554c0a3aSHans de Goede 	WIRELESS_MODE_AUTO = 0x08,
125554c0a3aSHans de Goede 	WIRELESS_MODE_N_24G = 0x10,
126554c0a3aSHans de Goede 	WIRELESS_MODE_N_5G = 0x20,
127554c0a3aSHans de Goede 	WIRELESS_MODE_AC_5G = 0x40,
128554c0a3aSHans de Goede 	WIRELESS_MODE_AC_24G  = 0x80,
129554c0a3aSHans de Goede 	WIRELESS_MODE_AC_ONLY  = 0x100,
130554c0a3aSHans de Goede };
131554c0a3aSHans de Goede 
132554c0a3aSHans de Goede enum SwChnlCmdID {
133554c0a3aSHans de Goede 	CmdID_End,
134554c0a3aSHans de Goede 	CmdID_SetTxPowerLevel,
135554c0a3aSHans de Goede 	CmdID_BBRegWrite10,
136554c0a3aSHans de Goede 	CmdID_WritePortUlong,
137554c0a3aSHans de Goede 	CmdID_WritePortUshort,
138554c0a3aSHans de Goede 	CmdID_WritePortUchar,
139554c0a3aSHans de Goede 	CmdID_RF_WriteReg,
140554c0a3aSHans de Goede };
141554c0a3aSHans de Goede 
142554c0a3aSHans de Goede struct SwChnlCmd {
143554c0a3aSHans de Goede 	enum SwChnlCmdID	CmdID;
144554c0a3aSHans de Goede 	u32 			Para1;
145554c0a3aSHans de Goede 	u32 			Para2;
146554c0a3aSHans de Goede 	u32 			msDelay;
147554c0a3aSHans de Goede };
148554c0a3aSHans de Goede 
149554c0a3aSHans de Goede struct R_ANTENNA_SELECT_OFDM {
150554c0a3aSHans de Goede #ifdef __LITTLE_ENDIAN
151554c0a3aSHans de Goede 	u32 		r_tx_antenna:4;
152554c0a3aSHans de Goede 	u32 		r_ant_l:4;
153554c0a3aSHans de Goede 	u32 		r_ant_non_ht:4;
154554c0a3aSHans de Goede 	u32 		r_ant_ht1:4;
155554c0a3aSHans de Goede 	u32 		r_ant_ht2:4;
156554c0a3aSHans de Goede 	u32 		r_ant_ht_s1:4;
157554c0a3aSHans de Goede 	u32 		r_ant_non_ht_s1:4;
158554c0a3aSHans de Goede 	u32 		OFDM_TXSC:2;
159554c0a3aSHans de Goede 	u32 		Reserved:2;
160554c0a3aSHans de Goede #else
161554c0a3aSHans de Goede 	u32 		Reserved:2;
162554c0a3aSHans de Goede 	u32 		OFDM_TXSC:2;
163554c0a3aSHans de Goede 	u32 		r_ant_non_ht_s1:4;
164554c0a3aSHans de Goede 	u32 		r_ant_ht_s1:4;
165554c0a3aSHans de Goede 	u32 		r_ant_ht2:4;
166554c0a3aSHans de Goede 	u32 		r_ant_ht1:4;
167554c0a3aSHans de Goede 	u32 		r_ant_non_ht:4;
168554c0a3aSHans de Goede 	u32 		r_ant_l:4;
169554c0a3aSHans de Goede 	u32 		r_tx_antenna:4;
170554c0a3aSHans de Goede #endif
171554c0a3aSHans de Goede };
172554c0a3aSHans de Goede 
173554c0a3aSHans de Goede /*--------------------------Exported Function prototype---------------------*/
174554c0a3aSHans de Goede 
175554c0a3aSHans de Goede #endif /* __HAL_COMMON_H__ */
176