1 /* SPDX-License-Identifier: GPL-2.0 */
2 /******************************************************************************
4 * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
6 * Modifications for inclusion into the Linux staging tree are
7 * Copyright(c) 2010 Larry Finger. All rights reserved.
13 ******************************************************************************/
14 #ifndef __RTL871X_MP_H_
15 #define __RTL871X_MP_H_
18 #define MPT_READ_MAC_1BYTE 1
19 #define MPT_READ_MAC_2BYTE 2
20 #define MPT_READ_MAC_4BYTE 3
21 #define MPT_WRITE_MAC_1BYTE 4
22 #define MPT_WRITE_MAC_2BYTE 5
23 #define MPT_WRITE_MAC_4BYTE 6
24 #define MPT_READ_BB_CCK 7
25 #define MPT_WRITE_BB_CCK 8
26 #define MPT_READ_BB_OFDM 9
27 #define MPT_WRITE_BB_OFDM 10
28 #define MPT_READ_RF 11
29 #define MPT_WRITE_RF 12
30 #define MPT_READ_EEPROM_1BYTE 13
31 #define MPT_WRITE_EEPROM_1BYTE 14
32 #define MPT_READ_EEPROM_2BYTE 15
33 #define MPT_WRITE_EEPROM_2BYTE 16
34 #define MPT_SET_CSTHRESHOLD 21
35 #define MPT_SET_INITGAIN 22
36 #define MPT_SWITCH_BAND 23
37 #define MPT_SWITCH_CHANNEL 24
38 #define MPT_SET_DATARATE 25
39 #define MPT_SWITCH_ANTENNA 26
40 #define MPT_SET_TX_POWER 27
41 #define MPT_SET_CONT_TX 28
42 #define MPT_SET_SINGLE_CARRIER 29
43 #define MPT_SET_CARRIER_SUPPRESSION 30
44 #define MPT_GET_RATE_TABLE 31
45 #define MPT_READ_TSSI 32
46 #define MPT_GET_THERMAL_METER 33
47 #define MAX_MP_XMITBUF_SZ 2048
48 #define NR_MP_XMITFRAME 8
50 struct mp_xmit_frame {
51 struct list_head list;
52 struct pkt_attrib attrib;
55 struct _adapter *padapter;
58 struct urb *pxmit_urb[8];
71 struct _adapter *papdater;
73 struct mp_wiparam workparam;
80 u32 rx_crcerrpktcount;
82 struct recv_stat rxstat;
95 struct wlan_network mp_network;
96 unsigned char network_macaddr[6];
98 u32 mode;/*0 for normal type packet,
99 * 1 for loopback packet (16bytes TXCMD)
102 u8 *pallocated_mp_xmitframe_buf;
103 u8 *pmp_xmtframe_buf;
104 struct __queue free_mp_xmitqueue;
105 u32 free_mp_xmitframe_cnt;
108 struct IOCMD_STRUCT {
114 struct rf_reg_param {
120 struct bb_reg_param {
125 /* ======================================================================= */
129 #define IOCMD_CTRL_REG 0x10250370
130 #define IOCMD_DATA_REG 0x10250374
131 #define IOCMD_GET_THERMAL_METER 0xFD000028
132 #define IOCMD_CLASS_BB_RF 0xF0
133 #define IOCMD_BB_READ_IDX 0x00
134 #define IOCMD_BB_WRITE_IDX 0x01
135 #define IOCMD_RF_READ_IDX 0x02
136 #define IOCMD_RF_WRIT_IDX 0x03
137 #define BB_REG_BASE_ADDR 0x800
142 #define MAX_RF_PATH_NUMS 2
143 #define _2MAC_MODE_ 0
144 #define _LOOPBOOK_MODE_ 1
146 /* MP set force data rate base on the definition. */
152 MPT_RATE_11M, /* 3 */
162 MPT_RATE_54M, /* 11 */
165 MPT_RATE_MCS0, /* 12 */
172 MPT_RATE_MCS7, /* 19 */
180 MPT_RATE_MCS15, /* 27 */
184 /* Represent Channel Width in HT Capabilities */
185 enum HT_CHANNEL_WIDTH {
186 HT_CHANNEL_WIDTH_20 = 0,
187 HT_CHANNEL_WIDTH_40 = 1,
190 #define MAX_TX_PWR_INDEX_N_MODE 64 /* 0x3F */
197 #define RX_PKT_BROADCAST 1
198 #define RX_PKT_DEST_ADDR 2
199 #define RX_PKT_PHY_MATCH 3
201 #define RPTMaxCount 0x000FFFFF
203 /* parameter 1 : BitMask
205 * bit 1 : OFDM False Alarm
206 * bit 2 : OFDM MPDU OK
207 * bit 3 : OFDM MPDU Fail
209 * bit 5 : CCK False Alarm
210 * bit 6 : CCK MPDU ok
211 * bit 7 : CCK MPDU fail
212 * bit 8 : HT PPDU counter
213 * bit 9 : HT false alarm
214 * bit 10 : HT MPDU total
215 * bit 11 : HT MPDU OK
216 * bit 12 : HT MPDU fail
217 * bit 15 : RX full drop
232 enum ENCRY_CTRL_STATE {
233 HW_CONTROL, /*hw encryption& decryption*/
234 SW_CONTROL, /*sw encryption& decryption*/
235 HW_ENCRY_SW_DECRY, /*hw encryption & sw decryption*/
236 SW_ENCRY_HW_DECRY /*sw encryption & hw decryption*/
239 /* Bandwidth Offset */
240 #define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0
241 #define HAL_PRIME_CHNL_OFFSET_LOWER 1
242 #define HAL_PRIME_CHNL_OFFSET_UPPER 2
243 /*=======================================================================*/
244 void mp871xinit(struct _adapter *padapter);
245 void mp871xdeinit(struct _adapter *padapter);
246 u32 r8712_bb_reg_read(struct _adapter *Adapter, u16 offset);
247 u8 r8712_bb_reg_write(struct _adapter *Adapter, u16 offset, u32 value);
248 u32 r8712_rf_reg_read(struct _adapter *Adapter, u8 path, u8 offset);
249 u8 r8712_rf_reg_write(struct _adapter *Adapter, u8 path,
250 u8 offset, u32 value);
251 u32 r8712_get_bb_reg(struct _adapter *Adapter, u16 offset, u32 bitmask);
252 u8 r8712_set_bb_reg(struct _adapter *Adapter, u16 offset,
253 u32 bitmask, u32 value);
254 u32 r8712_get_rf_reg(struct _adapter *Adapter, u8 path, u8 offset,
256 u8 r8712_set_rf_reg(struct _adapter *Adapter, u8 path, u8 offset,
257 u32 bitmask, u32 value);
259 void r8712_SetChannel(struct _adapter *pAdapter);
260 void r8712_SetTxPower(struct _adapter *pAdapte);
261 void r8712_SetTxAGCOffset(struct _adapter *pAdapter, u32 ulTxAGCOffset);
262 void r8712_SetDataRate(struct _adapter *pAdapter);
263 void r8712_SwitchBandwidth(struct _adapter *pAdapter);
264 void r8712_SwitchAntenna(struct _adapter *pAdapter);
265 void r8712_GetThermalMeter(struct _adapter *pAdapter, u32 *value);
266 void r8712_SetContinuousTx(struct _adapter *pAdapter, u8 bStart);
267 void r8712_SetSingleCarrierTx(struct _adapter *pAdapter, u8 bStart);
268 void r8712_SetSingleToneTx(struct _adapter *pAdapter, u8 bStart);
269 void r8712_SetCarrierSuppressionTx(struct _adapter *pAdapter, u8 bStart);
270 void r8712_ResetPhyRxPktCount(struct _adapter *pAdapter);
271 u32 r8712_GetPhyRxPktReceived(struct _adapter *pAdapter);
272 u32 r8712_GetPhyRxPktCRC32Error(struct _adapter *pAdapter);
274 #endif /*__RTL871X_MP_H_*/