0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef __RTL871X_MP_H_
0015 #define __RTL871X_MP_H_
0016
0017 #define MPT_NOOP 0
0018 #define MPT_READ_MAC_1BYTE 1
0019 #define MPT_READ_MAC_2BYTE 2
0020 #define MPT_READ_MAC_4BYTE 3
0021 #define MPT_WRITE_MAC_1BYTE 4
0022 #define MPT_WRITE_MAC_2BYTE 5
0023 #define MPT_WRITE_MAC_4BYTE 6
0024 #define MPT_READ_BB_CCK 7
0025 #define MPT_WRITE_BB_CCK 8
0026 #define MPT_READ_BB_OFDM 9
0027 #define MPT_WRITE_BB_OFDM 10
0028 #define MPT_READ_RF 11
0029 #define MPT_WRITE_RF 12
0030 #define MPT_READ_EEPROM_1BYTE 13
0031 #define MPT_WRITE_EEPROM_1BYTE 14
0032 #define MPT_READ_EEPROM_2BYTE 15
0033 #define MPT_WRITE_EEPROM_2BYTE 16
0034 #define MPT_SET_CSTHRESHOLD 21
0035 #define MPT_SET_INITGAIN 22
0036 #define MPT_SWITCH_BAND 23
0037 #define MPT_SWITCH_CHANNEL 24
0038 #define MPT_SET_DATARATE 25
0039 #define MPT_SWITCH_ANTENNA 26
0040 #define MPT_SET_TX_POWER 27
0041 #define MPT_SET_CONT_TX 28
0042 #define MPT_SET_SINGLE_CARRIER 29
0043 #define MPT_SET_CARRIER_SUPPRESSION 30
0044 #define MPT_GET_RATE_TABLE 31
0045 #define MPT_READ_TSSI 32
0046 #define MPT_GET_THERMAL_METER 33
0047 #define MAX_MP_XMITBUF_SZ 2048
0048 #define NR_MP_XMITFRAME 8
0049
0050 struct mp_xmit_frame {
0051 struct list_head list;
0052 struct pkt_attrib attrib;
0053 _pkt *pkt;
0054 int frame_tag;
0055 struct _adapter *padapter;
0056 u8 *mem_addr;
0057 u16 sz[8];
0058 struct urb *pxmit_urb[8];
0059 u8 bpending[8];
0060 u8 last[8];
0061 };
0062
0063 struct mp_wiparam {
0064 u32 bcompleted;
0065 u32 act_type;
0066 u32 io_offset;
0067 u32 io_value;
0068 };
0069
0070 struct mp_priv {
0071 struct _adapter *papdater;
0072
0073 struct mp_wiparam workparam;
0074 u8 act_in_progress;
0075
0076 u8 TID;
0077 u32 tx_pktcount;
0078
0079 u32 rx_pktcount;
0080 u32 rx_crcerrpktcount;
0081 u32 rx_pktloss;
0082 struct recv_stat rxstat;
0083
0084 u32 curr_ch;
0085 u32 curr_rateidx;
0086 u8 curr_bandwidth;
0087 u8 curr_modem;
0088 u8 curr_txpoweridx;
0089 u32 curr_crystalcap;
0090 u16 antenna_tx;
0091 u16 antenna_rx;
0092 u8 curr_rfpath;
0093 u8 check_mp_pkt;
0094 uint ForcedDataRate;
0095 struct wlan_network mp_network;
0096 unsigned char network_macaddr[6];
0097
0098 u32 mode;
0099
0100
0101 sint prev_fw_state;
0102 u8 *pallocated_mp_xmitframe_buf;
0103 u8 *pmp_xmtframe_buf;
0104 struct __queue free_mp_xmitqueue;
0105 u32 free_mp_xmitframe_cnt;
0106 };
0107
0108 struct IOCMD_STRUCT {
0109 u8 cmdclass;
0110 u16 value;
0111 u8 index;
0112 };
0113
0114 struct rf_reg_param {
0115 u32 path;
0116 u32 offset;
0117 u32 value;
0118 };
0119
0120 struct bb_reg_param {
0121 u32 offset;
0122 u32 value;
0123 };
0124
0125
0126
0127 #define LOWER true
0128 #define RAISE false
0129 #define IOCMD_CTRL_REG 0x10250370
0130 #define IOCMD_DATA_REG 0x10250374
0131 #define IOCMD_GET_THERMAL_METER 0xFD000028
0132 #define IOCMD_CLASS_BB_RF 0xF0
0133 #define IOCMD_BB_READ_IDX 0x00
0134 #define IOCMD_BB_WRITE_IDX 0x01
0135 #define IOCMD_RF_READ_IDX 0x02
0136 #define IOCMD_RF_WRIT_IDX 0x03
0137 #define BB_REG_BASE_ADDR 0x800
0138 #define RF_PATH_A 0
0139 #define RF_PATH_B 1
0140 #define RF_PATH_C 2
0141 #define RF_PATH_D 3
0142 #define MAX_RF_PATH_NUMS 2
0143 #define _2MAC_MODE_ 0
0144 #define _LOOPBOOK_MODE_ 1
0145
0146
0147 enum {
0148
0149 MPT_RATE_1M,
0150 MPT_RATE_2M,
0151 MPT_RATE_55M,
0152 MPT_RATE_11M,
0153
0154
0155 MPT_RATE_6M,
0156 MPT_RATE_9M,
0157 MPT_RATE_12M,
0158 MPT_RATE_18M,
0159 MPT_RATE_24M,
0160 MPT_RATE_36M,
0161 MPT_RATE_48M,
0162 MPT_RATE_54M,
0163
0164
0165 MPT_RATE_MCS0,
0166 MPT_RATE_MCS1,
0167 MPT_RATE_MCS2,
0168 MPT_RATE_MCS3,
0169 MPT_RATE_MCS4,
0170 MPT_RATE_MCS5,
0171 MPT_RATE_MCS6,
0172 MPT_RATE_MCS7,
0173 MPT_RATE_MCS8,
0174 MPT_RATE_MCS9,
0175 MPT_RATE_MCS10,
0176 MPT_RATE_MCS11,
0177 MPT_RATE_MCS12,
0178 MPT_RATE_MCS13,
0179 MPT_RATE_MCS14,
0180 MPT_RATE_MCS15,
0181 MPT_RATE_LAST
0182 };
0183
0184
0185 enum HT_CHANNEL_WIDTH {
0186 HT_CHANNEL_WIDTH_20 = 0,
0187 HT_CHANNEL_WIDTH_40 = 1,
0188 };
0189
0190 #define MAX_TX_PWR_INDEX_N_MODE 64
0191
0192 enum POWER_MODE {
0193 POWER_LOW = 0,
0194 POWER_NORMAL
0195 };
0196
0197 #define RX_PKT_BROADCAST 1
0198 #define RX_PKT_DEST_ADDR 2
0199 #define RX_PKT_PHY_MATCH 3
0200
0201 #define RPTMaxCount 0x000FFFFF
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219 enum RXPHY_BITMASK {
0220 OFDM_PPDU_BIT = 0,
0221 OFDM_MPDU_OK_BIT,
0222 OFDM_MPDU_FAIL_BIT,
0223 CCK_PPDU_BIT,
0224 CCK_MPDU_OK_BIT,
0225 CCK_MPDU_FAIL_BIT,
0226 HT_PPDU_BIT,
0227 HT_MPDU_BIT,
0228 HT_MPDU_OK_BIT,
0229 HT_MPDU_FAIL_BIT,
0230 };
0231
0232 enum ENCRY_CTRL_STATE {
0233 HW_CONTROL,
0234 SW_CONTROL,
0235 HW_ENCRY_SW_DECRY,
0236 SW_ENCRY_HW_DECRY
0237 };
0238
0239
0240 #define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0
0241 #define HAL_PRIME_CHNL_OFFSET_LOWER 1
0242 #define HAL_PRIME_CHNL_OFFSET_UPPER 2
0243
0244 void mp871xinit(struct _adapter *padapter);
0245 void mp871xdeinit(struct _adapter *padapter);
0246 u32 r8712_bb_reg_read(struct _adapter *Adapter, u16 offset);
0247 u8 r8712_bb_reg_write(struct _adapter *Adapter, u16 offset, u32 value);
0248 u32 r8712_rf_reg_read(struct _adapter *Adapter, u8 path, u8 offset);
0249 u8 r8712_rf_reg_write(struct _adapter *Adapter, u8 path,
0250 u8 offset, u32 value);
0251 u32 r8712_get_bb_reg(struct _adapter *Adapter, u16 offset, u32 bitmask);
0252 u8 r8712_set_bb_reg(struct _adapter *Adapter, u16 offset,
0253 u32 bitmask, u32 value);
0254 u32 r8712_get_rf_reg(struct _adapter *Adapter, u8 path, u8 offset,
0255 u32 bitmask);
0256 u8 r8712_set_rf_reg(struct _adapter *Adapter, u8 path, u8 offset,
0257 u32 bitmask, u32 value);
0258
0259 void r8712_SetChannel(struct _adapter *pAdapter);
0260 void r8712_SetTxPower(struct _adapter *pAdapte);
0261 void r8712_SetTxAGCOffset(struct _adapter *pAdapter, u32 ulTxAGCOffset);
0262 void r8712_SetDataRate(struct _adapter *pAdapter);
0263 void r8712_SwitchBandwidth(struct _adapter *pAdapter);
0264 void r8712_SwitchAntenna(struct _adapter *pAdapter);
0265 void r8712_GetThermalMeter(struct _adapter *pAdapter, u32 *value);
0266 void r8712_SetContinuousTx(struct _adapter *pAdapter, u8 bStart);
0267 void r8712_SetSingleCarrierTx(struct _adapter *pAdapter, u8 bStart);
0268 void r8712_SetSingleToneTx(struct _adapter *pAdapter, u8 bStart);
0269 void r8712_SetCarrierSuppressionTx(struct _adapter *pAdapter, u8 bStart);
0270 void r8712_ResetPhyRxPktCount(struct _adapter *pAdapter);
0271 u32 r8712_GetPhyRxPktReceived(struct _adapter *pAdapter);
0272 u32 r8712_GetPhyRxPktCRC32Error(struct _adapter *pAdapter);
0273
0274 #endif
0275