blob: e61eec76c8c5af7a8787057d59c1141d429332de [file] [edit]
/*******************************************************************************
*
* 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_hook_api.h
* \brief This file includes private ioctl support.
*/
#ifndef _GL_HOOK_API_H
#define _GL_HOOK_API_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
*******************************************************************************
*/
int32_t MT_ATEStart(struct net_device *prNetDev,
uint8_t *prInBuf);
int32_t MT_ICAPStart(struct net_device *prNetDev,
uint8_t *prInBuf);
int32_t MT_ICAPCommand(struct net_device *prNetDev,
uint8_t *prInBuf);
int32_t MT_ATEStop(struct net_device *prNetDev,
uint8_t *prInBuf);
int32_t MT_ATEStartTX(struct net_device *prNetDev,
uint8_t *prInBuf);
int32_t MT_ATEStopTX(struct net_device *prNetDev,
uint8_t *prInBuf);
int32_t MT_ATEStartRX(struct net_device *prNetDev,
uint8_t *prInBuf);
int32_t MT_ATEStopRX(struct net_device *prNetDev,
uint8_t *prInBuf);
int32_t MT_ATESetChannel(struct net_device *prNetDev,
uint32_t u4SXIdx, uint32_t u4SetFreq);
int32_t MT_ATESetPreamble(struct net_device *prNetDev,
uint32_t u4Mode);
int32_t MT_ATESetSystemBW(struct net_device *prNetDev,
uint32_t u4BW);
int32_t MT_ATESetTxLength(struct net_device *prNetDev,
uint32_t u4TxLength);
int32_t MT_ATESetTxCount(struct net_device *prNetDev,
uint32_t u4TxCount);
int32_t MT_ATESetTxIPG(struct net_device *prNetDev,
uint32_t u4TxIPG);
int32_t MT_ATESetTxPower0(struct net_device *prNetDev,
uint32_t u4TxPower0);
int32_t MT_ATESetPerPacketBW(struct net_device *prNetDev,
uint32_t u4BW);
int32_t MT_ATEPrimarySetting(struct net_device *prNetDev,
uint32_t u4PrimaryCh);
int32_t MT_ATESetTxGi(struct net_device *prNetDev,
uint32_t u4SetTxGi);
int32_t MT_ATESetTxPayLoad(struct net_device *prNetDev,
uint32_t u4Gen_payload_rule, uint8_t ucPayload);
int32_t MT_ATESetTxSTBC(struct net_device *prNetDev,
uint32_t u4Stbc);
int32_t MT_ATESetTxPath(struct net_device *prNetDev,
uint32_t u4Tx_path);
int32_t MT_ATESetTxVhtNss(struct net_device *prNetDev,
uint32_t u4VhtNss);
int32_t MT_ATESetRate(struct net_device *prNetDev,
uint32_t u4Rate);
int32_t MT_ATESetEncodeMode(struct net_device *prNetDev,
uint32_t u4Ldpc);
int32_t MT_ATESetiBFEnable(struct net_device *prNetDev,
uint32_t u4iBF);
int32_t MT_ATESeteBFEnable(struct net_device *prNetDev,
uint32_t u4eBF);
int32_t MT_ATESetMACAddress(struct net_device *prNetDev,
uint32_t u4Type, uint8_t ucAddr[]);
int32_t MT_ATELogOnOff(struct net_device *prNetDev,
uint32_t u4Type, uint32_t u4On_off, uint32_t u4Size);
int32_t MT_ATEGetDumpRXV(struct net_device *prNetDev,
uint8_t *pData, int32_t *pCount);
int32_t MT_ATEResetTXRXCounter(struct net_device *prNetDev);
int32_t MT_ATESetDBDCBandIndex(struct net_device *prNetDev,
uint32_t u4BandIdx);
int32_t MT_ATESetBand(struct net_device *prNetDev,
int32_t i4Band);
int32_t MT_ATESetTxToneType(struct net_device *prNetDev,
int32_t i4ToneType);
int32_t MT_ATESetTxToneBW(struct net_device *prNetDev,
int32_t i4ToneFreq);
int32_t MT_ATESetTxToneDCOffset(struct net_device *prNetDev,
int32_t i4DcOffsetI, int32_t i4DcOffsetQ);
int32_t MT_ATESetDBDCTxTonePower(struct net_device *prNetDev,
int32_t i4AntIndex, int32_t i4RF_Power, int32_t i4Digi_Power);
int32_t MT_ATEDBDCTxTone(struct net_device *prNetDev,
int32_t i4Control);
int32_t MT_ATESetMacHeader(struct net_device *prNetDev,
uint32_t u2FrameCtrl, uint32_t u2DurationID,
uint32_t u4SeqCtrl);
int32_t MT_ATE_IRRSetADC(struct net_device *prNetDev,
uint32_t u4WFIdx,
uint32_t u4ChFreq,
uint32_t u4BW, uint32_t u4Sx, uint32_t u4Band,
uint32_t u4RunType, uint32_t u4FType);
int32_t MT_ATE_IRRSetRxGain(struct net_device *prNetDev,
uint32_t u4PgaLpfg, uint32_t u4Lna, uint32_t u4Band,
uint32_t u4WF_inx, uint32_t u4Rfdgc);
int32_t MT_ATE_IRRSetTTG(struct net_device *prNetDev,
uint32_t u4TTGPwrIdx, uint32_t u4ChFreq,
uint32_t u4FIToneFreq, uint32_t u4Band);
int32_t MT_ATE_IRRSetTrunOnTTG(struct net_device *prNetDev, uint32_t u4TTGOnOff,
uint32_t u4Band, uint32_t u4WF_inx);
int32_t MT_ATE_TMRSetting(struct net_device *prNetDev, uint32_t u4Setting,
uint32_t u4Version, uint32_t u4MPThres, uint32_t u4MPIter);
int32_t MT_ATERDDStart(struct net_device *prNetDev,
uint8_t *prInBuf);
int32_t MT_ATERDDStop(struct net_device *prNetDev,
uint8_t *prInBuf);
int32_t MT_ATEMPSSetSeqData(struct net_device *prNetDev, uint32_t u4TestNum,
uint32_t *pu4Phy, uint32_t u4Band);
int32_t MT_ATEMPSSetPayloadLength(struct net_device *prNetDev,
uint32_t u4TestNum, uint32_t *pu4Length, uint32_t u4Band);
int32_t MT_ATEMPSSetPacketCount(struct net_device *prNetDev, uint32_t u4TestNum,
uint32_t *pu4PktCnt, uint32_t u4Band);
int32_t MT_ATEMPSSetPowerGain(struct net_device *prNetDev, uint32_t u4TestNum,
uint32_t *pu4PwrGain, uint32_t u4Band);
int32_t MT_ATEMPSSetNss(struct net_device *prNetDev,
uint32_t u4TestNum, uint32_t *pu4Nss, uint32_t u4Band);
int32_t MT_ATEMPSSetPerpacketBW(struct net_device *prNetDev, uint32_t u4TestNum,
uint32_t *pu4PerPktBW, uint32_t u4Band);
int32_t MT_ATEWriteEfuse(struct net_device *prNetDev,
uint16_t u2Offset, uint16_t u2Content);
int32_t MT_ATESetTxTargetPower(struct net_device *prNetDev,
uint8_t ucTxTargetPower);
#if (CFG_SUPPORT_DFS_MASTER == 1)
int32_t MT_ATESetRddReport(struct net_device *prNetDev,
uint8_t ucDbdcIdx);
int32_t MT_ATESetRadarDetectMode(struct net_device
*prNetDev, uint8_t ucRadarDetectMode);
#endif
#if CFG_SUPPORT_TX_BF
int32_t TxBfProfileTag_InValid(struct net_device *prNetDev,
union PFMU_PROFILE_TAG1 *prPfmuTag1,
uint8_t ucInValid);
int32_t TxBfProfileTag_PfmuIdx(struct net_device *prNetDev,
union PFMU_PROFILE_TAG1 *prPfmuTag1,
uint8_t ucProfileIdx);
int32_t TxBfProfileTag_TxBfType(struct net_device *prNetDev,
union PFMU_PROFILE_TAG1 *prPfmuTag1,
uint8_t ucBFType);
int32_t TxBfProfileTag_DBW(struct net_device *prNetDev,
union PFMU_PROFILE_TAG1 *prPfmuTag1, uint8_t ucBW);
int32_t TxBfProfileTag_SuMu(struct net_device *prNetDev,
union PFMU_PROFILE_TAG1 *prPfmuTag1, uint8_t ucSuMu);
int32_t TxBfProfileTag_Mem(struct net_device *prNetDev,
union PFMU_PROFILE_TAG1 *prPfmuTag1,
uint8_t *aucMemAddrColIdx, uint8_t *aucMemAddrRowIdx);
int32_t TxBfProfileTag_Matrix(struct net_device *prNetDev,
union PFMU_PROFILE_TAG1 *prPfmuTag1,
uint8_t ucNrow,
uint8_t ucNcol, uint8_t ucNgroup, uint8_t ucLM,
uint8_t ucCodeBook, uint8_t ucHtcExist);
int32_t TxBfProfileTag_SNR(struct net_device *prNetDev,
union PFMU_PROFILE_TAG1 *prPfmuTag1,
uint8_t ucSNR_STS0, uint8_t ucSNR_STS1,
uint8_t ucSNR_STS2,
uint8_t ucSNR_STS3);
int32_t TxBfProfileTag_SmtAnt(struct net_device *prNetDev,
union PFMU_PROFILE_TAG2 *prPfmuTag2,
uint8_t ucSmartAnt);
int32_t TxBfProfileTag_SeIdx(struct net_device *prNetDev,
union PFMU_PROFILE_TAG2 *prPfmuTag2,
uint8_t ucSeIdx);
int32_t TxBfProfileTag_RmsdThd(struct net_device *prNetDev,
union PFMU_PROFILE_TAG2 *prPfmuTag2,
uint8_t ucRmsdThrd);
int32_t TxBfProfileTag_McsThd(struct net_device *prNetDev,
union PFMU_PROFILE_TAG2 *prPfmuTag2,
uint8_t *pMCSThLSS,
uint8_t *pMCSThSSS);
int32_t TxBfProfileTag_TimeOut(struct net_device *prNetDev,
union PFMU_PROFILE_TAG2 *prPfmuTag2,
uint8_t ucTimeOut);
int32_t TxBfProfileTag_DesiredBW(struct net_device
*prNetDev, union PFMU_PROFILE_TAG2 *prPfmuTag2,
uint8_t ucDesiredBW);
int32_t TxBfProfileTag_DesiredNc(struct net_device
*prNetDev, union PFMU_PROFILE_TAG2 *prPfmuTag2,
uint8_t ucDesiredNc);
int32_t TxBfProfileTag_DesiredNr(struct net_device
*prNetDev, union PFMU_PROFILE_TAG2 *prPfmuTag2,
uint8_t ucDesiredNr);
int32_t TxBfProfileTagWrite(struct net_device *prNetDev,
union PFMU_PROFILE_TAG1 *prPfmuTag1,
union PFMU_PROFILE_TAG2 *prPfmuTag2,
uint8_t profileIdx);
int32_t TxBfProfileTagRead(struct net_device *prNetDev,
uint8_t PfmuIdx, uint8_t fgBFer);
int32_t TxBfProfileDataRead(struct net_device *prNetDev,
uint8_t profileIdx, uint8_t fgBFer,
uint8_t subcarrierIdxMsb, uint8_t subcarrierIdxLsb);
int32_t TxBfProfileDataWrite(struct net_device *prNetDev,
uint8_t profileIdx,
uint16_t subcarrierIdx,
uint16_t au2Phi[6],
uint8_t aucPsi[6], uint8_t aucDSnr[4]
);
int32_t TxBfProfilePnRead(struct net_device *prNetDev,
uint8_t profileIdx);
int32_t TxBfProfilePnWrite(struct net_device *prNetDev, uint8_t ucProfileIdx,
uint16_t u2bw, uint16_t au2XSTS[12]);
int32_t TxBfSounding(struct net_device *prNetDev,
uint8_t ucSuMu, /* 0/1/2/3 */
uint8_t ucNumSta, /* 00~04 */
uint8_t ucSndInterval, /* 00~FF */
uint8_t ucWLan0, /* 00~7F */
uint8_t ucWLan1, /* 00~7F */
uint8_t ucWLan2, /* 00~7F */
uint8_t ucWLan3 /* 00~7F */
);
int32_t TxBfSoundingStop(struct net_device *prNetDev);
int32_t TxBfTxApply(struct net_device *prNetDev,
uint8_t ucWlanId, uint8_t fgETxBf, uint8_t fgITxBf,
uint8_t fgMuTxBf);
int32_t TxBfManualAssoc(struct net_device *prNetDev,
uint8_t aucMac[MAC_ADDR_LEN],
uint8_t ucType,
uint8_t ucWtbl,
uint8_t ucOwnmac,
uint8_t ucPhyMode,
uint8_t ucBw,
uint8_t ucNss, uint8_t ucPfmuId, uint8_t ucMarate,
uint8_t ucSpeIdx, uint8_t ucRca2, uint8_t ucRv);
int32_t TxBfPfmuMemAlloc(struct net_device *prNetDev,
uint8_t ucSuMuMode, uint8_t ucWlanIdx);
int32_t TxBfPfmuMemRelease(struct net_device *prNetDev,
uint8_t ucWlanId);
int32_t DevInfoUpdate(struct net_device *prNetDev,
uint8_t ucOwnMacIdx, uint8_t fgBand,
uint8_t aucMacAddr[MAC_ADDR_LEN]);
int32_t BssInfoUpdate(struct net_device *prNetDev,
uint8_t u4OwnMacIdx, uint8_t u4BssIdx,
uint8_t u4BssId[MAC_ADDR_LEN]);
int32_t StaRecCmmUpdate(struct net_device *prNetDev,
uint8_t ucWlanId, uint8_t ucBssId, uint8_t u4Aid,
uint8_t aucMacAddr[MAC_ADDR_LEN]
);
int32_t StaRecBfUpdate(struct net_device *prNetDev,
struct STA_REC_BF_UPD_ARGUMENT rStaRecBfUpdArg,
uint8_t aucMemRow[4], uint8_t aucMemCol[4]
);
#if CFG_SUPPORT_TX_BF_FPGA
int32_t TxBfPseudoTagUpdate(struct net_device *prNetDev,
uint8_t ucLm, uint8_t ucNr,
uint8_t ucNc, uint8_t ucBw, uint8_t ucCodeBook,
uint8_t ucGroup);
#endif
#endif
#endif /*CFG_SUPPORT_QA_TOOL */
#endif /* _GL_HOOK_API_H */