Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /******************************************************************************
0003  *
0004  * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
0005  *
0006  * Modifications for inclusion into the Linux staging tree are
0007  * Copyright(c) 2010 Larry Finger. All rights reserved.
0008  *
0009  * Contact information:
0010  * WLAN FAE <wlanfae@realtek.com>
0011  * Larry Finger <Larry.Finger@lwfinger.net>
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     /*OID cmd handler*/
0073     struct mp_wiparam workparam;
0074     u8 act_in_progress;
0075     /*Tx Section*/
0076     u8 TID;
0077     u32 tx_pktcount;
0078     /*Rx Section*/
0079     u32 rx_pktcount;
0080     u32 rx_crcerrpktcount;
0081     u32 rx_pktloss;
0082     struct recv_stat rxstat;
0083     /*RF/BB relative*/
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     /*Testing Flag*/
0098     u32 mode;/*0 for normal type packet,
0099           * 1 for loopback packet (16bytes TXCMD)
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 /* MP set force data rate base on the definition. */
0147 enum {
0148     /* CCK rate. */
0149     MPT_RATE_1M,    /* 0 */
0150     MPT_RATE_2M,
0151     MPT_RATE_55M,
0152     MPT_RATE_11M,   /* 3 */
0153 
0154     /* OFDM rate. */
0155     MPT_RATE_6M,    /* 4 */
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,   /* 11 */
0163 
0164     /* HT rate. */
0165     MPT_RATE_MCS0,  /* 12 */
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,  /* 19 */
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, /* 27 */
0181     MPT_RATE_LAST
0182 };
0183 
0184 /* Represent Channel Width in HT Capabilities */
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  /* 0x3F */
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 /* parameter 1 : BitMask
0204  *  bit 0  : OFDM PPDU
0205  *  bit 1  : OFDM False Alarm
0206  *  bit 2  : OFDM MPDU OK
0207  *  bit 3  : OFDM MPDU Fail
0208  *  bit 4  : CCK PPDU
0209  *  bit 5  : CCK False Alarm
0210  *  bit 6  : CCK MPDU ok
0211  *  bit 7  : CCK MPDU fail
0212  *  bit 8  : HT PPDU counter
0213  *  bit 9  : HT false alarm
0214  *  bit 10 : HT MPDU total
0215  *  bit 11 : HT MPDU OK
0216  *  bit 12 : HT MPDU fail
0217  *  bit 15 : RX full drop
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,     /*hw encryption& decryption*/
0234     SW_CONTROL,     /*sw encryption& decryption*/
0235     HW_ENCRY_SW_DECRY,  /*hw encryption & sw decryption*/
0236     SW_ENCRY_HW_DECRY   /*sw encryption & hw decryption*/
0237 };
0238 
0239 /* Bandwidth Offset */
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 /*__RTL871X_MP_H_*/
0275