blob: e185ad4a2c65fbb285ee26b55b19a39decf8121e [file] [log] [blame]
/******************************************************************************
*
* This file is provided under a dual license. When you use or
* distribute this software, you may choose to be licensed under
* version 2 of the GNU General Public License ("GPLv2 License")
* or BSD License.
*
* GPLv2 License
*
* Copyright(C) 2016 MediaTek Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See http://www.gnu.org/licenses/gpl-2.0.html for more details.
*
* BSD LICENSE
*
* Copyright(C) 2016 MediaTek Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*****************************************************************************/
/*! \file gl_qa_agent.h
* \brief This file includes private ioctl support.
*/
#ifndef _GL_QA_AGENT_H
#define _GL_QA_AGENT_H
#if CFG_SUPPORT_QA_TOOL
/*******************************************************************************
* C O M P I L E R F L A G S
********************************************************************************
*/
/*******************************************************************************
* E X T E R N A L R E F E R E N C E S
********************************************************************************
*/
/*******************************************************************************
* C O N S T A N T S
********************************************************************************
*/
/*******************************************************************************
* M A C R O S
********************************************************************************
*/
/*******************************************************************************
* F U N C T I O N D E C L A R A T I O N S
********************************************************************************
*/
#define HQA_CMD_MAGIC_NO 0x18142880
#define HQA_CHIP_ID_6632 0x6632
#define HQA_CHIP_ID_7668 0x7668
#if CFG_SUPPORT_TX_BF
#define HQA_BF_STR_SIZE 512
#endif
#define HQA_RX_STATISTIC_NUM 66
#define BUFFER_BIN_MODE 0x0
#define EFUSE_MODE 0x2
extern UINT_8 uacEEPROMImage[MAX_EEPROM_BUFFER_SIZE];
#if 0
typedef struct _PARAM_RX_STAT_T {
UINT_32 MacFCSErr; /* Y 0x820F_D014 */
UINT_32 MacMdrdy; /* Y 0x820F_D030 */
UINT_32 FCSErr_CCK; /* Y 0x8207_021C [15:00] */
UINT_32 FCSErr_OFDM; /* Y 0x8207_021C [31:16] */
UINT_32 CCK_PD; /* Y 0x8207_020C [15:00] */
UINT_32 OFDM_PD; /* Y 0x8207_020C [15:00] */
UINT_32 CCK_SIG_Err; /* Y 0x8207_0210 [31:16] */
UINT_32 CCK_SFD_Err; /* Y 0x8207_0210 [15:00] */
UINT_32 OFDM_SIG_Err; /* Y 0x8207_0214 [31:16] */
UINT_32 OFDM_TAG_Err; /* Y 0x8207_0214 [15:00] */
UINT_32 WB_RSSSI0; /* Y 0x8207_21A8 [23:16] */
UINT_32 IB_RSSSI0; /* Y 0x8207_21A8 [31:24] */
UINT_32 WB_RSSSI1; /* Y 0x8207_21A8 [07:00] */
UINT_32 IB_RSSSI1; /* Y 0x8207_21A8 [15:08] */
UINT_32 PhyMdrdyCCK; /* Y 0x8207_0220 [15:00] */
UINT_32 PhyMdrdyOFDM; /* Y 0x8207_0220 [31:16] */
UINT_32 DriverRxCount; /* Y FW Counter Band0 */
UINT_32 RCPI0; /* Y RXV4 [07:00] */
UINT_32 RCPI1; /* Y RXV4 [15:08] */
UINT_32 FreqOffsetFromRX; /* Y RXV5 MISC1[24:00] OFDM:[11:00] CCK:[10:00] */
UINT_32 RSSI0; /* N */
UINT_32 RSSI1; /* N */
UINT_32 rx_fifo_full; /* N */
UINT_32 RxLenMismatch; /* N */
UINT_32 MacFCSErr_band1; /* Y 0x820F_D214 */
UINT_32 MacMdrdy_band1; /* Y 0x820F_D230 */
/* Y RXV3 [23:16] (must set 0x8207066C[1:0] = 0x0 ~ 0x3) */
UINT_32 FAGC_IB_RSSSI[4];
/* Y RXV3 [31:24] (must set 0x8207066C[1:0] = 0x0 ~ 0x3) */
UINT_32 FAGC_WB_RSSSI[4];
/* Y 0x8207_21A8 [31:24] [15:08] 0x8207_29A8 [31:24] [15:08] */
UINT_32 Inst_IB_RSSSI[4];
/* Y 0x8207_21A8 [23:16] [07:00] 0x8207_29A8 [23:16] [07:00] */
UINT_32 Inst_WB_RSSSI[4];
UINT_32 ACIHitLow; /* Y 0x8207_21B0 [18] */
UINT_32 ACIHitHigh; /* Y 0x8207_29B0 [18] */
UINT_32 DriverRxCount1; /* Y FW Counter Band1 */
UINT_32 RCPI2; /* Y RXV4 [23:16] */
UINT_32 RCPI3; /* Y RXV4 [31:24] */
UINT_32 RSSI2; /* N */
UINT_32 RSSI3; /* N */
UINT_32 SNR0; /* Y RXV5 (MISC1 >> 19) - 16 */
UINT_32 SNR1; /* N */
UINT_32 SNR2; /* N */
UINT_32 SNR3; /* N */
UINT_32 rx_fifo_full_band1; /* N */
UINT_32 RxLenMismatch_band1; /* N */
UINT_32 CCK_PD_band1; /* Y 0x8207_040C [15:00] */
UINT_32 OFDM_PD_band1; /* Y 0x8207_040C [31:16] */
UINT_32 CCK_SIG_Err_band1; /* Y 0x8207_0410 [31:16] */
UINT_32 CCK_SFD_Err_band1; /* Y 0x8207_0410 [15:00] */
UINT_32 OFDM_SIG_Err_band1; /* Y 0x8207_0414 [31:16] */
UINT_32 OFDM_TAG_Err_band1; /* Y 0x8207_0414 [15:00] */
UINT_32 PhyMdrdyCCK_band1; /* Y 0x8207_0420 [15:00] */
UINT_32 PhyMdrdyOFDM_band1; /* Y 0x8207_0420 [31:16] */
UINT_32 CCK_FCS_Err_band1; /* Y 0x8207_041C [15:00] */
UINT_32 OFDM_FCS_Err_band1; /* Y 0x8207_041C [31:16] */
UINT_32 MuPktCount; /* Y MT_ATEUpdateRxStatistic RXV1_2ND_CYCLE->GroupId */
} PARAM_RX_STAT_T, *P_PARAM_RX_STAT_T;
#else
typedef struct _PARAM_RX_STAT_T {
UINT_32 MAC_FCS_Err; /* b0 */
UINT_32 MAC_Mdrdy; /* b0 */
UINT_32 FCSErr_CCK;
UINT_32 FCSErr_OFDM;
UINT_32 CCK_PD;
UINT_32 OFDM_PD;
UINT_32 CCK_SIG_Err;
UINT_32 CCK_SFD_Err;
UINT_32 OFDM_SIG_Err;
UINT_32 OFDM_TAG_Err;
UINT_32 WB_RSSI0;
UINT_32 IB_RSSI0;
UINT_32 WB_RSSI1;
UINT_32 IB_RSSI1;
UINT_32 PhyMdrdyCCK;
UINT_32 PhyMdrdyOFDM;
UINT_32 DriverRxCount;
UINT_32 RCPI0;
UINT_32 RCPI1;
UINT_32 FreqOffsetFromRX;
UINT_32 RSSI0;
UINT_32 RSSI1; /* insert new member here */
UINT_32 OutOfResource; /* MT7615 begin here */
UINT_32 LengthMismatchCount_B0;
UINT_32 MAC_FCS_Err1; /* b1 */
UINT_32 MAC_Mdrdy1; /* b1 */
UINT_32 FAGCRssiIBR0;
UINT_32 FAGCRssiIBR1;
UINT_32 FAGCRssiIBR2;
UINT_32 FAGCRssiIBR3;
UINT_32 FAGCRssiWBR0;
UINT_32 FAGCRssiWBR1;
UINT_32 FAGCRssiWBR2;
UINT_32 FAGCRssiWBR3;
UINT_32 InstRssiIBR0;
UINT_32 InstRssiIBR1;
UINT_32 InstRssiIBR2;
UINT_32 InstRssiIBR3;
UINT_32 InstRssiWBR0;
UINT_32 InstRssiWBR1;
UINT_32 InstRssiWBR2;
UINT_32 InstRssiWBR3;
UINT_32 ACIHitLower;
UINT_32 ACIHitUpper;
UINT_32 DriverRxCount1;
UINT_32 RCPI2;
UINT_32 RCPI3;
UINT_32 RSSI2;
UINT_32 RSSI3;
UINT_32 SNR0;
UINT_32 SNR1;
UINT_32 SNR2;
UINT_32 SNR3;
UINT_32 OutOfResource1;
UINT_32 LengthMismatchCount_B1;
UINT_32 CCK_PD_Band1;
UINT_32 OFDM_PD_Band1;
UINT_32 CCK_SIG_Err_Band1;
UINT_32 CCK_SFD_Err_Band1;
UINT_32 OFDM_SIG_Err_Band1;
UINT_32 OFDM_TAG_Err_Band1;
UINT_32 PHY_CCK_MDRDY_Band1;
UINT_32 PHY_OFDM_MDRDY_Band1;
UINT_32 CCK_FCS_Err_Band1;
UINT_32 OFDM_FCS_Err_Band1;
UINT_32 MRURxCount;
UINT_32 SIGMCS;
UINT_32 SINR;
UINT_32 RXVRSSI;
UINT_32 Reserved[184];
UINT_32 PHY_Mdrdy;
UINT_32 Noise_Floor;
UINT_32 AllLengthMismatchCount_B0;
UINT_32 AllLengthMismatchCount_B1;
UINT_32 AllMacMdrdy0;
UINT_32 AllMacMdrdy1;
UINT_32 AllFCSErr0;
UINT_32 AllFCSErr1;
UINT_32 RXOK0;
UINT_32 RXOK1;
UINT_32 PER0;
UINT_32 PER1;
} PARAM_RX_STAT_T, *P_PARAM_RX_STAT_T;
extern PARAM_RX_STAT_T g_HqaRxStat;
#endif
typedef struct _HQA_CMD_FRAME {
UINT_32 MagicNo;
UINT_16 Type;
UINT_16 Id;
UINT_16 Length;
UINT_16 Sequence;
UCHAR Data[2048];
} __packed HQA_CMD_FRAME;
typedef INT_32(*HQA_CMD_HANDLER) (struct net_device *prNetDev,
IN union iwreq_data *prIwReqData, HQA_CMD_FRAME *HqaCmdFrame);
typedef struct _HQA_CMD_TABLE {
HQA_CMD_HANDLER *CmdSet;
UINT_32 CmdSetSize;
UINT_32 CmdOffset;
} HQA_CMD_TABLE;
int HQA_CMDHandler(struct net_device *prNetDev, IN union iwreq_data *prIwReqData, HQA_CMD_FRAME *HqaCmdFrame);
int priv_qa_agent(IN struct net_device *prNetDev,
IN struct iw_request_info *prIwReqInfo, IN union iwreq_data *prIwReqData, IN char *pcExtra);
int priv_set_eeprom_mode(IN UINT_32 u4Mode);
#endif /*CFG_SUPPORT_QA_TOOL */
#endif /* _GL_QA_AGENT_H */