initial commit
This commit is contained in:
commit
6b2045b110
418 changed files with 346424 additions and 0 deletions
274
include/Hal8188EPhyCfg.h
Normal file
274
include/Hal8188EPhyCfg.h
Normal file
|
|
@ -0,0 +1,274 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __INC_HAL8188EPHYCFG_H__
|
||||
#define __INC_HAL8188EPHYCFG_H__
|
||||
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
#define LOOP_LIMIT 5
|
||||
#define MAX_STALL_TIME 50 //us
|
||||
#define AntennaDiversityValue 0x80 //(Adapter->bSoftwareAntennaDiversity ? 0x00:0x80)
|
||||
#define MAX_TXPWR_IDX_NMODE_92S 63
|
||||
#define Reset_Cnt_Limit 3
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
#define MAX_AGGR_NUM 0x0B
|
||||
#else
|
||||
#define MAX_AGGR_NUM 0x07
|
||||
#endif // CONFIG_PCI_HCI
|
||||
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
|
||||
#define MAX_TX_COUNT_8188E 1
|
||||
|
||||
/* BB/RF related */
|
||||
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
|
||||
|
||||
/*------------------------Export global variable----------------------------*/
|
||||
/*------------------------Export global variable----------------------------*/
|
||||
|
||||
|
||||
/*------------------------Export Marco Definition---------------------------*/
|
||||
/*------------------------Export Marco Definition---------------------------*/
|
||||
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
//
|
||||
// BB and RF register read/write
|
||||
//
|
||||
u32 PHY_QueryBBReg8188E( IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask );
|
||||
void PHY_SetBBReg8188E( IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data );
|
||||
u32 PHY_QueryRFReg8188E( IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask );
|
||||
void PHY_SetRFReg8188E( IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data );
|
||||
|
||||
//
|
||||
// Initialization related function
|
||||
//
|
||||
/* MAC/BB/RF HAL config */
|
||||
int PHY_MACConfig8188E(IN PADAPTER Adapter );
|
||||
int PHY_BBConfig8188E(IN PADAPTER Adapter );
|
||||
int PHY_RFConfig8188E(IN PADAPTER Adapter );
|
||||
|
||||
/* RF config */
|
||||
int rtl8188e_PHY_ConfigRFWithParaFile(IN PADAPTER Adapter, IN u8 * pFileName, u8 eRFPath);
|
||||
|
||||
//
|
||||
// RF Power setting
|
||||
//
|
||||
//extern BOOLEAN PHY_SetRFPowerState(IN PADAPTER Adapter,
|
||||
// IN RT_RF_POWER_STATE eRFPowerState);
|
||||
|
||||
//
|
||||
// BB TX Power R/W
|
||||
//
|
||||
void PHY_GetTxPowerLevel8188E( IN PADAPTER Adapter,
|
||||
OUT s32* powerlevel );
|
||||
void PHY_SetTxPowerLevel8188E( IN PADAPTER Adapter,
|
||||
IN u8 channel );
|
||||
BOOLEAN PHY_UpdateTxPowerDbm8188E( IN PADAPTER Adapter,
|
||||
IN int powerInDbm );
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerIndex_8188E(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 PowerIndex,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate
|
||||
);
|
||||
|
||||
u8
|
||||
PHY_GetTxPowerIndex_8188E(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate,
|
||||
IN CHANNEL_WIDTH BandWidth,
|
||||
IN u8 Channel
|
||||
);
|
||||
|
||||
//
|
||||
// Switch bandwidth for 8192S
|
||||
//
|
||||
//extern void PHY_SetBWModeCallback8192C( IN PRT_TIMER pTimer );
|
||||
void PHY_SetBWMode8188E( IN PADAPTER pAdapter,
|
||||
IN CHANNEL_WIDTH ChnlWidth,
|
||||
IN unsigned char Offset );
|
||||
|
||||
//
|
||||
// Set FW CMD IO for 8192S.
|
||||
//
|
||||
//extern BOOLEAN HalSetIO8192C( IN PADAPTER Adapter,
|
||||
// IN IO_TYPE IOType);
|
||||
|
||||
//
|
||||
// Set A2 entry to fw for 8192S
|
||||
//
|
||||
extern void FillA2Entry8192C( IN PADAPTER Adapter,
|
||||
IN u8 index,
|
||||
IN u8* val);
|
||||
|
||||
|
||||
//
|
||||
// channel switch related funciton
|
||||
//
|
||||
//extern void PHY_SwChnlCallback8192C( IN PRT_TIMER pTimer );
|
||||
void PHY_SwChnl8188E( IN PADAPTER pAdapter,
|
||||
IN u8 channel );
|
||||
|
||||
VOID
|
||||
PHY_SetSwChnlBWMode8188E(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel,
|
||||
IN CHANNEL_WIDTH Bandwidth,
|
||||
IN u8 Offset40,
|
||||
IN u8 Offset80
|
||||
);
|
||||
|
||||
//
|
||||
// BB/MAC/RF other monitor API
|
||||
//
|
||||
void PHY_SetMonitorMode8192C(IN PADAPTER pAdapter,
|
||||
IN BOOLEAN bEnableMonitorMode );
|
||||
|
||||
BOOLEAN PHY_CheckIsLegalRfPath8192C(IN PADAPTER pAdapter,
|
||||
IN u32 eRFPath );
|
||||
|
||||
VOID PHY_SetRFPathSwitch_8188E(IN PADAPTER pAdapter, IN BOOLEAN bMain);
|
||||
|
||||
extern VOID
|
||||
PHY_SwitchEphyParameter(
|
||||
IN PADAPTER Adapter
|
||||
);
|
||||
|
||||
extern VOID
|
||||
PHY_EnableHostClkReq(
|
||||
IN PADAPTER Adapter
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
SetAntennaConfig92C(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 DefaultAnt
|
||||
);
|
||||
|
||||
VOID
|
||||
storePwrIndexDiffRateOffset(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data
|
||||
);
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
|
||||
//
|
||||
// Initialization related function
|
||||
//
|
||||
/* MAC/BB/RF HAL config */
|
||||
//extern s32 PHY_MACConfig8723(PADAPTER padapter);
|
||||
//s32 PHY_BBConfig8723(PADAPTER padapter);
|
||||
//s32 PHY_RFConfig8723(PADAPTER padapter);
|
||||
|
||||
|
||||
|
||||
//==================================================================
|
||||
// Note: If SIC_ENABLE under PCIE, because of the slow operation
|
||||
// you should
|
||||
// 2) "#define RTL8723_FPGA_VERIFICATION 1" in Precomp.h.WlanE.Windows
|
||||
// 3) "#define RTL8190_Download_Firmware_From_Header 0" in Precomp.h.WlanE.Windows if needed.
|
||||
//
|
||||
#if (RTL8188E_SUPPORT == 1) && (RTL8188E_FPGA_TRUE_PHY_VERIFICATION == 1)
|
||||
#define SIC_ENABLE 1
|
||||
#define SIC_HW_SUPPORT 1
|
||||
#else
|
||||
#define SIC_ENABLE 0
|
||||
#define SIC_HW_SUPPORT 0
|
||||
#endif
|
||||
//==================================================================
|
||||
|
||||
|
||||
#define SIC_MAX_POLL_CNT 5
|
||||
|
||||
#if(SIC_HW_SUPPORT == 1)
|
||||
#define SIC_CMD_READY 0
|
||||
#define SIC_CMD_PREWRITE 0x1
|
||||
#if(RTL8188E_SUPPORT == 1)
|
||||
#define SIC_CMD_WRITE 0x40
|
||||
#define SIC_CMD_PREREAD 0x2
|
||||
#define SIC_CMD_READ 0x80
|
||||
#define SIC_CMD_INIT 0xf0
|
||||
#define SIC_INIT_VAL 0xff
|
||||
|
||||
#define SIC_INIT_REG 0x1b7
|
||||
#define SIC_CMD_REG 0x1EB // 1byte
|
||||
#define SIC_ADDR_REG 0x1E8 // 1b4~1b5, 2 bytes
|
||||
#define SIC_DATA_REG 0x1EC // 1b0~1b3
|
||||
#else
|
||||
#define SIC_CMD_WRITE 0x11
|
||||
#define SIC_CMD_PREREAD 0x2
|
||||
#define SIC_CMD_READ 0x12
|
||||
#define SIC_CMD_INIT 0x1f
|
||||
#define SIC_INIT_VAL 0xff
|
||||
|
||||
#define SIC_INIT_REG 0x1b7
|
||||
#define SIC_CMD_REG 0x1b6 // 1byte
|
||||
#define SIC_ADDR_REG 0x1b4 // 1b4~1b5, 2 bytes
|
||||
#define SIC_DATA_REG 0x1b0 // 1b0~1b3
|
||||
#endif
|
||||
#else
|
||||
#define SIC_CMD_READY 0
|
||||
#define SIC_CMD_WRITE 1
|
||||
#define SIC_CMD_READ 2
|
||||
|
||||
#if(RTL8188E_SUPPORT == 1)
|
||||
#define SIC_CMD_REG 0x1EB // 1byte
|
||||
#define SIC_ADDR_REG 0x1E8 // 1b9~1ba, 2 bytes
|
||||
#define SIC_DATA_REG 0x1EC // 1bc~1bf
|
||||
#else
|
||||
#define SIC_CMD_REG 0x1b8 // 1byte
|
||||
#define SIC_ADDR_REG 0x1b9 // 1b9~1ba, 2 bytes
|
||||
#define SIC_DATA_REG 0x1bc // 1bc~1bf
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if(SIC_ENABLE == 1)
|
||||
VOID SIC_Init(IN PADAPTER Adapter);
|
||||
#endif
|
||||
|
||||
|
||||
#endif // __INC_HAL8192CPHYCFG_H
|
||||
|
||||
1106
include/Hal8188EPhyReg.h
Normal file
1106
include/Hal8188EPhyReg.h
Normal file
File diff suppressed because it is too large
Load diff
176
include/Hal8188EPwrSeq.h
Normal file
176
include/Hal8188EPwrSeq.h
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __HAL8188EPWRSEQ_H__
|
||||
#define __HAL8188EPWRSEQ_H__
|
||||
|
||||
#include "HalPwrSeqCmd.h"
|
||||
|
||||
/*
|
||||
Check document WM-20110607-Paul-RTL8188E_Power_Architecture-R02.vsd
|
||||
There are 6 HW Power States:
|
||||
0: POFF--Power Off
|
||||
1: PDN--Power Down
|
||||
2: CARDEMU--Card Emulation
|
||||
3: ACT--Active Mode
|
||||
4: LPS--Low Power State
|
||||
5: SUS--Suspend
|
||||
|
||||
The transision from different states are defined below
|
||||
TRANS_CARDEMU_TO_ACT
|
||||
TRANS_ACT_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_SUS
|
||||
TRANS_SUS_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_PDN
|
||||
TRANS_ACT_TO_LPS
|
||||
TRANS_LPS_TO_ACT
|
||||
|
||||
TRANS_END
|
||||
|
||||
PWR SEQ Version: rtl8188E_PwrSeq_V09.h
|
||||
*/
|
||||
#define RTL8188E_TRANS_CARDEMU_TO_ACT_STEPS 10
|
||||
#define RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS 10
|
||||
#define RTL8188E_TRANS_CARDEMU_TO_SUS_STEPS 10
|
||||
#define RTL8188E_TRANS_SUS_TO_CARDEMU_STEPS 10
|
||||
#define RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS 10
|
||||
#define RTL8188E_TRANS_PDN_TO_CARDEMU_STEPS 10
|
||||
#define RTL8188E_TRANS_ACT_TO_LPS_STEPS 15
|
||||
#define RTL8188E_TRANS_LPS_TO_ACT_STEPS 15
|
||||
#define RTL8188E_TRANS_END_STEPS 1
|
||||
|
||||
|
||||
#define RTL8188E_TRANS_CARDEMU_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0|BIT1, 0}, /* 0x02[1:0] = 0 reset BB*/ \
|
||||
{0x0026, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7}, /*0x24[23] = 2b'01 schmit trigger */ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0}, /* 0x04[15] = 0 disable HWPDN (control by DRV)*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4|BIT3, 0}, /*0x04[12:11] = 2b'00 disable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0}, /*0x04[8] = 1 polling until return 0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0}, /*wait till 0x04[8] = 0*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*LDO normal mode*/ \
|
||||
|
||||
#define RTL8188E_TRANS_ACT_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*0x1F[7:0] = 0 turn off RF*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*LDO Sleep mode*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/ \
|
||||
|
||||
#define RTL8188E_TRANS_CARDEMU_TO_SUS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01enable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3|BIT4}, /*0x04[12:11] = 2b'11enable WL suspend for PCIe*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, BIT7}, /* 0x04[31:30] = 2b'10 enable enable bandgap mbias in suspend */ \
|
||||
{0x0041, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*Clear SIC_EN register 0x40[12] = 1'b0 */ \
|
||||
{0xfe10, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*Set USB suspend enable local register 0xfe10[4]=1 */ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8188E_TRANS_SUS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/
|
||||
|
||||
#define RTL8188E_TRANS_CARDEMU_TO_CARDDIS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0026, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7}, /*0x24[23] = 2b'01 schmit trigger */ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /* 0x04[31:30] = 2b'10 enable enable bandgap mbias in suspend */ \
|
||||
{0x0041, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*Clear SIC_EN register 0x40[12] = 1'b0 */ \
|
||||
{0xfe10, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*Set USB suspend enable local register 0xfe10[4]=1 */ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8188E_TRANS_CARDDIS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/
|
||||
|
||||
#define RTL8188E_TRANS_CARDEMU_TO_PDN \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/* 0x04[16] = 0*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/
|
||||
|
||||
#define RTL8188E_TRANS_PDN_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/
|
||||
|
||||
//This is used by driver for LPSRadioOff Procedure, not for FW LPS Step
|
||||
#define RTL8188E_TRANS_ACT_TO_LPS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x7F},/*Tx Pause*/ \
|
||||
{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x3F},/*Reset MAC TRX*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \
|
||||
{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*Respond TxOK to scheduler*/ \
|
||||
|
||||
|
||||
#define RTL8188E_TRANS_LPS_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/\
|
||||
{0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/\
|
||||
{0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/\
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*. 0x08[4] = 0 switch TSF to 40M*/\
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, 0}, /*Polling 0x109[7]=0 TSF in 40M*/\
|
||||
{0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6|BIT7, 0}, /*. 0x29[7:6] = 2b'00 enable BB clock*/\
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/\
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/\
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/
|
||||
|
||||
#define RTL8188E_TRANS_END \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,0,PWR_CMD_END, 0, 0}, //
|
||||
|
||||
|
||||
extern WLAN_PWR_CFG rtl8188E_power_on_flow[RTL8188E_TRANS_CARDEMU_TO_ACT_STEPS+RTL8188E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188E_radio_off_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188E_card_disable_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188E_card_enable_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188E_suspend_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_SUS_STEPS+RTL8188E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188E_resume_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_SUS_STEPS+RTL8188E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188E_hwpdn_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188E_enter_lps_flow[RTL8188E_TRANS_ACT_TO_LPS_STEPS+RTL8188E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188E_leave_lps_flow[RTL8188E_TRANS_LPS_TO_ACT_STEPS+RTL8188E_TRANS_END_STEPS];
|
||||
|
||||
#endif //__HAL8188EPWRSEQ_H__
|
||||
|
||||
149
include/Hal8188FPhyCfg.h
Normal file
149
include/Hal8188FPhyCfg.h
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __INC_HAL8188FPHYCFG_H__
|
||||
#define __INC_HAL8188FPHYCFG_H__
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
#define LOOP_LIMIT 5
|
||||
#define MAX_STALL_TIME 50 //us
|
||||
#define AntennaDiversityValue 0x80 //(Adapter->bSoftwareAntennaDiversity ? 0x00:0x80)
|
||||
#define MAX_TXPWR_IDX_NMODE_92S 63
|
||||
#define Reset_Cnt_Limit 3
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
#define MAX_AGGR_NUM 0x0B
|
||||
#else
|
||||
#define MAX_AGGR_NUM 0x07
|
||||
#endif // CONFIG_PCI_HCI
|
||||
|
||||
|
||||
/*--------------------------Define Parameters End-------------------------------*/
|
||||
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
|
||||
/*------------------------------Define structure End----------------------------*/
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
u32
|
||||
PHY_QueryBBReg_8188F(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetBBReg_8188F(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data
|
||||
);
|
||||
|
||||
u32
|
||||
PHY_QueryRFReg_8188F(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetRFReg_8188F(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data
|
||||
);
|
||||
|
||||
/* MAC/BB/RF HAL config */
|
||||
int PHY_BBConfig8188F(PADAPTER Adapter );
|
||||
|
||||
int PHY_RFConfig8188F(PADAPTER Adapter );
|
||||
|
||||
s32 PHY_MACConfig8188F(PADAPTER padapter);
|
||||
|
||||
int
|
||||
PHY_ConfigRFWithParaFile_8188F(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8* pFileName,
|
||||
RF_PATH eRFPath
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerIndex_8188F(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 PowerIndex,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate
|
||||
);
|
||||
|
||||
u8
|
||||
PHY_GetTxPowerIndex_8188F(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate,
|
||||
IN CHANNEL_WIDTH BandWidth,
|
||||
IN u8 Channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_GetTxPowerLevel8188F(
|
||||
IN PADAPTER Adapter,
|
||||
OUT s32* powerlevel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerLevel8188F(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetBWMode8188F(
|
||||
IN PADAPTER Adapter,
|
||||
IN CHANNEL_WIDTH Bandwidth, // 20M or 40M
|
||||
IN unsigned char Offset // Upper, Lower, or Don't care
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SwChnl8188F( // Call after initialization
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetSwChnlBWMode8188F(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel,
|
||||
IN CHANNEL_WIDTH Bandwidth,
|
||||
IN u8 Offset40,
|
||||
IN u8 Offset80
|
||||
);
|
||||
|
||||
VOID PHY_SetRFPathSwitch_8188F(
|
||||
IN PADAPTER pAdapter,
|
||||
IN BOOLEAN bMain
|
||||
);
|
||||
/*--------------------------Exported Function prototype End---------------------*/
|
||||
|
||||
#endif
|
||||
|
||||
1171
include/Hal8188FPhyReg.h
Normal file
1171
include/Hal8188FPhyReg.h
Normal file
File diff suppressed because it is too large
Load diff
199
include/Hal8188FPwrSeq.h
Normal file
199
include/Hal8188FPwrSeq.h
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
#ifndef REALTEK_POWER_SEQUENCE_8188F
|
||||
#define REALTEK_POWER_SEQUENCE_8188F
|
||||
|
||||
#include "HalPwrSeqCmd.h"
|
||||
|
||||
/*
|
||||
Check document WM-20130815-JackieLau-RTL8188F_Power_Architecture v08.vsd
|
||||
There are 6 HW Power States:
|
||||
0: POFF--Power Off
|
||||
1: PDN--Power Down
|
||||
2: CARDEMU--Card Emulation
|
||||
3: ACT--Active Mode
|
||||
4: LPS--Low Power State
|
||||
5: SUS--Suspend
|
||||
|
||||
The transision from different states are defined below
|
||||
TRANS_CARDEMU_TO_ACT
|
||||
TRANS_ACT_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_SUS
|
||||
TRANS_SUS_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_PDN
|
||||
TRANS_ACT_TO_LPS
|
||||
TRANS_LPS_TO_ACT
|
||||
|
||||
TRANS_END
|
||||
*/
|
||||
#define RTL8188F_TRANS_CARDEMU_TO_ACT_STEPS 13
|
||||
#define RTL8188F_TRANS_ACT_TO_CARDEMU_STEPS 15
|
||||
#define RTL8188F_TRANS_CARDEMU_TO_SUS_STEPS 14
|
||||
#define RTL8188F_TRANS_SUS_TO_CARDEMU_STEPS 15
|
||||
#define RTL8188F_TRANS_CARDEMU_TO_PDN_STEPS 15
|
||||
#define RTL8188F_TRANS_PDN_TO_CARDEMU_STEPS 15
|
||||
#define RTL8188F_TRANS_ACT_TO_LPS_STEPS 11
|
||||
#define RTL8188F_TRANS_LPS_TO_ACT_STEPS 13
|
||||
#define RTL8188F_TRANS_ACT_TO_SWLPS_STEPS 21
|
||||
#define RTL8188F_TRANS_SWLPS_TO_ACT_STEPS 14
|
||||
#define RTL8188F_TRANS_END_STEPS 1
|
||||
|
||||
|
||||
#define RTL8188F_TRANS_CARDEMU_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0},/* disable SW LPS 0x04[10]=0*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* disable HWPDN 0x04[15]=0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT3), 0},/* 0x4[11]=1'b0 disable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* 0x4[8]=1 polling until return 0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0},/**/ \
|
||||
{0x0027, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xff, 0x35}, /*0x27<=35 to reduce RF noise*/
|
||||
|
||||
#define RTL8188F_TRANS_ACT_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*0x1F[7:0] = 0 turn off RF*/ \
|
||||
{0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/*0x4C[23] = 0x4E[7] = 0, switch DPDT_SEL_P output from register 0x65[2] */\
|
||||
{0x0027, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xff, 0x34}, /*0x27 <= 34, xtal_qsel=0 to xtal bring up*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/ \
|
||||
|
||||
#define RTL8188F_TRANS_CARDEMU_TO_SUS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00}, /*0x07=0x00 , SOP option to disable BG/MB*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/ \
|
||||
{0x00C4, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, BIT4},/* 0xC4[4] <= 1, turn off USB APHY LDO under suspend mode*/
|
||||
|
||||
#define RTL8188F_TRANS_SUS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/ \
|
||||
{0x00C4, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0},/* 0xC4[4] <= 1, turn off USB APHY LDO under suspend mode*/
|
||||
|
||||
#define RTL8188F_TRANS_CARDEMU_TO_CARDDIS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00}, /*0x07=0x00 , SOP option to disable BG/MB*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/ \
|
||||
{0x00C4, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, BIT4},/* 0xC4[4] <= 1, turn off USB APHY LDO under suspend mode*/
|
||||
|
||||
#define RTL8188F_TRANS_CARDDIS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/ \
|
||||
{0x00C4, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0},/* 0xC4[4] <= 1, turn off USB APHY LDO under suspend mode*/
|
||||
|
||||
|
||||
#define RTL8188F_TRANS_CARDEMU_TO_PDN \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/* 0x04[16] = 0*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/
|
||||
|
||||
#define RTL8188F_TRANS_PDN_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/
|
||||
|
||||
#define RTL8188F_TRANS_ACT_TO_LPS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0139, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*set RPWM IMR*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*Tx Pause*/ \
|
||||
{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Whole BB is reset*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x3F},/*Reset MAC TRX*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \
|
||||
{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, BIT5},/*Respond TxOK to scheduler*/
|
||||
|
||||
|
||||
#define RTL8188F_TRANS_LPS_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/\
|
||||
{0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/\
|
||||
{0x0027, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xff,0x35},/*xtal_qsel=1 for low noise*/ \
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, 0}, /*Polling 0x109[7]=0 TSF in 40M*/\
|
||||
{0x002B, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x1c, 0x1c}, /*. 0x2b[4:2] = 3b'111 to enable BB,AFE clock*/\
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/\
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/\
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/
|
||||
|
||||
|
||||
#define RTL8188F_TRANS_ACT_TO_SWLPS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0139, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0},/*set RPWM IMR*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF},/*Tx Pause*/ \
|
||||
{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0},/*Whole BB is reset*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x3F},/*Reset MAC TRX*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \
|
||||
{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, BIT5},/*Respond TxOK to scheduler*/ \
|
||||
{0x002b, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x1C, 0x00},/*0x2b[4:2]<=0 to gated BB,AFE clock*/ \
|
||||
{0x0027, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xff, 0x34},/*xtal_qsel=0 for bring up*/ \
|
||||
{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xff, 0x00},/* sdio LPS option*/ \
|
||||
{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xff, 0x83},/* usb LPS option, open bandgap, xtal*/ \
|
||||
{0x00C4, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, 0}, /* 0xC4[5]<=0, digital LDO no standby mode*/ \
|
||||
{0x00C4, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, BIT7}, /* 0xC4[7]<=1, on domain voltage adjust*/ \
|
||||
{0x00a7, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xff, 0xe0}, /* low power LPS enable for sdio*/ \
|
||||
{0x00a7, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xff, 0xe4}, /* low power LPS enable for usb*/ \
|
||||
{0x0090, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0}, /* enable WL_LPS_EN*/
|
||||
|
||||
|
||||
#define RTL8188F_TRANS_SWLPS_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/*polling TSF stable*/\
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1, enable security engine*/\
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/\
|
||||
{0x06B7, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x09}, /*. reset MAC rx state machine*/\
|
||||
{0x06B4, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x86}, /*. reset MAC rx state machine*/\
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/* set CPU RAM code ready*/ \
|
||||
{0x001D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*Reset CPU IO Wrapper*/ \
|
||||
{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0},/* Enable CPU*/ \
|
||||
{0x001D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*enable CPU IO Wrapper*/ \
|
||||
{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2},/* Enable CPU*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, BIT7},/*polling FW init ready */ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT6, BIT6},/*polling FW init ready */ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/\
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/
|
||||
|
||||
#define RTL8188F_TRANS_END \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,0,PWR_CMD_END, 0, 0}, //
|
||||
|
||||
|
||||
extern WLAN_PWR_CFG rtl8188F_power_on_flow[RTL8188F_TRANS_CARDEMU_TO_ACT_STEPS+RTL8188F_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188F_radio_off_flow[RTL8188F_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188F_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188F_card_disable_flow[RTL8188F_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188F_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188F_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188F_card_enable_flow[RTL8188F_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188F_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188F_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188F_suspend_flow[RTL8188F_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188F_TRANS_CARDEMU_TO_SUS_STEPS+RTL8188F_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188F_resume_flow[RTL8188F_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188F_TRANS_CARDEMU_TO_SUS_STEPS+RTL8188F_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188F_hwpdn_flow[RTL8188F_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188F_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188F_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188F_enter_lps_flow[RTL8188F_TRANS_ACT_TO_LPS_STEPS+RTL8188F_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188F_leave_lps_flow[RTL8188F_TRANS_LPS_TO_ACT_STEPS+RTL8188F_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188F_enter_swlps_flow[RTL8188F_TRANS_ACT_TO_SWLPS_STEPS+RTL8188F_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8188F_leave_swlps_flow[RTL8188F_TRANS_SWLPS_TO_ACT_STEPS+RTL8188F_TRANS_END_STEPS];
|
||||
#endif
|
||||
|
||||
178
include/Hal8192EPhyCfg.h
Normal file
178
include/Hal8192EPhyCfg.h
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __INC_HAL8192EPHYCFG_H__
|
||||
#define __INC_HAL8192EPHYCFG_H__
|
||||
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
#define LOOP_LIMIT 5
|
||||
#define MAX_STALL_TIME 50 //us
|
||||
#define AntennaDiversityValue 0x80 //(Adapter->bSoftwareAntennaDiversity ? 0x00:0x80)
|
||||
#define MAX_TXPWR_IDX_NMODE_92S 63
|
||||
#define Reset_Cnt_Limit 3
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
#define MAX_AGGR_NUM 0x0B
|
||||
#else
|
||||
#define MAX_AGGR_NUM 0x07
|
||||
#endif // CONFIG_PCI_HCI
|
||||
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
|
||||
/* BB/RF related */
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
|
||||
|
||||
/*------------------------Export global variable----------------------------*/
|
||||
/*------------------------Export global variable----------------------------*/
|
||||
|
||||
|
||||
/*------------------------Export Marco Definition---------------------------*/
|
||||
/*------------------------Export Marco Definition---------------------------*/
|
||||
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
//
|
||||
// BB and RF register read/write
|
||||
//
|
||||
u32 PHY_QueryBBReg8192E( IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask );
|
||||
void PHY_SetBBReg8192E( IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data );
|
||||
u32 PHY_QueryRFReg8192E( IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask );
|
||||
void PHY_SetRFReg8192E( IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data );
|
||||
|
||||
//
|
||||
// Initialization related function
|
||||
//
|
||||
/* MAC/BB/RF HAL config */
|
||||
int PHY_MACConfig8192E(IN PADAPTER Adapter );
|
||||
int PHY_BBConfig8192E(IN PADAPTER Adapter );
|
||||
int PHY_RFConfig8192E(IN PADAPTER Adapter );
|
||||
|
||||
/* RF config */
|
||||
|
||||
|
||||
//
|
||||
// BB TX Power R/W
|
||||
//
|
||||
void PHY_GetTxPowerLevel8192E( IN PADAPTER Adapter, OUT s32* powerlevel );
|
||||
void PHY_SetTxPowerLevel8192E( IN PADAPTER Adapter, IN u8 channel );
|
||||
BOOLEAN PHY_UpdateTxPowerDbm8192E( IN PADAPTER Adapter, IN int powerInDbm );
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerIndex_8192E(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 PowerIndex,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate
|
||||
);
|
||||
|
||||
u8
|
||||
PHY_GetTxPowerIndex_8192E(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate,
|
||||
IN CHANNEL_WIDTH BandWidth,
|
||||
IN u8 Channel
|
||||
);
|
||||
|
||||
//
|
||||
// Switch bandwidth for 8192S
|
||||
//
|
||||
VOID
|
||||
PHY_SetBWMode8192E(
|
||||
IN PADAPTER pAdapter,
|
||||
IN CHANNEL_WIDTH Bandwidth,
|
||||
IN u8 Offset
|
||||
);
|
||||
|
||||
//
|
||||
// channel switch related funciton
|
||||
//
|
||||
VOID
|
||||
PHY_SwChnl8192E(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel
|
||||
);
|
||||
|
||||
|
||||
VOID
|
||||
PHY_SetSwChnlBWMode8192E(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel,
|
||||
IN CHANNEL_WIDTH Bandwidth,
|
||||
IN u8 Offset40,
|
||||
IN u8 Offset80
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetRFEReg_8192E(
|
||||
IN PADAPTER Adapter
|
||||
);
|
||||
|
||||
void
|
||||
phy_SpurCalibration_8192E(
|
||||
IN PADAPTER Adapter,
|
||||
IN SPUR_CAL_METHOD Method
|
||||
);
|
||||
void PHY_SpurCalibration_8192E(IN PADAPTER Adapter);
|
||||
|
||||
#ifdef CONFIG_SPUR_CAL_NBI
|
||||
void
|
||||
phy_SpurCalibration_8192E_NBI(
|
||||
IN PADAPTER Adapter
|
||||
);
|
||||
#endif
|
||||
//
|
||||
// BB/MAC/RF other monitor API
|
||||
//
|
||||
|
||||
VOID
|
||||
PHY_SetRFPathSwitch_8192E(
|
||||
IN PADAPTER pAdapter,
|
||||
IN BOOLEAN bMain
|
||||
);
|
||||
|
||||
VOID
|
||||
storePwrIndexDiffRateOffset(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data
|
||||
);
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
#endif // __INC_HAL8192CPHYCFG_H
|
||||
|
||||
1133
include/Hal8192EPhyReg.h
Normal file
1133
include/Hal8192EPhyReg.h
Normal file
File diff suppressed because it is too large
Load diff
155
include/Hal8192EPwrSeq.h
Normal file
155
include/Hal8192EPwrSeq.h
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
#ifndef REALTEK_POWER_SEQUENCE_8192E
|
||||
#define REALTEK_POWER_SEQUENCE_8192E
|
||||
|
||||
#include "HalPwrSeqCmd.h"
|
||||
/*
|
||||
Check document WM-20110607-Paul-RTL8192E_Power_Architecture-R02.vsd
|
||||
There are 6 HW Power States:
|
||||
0: POFF--Power Off
|
||||
1: PDN--Power Down
|
||||
2: CARDEMU--Card Emulation
|
||||
3: ACT--Active Mode
|
||||
4: LPS--Low Power State
|
||||
5: SUS--Suspend
|
||||
|
||||
The transision from different states are defined below
|
||||
TRANS_CARDEMU_TO_ACT
|
||||
TRANS_ACT_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_SUS
|
||||
TRANS_SUS_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_PDN
|
||||
TRANS_ACT_TO_LPS
|
||||
TRANS_LPS_TO_ACT
|
||||
|
||||
TRANS_END
|
||||
*/
|
||||
#define RTL8192E_TRANS_CARDEMU_TO_ACT_STEPS 18
|
||||
#define RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS 18
|
||||
#define RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS 18
|
||||
#define RTL8192E_TRANS_SUS_TO_CARDEMU_STEPS 18
|
||||
#define RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS 18
|
||||
#define RTL8192E_TRANS_PDN_TO_CARDEMU_STEPS 18
|
||||
#define RTL8192E_TRANS_ACT_TO_LPS_STEPS 23
|
||||
#define RTL8192E_TRANS_LPS_TO_ACT_STEPS 23
|
||||
#define RTL8192E_TRANS_END_STEPS 1
|
||||
|
||||
|
||||
#define RTL8192E_TRANS_CARDEMU_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* disable HWPDN 0x04[15]=0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0},/* disable SW LPS 0x04[10]=0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT4|BIT3), 0},/* disable WL suspend*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* release WLON reset 0x04[16]=1*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* polling until return 0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0},/**/ \
|
||||
|
||||
|
||||
#define RTL8192E_TRANS_ACT_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*0x1F[7:0] = 0 turn off RF*/ \
|
||||
{0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/*0x4C[23] = 0x4E[7] = 0, switch DPDT_SEL_P output from register 0x65[2] */\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/ \
|
||||
|
||||
|
||||
#define RTL8192E_TRANS_CARDEMU_TO_SUS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4|BIT3, (BIT4|BIT3)}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3|BIT4}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8192E_TRANS_SUS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/
|
||||
|
||||
#define RTL8192E_TRANS_CARDEMU_TO_CARDDIS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07=0x20 , SOP option to disable BG/MB*/ \
|
||||
{0x00CC, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2}, /*Unlock small LDO Register*/ \
|
||||
{0x0011, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*Disable small LDO*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2}, /*0x04[10] = 1, enable SW LPS*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8192E_TRANS_CARDDIS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x0011, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0}, /*Enable small LDO*/ \
|
||||
{0x00CC, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0}, /*Lock small LDO Register*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/\
|
||||
|
||||
|
||||
#define RTL8192E_TRANS_CARDEMU_TO_PDN \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/* 0x04[16] = 0*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/
|
||||
|
||||
#define RTL8192E_TRANS_PDN_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/
|
||||
|
||||
#define RTL8192E_TRANS_ACT_TO_LPS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*Tx Pause*/ \
|
||||
{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Whole BB is reset*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x03},/*Reset MAC TRX*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \
|
||||
{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/*When driver enter Sus/ Disable, enable LOP for BT*/ \
|
||||
{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*Respond TxOK to scheduler*/ \
|
||||
|
||||
|
||||
#define RTL8192E_TRANS_LPS_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM, For Repeatly In and out, Taggle bit should be changed*/\
|
||||
{0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/\
|
||||
{0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/\
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*. 0x08[4] = 0 switch TSF to 40M*/\
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, 0}, /*Polling 0x109[7]=0 TSF in 40M*/\
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/\
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/\
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/\
|
||||
{0x013D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*Clear ISR*/
|
||||
|
||||
#define RTL8192E_TRANS_END \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,0,PWR_CMD_END, 0, 0}, //
|
||||
|
||||
|
||||
extern WLAN_PWR_CFG rtl8192E_power_on_flow[RTL8192E_TRANS_CARDEMU_TO_ACT_STEPS+RTL8192E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8192E_radio_off_flow[RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8192E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8192E_card_disable_flow[RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8192E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8192E_card_enable_flow[RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8192E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8192E_suspend_flow[RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS+RTL8192E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8192E_resume_flow[RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS+RTL8192E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8192E_hwpdn_flow[RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8192E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8192E_enter_lps_flow[RTL8192E_TRANS_ACT_TO_LPS_STEPS+RTL8192E_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8192E_leave_lps_flow[RTL8192E_TRANS_LPS_TO_ACT_STEPS+RTL8192E_TRANS_END_STEPS];
|
||||
|
||||
#endif
|
||||
144
include/Hal8703BPhyCfg.h
Normal file
144
include/Hal8703BPhyCfg.h
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __INC_HAL8703BPHYCFG_H__
|
||||
#define __INC_HAL8703BPHYCFG_H__
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
#define LOOP_LIMIT 5
|
||||
#define MAX_STALL_TIME 50 //us
|
||||
#define AntennaDiversityValue 0x80 //(Adapter->bSoftwareAntennaDiversity ? 0x00:0x80)
|
||||
#define MAX_TXPWR_IDX_NMODE_92S 63
|
||||
#define Reset_Cnt_Limit 3
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
#define MAX_AGGR_NUM 0x0B
|
||||
#else
|
||||
#define MAX_AGGR_NUM 0x07
|
||||
#endif // CONFIG_PCI_HCI
|
||||
|
||||
|
||||
/*--------------------------Define Parameters End-------------------------------*/
|
||||
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
|
||||
/*------------------------------Define structure End----------------------------*/
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
u32
|
||||
PHY_QueryBBReg_8703B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetBBReg_8703B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data
|
||||
);
|
||||
|
||||
u32
|
||||
PHY_QueryRFReg_8703B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetRFReg_8703B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data
|
||||
);
|
||||
|
||||
/* MAC/BB/RF HAL config */
|
||||
int PHY_BBConfig8703B(PADAPTER Adapter );
|
||||
|
||||
int PHY_RFConfig8703B(PADAPTER Adapter );
|
||||
|
||||
s32 PHY_MACConfig8703B(PADAPTER padapter);
|
||||
|
||||
int
|
||||
PHY_ConfigRFWithParaFile_8703B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8* pFileName,
|
||||
RF_PATH eRFPath
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerIndex_8703B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 PowerIndex,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate
|
||||
);
|
||||
|
||||
u8
|
||||
PHY_GetTxPowerIndex_8703B(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate,
|
||||
IN CHANNEL_WIDTH BandWidth,
|
||||
IN u8 Channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_GetTxPowerLevel8703B(
|
||||
IN PADAPTER Adapter,
|
||||
OUT s32* powerlevel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerLevel8703B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetBWMode8703B(
|
||||
IN PADAPTER Adapter,
|
||||
IN CHANNEL_WIDTH Bandwidth, // 20M or 40M
|
||||
IN unsigned char Offset // Upper, Lower, or Don't care
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SwChnl8703B( // Call after initialization
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetSwChnlBWMode8703B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel,
|
||||
IN CHANNEL_WIDTH Bandwidth,
|
||||
IN u8 Offset40,
|
||||
IN u8 Offset80
|
||||
);
|
||||
/*--------------------------Exported Function prototype End---------------------*/
|
||||
|
||||
#endif
|
||||
|
||||
1139
include/Hal8703BPhyReg.h
Normal file
1139
include/Hal8703BPhyReg.h
Normal file
File diff suppressed because it is too large
Load diff
184
include/Hal8703BPwrSeq.h
Normal file
184
include/Hal8703BPwrSeq.h
Normal file
|
|
@ -0,0 +1,184 @@
|
|||
#ifndef REALTEK_POWER_SEQUENCE_8703B
|
||||
#define REALTEK_POWER_SEQUENCE_8703B
|
||||
|
||||
#include "HalPwrSeqCmd.h"
|
||||
|
||||
/*
|
||||
Check document WM-20140402-JackieLau-RTL8703B_Power_Architecture v09.vsd
|
||||
There are 6 HW Power States:
|
||||
0: POFF--Power Off
|
||||
1: PDN--Power Down
|
||||
2: CARDEMU--Card Emulation
|
||||
3: ACT--Active Mode
|
||||
4: LPS--Low Power State
|
||||
5: SUS--Suspend
|
||||
|
||||
The transision from different states are defined below
|
||||
TRANS_CARDEMU_TO_ACT
|
||||
TRANS_ACT_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_SUS
|
||||
TRANS_SUS_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_PDN
|
||||
TRANS_ACT_TO_LPS
|
||||
TRANS_LPS_TO_ACT
|
||||
|
||||
TRANS_END
|
||||
*/
|
||||
#define RTL8703B_TRANS_CARDEMU_TO_ACT_STEPS 23
|
||||
#define RTL8703B_TRANS_ACT_TO_CARDEMU_STEPS 15
|
||||
#define RTL8703B_TRANS_CARDEMU_TO_SUS_STEPS 15
|
||||
#define RTL8703B_TRANS_SUS_TO_CARDEMU_STEPS 15
|
||||
#define RTL8703B_TRANS_CARDEMU_TO_PDN_STEPS 15
|
||||
#define RTL8703B_TRANS_PDN_TO_CARDEMU_STEPS 15
|
||||
#define RTL8703B_TRANS_ACT_TO_LPS_STEPS 15
|
||||
#define RTL8703B_TRANS_LPS_TO_ACT_STEPS 15
|
||||
#define RTL8703B_TRANS_END_STEPS 1
|
||||
|
||||
|
||||
#define RTL8703B_TRANS_CARDEMU_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0}, /*0x20[0] = 1b'1 enable LDOA12 MACRO block for all interface*/ \
|
||||
{0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x67[0] = 0 to disable BT_GPS_SEL pins*/ \
|
||||
{0x0001, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 1, PWRSEQ_DELAY_MS},/*Delay 1ms*/ \
|
||||
{0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, 0}, /*0x00[5] = 1b'0 release analog Ips to digital ,1:isolation*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT4|BIT3|BIT2), 0},/* disable SW LPS 0x04[10]=0 and WLSUS_EN 0x04[11]=0*/ \
|
||||
{0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0 , BIT0},/* Disable USB suspend */ \
|
||||
{0x0004, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 , BIT3},/* enabled usb resume */ \
|
||||
{0x0004, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 , 0},/* disable usb resume */ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \
|
||||
{0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0 , 0},/* Enable USB suspend */ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* release WLON reset 0x04[16]=1*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* disable HWPDN 0x04[15]=0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT4|BIT3), 0},/* disable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* polling until return 0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0},/**/ \
|
||||
{0x0010, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, BIT6},/* Enable WL control XTAL setting*/ \
|
||||
{0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable falling edge triggering interrupt*/\
|
||||
{0x0063, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable GPIO9 interrupt mode*/\
|
||||
{0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Enable GPIO9 input mode*/\
|
||||
{0x0058, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*Enable HSISR GPIO[C:0] interrupt*/\
|
||||
{0x005A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable HSISR GPIO9 interrupt*/\
|
||||
{0x0068, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, BIT3},/*For GPIO9 internal pull high setting by test chip*/\
|
||||
{0x0069, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, BIT6},/*For GPIO9 internal pull high setting*/\
|
||||
|
||||
|
||||
#define RTL8703B_TRANS_ACT_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*0x1F[7:0] = 0 turn off RF*/ \
|
||||
{0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Enable rising edge triggering interrupt*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* release WLON reset 0x04[16]=1*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/ \
|
||||
{0x0010, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, 0},/* Enable BT control XTAL setting*/\
|
||||
{0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5}, /*0x00[5] = 1b'1 analog Ips to digital ,1:isolation*/ \
|
||||
{0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*0x20[0] = 1b'0 disable LDOA12 MACRO block*/\
|
||||
|
||||
|
||||
#define RTL8703B_TRANS_CARDEMU_TO_SUS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4|BIT3, (BIT4|BIT3)}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SDIO SOP option to disable BG/MB/ACK/SWR*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3|BIT4}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8703B_TRANS_SUS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 | BIT7, 0}, /*clear suspend enable and power down enable*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/
|
||||
|
||||
#define RTL8703B_TRANS_CARDEMU_TO_CARDDIS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07=0x20 , SOP option to disable BG/MB*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2}, /*0x04[10] = 1, enable SW LPS*/ \
|
||||
{0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 1}, /*0x48[16] = 1 to enable GPIO9 as EXT WAKEUP*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8703B_TRANS_CARDDIS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 | BIT7, 0}, /*clear suspend enable and power down enable*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*0x48[16] = 0 to disable GPIO9 as EXT WAKEUP*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/\
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*PCIe DMA start*/
|
||||
|
||||
|
||||
#define RTL8703B_TRANS_CARDEMU_TO_PDN \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK|PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SOP option to disable BG/MB/ACK/SWR*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/* 0x04[16] = 0*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/
|
||||
|
||||
#define RTL8703B_TRANS_PDN_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/
|
||||
|
||||
#define RTL8703B_TRANS_ACT_TO_LPS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*Tx Pause*/ \
|
||||
{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Whole BB is reset*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x03},/*Reset MAC TRX*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \
|
||||
{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/*When driver enter Sus/ Disable, enable LOP for BT*/ \
|
||||
{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*Respond TxOK to scheduler*/ \
|
||||
|
||||
|
||||
#define RTL8703B_TRANS_LPS_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/\
|
||||
{0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/\
|
||||
{0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/\
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*. 0x08[4] = 0 switch TSF to 40M*/\
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, 0}, /*Polling 0x109[7]=0 TSF in 40M*/\
|
||||
{0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6|BIT7, 0}, /*. 0x29[7:6] = 2b'00 enable BB clock*/\
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/\
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/\
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/
|
||||
|
||||
#define RTL8703B_TRANS_END \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,0,PWR_CMD_END, 0, 0}, //
|
||||
|
||||
|
||||
extern WLAN_PWR_CFG rtl8703B_power_on_flow[RTL8703B_TRANS_CARDEMU_TO_ACT_STEPS+RTL8703B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8703B_radio_off_flow[RTL8703B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8703B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8703B_card_disable_flow[RTL8703B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8703B_TRANS_CARDEMU_TO_PDN_STEPS+RTL8703B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8703B_card_enable_flow[RTL8703B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8703B_TRANS_CARDEMU_TO_PDN_STEPS+RTL8703B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8703B_suspend_flow[RTL8703B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8703B_TRANS_CARDEMU_TO_SUS_STEPS+RTL8703B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8703B_resume_flow[RTL8703B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8703B_TRANS_CARDEMU_TO_SUS_STEPS+RTL8703B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8703B_hwpdn_flow[RTL8703B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8703B_TRANS_CARDEMU_TO_PDN_STEPS+RTL8703B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8703B_enter_lps_flow[RTL8703B_TRANS_ACT_TO_LPS_STEPS+RTL8703B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8703B_leave_lps_flow[RTL8703B_TRANS_LPS_TO_ACT_STEPS+RTL8703B_TRANS_END_STEPS];
|
||||
|
||||
#endif
|
||||
149
include/Hal8723BPhyCfg.h
Normal file
149
include/Hal8723BPhyCfg.h
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __INC_HAL8723BPHYCFG_H__
|
||||
#define __INC_HAL8723BPHYCFG_H__
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
#define LOOP_LIMIT 5
|
||||
#define MAX_STALL_TIME 50 //us
|
||||
#define AntennaDiversityValue 0x80 //(Adapter->bSoftwareAntennaDiversity ? 0x00:0x80)
|
||||
#define MAX_TXPWR_IDX_NMODE_92S 63
|
||||
#define Reset_Cnt_Limit 3
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
#define MAX_AGGR_NUM 0x0B
|
||||
#else
|
||||
#define MAX_AGGR_NUM 0x07
|
||||
#endif // CONFIG_PCI_HCI
|
||||
|
||||
|
||||
/*--------------------------Define Parameters End-------------------------------*/
|
||||
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
|
||||
/*------------------------------Define structure End----------------------------*/
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
u32
|
||||
PHY_QueryBBReg_8723B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetBBReg_8723B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data
|
||||
);
|
||||
|
||||
u32
|
||||
PHY_QueryRFReg_8723B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetRFReg_8723B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data
|
||||
);
|
||||
|
||||
/* MAC/BB/RF HAL config */
|
||||
int PHY_BBConfig8723B(PADAPTER Adapter );
|
||||
|
||||
int PHY_RFConfig8723B(PADAPTER Adapter );
|
||||
|
||||
s32 PHY_MACConfig8723B(PADAPTER padapter);
|
||||
|
||||
int
|
||||
PHY_ConfigRFWithParaFile_8723B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8* pFileName,
|
||||
RF_PATH eRFPath
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerIndex_8723B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 PowerIndex,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate
|
||||
);
|
||||
|
||||
u8
|
||||
PHY_GetTxPowerIndex_8723B(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate,
|
||||
IN CHANNEL_WIDTH BandWidth,
|
||||
IN u8 Channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_GetTxPowerLevel8723B(
|
||||
IN PADAPTER Adapter,
|
||||
OUT s32* powerlevel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerLevel8723B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetBWMode8723B(
|
||||
IN PADAPTER Adapter,
|
||||
IN CHANNEL_WIDTH Bandwidth, // 20M or 40M
|
||||
IN unsigned char Offset // Upper, Lower, or Don't care
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SwChnl8723B( // Call after initialization
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetSwChnlBWMode8723B(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel,
|
||||
IN CHANNEL_WIDTH Bandwidth,
|
||||
IN u8 Offset40,
|
||||
IN u8 Offset80
|
||||
);
|
||||
|
||||
VOID PHY_SetRFPathSwitch_8723B(
|
||||
IN PADAPTER pAdapter,
|
||||
IN BOOLEAN bMain
|
||||
);
|
||||
/*--------------------------Exported Function prototype End---------------------*/
|
||||
|
||||
#endif
|
||||
|
||||
1137
include/Hal8723BPhyReg.h
Normal file
1137
include/Hal8723BPhyReg.h
Normal file
File diff suppressed because it is too large
Load diff
233
include/Hal8723BPwrSeq.h
Normal file
233
include/Hal8723BPwrSeq.h
Normal file
|
|
@ -0,0 +1,233 @@
|
|||
#ifndef REALTEK_POWER_SEQUENCE_8723B
|
||||
#define REALTEK_POWER_SEQUENCE_8723B
|
||||
|
||||
#include "HalPwrSeqCmd.h"
|
||||
|
||||
/*
|
||||
Check document WM-20130815-JackieLau-RTL8723B_Power_Architecture v08.vsd
|
||||
There are 6 HW Power States:
|
||||
0: POFF--Power Off
|
||||
1: PDN--Power Down
|
||||
2: CARDEMU--Card Emulation
|
||||
3: ACT--Active Mode
|
||||
4: LPS--Low Power State
|
||||
5: SUS--Suspend
|
||||
|
||||
The transision from different states are defined below
|
||||
TRANS_CARDEMU_TO_ACT
|
||||
TRANS_ACT_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_SUS
|
||||
TRANS_SUS_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_PDN
|
||||
TRANS_ACT_TO_LPS
|
||||
TRANS_LPS_TO_ACT
|
||||
|
||||
TRANS_END
|
||||
*/
|
||||
#define RTL8723B_TRANS_CARDEMU_TO_ACT_STEPS 26
|
||||
#define RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS 15
|
||||
#define RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS 15
|
||||
#define RTL8723B_TRANS_SUS_TO_CARDEMU_STEPS 15
|
||||
#define RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS 15
|
||||
#define RTL8723B_TRANS_PDN_TO_CARDEMU_STEPS 15
|
||||
#define RTL8723B_TRANS_ACT_TO_LPS_STEPS 15
|
||||
#define RTL8723B_TRANS_LPS_TO_ACT_STEPS 15
|
||||
#define RTL8723B_TRANS_ACT_TO_SWLPS_STEPS 22
|
||||
#define RTL8723B_TRANS_SWLPS_TO_ACT_STEPS 15
|
||||
#define RTL8723B_TRANS_END_STEPS 1
|
||||
|
||||
|
||||
#define RTL8723B_TRANS_CARDEMU_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0}, /*0x20[0] = 1b'1 enable LDOA12 MACRO block for all interface*/ \
|
||||
{0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x67[0] = 0 to disable BT_GPS_SEL pins*/ \
|
||||
{0x0001, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 1, PWRSEQ_DELAY_MS},/*Delay 1ms*/ \
|
||||
{0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, 0}, /*0x00[5] = 1b'0 release analog Ips to digital ,1:isolation*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT4|BIT3|BIT2), 0},/* disable SW LPS 0x04[10]=0 and WLSUS_EN 0x04[11]=0*/ \
|
||||
{0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0 , BIT0},/* Disable USB suspend */ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \
|
||||
{0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0 , 0},/* Enable USB suspend */ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* release WLON reset 0x04[16]=1*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* disable HWPDN 0x04[15]=0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT4|BIT3), 0},/* disable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* polling until return 0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0},/**/ \
|
||||
{0x0010, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, BIT6},/* Enable WL control XTAL setting*/ \
|
||||
{0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable falling edge triggering interrupt*/\
|
||||
{0x0063, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable GPIO9 interrupt mode*/\
|
||||
{0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Enable GPIO9 input mode*/\
|
||||
{0x0058, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*Enable HSISR GPIO[C:0] interrupt*/\
|
||||
{0x005A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable HSISR GPIO9 interrupt*/\
|
||||
{0x0068, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, BIT3},/*For GPIO9 internal pull high setting by test chip*/\
|
||||
{0x0069, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, BIT6},/*For GPIO9 internal pull high setting*/\
|
||||
|
||||
|
||||
#define RTL8723B_TRANS_ACT_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*0x1F[7:0] = 0 turn off RF*/ \
|
||||
{0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Enable rising edge triggering interrupt*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* release WLON reset 0x04[16]=1*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/ \
|
||||
{0x0010, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, 0},/* Enable BT control XTAL setting*/\
|
||||
{0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5}, /*0x00[5] = 1b'1 analog Ips to digital ,1:isolation*/ \
|
||||
{0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*0x20[0] = 1b'0 disable LDOA12 MACRO block*/\
|
||||
|
||||
|
||||
#define RTL8723B_TRANS_CARDEMU_TO_SUS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4|BIT3, (BIT4|BIT3)}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SDIO SOP option to disable BG/MB/ACK/SWR*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3|BIT4}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8723B_TRANS_SUS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 | BIT7, 0}, /*clear suspend enable and power down enable*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/
|
||||
|
||||
#define RTL8723B_TRANS_CARDEMU_TO_CARDDIS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07=0x20 , SOP option to disable BG/MB*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2}, /*0x04[10] = 1, enable SW LPS*/ \
|
||||
{0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 1}, /*0x48[16] = 1 to enable GPIO9 as EXT WAKEUP*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8723B_TRANS_CARDDIS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 | BIT7, 0}, /*clear suspend enable and power down enable*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*0x48[16] = 0 to disable GPIO9 as EXT WAKEUP*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/\
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*PCIe DMA start*/
|
||||
|
||||
|
||||
#define RTL8723B_TRANS_CARDEMU_TO_PDN \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK|PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SOP option to disable BG/MB/ACK/SWR*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/* 0x04[16] = 0*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/
|
||||
|
||||
#define RTL8723B_TRANS_PDN_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/
|
||||
|
||||
#define RTL8723B_TRANS_ACT_TO_LPS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*Tx Pause*/ \
|
||||
{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Whole BB is reset*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x03},/*Reset MAC TRX*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \
|
||||
{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/*When driver enter Sus/ Disable, enable LOP for BT*/ \
|
||||
{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*Respond TxOK to scheduler*/ \
|
||||
|
||||
|
||||
#define RTL8723B_TRANS_LPS_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/\
|
||||
{0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/\
|
||||
{0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/\
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*. 0x08[4] = 0 switch TSF to 40M*/\
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, 0}, /*Polling 0x109[7]=0 TSF in 40M*/\
|
||||
{0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6|BIT7, 0}, /*. 0x29[7:6] = 2b'00 enable BB clock*/\
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/\
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/\
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/
|
||||
|
||||
|
||||
#define RTL8723B_TRANS_ACT_TO_SWLPS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0194, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*enable 32 K source*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 1},/*CCK and OFDM are enable*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 1},/*CCK and OFDM are enable*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x3F},/*Reset MAC TRX*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*disable security engine*/ \
|
||||
{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x40},/*When driver enter Sus/ Disable, enable LOP for BT*/ \
|
||||
{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*reset dual TSF*/ \
|
||||
{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0},/*Reset CPU*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*Reset MCUFWDL register*/ \
|
||||
{0x001D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*Reset CPU IO Wrapper*/ \
|
||||
{0x001D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 1},/*Reset CPU IO Wrapper*/ \
|
||||
{0x0287, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*polling RXFF packet number = 0 */ \
|
||||
{0x0286, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/*polling RXDMA idle */ \
|
||||
{0x013D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*Clear FW RPWM interrupt */\
|
||||
{0x0139, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*Set FW RPWM interrupt source*/\
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4},/*switch TSF to 32K*/\
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/*polling TSF stable*/\
|
||||
{0x0090, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*Set FW LPS*/ \
|
||||
{0x0090, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0},/*polling FW LPS ready */
|
||||
|
||||
|
||||
#define RTL8723B_TRANS_SWLPS_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0},/*switch TSF to 32K*/\
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/*polling TSF stable*/\
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1, enable security engine*/\
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/\
|
||||
{0x06B7, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x09}, /*. reset MAC rx state machine*/\
|
||||
{0x06B4, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x86}, /*. reset MAC rx state machine*/\
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/* set CPU RAM code ready*/ \
|
||||
{0x001D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*Reset CPU IO Wrapper*/ \
|
||||
{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0},/* Enable CPU*/ \
|
||||
{0x001D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*enable CPU IO Wrapper*/ \
|
||||
{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2},/* Enable CPU*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, BIT7},/*polling FW init ready */ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT6, BIT6},/*polling FW init ready */ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/\
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/
|
||||
|
||||
#define RTL8723B_TRANS_END \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,0,PWR_CMD_END, 0, 0}, //
|
||||
|
||||
|
||||
extern WLAN_PWR_CFG rtl8723B_power_on_flow[RTL8723B_TRANS_CARDEMU_TO_ACT_STEPS+RTL8723B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723B_radio_off_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723B_card_disable_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS+RTL8723B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723B_card_enable_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS+RTL8723B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723B_suspend_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS+RTL8723B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723B_resume_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS+RTL8723B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723B_hwpdn_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS+RTL8723B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723B_enter_lps_flow[RTL8723B_TRANS_ACT_TO_LPS_STEPS+RTL8723B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723B_leave_lps_flow[RTL8723B_TRANS_LPS_TO_ACT_STEPS+RTL8723B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723B_enter_swlps_flow[RTL8723B_TRANS_ACT_TO_SWLPS_STEPS+RTL8723B_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723B_leave_swlps_flow[RTL8723B_TRANS_SWLPS_TO_ACT_STEPS+RTL8723B_TRANS_END_STEPS];
|
||||
#endif
|
||||
|
||||
170
include/Hal8723PwrSeq.h
Normal file
170
include/Hal8723PwrSeq.h
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
#ifndef __HAL8723PWRSEQ_H__
|
||||
#define __HAL8723PWRSEQ_H__
|
||||
/*
|
||||
Check document WM-20110607-Paul-RTL8723A_Power_Architecture-R02.vsd
|
||||
There are 6 HW Power States:
|
||||
0: POFF--Power Off
|
||||
1: PDN--Power Down
|
||||
2: CARDEMU--Card Emulation
|
||||
3: ACT--Active Mode
|
||||
4: LPS--Low Power State
|
||||
5: SUS--Suspend
|
||||
|
||||
The transision from different states are defined below
|
||||
TRANS_CARDEMU_TO_ACT
|
||||
TRANS_ACT_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_SUS
|
||||
TRANS_SUS_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_PDN
|
||||
TRANS_ACT_TO_LPS
|
||||
TRANS_LPS_TO_ACT
|
||||
|
||||
TRANS_END
|
||||
*/
|
||||
#include "HalPwrSeqCmd.h"
|
||||
|
||||
#define RTL8723A_TRANS_CARDEMU_TO_ACT_STEPS 15
|
||||
#define RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS 15
|
||||
#define RTL8723A_TRANS_CARDEMU_TO_SUS_STEPS 15
|
||||
#define RTL8723A_TRANS_SUS_TO_CARDEMU_STEPS 15
|
||||
#define RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS 15
|
||||
#define RTL8723A_TRANS_PDN_TO_CARDEMU_STEPS 15
|
||||
#define RTL8723A_TRANS_ACT_TO_LPS_STEPS 15
|
||||
#define RTL8723A_TRANS_LPS_TO_ACT_STEPS 15
|
||||
#define RTL8723A_TRANS_END_STEPS 1
|
||||
|
||||
|
||||
#define RTL8723A_TRANS_CARDEMU_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0}, /*0x20[0] = 1b'1 enable LDOA12 MACRO block for all interface*/ \
|
||||
{0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x67[0] = 0 to disable BT_GPS_SEL pins*/ \
|
||||
{0x0001, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 1, PWRSEQ_DELAY_MS},/*Delay 1ms*/ \
|
||||
{0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, 0}, /*0x00[5] = 1b'0 release analog Ips to digital ,1:isolation*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0},/* disable SW LPS 0x04[10]=0*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* release WLON reset 0x04[16]=1*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* disable HWPDN 0x04[15]=0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT4|BIT3), 0},/* disable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* polling until return 0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0},/**/ \
|
||||
{0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 1},/*0x4C[23] = 0x4E[7] = 1, switch DPDT_SEL_P output from WL BB */\
|
||||
|
||||
#define RTL8723A_TRANS_ACT_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*0x1F[7:0] = 0 turn off RF*/ \
|
||||
{0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/*0x4C[23] = 0x4E[7] = 0, switch DPDT_SEL_P output from register 0x65[2] */\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/ \
|
||||
{0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5}, /*0x00[5] = 1b'1 analog Ips to digital ,1:isolation*/ \
|
||||
{0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*0x20[0] = 1b'0 disable LDOA12 MACRO block*/ \
|
||||
|
||||
|
||||
#define RTL8723A_TRANS_CARDEMU_TO_SUS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4|BIT3, (BIT4|BIT3)}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SDIO SOP option to disable BG/MB/ACK/SWR*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3|BIT4}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8723A_TRANS_SUS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 | BIT7, 0}, /*clear suspend enable and power down enable*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/
|
||||
|
||||
#define RTL8723A_TRANS_CARDEMU_TO_CARDDIS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07=0x20 , SOP option to disable BG/MB*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2}, /*0x04[10] = 1, enable SW LPS*/ \
|
||||
{0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 1}, /*0x48[16] = 1 to enable GPIO9 as EXT WAKEUP*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8723A_TRANS_CARDDIS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 | BIT7, 0}, /*clear suspend enable and power down enable*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*0x48[16] = 0 to disable GPIO9 as EXT WAKEUP*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/\
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*PCIe DMA start*/
|
||||
|
||||
|
||||
#define RTL8723A_TRANS_CARDEMU_TO_PDN \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK|PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SOP option to disable BG/MB/ACK/SWR*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/* 0x04[16] = 0*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/
|
||||
|
||||
#define RTL8723A_TRANS_PDN_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/
|
||||
|
||||
#define RTL8723A_TRANS_ACT_TO_LPS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*Tx Pause*/ \
|
||||
{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Whole BB is reset*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x03},/*Reset MAC TRX*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \
|
||||
{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/*When driver enter Sus/ Disable, enable LOP for BT*/ \
|
||||
{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*Respond TxOK to scheduler*/ \
|
||||
|
||||
|
||||
#define RTL8723A_TRANS_LPS_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/\
|
||||
{0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/\
|
||||
{0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/\
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*. 0x08[4] = 0 switch TSF to 40M*/\
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, 0}, /*Polling 0x109[7]=0 TSF in 40M*/\
|
||||
{0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6|BIT7, 0}, /*. 0x29[7:6] = 2b'00 enable BB clock*/\
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/\
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/\
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/
|
||||
|
||||
#define RTL8723A_TRANS_END \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,0,PWR_CMD_END, 0, 0}, //
|
||||
|
||||
|
||||
extern WLAN_PWR_CFG rtl8723A_power_on_flow[RTL8723A_TRANS_CARDEMU_TO_ACT_STEPS+RTL8723A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723A_radio_off_flow[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723A_card_disable_flow[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8723A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723A_card_enable_flow[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8723A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723A_suspend_flow[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723A_TRANS_CARDEMU_TO_SUS_STEPS+RTL8723A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723A_resume_flow[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723A_TRANS_CARDEMU_TO_SUS_STEPS+RTL8723A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723A_hwpdn_flow[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8723A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723A_enter_lps_flow[RTL8723A_TRANS_ACT_TO_LPS_STEPS+RTL8723A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8723A_leave_lps_flow[RTL8723A_TRANS_LPS_TO_ACT_STEPS+RTL8723A_TRANS_END_STEPS];
|
||||
|
||||
#endif
|
||||
|
||||
165
include/Hal8812PhyCfg.h
Normal file
165
include/Hal8812PhyCfg.h
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __INC_HAL8812PHYCFG_H__
|
||||
#define __INC_HAL8812PHYCFG_H__
|
||||
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
#define LOOP_LIMIT 5
|
||||
#define MAX_STALL_TIME 50 //us
|
||||
#define AntennaDiversityValue 0x80 //(Adapter->bSoftwareAntennaDiversity ? 0x00:0x80)
|
||||
#define MAX_TXPWR_IDX_NMODE_92S 63
|
||||
#define Reset_Cnt_Limit 3
|
||||
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
#define MAX_AGGR_NUM 0x0B
|
||||
#else
|
||||
#define MAX_AGGR_NUM 0x07
|
||||
#endif // CONFIG_PCI_HCI
|
||||
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
|
||||
|
||||
/* BB/RF related */
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
|
||||
|
||||
/*------------------------Export global variable----------------------------*/
|
||||
/*------------------------Export global variable----------------------------*/
|
||||
|
||||
|
||||
/*------------------------Export Marco Definition---------------------------*/
|
||||
/*------------------------Export Marco Definition---------------------------*/
|
||||
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
//
|
||||
// BB and RF register read/write
|
||||
//
|
||||
u32 PHY_QueryBBReg8812( IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask );
|
||||
void PHY_SetBBReg8812( IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data );
|
||||
u32 PHY_QueryRFReg8812( IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask );
|
||||
void PHY_SetRFReg8812( IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data );
|
||||
|
||||
//
|
||||
// Initialization related function
|
||||
//
|
||||
/* MAC/BB/RF HAL config */
|
||||
int PHY_MACConfig8812(IN PADAPTER Adapter );
|
||||
int PHY_BBConfig8812(IN PADAPTER Adapter );
|
||||
void PHY_BB8812_Config_1T(IN PADAPTER Adapter );
|
||||
int PHY_RFConfig8812(IN PADAPTER Adapter );
|
||||
|
||||
/* RF config */
|
||||
|
||||
s32
|
||||
PHY_SwitchWirelessBand8812(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 Band
|
||||
);
|
||||
|
||||
//
|
||||
// BB TX Power R/W
|
||||
//
|
||||
void PHY_GetTxPowerLevel8812( IN PADAPTER Adapter, OUT s32* powerlevel );
|
||||
void PHY_SetTxPowerLevel8812( IN PADAPTER Adapter, IN u8 Channel );
|
||||
|
||||
BOOLEAN PHY_UpdateTxPowerDbm8812( IN PADAPTER Adapter, IN int powerInDbm );
|
||||
u8 PHY_GetTxPowerIndex_8812A(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate,
|
||||
IN CHANNEL_WIDTH BandWidth,
|
||||
IN u8 Channel
|
||||
);
|
||||
|
||||
u32 PHY_GetTxBBSwing_8812A(
|
||||
IN PADAPTER Adapter,
|
||||
IN BAND_TYPE Band,
|
||||
IN u8 RFPath
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerIndex_8812A(
|
||||
IN PADAPTER Adapter,
|
||||
IN u4Byte PowerIndex,
|
||||
IN u1Byte RFPath,
|
||||
IN u1Byte Rate
|
||||
);
|
||||
|
||||
//
|
||||
// Switch bandwidth for 8192S
|
||||
//
|
||||
VOID
|
||||
PHY_SetBWMode8812(
|
||||
IN PADAPTER pAdapter,
|
||||
IN CHANNEL_WIDTH Bandwidth,
|
||||
IN u8 Offset
|
||||
);
|
||||
|
||||
//
|
||||
// channel switch related funciton
|
||||
//
|
||||
VOID
|
||||
PHY_SwChnl8812(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel
|
||||
);
|
||||
|
||||
|
||||
VOID
|
||||
PHY_SetSwChnlBWMode8812(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel,
|
||||
IN CHANNEL_WIDTH Bandwidth,
|
||||
IN u8 Offset40,
|
||||
IN u8 Offset80
|
||||
);
|
||||
|
||||
//
|
||||
// BB/MAC/RF other monitor API
|
||||
//
|
||||
|
||||
VOID
|
||||
PHY_SetRFPathSwitch_8812A(
|
||||
IN PADAPTER pAdapter,
|
||||
IN BOOLEAN bMain
|
||||
);
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
#endif // __INC_HAL8192CPHYCFG_H
|
||||
|
||||
739
include/Hal8812PhyReg.h
Normal file
739
include/Hal8812PhyReg.h
Normal file
|
|
@ -0,0 +1,739 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __INC_HAL8812PHYREG_H__
|
||||
#define __INC_HAL8812PHYREG_H__
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
//
|
||||
// BB-PHY register PMAC 0x100 PHY 0x800 - 0xEFF
|
||||
// 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF
|
||||
// 2. 0x800/0x900/0xA00/0xC00/0xD00/0xE00
|
||||
// 3. RF register 0x00-2E
|
||||
// 4. Bit Mask for BB/RF register
|
||||
// 5. Other defintion for BB/RF R/W
|
||||
//
|
||||
|
||||
|
||||
// BB Register Definition
|
||||
|
||||
#define rCCAonSec_Jaguar 0x838
|
||||
#define rPwed_TH_Jaguar 0x830
|
||||
|
||||
// BW and sideband setting
|
||||
#define rBWIndication_Jaguar 0x834
|
||||
#define rL1PeakTH_Jaguar 0x848
|
||||
#define rFPGA0_XA_LSSIReadBack 0x8a0 /*Tranceiver LSSI Readback*/
|
||||
#define rRFMOD_Jaguar 0x8ac //RF mode
|
||||
#define rADC_Buf_Clk_Jaguar 0x8c4
|
||||
#define rRFECTRL_Jaguar 0x900
|
||||
#define bRFMOD_Jaguar 0xc3
|
||||
#define rCCK_System_Jaguar 0xa00 // for cck sideband
|
||||
#define bCCK_System_Jaguar 0x10
|
||||
|
||||
// Block & Path enable
|
||||
#define rOFDMCCKEN_Jaguar 0x808 // OFDM/CCK block enable
|
||||
#define bOFDMEN_Jaguar 0x20000000
|
||||
#define bCCKEN_Jaguar 0x10000000
|
||||
#define rRxPath_Jaguar 0x808 // Rx antenna
|
||||
#define bRxPath_Jaguar 0xff
|
||||
#define rTxPath_Jaguar 0x80c // Tx antenna
|
||||
#define bTxPath_Jaguar 0x0fffffff
|
||||
#define rCCK_RX_Jaguar 0xa04 // for cck rx path selection
|
||||
#define bCCK_RX_Jaguar 0x0c000000
|
||||
#define rVhtlen_Use_Lsig_Jaguar 0x8c3 // Use LSIG for VHT length
|
||||
|
||||
// RF read/write-related
|
||||
#define rHSSIRead_Jaguar 0x8b0 // RF read addr
|
||||
#define bHSSIRead_addr_Jaguar 0xff
|
||||
#define bHSSIRead_trigger_Jaguar 0x100
|
||||
#define rA_PIRead_Jaguar 0xd04 // RF readback with PI
|
||||
#define rB_PIRead_Jaguar 0xd44 // RF readback with PI
|
||||
#define rA_SIRead_Jaguar 0xd08 // RF readback with SI
|
||||
#define rB_SIRead_Jaguar 0xd48 // RF readback with SI
|
||||
#define rRead_data_Jaguar 0xfffff
|
||||
#define rA_LSSIWrite_Jaguar 0xc90 // RF write addr
|
||||
#define rB_LSSIWrite_Jaguar 0xe90 // RF write addr
|
||||
#define bLSSIWrite_data_Jaguar 0x000fffff
|
||||
#define bLSSIWrite_addr_Jaguar 0x0ff00000
|
||||
|
||||
|
||||
|
||||
// YN: mask the following register definition temporarily
|
||||
#define rFPGA0_XA_RFInterfaceOE 0x860 // RF Channel switch
|
||||
#define rFPGA0_XB_RFInterfaceOE 0x864
|
||||
|
||||
#define rFPGA0_XAB_RFInterfaceSW 0x870 // RF Interface Software Control
|
||||
#define rFPGA0_XCD_RFInterfaceSW 0x874
|
||||
|
||||
//#define rFPGA0_XAB_RFParameter 0x878 // RF Parameter
|
||||
//#define rFPGA0_XCD_RFParameter 0x87c
|
||||
|
||||
//#define rFPGA0_AnalogParameter1 0x880 // Crystal cap setting RF-R/W protection for parameter4??
|
||||
//#define rFPGA0_AnalogParameter2 0x884
|
||||
//#define rFPGA0_AnalogParameter3 0x888
|
||||
//#define rFPGA0_AdDaClockEn 0x888 // enable ad/da clock1 for dual-phy
|
||||
//#define rFPGA0_AnalogParameter4 0x88c
|
||||
|
||||
|
||||
// CCK TX scaling
|
||||
#define rCCK_TxFilter1_Jaguar 0xa20
|
||||
#define bCCK_TxFilter1_C0_Jaguar 0x00ff0000
|
||||
#define bCCK_TxFilter1_C1_Jaguar 0xff000000
|
||||
#define rCCK_TxFilter2_Jaguar 0xa24
|
||||
#define bCCK_TxFilter2_C2_Jaguar 0x000000ff
|
||||
#define bCCK_TxFilter2_C3_Jaguar 0x0000ff00
|
||||
#define bCCK_TxFilter2_C4_Jaguar 0x00ff0000
|
||||
#define bCCK_TxFilter2_C5_Jaguar 0xff000000
|
||||
#define rCCK_TxFilter3_Jaguar 0xa28
|
||||
#define bCCK_TxFilter3_C6_Jaguar 0x000000ff
|
||||
#define bCCK_TxFilter3_C7_Jaguar 0x0000ff00
|
||||
|
||||
|
||||
// YN: mask the following register definition temporarily
|
||||
//#define rPdp_AntA 0xb00
|
||||
//#define rPdp_AntA_4 0xb04
|
||||
//#define rConfig_Pmpd_AntA 0xb28
|
||||
//#define rConfig_AntA 0xb68
|
||||
//#define rConfig_AntB 0xb6c
|
||||
//#define rPdp_AntB 0xb70
|
||||
//#define rPdp_AntB_4 0xb74
|
||||
//#define rConfig_Pmpd_AntB 0xb98
|
||||
//#define rAPK 0xbd8
|
||||
|
||||
// RXIQC
|
||||
#define rA_RxIQC_AB_Jaguar 0xc10 //RxIQ imblance matrix coeff. A & B
|
||||
#define rA_RxIQC_CD_Jaguar 0xc14 //RxIQ imblance matrix coeff. C & D
|
||||
#define rA_TxScale_Jaguar 0xc1c // Pah_A TX scaling factor
|
||||
#define rB_TxScale_Jaguar 0xe1c // Path_B TX scaling factor
|
||||
#define rB_RxIQC_AB_Jaguar 0xe10 //RxIQ imblance matrix coeff. A & B
|
||||
#define rB_RxIQC_CD_Jaguar 0xe14 //RxIQ imblance matrix coeff. C & D
|
||||
#define b_RxIQC_AC_Jaguar 0x02ff // bit mask for IQC matrix element A & C
|
||||
#define b_RxIQC_BD_Jaguar 0x02ff0000 // bit mask for IQC matrix element A & C
|
||||
|
||||
|
||||
// DIG-related
|
||||
#define rA_IGI_Jaguar 0xc50 // Initial Gain for path-A
|
||||
#define rB_IGI_Jaguar 0xe50 // Initial Gain for path-B
|
||||
#define rOFDM_FalseAlarm1_Jaguar 0xf48 // counter for break
|
||||
#define rOFDM_FalseAlarm2_Jaguar 0xf4c // counter for spoofing
|
||||
#define rCCK_FalseAlarm_Jaguar 0xa5c // counter for cck false alarm
|
||||
#define b_FalseAlarm_Jaguar 0xffff
|
||||
#define rCCK_CCA_Jaguar 0xa08 // cca threshold
|
||||
#define bCCK_CCA_Jaguar 0x00ff0000
|
||||
|
||||
// Tx Power Ttraining-related
|
||||
#define rA_TxPwrTraing_Jaguar 0xc54
|
||||
#define rB_TxPwrTraing_Jaguar 0xe54
|
||||
|
||||
// Report-related
|
||||
#define rOFDM_ShortCFOAB_Jaguar 0xf60
|
||||
#define rOFDM_LongCFOAB_Jaguar 0xf64
|
||||
#define rOFDM_EndCFOAB_Jaguar 0xf70
|
||||
#define rOFDM_AGCReport_Jaguar 0xf84
|
||||
#define rOFDM_RxSNR_Jaguar 0xf88
|
||||
#define rOFDM_RxEVMCSI_Jaguar 0xf8c
|
||||
#define rOFDM_SIGReport_Jaguar 0xf90
|
||||
|
||||
// Misc functions
|
||||
#define rEDCCA_Jaguar 0x8a4 // EDCCA
|
||||
#define bEDCCA_Jaguar 0xffff
|
||||
#define rAGC_table_Jaguar 0x82c // AGC tabel select
|
||||
#define bAGC_table_Jaguar 0x3
|
||||
#define b_sel5g_Jaguar 0x1000 // sel5g
|
||||
#define b_LNA_sw_Jaguar 0x8000 // HW/WS control for LNA
|
||||
#define rFc_area_Jaguar 0x860 // fc_area
|
||||
#define bFc_area_Jaguar 0x1ffe000
|
||||
#define rSingleTone_ContTx_Jaguar 0x914
|
||||
|
||||
// RFE
|
||||
#define rA_RFE_Pinmux_Jaguar 0xcb0 // Path_A RFE cotrol pinmux
|
||||
#define rB_RFE_Pinmux_Jaguar 0xeb0 // Path_B RFE control pinmux
|
||||
#define rA_RFE_Inv_Jaguar 0xcb4 // Path_A RFE cotrol
|
||||
#define rB_RFE_Inv_Jaguar 0xeb4 // Path_B RFE control
|
||||
#define rA_RFE_Jaguar 0xcb8 // Path_A RFE cotrol
|
||||
#define rB_RFE_Jaguar 0xeb8 // Path_B RFE control
|
||||
#define r_ANTSEL_SW_Jaguar 0x900 // ANTSEL SW Control
|
||||
#define bMask_RFEInv_Jaguar 0x3ff00000
|
||||
#define bMask_AntselPathFollow_Jaguar 0x00030000
|
||||
|
||||
// TX AGC
|
||||
#define rTxAGC_A_CCK11_CCK1_JAguar 0xc20
|
||||
#define rTxAGC_A_Ofdm18_Ofdm6_JAguar 0xc24
|
||||
#define rTxAGC_A_Ofdm54_Ofdm24_JAguar 0xc28
|
||||
#define rTxAGC_A_MCS3_MCS0_JAguar 0xc2c
|
||||
#define rTxAGC_A_MCS7_MCS4_JAguar 0xc30
|
||||
#define rTxAGC_A_MCS11_MCS8_JAguar 0xc34
|
||||
#define rTxAGC_A_MCS15_MCS12_JAguar 0xc38
|
||||
#define rTxAGC_A_Nss1Index3_Nss1Index0_JAguar 0xc3c
|
||||
#define rTxAGC_A_Nss1Index7_Nss1Index4_JAguar 0xc40
|
||||
#define rTxAGC_A_Nss2Index1_Nss1Index8_JAguar 0xc44
|
||||
#define rTxAGC_A_Nss2Index5_Nss2Index2_JAguar 0xc48
|
||||
#define rTxAGC_A_Nss2Index9_Nss2Index6_JAguar 0xc4c
|
||||
#define rTxAGC_B_CCK11_CCK1_JAguar 0xe20
|
||||
#define rTxAGC_B_Ofdm18_Ofdm6_JAguar 0xe24
|
||||
#define rTxAGC_B_Ofdm54_Ofdm24_JAguar 0xe28
|
||||
#define rTxAGC_B_MCS3_MCS0_JAguar 0xe2c
|
||||
#define rTxAGC_B_MCS7_MCS4_JAguar 0xe30
|
||||
#define rTxAGC_B_MCS11_MCS8_JAguar 0xe34
|
||||
#define rTxAGC_B_MCS15_MCS12_JAguar 0xe38
|
||||
#define rTxAGC_B_Nss1Index3_Nss1Index0_JAguar 0xe3c
|
||||
#define rTxAGC_B_Nss1Index7_Nss1Index4_JAguar 0xe40
|
||||
#define rTxAGC_B_Nss2Index1_Nss1Index8_JAguar 0xe44
|
||||
#define rTxAGC_B_Nss2Index5_Nss2Index2_JAguar 0xe48
|
||||
#define rTxAGC_B_Nss2Index9_Nss2Index6_JAguar 0xe4c
|
||||
#define bTxAGC_byte0_Jaguar 0xff
|
||||
#define bTxAGC_byte1_Jaguar 0xff00
|
||||
#define bTxAGC_byte2_Jaguar 0xff0000
|
||||
#define bTxAGC_byte3_Jaguar 0xff000000
|
||||
|
||||
// IQK YN: temporaily mask this part
|
||||
//#define rFPGA0_IQK 0xe28
|
||||
//#define rTx_IQK_Tone_A 0xe30
|
||||
//#define rRx_IQK_Tone_A 0xe34
|
||||
//#define rTx_IQK_PI_A 0xe38
|
||||
//#define rRx_IQK_PI_A 0xe3c
|
||||
|
||||
//#define rTx_IQK 0xe40
|
||||
//#define rRx_IQK 0xe44
|
||||
//#define rIQK_AGC_Pts 0xe48
|
||||
//#define rIQK_AGC_Rsp 0xe4c
|
||||
//#define rTx_IQK_Tone_B 0xe50
|
||||
//#define rRx_IQK_Tone_B 0xe54
|
||||
//#define rTx_IQK_PI_B 0xe58
|
||||
//#define rRx_IQK_PI_B 0xe5c
|
||||
//#define rIQK_AGC_Cont 0xe60
|
||||
|
||||
|
||||
// AFE-related
|
||||
#define rA_AFEPwr1_Jaguar 0xc60 // dynamic AFE power control
|
||||
#define rA_AFEPwr2_Jaguar 0xc64 // dynamic AFE power control
|
||||
#define rA_Rx_WaitCCA_Tx_CCKRFON_Jaguar 0xc68
|
||||
#define rA_Tx_CCKBBON_OFDMRFON_Jaguar 0xc6c
|
||||
#define rA_Tx_OFDMBBON_Tx2Rx_Jaguar 0xc70
|
||||
#define rA_Tx2Tx_RXCCK_Jaguar 0xc74
|
||||
#define rA_Rx_OFDM_WaitRIFS_Jaguar 0xc78
|
||||
#define rA_Rx2Rx_BT_Jaguar 0xc7c
|
||||
#define rA_sleep_nav_Jaguar 0xc80
|
||||
#define rA_pmpd_Jaguar 0xc84
|
||||
#define rB_AFEPwr1_Jaguar 0xe60 // dynamic AFE power control
|
||||
#define rB_AFEPwr2_Jaguar 0xe64 // dynamic AFE power control
|
||||
#define rB_Rx_WaitCCA_Tx_CCKRFON_Jaguar 0xe68
|
||||
#define rB_Tx_CCKBBON_OFDMRFON_Jaguar 0xe6c
|
||||
#define rB_Tx_OFDMBBON_Tx2Rx_Jaguar 0xe70
|
||||
#define rB_Tx2Tx_RXCCK_Jaguar 0xe74
|
||||
#define rB_Rx_OFDM_WaitRIFS_Jaguar 0xe78
|
||||
#define rB_Rx2Rx_BT_Jaguar 0xe7c
|
||||
#define rB_sleep_nav_Jaguar 0xe80
|
||||
#define rB_pmpd_Jaguar 0xe84
|
||||
|
||||
|
||||
// YN: mask these registers temporaily
|
||||
//#define rTx_Power_Before_IQK_A 0xe94
|
||||
//#define rTx_Power_After_IQK_A 0xe9c
|
||||
|
||||
//#define rRx_Power_Before_IQK_A 0xea0
|
||||
//#define rRx_Power_Before_IQK_A_2 0xea4
|
||||
//#define rRx_Power_After_IQK_A 0xea8
|
||||
//#define rRx_Power_After_IQK_A_2 0xeac
|
||||
|
||||
//#define rTx_Power_Before_IQK_B 0xeb4
|
||||
//#define rTx_Power_After_IQK_B 0xebc
|
||||
|
||||
//#define rRx_Power_Before_IQK_B 0xec0
|
||||
//#define rRx_Power_Before_IQK_B_2 0xec4
|
||||
//#define rRx_Power_After_IQK_B 0xec8
|
||||
//#define rRx_Power_After_IQK_B_2 0xecc
|
||||
|
||||
|
||||
// RSSI Dump
|
||||
#define rA_RSSIDump_Jaguar 0xBF0
|
||||
#define rB_RSSIDump_Jaguar 0xBF1
|
||||
#define rS1_RXevmDump_Jaguar 0xBF4
|
||||
#define rS2_RXevmDump_Jaguar 0xBF5
|
||||
#define rA_RXsnrDump_Jaguar 0xBF6
|
||||
#define rB_RXsnrDump_Jaguar 0xBF7
|
||||
#define rA_CfoShortDump_Jaguar 0xBF8
|
||||
#define rB_CfoShortDump_Jaguar 0xBFA
|
||||
#define rA_CfoLongDump_Jaguar 0xBEC
|
||||
#define rB_CfoLongDump_Jaguar 0xBEE
|
||||
|
||||
|
||||
// RF Register
|
||||
//
|
||||
#define RF_AC_Jaguar 0x00 //
|
||||
#define RF_RF_Top_Jaguar 0x07 //
|
||||
#define RF_TXLOK_Jaguar 0x08 //
|
||||
#define RF_TXAPK_Jaguar 0x0B
|
||||
#define RF_CHNLBW_Jaguar 0x18 // RF channel and BW switch
|
||||
#define RF_RCK1_Jaguar 0x1c //
|
||||
#define RF_RCK2_Jaguar 0x1d
|
||||
#define RF_RCK3_Jaguar 0x1e
|
||||
#define RF_ModeTableAddr 0x30
|
||||
#define RF_ModeTableData0 0x31
|
||||
#define RF_ModeTableData1 0x32
|
||||
#define RF_TxLCTank_Jaguar 0x54
|
||||
#define RF_APK_Jaguar 0x63
|
||||
#define RF_LCK 0xB4
|
||||
#define RF_WeLut_Jaguar 0xEF
|
||||
|
||||
#define bRF_CHNLBW_MOD_AG_Jaguar 0x70300
|
||||
#define bRF_CHNLBW_BW 0xc00
|
||||
|
||||
|
||||
//
|
||||
// RL6052 Register definition
|
||||
//
|
||||
#define RF_AC 0x00 //
|
||||
#define RF_IPA_A 0x0C //
|
||||
#define RF_TXBIAS_A 0x0D
|
||||
#define RF_BS_PA_APSET_G9_G11 0x0E
|
||||
#define RF_MODE1 0x10 //
|
||||
#define RF_MODE2 0x11 //
|
||||
#define RF_CHNLBW 0x18 // RF channel and BW switch
|
||||
#define RF_RCK_OS 0x30 // RF TX PA control
|
||||
#define RF_TXPA_G1 0x31 // RF TX PA control
|
||||
#define RF_TXPA_G2 0x32 // RF TX PA control
|
||||
#define RF_TXPA_G3 0x33 // RF TX PA control
|
||||
#define RF_0x52 0x52
|
||||
#define RF_WE_LUT 0xEF
|
||||
|
||||
#define RF_TX_GAIN_OFFSET_8812A(_val) ((abs((_val)) << 1) | (((_val) > 0) ? BIT0 : 0))
|
||||
#define RF_TX_GAIN_OFFSET_8821A(_val) ((abs((_val)) << 1) | (((_val) > 0) ? BIT0 : 0))
|
||||
|
||||
//
|
||||
//Bit Mask
|
||||
//
|
||||
// 1. Page1(0x100)
|
||||
#define bBBResetB 0x100 // Useless now?
|
||||
#define bGlobalResetB 0x200
|
||||
#define bOFDMTxStart 0x4
|
||||
#define bCCKTxStart 0x8
|
||||
#define bCRC32Debug 0x100
|
||||
#define bPMACLoopback 0x10
|
||||
#define bTxLSIG 0xffffff
|
||||
#define bOFDMTxRate 0xf
|
||||
#define bOFDMTxReserved 0x10
|
||||
#define bOFDMTxLength 0x1ffe0
|
||||
#define bOFDMTxParity 0x20000
|
||||
#define bTxHTSIG1 0xffffff
|
||||
#define bTxHTMCSRate 0x7f
|
||||
#define bTxHTBW 0x80
|
||||
#define bTxHTLength 0xffff00
|
||||
#define bTxHTSIG2 0xffffff
|
||||
#define bTxHTSmoothing 0x1
|
||||
#define bTxHTSounding 0x2
|
||||
#define bTxHTReserved 0x4
|
||||
#define bTxHTAggreation 0x8
|
||||
#define bTxHTSTBC 0x30
|
||||
#define bTxHTAdvanceCoding 0x40
|
||||
#define bTxHTShortGI 0x80
|
||||
#define bTxHTNumberHT_LTF 0x300
|
||||
#define bTxHTCRC8 0x3fc00
|
||||
#define bCounterReset 0x10000
|
||||
#define bNumOfOFDMTx 0xffff
|
||||
#define bNumOfCCKTx 0xffff0000
|
||||
#define bTxIdleInterval 0xffff
|
||||
#define bOFDMService 0xffff0000
|
||||
#define bTxMACHeader 0xffffffff
|
||||
#define bTxDataInit 0xff
|
||||
#define bTxHTMode 0x100
|
||||
#define bTxDataType 0x30000
|
||||
#define bTxRandomSeed 0xffffffff
|
||||
#define bCCKTxPreamble 0x1
|
||||
#define bCCKTxSFD 0xffff0000
|
||||
#define bCCKTxSIG 0xff
|
||||
#define bCCKTxService 0xff00
|
||||
#define bCCKLengthExt 0x8000
|
||||
#define bCCKTxLength 0xffff0000
|
||||
#define bCCKTxCRC16 0xffff
|
||||
#define bCCKTxStatus 0x1
|
||||
#define bOFDMTxStatus 0x2
|
||||
|
||||
|
||||
//
|
||||
// 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF
|
||||
// 1. Page1(0x100)
|
||||
//
|
||||
#define rPMAC_Reset 0x100
|
||||
#define rPMAC_TxStart 0x104
|
||||
#define rPMAC_TxLegacySIG 0x108
|
||||
#define rPMAC_TxHTSIG1 0x10c
|
||||
#define rPMAC_TxHTSIG2 0x110
|
||||
#define rPMAC_PHYDebug 0x114
|
||||
#define rPMAC_TxPacketNum 0x118
|
||||
#define rPMAC_TxIdle 0x11c
|
||||
#define rPMAC_TxMACHeader0 0x120
|
||||
#define rPMAC_TxMACHeader1 0x124
|
||||
#define rPMAC_TxMACHeader2 0x128
|
||||
#define rPMAC_TxMACHeader3 0x12c
|
||||
#define rPMAC_TxMACHeader4 0x130
|
||||
#define rPMAC_TxMACHeader5 0x134
|
||||
#define rPMAC_TxDataType 0x138
|
||||
#define rPMAC_TxRandomSeed 0x13c
|
||||
#define rPMAC_CCKPLCPPreamble 0x140
|
||||
#define rPMAC_CCKPLCPHeader 0x144
|
||||
#define rPMAC_CCKCRC16 0x148
|
||||
#define rPMAC_OFDMRxCRC32OK 0x170
|
||||
#define rPMAC_OFDMRxCRC32Er 0x174
|
||||
#define rPMAC_OFDMRxParityEr 0x178
|
||||
#define rPMAC_OFDMRxCRC8Er 0x17c
|
||||
#define rPMAC_CCKCRxRC16Er 0x180
|
||||
#define rPMAC_CCKCRxRC32Er 0x184
|
||||
#define rPMAC_CCKCRxRC32OK 0x188
|
||||
#define rPMAC_TxStatus 0x18c
|
||||
|
||||
//
|
||||
// 3. Page8(0x800)
|
||||
//
|
||||
#define rFPGA0_RFMOD 0x800 //RF mode & CCK TxSC // RF BW Setting??
|
||||
|
||||
#define rFPGA0_TxInfo 0x804 // Status report??
|
||||
#define rFPGA0_PSDFunction 0x808
|
||||
#define rFPGA0_TxGainStage 0x80c // Set TX PWR init gain?
|
||||
|
||||
#define rFPGA0_XA_HSSIParameter1 0x820 // RF 3 wire register
|
||||
#define rFPGA0_XA_HSSIParameter2 0x824
|
||||
#define rFPGA0_XB_HSSIParameter1 0x828
|
||||
#define rFPGA0_XB_HSSIParameter2 0x82c
|
||||
|
||||
#define rFPGA0_XAB_SwitchControl 0x858 // RF Channel switch
|
||||
#define rFPGA0_XCD_SwitchControl 0x85c
|
||||
|
||||
#define rFPGA0_XAB_RFParameter 0x878 // RF Parameter
|
||||
#define rFPGA0_XCD_RFParameter 0x87c
|
||||
|
||||
#define rFPGA0_AnalogParameter1 0x880 // Crystal cap setting RF-R/W protection for parameter4??
|
||||
#define rFPGA0_AnalogParameter2 0x884
|
||||
#define rFPGA0_AnalogParameter3 0x888
|
||||
#define rFPGA0_AdDaClockEn 0x888 // enable ad/da clock1 for dual-phy
|
||||
#define rFPGA0_AnalogParameter4 0x88c
|
||||
#define rFPGA0_XB_LSSIReadBack 0x8a4
|
||||
#define rFPGA0_XCD_RFPara 0x8b4
|
||||
|
||||
//
|
||||
// 4. Page9(0x900)
|
||||
//
|
||||
#define rFPGA1_RFMOD 0x900 //RF mode & OFDM TxSC // RF BW Setting??
|
||||
|
||||
#define rFPGA1_TxBlock 0x904 // Useless now
|
||||
#define rFPGA1_DebugSelect 0x908 // Useless now
|
||||
#define rFPGA1_TxInfo 0x90c // Useless now // Status report??
|
||||
|
||||
//
|
||||
// PageA(0xA00)
|
||||
//
|
||||
#define rCCK0_System 0xa00
|
||||
#define rCCK0_AFESetting 0xa04 // Disable init gain now // Select RX path by RSSI
|
||||
#define rCCK0_DSPParameter2 0xa1c //SQ threshold
|
||||
#define rCCK0_TxFilter1 0xa20
|
||||
#define rCCK0_TxFilter2 0xa24
|
||||
#define rCCK0_DebugPort 0xa28 //debug port and Tx filter3
|
||||
#define rCCK0_FalseAlarmReport 0xa2c //0xa2d useless now 0xa30-a4f channel report
|
||||
|
||||
//
|
||||
// PageB(0xB00)
|
||||
//
|
||||
#define rPdp_AntA 0xb00
|
||||
#define rPdp_AntA_4 0xb04
|
||||
#define rConfig_Pmpd_AntA 0xb28
|
||||
#define rConfig_AntA 0xb68
|
||||
#define rConfig_AntB 0xb6c
|
||||
#define rPdp_AntB 0xb70
|
||||
#define rPdp_AntB_4 0xb74
|
||||
#define rConfig_Pmpd_AntB 0xb98
|
||||
#define rAPK 0xbd8
|
||||
|
||||
//
|
||||
// 6. PageC(0xC00)
|
||||
//
|
||||
#define rOFDM0_LSTF 0xc00
|
||||
|
||||
#define rOFDM0_TRxPathEnable 0xc04
|
||||
#define rOFDM0_TRMuxPar 0xc08
|
||||
#define rOFDM0_TRSWIsolation 0xc0c
|
||||
|
||||
#define rOFDM0_XARxAFE 0xc10 //RxIQ DC offset, Rx digital filter, DC notch filter
|
||||
#define rOFDM0_XARxIQImbalance 0xc14 //RxIQ imblance matrix
|
||||
#define rOFDM0_XBRxAFE 0xc18
|
||||
#define rOFDM0_XBRxIQImbalance 0xc1c
|
||||
#define rOFDM0_XCRxAFE 0xc20
|
||||
#define rOFDM0_XCRxIQImbalance 0xc24
|
||||
#define rOFDM0_XDRxAFE 0xc28
|
||||
#define rOFDM0_XDRxIQImbalance 0xc2c
|
||||
|
||||
#define rOFDM0_RxDetector1 0xc30 //PD,BW & SBD // DM tune init gain
|
||||
#define rOFDM0_RxDetector2 0xc34 //SBD & Fame Sync.
|
||||
#define rOFDM0_RxDetector3 0xc38 //Frame Sync.
|
||||
#define rOFDM0_RxDetector4 0xc3c //PD, SBD, Frame Sync & Short-GI
|
||||
|
||||
#define rOFDM0_RxDSP 0xc40 //Rx Sync Path
|
||||
#define rOFDM0_CFOandDAGC 0xc44 //CFO & DAGC
|
||||
#define rOFDM0_CCADropThreshold 0xc48 //CCA Drop threshold
|
||||
#define rOFDM0_ECCAThreshold 0xc4c // energy CCA
|
||||
|
||||
#define rOFDM0_XAAGCCore1 0xc50 // DIG
|
||||
#define rOFDM0_XAAGCCore2 0xc54
|
||||
#define rOFDM0_XBAGCCore1 0xc58
|
||||
#define rOFDM0_XBAGCCore2 0xc5c
|
||||
#define rOFDM0_XCAGCCore1 0xc60
|
||||
#define rOFDM0_XCAGCCore2 0xc64
|
||||
#define rOFDM0_XDAGCCore1 0xc68
|
||||
#define rOFDM0_XDAGCCore2 0xc6c
|
||||
|
||||
#define rOFDM0_AGCParameter1 0xc70
|
||||
#define rOFDM0_AGCParameter2 0xc74
|
||||
#define rOFDM0_AGCRSSITable 0xc78
|
||||
#define rOFDM0_HTSTFAGC 0xc7c
|
||||
|
||||
#define rOFDM0_XATxIQImbalance 0xc80 // TX PWR TRACK and DIG
|
||||
#define rOFDM0_XATxAFE 0xc84
|
||||
#define rOFDM0_XBTxIQImbalance 0xc88
|
||||
#define rOFDM0_XBTxAFE 0xc8c
|
||||
#define rOFDM0_XCTxIQImbalance 0xc90
|
||||
#define rOFDM0_XCTxAFE 0xc94
|
||||
#define rOFDM0_XDTxIQImbalance 0xc98
|
||||
#define rOFDM0_XDTxAFE 0xc9c
|
||||
|
||||
#define rOFDM0_RxIQExtAnta 0xca0
|
||||
#define rOFDM0_TxCoeff1 0xca4
|
||||
#define rOFDM0_TxCoeff2 0xca8
|
||||
#define rOFDM0_TxCoeff3 0xcac
|
||||
#define rOFDM0_TxCoeff4 0xcb0
|
||||
#define rOFDM0_TxCoeff5 0xcb4
|
||||
#define rOFDM0_TxCoeff6 0xcb8
|
||||
#define rOFDM0_RxHPParameter 0xce0
|
||||
#define rOFDM0_TxPseudoNoiseWgt 0xce4
|
||||
#define rOFDM0_FrameSync 0xcf0
|
||||
#define rOFDM0_DFSReport 0xcf4
|
||||
|
||||
//
|
||||
// 7. PageD(0xD00)
|
||||
//
|
||||
#define rOFDM1_LSTF 0xd00
|
||||
#define rOFDM1_TRxPathEnable 0xd04
|
||||
|
||||
//
|
||||
// 8. PageE(0xE00)
|
||||
//
|
||||
#define rTxAGC_A_Rate18_06 0xe00
|
||||
#define rTxAGC_A_Rate54_24 0xe04
|
||||
#define rTxAGC_A_CCK1_Mcs32 0xe08
|
||||
#define rTxAGC_A_Mcs03_Mcs00 0xe10
|
||||
#define rTxAGC_A_Mcs07_Mcs04 0xe14
|
||||
#define rTxAGC_A_Mcs11_Mcs08 0xe18
|
||||
#define rTxAGC_A_Mcs15_Mcs12 0xe1c
|
||||
|
||||
#define rTxAGC_B_Rate18_06 0x830
|
||||
#define rTxAGC_B_Rate54_24 0x834
|
||||
#define rTxAGC_B_CCK1_55_Mcs32 0x838
|
||||
#define rTxAGC_B_Mcs03_Mcs00 0x83c
|
||||
#define rTxAGC_B_Mcs07_Mcs04 0x848
|
||||
#define rTxAGC_B_Mcs11_Mcs08 0x84c
|
||||
#define rTxAGC_B_Mcs15_Mcs12 0x868
|
||||
#define rTxAGC_B_CCK11_A_CCK2_11 0x86c
|
||||
|
||||
#define rFPGA0_IQK 0xe28
|
||||
#define rTx_IQK_Tone_A 0xe30
|
||||
#define rRx_IQK_Tone_A 0xe34
|
||||
#define rTx_IQK_PI_A 0xe38
|
||||
#define rRx_IQK_PI_A 0xe3c
|
||||
|
||||
#define rTx_IQK 0xe40
|
||||
#define rRx_IQK 0xe44
|
||||
#define rIQK_AGC_Pts 0xe48
|
||||
#define rIQK_AGC_Rsp 0xe4c
|
||||
#define rTx_IQK_Tone_B 0xe50
|
||||
#define rRx_IQK_Tone_B 0xe54
|
||||
#define rTx_IQK_PI_B 0xe58
|
||||
#define rRx_IQK_PI_B 0xe5c
|
||||
#define rIQK_AGC_Cont 0xe60
|
||||
|
||||
#define rBlue_Tooth 0xe6c
|
||||
#define rRx_Wait_CCA 0xe70
|
||||
#define rTx_CCK_RFON 0xe74
|
||||
#define rTx_CCK_BBON 0xe78
|
||||
#define rTx_OFDM_RFON 0xe7c
|
||||
#define rTx_OFDM_BBON 0xe80
|
||||
#define rTx_To_Rx 0xe84
|
||||
#define rTx_To_Tx 0xe88
|
||||
#define rRx_CCK 0xe8c
|
||||
|
||||
#define rTx_Power_Before_IQK_A 0xe94
|
||||
#define rTx_Power_After_IQK_A 0xe9c
|
||||
|
||||
#define rRx_Power_Before_IQK_A 0xea0
|
||||
#define rRx_Power_Before_IQK_A_2 0xea4
|
||||
#define rRx_Power_After_IQK_A 0xea8
|
||||
#define rRx_Power_After_IQK_A_2 0xeac
|
||||
|
||||
#define rTx_Power_Before_IQK_B 0xeb4
|
||||
#define rTx_Power_After_IQK_B 0xebc
|
||||
|
||||
#define rRx_Power_Before_IQK_B 0xec0
|
||||
#define rRx_Power_Before_IQK_B_2 0xec4
|
||||
#define rRx_Power_After_IQK_B 0xec8
|
||||
#define rRx_Power_After_IQK_B_2 0xecc
|
||||
|
||||
#define rRx_OFDM 0xed0
|
||||
#define rRx_Wait_RIFS 0xed4
|
||||
#define rRx_TO_Rx 0xed8
|
||||
#define rStandby 0xedc
|
||||
#define rSleep 0xee0
|
||||
#define rPMPD_ANAEN 0xeec
|
||||
|
||||
|
||||
// 2. Page8(0x800)
|
||||
#define bRFMOD 0x1 // Reg 0x800 rFPGA0_RFMOD
|
||||
#define bJapanMode 0x2
|
||||
#define bCCKTxSC 0x30
|
||||
#define bCCKEn 0x1000000
|
||||
#define bOFDMEn 0x2000000
|
||||
#define bXBTxAGC 0xf00 // Reg 80c rFPGA0_TxGainStage
|
||||
#define bXCTxAGC 0xf000
|
||||
#define bXDTxAGC 0xf0000
|
||||
|
||||
// 4. PageA(0xA00)
|
||||
#define bCCKBBMode 0x3 // Useless
|
||||
#define bCCKTxPowerSaving 0x80
|
||||
#define bCCKRxPowerSaving 0x40
|
||||
|
||||
#define bCCKSideBand 0x10 // Reg 0xa00 rCCK0_System 20/40 switch
|
||||
|
||||
#define bCCKScramble 0x8 // Useless
|
||||
#define bCCKAntDiversity 0x8000
|
||||
#define bCCKCarrierRecovery 0x4000
|
||||
#define bCCKTxRate 0x3000
|
||||
#define bCCKDCCancel 0x0800
|
||||
#define bCCKISICancel 0x0400
|
||||
#define bCCKMatchFilter 0x0200
|
||||
#define bCCKEqualizer 0x0100
|
||||
#define bCCKPreambleDetect 0x800000
|
||||
#define bCCKFastFalseCCA 0x400000
|
||||
#define bCCKChEstStart 0x300000
|
||||
#define bCCKCCACount 0x080000
|
||||
#define bCCKcs_lim 0x070000
|
||||
#define bCCKBistMode 0x80000000
|
||||
#define bCCKCCAMask 0x40000000
|
||||
#define bCCKTxDACPhase 0x4
|
||||
#define bCCKRxADCPhase 0x20000000 //r_rx_clk
|
||||
#define bCCKr_cp_mode0 0x0100
|
||||
#define bCCKTxDCOffset 0xf0
|
||||
#define bCCKRxDCOffset 0xf
|
||||
#define bCCKCCAMode 0xc000
|
||||
#define bCCKFalseCS_lim 0x3f00
|
||||
#define bCCKCS_ratio 0xc00000
|
||||
#define bCCKCorgBit_sel 0x300000
|
||||
#define bCCKPD_lim 0x0f0000
|
||||
#define bCCKNewCCA 0x80000000
|
||||
#define bCCKRxHPofIG 0x8000
|
||||
#define bCCKRxIG 0x7f00
|
||||
#define bCCKLNAPolarity 0x800000
|
||||
#define bCCKRx1stGain 0x7f0000
|
||||
#define bCCKRFExtend 0x20000000 //CCK Rx Iinital gain polarity
|
||||
#define bCCKRxAGCSatLevel 0x1f000000
|
||||
#define bCCKRxAGCSatCount 0xe0
|
||||
#define bCCKRxRFSettle 0x1f //AGCsamp_dly
|
||||
#define bCCKFixedRxAGC 0x8000
|
||||
//#define bCCKRxAGCFormat 0x4000 //remove to HSSI register 0x824
|
||||
#define bCCKAntennaPolarity 0x2000
|
||||
#define bCCKTxFilterType 0x0c00
|
||||
#define bCCKRxAGCReportType 0x0300
|
||||
#define bCCKRxDAGCEn 0x80000000
|
||||
#define bCCKRxDAGCPeriod 0x20000000
|
||||
#define bCCKRxDAGCSatLevel 0x1f000000
|
||||
#define bCCKTimingRecovery 0x800000
|
||||
#define bCCKTxC0 0x3f0000
|
||||
#define bCCKTxC1 0x3f000000
|
||||
#define bCCKTxC2 0x3f
|
||||
#define bCCKTxC3 0x3f00
|
||||
#define bCCKTxC4 0x3f0000
|
||||
#define bCCKTxC5 0x3f000000
|
||||
#define bCCKTxC6 0x3f
|
||||
#define bCCKTxC7 0x3f00
|
||||
#define bCCKDebugPort 0xff0000
|
||||
#define bCCKDACDebug 0x0f000000
|
||||
#define bCCKFalseAlarmEnable 0x8000
|
||||
#define bCCKFalseAlarmRead 0x4000
|
||||
#define bCCKTRSSI 0x7f
|
||||
#define bCCKRxAGCReport 0xfe
|
||||
#define bCCKRxReport_AntSel 0x80000000
|
||||
#define bCCKRxReport_MFOff 0x40000000
|
||||
#define bCCKRxRxReport_SQLoss 0x20000000
|
||||
#define bCCKRxReport_Pktloss 0x10000000
|
||||
#define bCCKRxReport_Lockedbit 0x08000000
|
||||
#define bCCKRxReport_RateError 0x04000000
|
||||
#define bCCKRxReport_RxRate 0x03000000
|
||||
#define bCCKRxFACounterLower 0xff
|
||||
#define bCCKRxFACounterUpper 0xff000000
|
||||
#define bCCKRxHPAGCStart 0xe000
|
||||
#define bCCKRxHPAGCFinal 0x1c00
|
||||
#define bCCKRxFalseAlarmEnable 0x8000
|
||||
#define bCCKFACounterFreeze 0x4000
|
||||
#define bCCKTxPathSel 0x10000000
|
||||
#define bCCKDefaultRxPath 0xc000000
|
||||
#define bCCKOptionRxPath 0x3000000
|
||||
|
||||
// 6. PageE(0xE00)
|
||||
#define bSTBCEn 0x4 // Useless
|
||||
#define bAntennaMapping 0x10
|
||||
#define bNss 0x20
|
||||
#define bCFOAntSumD 0x200
|
||||
#define bPHYCounterReset 0x8000000
|
||||
#define bCFOReportGet 0x4000000
|
||||
#define bOFDMContinueTx 0x10000000
|
||||
#define bOFDMSingleCarrier 0x20000000
|
||||
#define bOFDMSingleTone 0x40000000
|
||||
|
||||
|
||||
//
|
||||
// Other Definition
|
||||
//
|
||||
|
||||
#define bEnable 0x1 // Useless
|
||||
#define bDisable 0x0
|
||||
|
||||
//byte endable for srwrite
|
||||
#define bByte0 0x1 // Useless
|
||||
#define bByte1 0x2
|
||||
#define bByte2 0x4
|
||||
#define bByte3 0x8
|
||||
#define bWord0 0x3
|
||||
#define bWord1 0xc
|
||||
#define bDWord 0xf
|
||||
|
||||
//for PutRegsetting & GetRegSetting BitMask
|
||||
#define bMaskByte0 0xff // Reg 0xc50 rOFDM0_XAAGCCore~0xC6f
|
||||
#define bMaskByte1 0xff00
|
||||
#define bMaskByte2 0xff0000
|
||||
#define bMaskByte3 0xff000000
|
||||
#define bMaskHWord 0xffff0000
|
||||
#define bMaskLWord 0x0000ffff
|
||||
#define bMaskDWord 0xffffffff
|
||||
#define bMaskH3Bytes 0xffffff00
|
||||
#define bMask12Bits 0xfff
|
||||
#define bMaskH4Bits 0xf0000000
|
||||
#define bMaskOFDM_D 0xffc00000
|
||||
#define bMaskCCK 0x3f3f3f3f
|
||||
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
210
include/Hal8812PwrSeq.h
Normal file
210
include/Hal8812PwrSeq.h
Normal file
|
|
@ -0,0 +1,210 @@
|
|||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __HAL8812PWRSEQ_H__
|
||||
#define __HAL8812PWRSEQ_H__
|
||||
|
||||
#include "HalPwrSeqCmd.h"
|
||||
|
||||
/*
|
||||
Check document WB-110628-DZ-RTL8195 (Jaguar) Power Architecture-R04.pdf
|
||||
There are 6 HW Power States:
|
||||
0: POFF--Power Off
|
||||
1: PDN--Power Down
|
||||
2: CARDEMU--Card Emulation
|
||||
3: ACT--Active Mode
|
||||
4: LPS--Low Power State
|
||||
5: SUS--Suspend
|
||||
|
||||
The transision from different states are defined below
|
||||
TRANS_CARDEMU_TO_ACT
|
||||
TRANS_ACT_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_SUS
|
||||
TRANS_SUS_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_PDN
|
||||
TRANS_ACT_TO_LPS
|
||||
TRANS_LPS_TO_ACT
|
||||
|
||||
TRANS_END
|
||||
*/
|
||||
#define RTL8812_TRANS_CARDEMU_TO_ACT_STEPS 15
|
||||
#define RTL8812_TRANS_ACT_TO_CARDEMU_STEPS 15
|
||||
#define RTL8812_TRANS_CARDEMU_TO_SUS_STEPS 15
|
||||
#define RTL8812_TRANS_SUS_TO_CARDEMU_STEPS 15
|
||||
#define RTL8812_TRANS_CARDEMU_TO_PDN_STEPS 15
|
||||
#define RTL8812_TRANS_PDN_TO_CARDEMU_STEPS 15
|
||||
#define RTL8812_TRANS_ACT_TO_LPS_STEPS 15
|
||||
#define RTL8812_TRANS_LPS_TO_ACT_STEPS 15
|
||||
#define RTL8812_TRANS_END_STEPS 1
|
||||
|
||||
|
||||
#define RTL8812_TRANS_CARDEMU_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0},/* disable SW LPS 0x04[10]=0*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \
|
||||
/*{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0}, disable HWPDN 0x04[15]=0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, 0},/* disable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* polling until return 0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0},/**/
|
||||
|
||||
#define RTL8812_TRANS_ACT_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xc00[7:0] = 4 turn off 3-wire */ \
|
||||
{0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xe00[7:0] = 4 turn off 3-wire */ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /* 0x2[0] = 0 RESET BB, CLOSE RF */ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \
|
||||
/*{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},//0x1F[7:0] = 0 turn off RF*/ \
|
||||
/*{0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},//0x4C[23] = 0x4E[7] = 0, switch DPDT_SEL_P output from register 0x65[2] */ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x2A}, /* 0x07[7:0] = 0x28 sps pwm mode 0x2a for BT coex*/ \
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x02, 0},/*0x8[1] = 0 ANA clk =500k */ \
|
||||
/*{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0|BIT1, 0}, // 0x02[1:0] = 0 reset BB */ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/
|
||||
|
||||
#define RTL8812_TRANS_CARDEMU_TO_SUS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xF0, 0xcc},\
|
||||
{0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xF0, 0xEC},\
|
||||
{0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x07},/* gpio11 input mode, gpio10~8 output mode */ \
|
||||
{0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio 0~7 output same value as input ?? */ \
|
||||
{0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xff},/* gpio0~7 output mode */ \
|
||||
{0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/* 0x47[7:0] = 00 gpio mode */ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/* suspend option all off */ \
|
||||
{0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x80, BIT7},/*0x14[7] = 1 turn on ZCD */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x01, BIT0},/* 0x15[0] =1 trun on ZCD */ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x10, BIT4},/*0x23[4] = 1 hpon LDO sleep mode */ \
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x02, 0},/*0x8[1] = 0 ANA clk =500k */ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, BIT3}, /*0x04[11] = 2b'11 enable WL suspend for PCIe*/
|
||||
|
||||
#define RTL8812_TRANS_SUS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, 0}, /*0x04[11] = 2b'01enable WL suspend*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x10, 0},/*0x23[4] = 0 hpon LDO sleep mode leave */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x01, 0},/* 0x15[0] =0 trun off ZCD */ \
|
||||
{0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x80, 0},/*0x14[7] = 0 turn off ZCD */ \
|
||||
{0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio0~7 input mode */ \
|
||||
{0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio11 input mode, gpio10~8 input mode */
|
||||
|
||||
#define RTL8812_TRANS_CARDEMU_TO_CARDDIS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
/**{0x0194, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, //0x194[0]=0 , disable 32K clock*/ \
|
||||
/**{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x94}, //0x93=0x94 , 90[30] =0 enable 500k ANA clock .switch clock from 12M to 500K , 90 [26] =0 disable EEprom loader clock*/ \
|
||||
{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0}, /*0x03[2] = 0, reset 8051*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x05}, /*0x80=05h if reload fw, fill the default value of host_CPU handshake field*/ \
|
||||
{0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xF0, 0xcc},\
|
||||
{0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xF0, 0xEC},\
|
||||
{0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x07},/* gpio11 input mode, gpio10~8 output mode */ \
|
||||
{0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio 0~7 output same value as input ?? */ \
|
||||
{0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xff},/* gpio0~7 output mode */ \
|
||||
{0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/* 0x47[7:0] = 00 gpio mode */ \
|
||||
{0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x80, BIT7},/*0x14[7] = 1 turn on ZCD */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x01, BIT0},/* 0x15[0] =1 trun on ZCD */ \
|
||||
{0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x01, 0},/*0x12[0] = 0 force PFM mode */ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x10, BIT4},/*0x23[4] = 1 hpon LDO sleep mode */ \
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x02, 0},/*0x8[1] = 0 ANA clk =500k */ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07=0x20 , SOP option to disable BG/MB*/ \
|
||||
{0x001f, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /*0x01f[1]=0 , disable RFC_0 control REG_RF_CTRL_8812 */ \
|
||||
{0x0076, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /*0x076[1]=0 , disable RFC_1 control REG_OPT_CTRL_8812 +2 */ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, BIT3}, /*0x04[11] = 2b'01 enable WL suspend*/
|
||||
|
||||
#define RTL8812_TRANS_CARDDIS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*0x12[0] = 1 force PWM mode */ \
|
||||
{0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x80, 0},/*0x14[7] = 0 turn off ZCD */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x01, 0},/* 0x15[0] =0 trun off ZCD */ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x10, 0},/*0x23[4] = 0 hpon LDO leave sleep mode */ \
|
||||
{0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio0~7 input mode */ \
|
||||
{0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio11 input mode, gpio10~8 input mode */ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0}, /*0x04[10] = 0, enable SW LPS PCIE only*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, 0}, /*0x04[11] = 2b'01enable WL suspend*/ \
|
||||
{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2}, /*0x03[2] = 1, enable 8051*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*PCIe DMA start*/
|
||||
|
||||
|
||||
#define RTL8812_TRANS_CARDEMU_TO_PDN \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/
|
||||
|
||||
#define RTL8812_TRANS_PDN_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/
|
||||
|
||||
#define RTL8812_TRANS_ACT_TO_LPS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x7F},/*Tx Pause*/ \
|
||||
{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xc00[7:0] = 4 turn off 3-wire */ \
|
||||
{0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xe00[7:0] = 4 turn off 3-wire */ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated,and RF closed*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x03},/*Reset MAC TRX*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \
|
||||
{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*Respond TxOK to scheduler*/
|
||||
|
||||
|
||||
#define RTL8812_TRANS_LPS_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/ \
|
||||
{0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/ \
|
||||
{0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/ \
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*. 0x08[4] = 0 switch TSF to 40M*/ \
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, 0}, /*Polling 0x109[7]=0 TSF in 40M*/ \
|
||||
{0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6|BIT7, 0}, /*. 0x29[7:6] = 2b'00 enable BB clock*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/
|
||||
|
||||
#define RTL8812_TRANS_END \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,0,PWR_CMD_END, 0, 0}, //
|
||||
|
||||
|
||||
extern WLAN_PWR_CFG rtl8812_power_on_flow[RTL8812_TRANS_CARDEMU_TO_ACT_STEPS+RTL8812_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8812_radio_off_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8812_card_disable_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_PDN_STEPS+RTL8812_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8812_card_enable_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_PDN_STEPS+RTL8812_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8812_suspend_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_SUS_STEPS+RTL8812_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8812_resume_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_SUS_STEPS+RTL8812_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8812_hwpdn_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_PDN_STEPS+RTL8812_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8812_enter_lps_flow[RTL8812_TRANS_ACT_TO_LPS_STEPS+RTL8812_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8812_leave_lps_flow[RTL8812_TRANS_LPS_TO_ACT_STEPS+RTL8812_TRANS_END_STEPS];
|
||||
|
||||
#endif //__HAL8812PWRSEQ_H__
|
||||
|
||||
282
include/Hal8814PhyCfg.h
Normal file
282
include/Hal8814PhyCfg.h
Normal file
|
|
@ -0,0 +1,282 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __INC_HAL8814PHYCFG_H__
|
||||
#define __INC_HAL8814PHYCFG_H__
|
||||
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
#define LOOP_LIMIT 5
|
||||
#define MAX_STALL_TIME 50 //us
|
||||
#define AntennaDiversityValue 0x80 //(Adapter->bSoftwareAntennaDiversity ? 0x00:0x80)
|
||||
#define MAX_TXPWR_IDX_NMODE_92S 63
|
||||
#define Reset_Cnt_Limit 3
|
||||
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
#define MAX_AGGR_NUM 0x0B
|
||||
#else
|
||||
#define MAX_AGGR_NUM 0x07
|
||||
#endif // CONFIG_PCI_HCI
|
||||
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
|
||||
|
||||
/* BB/RF related */
|
||||
|
||||
#define SIC_ENABLE 0
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
|
||||
|
||||
/*------------------------Export global variable----------------------------*/
|
||||
/*------------------------Export global variable----------------------------*/
|
||||
|
||||
|
||||
/*------------------------Export Marco Definition---------------------------*/
|
||||
/*------------------------Export Marco Definition---------------------------*/
|
||||
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
//1. BB register R/W API
|
||||
|
||||
extern u32
|
||||
PHY_QueryBBReg8814A( IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask );
|
||||
|
||||
|
||||
VOID
|
||||
PHY_SetBBReg8814A( IN PADAPTER Adapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data );
|
||||
|
||||
|
||||
extern u32
|
||||
PHY_QueryRFReg8814A( IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask );
|
||||
|
||||
|
||||
void
|
||||
PHY_SetRFReg8814A( IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data );
|
||||
|
||||
//1 3. Initial BB/RF config by reading MAC/BB/RF txt.
|
||||
s32
|
||||
phy_BB8814A_Config_ParaFile(
|
||||
IN PADAPTER Adapter
|
||||
);
|
||||
|
||||
|
||||
RT_STATUS
|
||||
PHY_BBConfigMP_8814A(
|
||||
IN PADAPTER Adapter
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_ConfigBB_8814A(
|
||||
IN PADAPTER Adapter
|
||||
);
|
||||
|
||||
|
||||
VOID
|
||||
phy_ADC_CLK_8814A(
|
||||
IN PADAPTER Adapter
|
||||
);
|
||||
|
||||
s32
|
||||
PHY_RFConfig8814A(
|
||||
IN PADAPTER Adapter
|
||||
);
|
||||
|
||||
//
|
||||
// RF Power setting
|
||||
//
|
||||
//BOOLEAN PHY_SetRFPowerState8814A(PADAPTER Adapter, rt_rf_power_state eRFPowerState);
|
||||
|
||||
//1 5. Tx Power setting API
|
||||
|
||||
VOID
|
||||
PHY_GetTxPowerLevel8814(
|
||||
IN PADAPTER Adapter,
|
||||
OUT ps4Byte powerlevel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerLevel8814(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 Channel
|
||||
);
|
||||
|
||||
u8
|
||||
PHY_GetTxPowerIndex_8814A(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate,
|
||||
IN CHANNEL_WIDTH BandWidth,
|
||||
IN u8 Channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerIndex_8814A(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 PowerIndex,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate
|
||||
);
|
||||
|
||||
|
||||
BOOLEAN
|
||||
PHY_UpdateTxPowerDbm8814A(
|
||||
IN PADAPTER Adapter,
|
||||
IN s4Byte powerInDbm
|
||||
);
|
||||
|
||||
|
||||
u32
|
||||
PHY_GetTxBBSwing_8814A(
|
||||
IN PADAPTER Adapter,
|
||||
IN BAND_TYPE Band,
|
||||
IN u8 RFPath
|
||||
);
|
||||
|
||||
|
||||
|
||||
//1 6. Channel setting API
|
||||
|
||||
VOID
|
||||
PHY_SwChnlTimerCallback8814A(
|
||||
IN PRT_TIMER pTimer
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SwChnlWorkItemCallback8814A(
|
||||
IN PVOID pContext
|
||||
);
|
||||
|
||||
|
||||
VOID
|
||||
HAL_HandleSwChnl8814A(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SwChnlSynchronously8814A( IN PADAPTER pAdapter,
|
||||
IN u8 channel );
|
||||
|
||||
VOID
|
||||
PHY_SwChnlAndSetBWModeCallback8814A(IN PVOID pContext);
|
||||
|
||||
|
||||
VOID
|
||||
PHY_HandleSwChnlAndSetBW8814A(
|
||||
IN PADAPTER Adapter,
|
||||
IN BOOLEAN bSwitchChannel,
|
||||
IN BOOLEAN bSetBandWidth,
|
||||
IN u8 ChannelNum,
|
||||
IN CHANNEL_WIDTH ChnlWidth,
|
||||
IN u8 ChnlOffsetOf40MHz,
|
||||
IN u8 ChnlOffsetOf80MHz,
|
||||
IN u8 CenterFrequencyIndex1
|
||||
);
|
||||
|
||||
|
||||
BOOLEAN
|
||||
PHY_QueryRFPathSwitch_8814A( IN PADAPTER pAdapter);
|
||||
|
||||
|
||||
|
||||
//VOID PHY_SetMonitorMode8814A(PADAPTER pAdapter, BOOLEAN bEnableMonitorMode);
|
||||
|
||||
|
||||
#if (USE_WORKITEM)
|
||||
VOID
|
||||
RtCheckForHangWorkItemCallback8814A(
|
||||
IN PVOID pContext
|
||||
);
|
||||
#endif
|
||||
|
||||
BOOLEAN
|
||||
SetAntennaConfig8814A(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 DefaultAnt
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetRFEReg8814A(
|
||||
IN PADAPTER Adapter,
|
||||
IN BOOLEAN bInit,
|
||||
IN u8 Band
|
||||
);
|
||||
|
||||
|
||||
s32
|
||||
PHY_SwitchWirelessBand8814A(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 Band
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetIO_8814A(
|
||||
PADAPTER pAdapter
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetBWMode8814(
|
||||
IN PADAPTER Adapter,
|
||||
IN CHANNEL_WIDTH Bandwidth, // 20M or 40M
|
||||
IN u8 Offset // Upper, Lower, or Don't care
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SwChnl8814(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetSwChnlBWMode8814(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel,
|
||||
IN CHANNEL_WIDTH Bandwidth,
|
||||
IN u8 Offset40,
|
||||
IN u8 Offset80
|
||||
);
|
||||
|
||||
s32 PHY_MACConfig8814(PADAPTER Adapter);
|
||||
int PHY_BBConfig8814(PADAPTER Adapter);
|
||||
VOID PHY_Set_SecCCATH_by_RXANT_8814A(PADAPTER pAdapter, u4Byte ulAntennaRx);
|
||||
|
||||
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
#endif // __INC_HAL8192CPHYCFG_H
|
||||
|
||||
866
include/Hal8814PhyReg.h
Normal file
866
include/Hal8814PhyReg.h
Normal file
|
|
@ -0,0 +1,866 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __INC_HAL8814PHYREG_H__
|
||||
#define __INC_HAL8814PHYREG_H__
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
//
|
||||
// BB-PHY register PMAC 0x100 PHY 0x800 - 0xEFF
|
||||
// 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF
|
||||
// 2. 0x800/0x900/0xA00/0xC00/0xD00/0xE00
|
||||
// 3. RF register 0x00-2E
|
||||
// 4. Bit Mask for BB/RF register
|
||||
// 5. Other defintion for BB/RF R/W
|
||||
//
|
||||
|
||||
|
||||
/* BB Register Definition */
|
||||
|
||||
#define rCCAonSec_Jaguar 0x838
|
||||
#define rPwed_TH_Jaguar 0x830
|
||||
#define rL1_Weight_Jaguar 0x840
|
||||
|
||||
// BW and sideband setting
|
||||
#define rBWIndication_Jaguar 0x834
|
||||
#define rL1PeakTH_Jaguar 0x848
|
||||
#define rRFMOD_Jaguar 0x8ac //RF mode
|
||||
#define rADC_Buf_Clk_Jaguar 0x8c4
|
||||
#define rADC_Buf_40_Clk_Jaguar2 0x8c8
|
||||
#define rRFECTRL_Jaguar 0x900
|
||||
#define bRFMOD_Jaguar 0xc3
|
||||
#define rCCK_System_Jaguar 0xa00 // for cck sideband
|
||||
#define bCCK_System_Jaguar 0x10
|
||||
|
||||
// Block & Path enable
|
||||
#define rOFDMCCKEN_Jaguar 0x808 // OFDM/CCK block enable
|
||||
#define bOFDMEN_Jaguar 0x20000000
|
||||
#define bCCKEN_Jaguar 0x10000000
|
||||
#define rRxPath_Jaguar 0x808 // Rx antenna
|
||||
#define bRxPath_Jaguar 0xff
|
||||
#define rTxPath_Jaguar 0x80c // Tx antenna
|
||||
#define bTxPath_Jaguar 0x0fffffff
|
||||
#define rCCK_RX_Jaguar 0xa04 // for cck rx path selection
|
||||
#define bCCK_RX_Jaguar 0x0c000000
|
||||
#define rVhtlen_Use_Lsig_Jaguar 0x8c3 // Use LSIG for VHT length
|
||||
|
||||
#define rRxPath_Jaguar2 0xa04 // Rx antenna
|
||||
#define rTxAnt_1Nsts_Jaguar2 0x93c // Tx antenna for 1Nsts
|
||||
#define rTxAnt_23Nsts_Jaguar2 0x940 // Tx antenna for 2Nsts and 3Nsts
|
||||
|
||||
|
||||
// RF read/write-related
|
||||
#define rHSSIRead_Jaguar 0x8b0 // RF read addr
|
||||
#define bHSSIRead_addr_Jaguar 0xff
|
||||
#define bHSSIRead_trigger_Jaguar 0x100
|
||||
#define rA_PIRead_Jaguar 0xd04 // RF readback with PI
|
||||
#define rB_PIRead_Jaguar 0xd44 // RF readback with PI
|
||||
#define rA_SIRead_Jaguar 0xd08 // RF readback with SI
|
||||
#define rB_SIRead_Jaguar 0xd48 // RF readback with SI
|
||||
#define rRead_data_Jaguar 0xfffff
|
||||
#define rA_LSSIWrite_Jaguar 0xc90 // RF write addr
|
||||
#define rB_LSSIWrite_Jaguar 0xe90 // RF write addr
|
||||
#define bLSSIWrite_data_Jaguar 0x000fffff
|
||||
#define bLSSIWrite_addr_Jaguar 0x0ff00000
|
||||
|
||||
#define rC_PIRead_Jaguar2 0xd84 // RF readback with PI
|
||||
#define rD_PIRead_Jaguar2 0xdC4 // RF readback with PI
|
||||
#define rC_SIRead_Jaguar2 0xd88 // RF readback with SI
|
||||
#define rD_SIRead_Jaguar2 0xdC8 // RF readback with SI
|
||||
#define rC_LSSIWrite_Jaguar2 0x1890 // RF write addr
|
||||
#define rD_LSSIWrite_Jaguar2 0x1A90 // RF write addr
|
||||
|
||||
|
||||
// YN: mask the following register definition temporarily
|
||||
#define rFPGA0_XA_RFInterfaceOE 0x860 // RF Channel switch
|
||||
#define rFPGA0_XB_RFInterfaceOE 0x864
|
||||
|
||||
#define rFPGA0_XAB_RFInterfaceSW 0x870 // RF Interface Software Control
|
||||
#define rFPGA0_XCD_RFInterfaceSW 0x874
|
||||
|
||||
//#define rFPGA0_XAB_RFParameter 0x878 // RF Parameter
|
||||
//#define rFPGA0_XCD_RFParameter 0x87c
|
||||
|
||||
//#define rFPGA0_AnalogParameter1 0x880 // Crystal cap setting RF-R/W protection for parameter4??
|
||||
//#define rFPGA0_AnalogParameter2 0x884
|
||||
//#define rFPGA0_AnalogParameter3 0x888
|
||||
//#define rFPGA0_AdDaClockEn 0x888 // enable ad/da clock1 for dual-phy
|
||||
//#define rFPGA0_AnalogParameter4 0x88c
|
||||
|
||||
|
||||
// CCK TX scaling
|
||||
#define rCCK_TxFilter1_Jaguar 0xa20
|
||||
#define bCCK_TxFilter1_C0_Jaguar 0x00ff0000
|
||||
#define bCCK_TxFilter1_C1_Jaguar 0xff000000
|
||||
#define rCCK_TxFilter2_Jaguar 0xa24
|
||||
#define bCCK_TxFilter2_C2_Jaguar 0x000000ff
|
||||
#define bCCK_TxFilter2_C3_Jaguar 0x0000ff00
|
||||
#define bCCK_TxFilter2_C4_Jaguar 0x00ff0000
|
||||
#define bCCK_TxFilter2_C5_Jaguar 0xff000000
|
||||
#define rCCK_TxFilter3_Jaguar 0xa28
|
||||
#define bCCK_TxFilter3_C6_Jaguar 0x000000ff
|
||||
#define bCCK_TxFilter3_C7_Jaguar 0x0000ff00
|
||||
/* NBI & CSI Mask setting */
|
||||
#define rCSI_Mask_Setting1_Jaguar 0x874
|
||||
#define rCSI_Fix_Mask0_Jaguar 0x880
|
||||
#define rCSI_Fix_Mask1_Jaguar 0x884
|
||||
#define rCSI_Fix_Mask2_Jaguar 0x888
|
||||
#define rCSI_Fix_Mask3_Jaguar 0x88c
|
||||
#define rCSI_Fix_Mask4_Jaguar 0x890
|
||||
#define rCSI_Fix_Mask5_Jaguar 0x894
|
||||
#define rCSI_Fix_Mask6_Jaguar 0x898
|
||||
#define rCSI_Fix_Mask7_Jaguar 0x89c
|
||||
#define rNBI_Setting_Jaguar 0x87c
|
||||
|
||||
|
||||
// YN: mask the following register definition temporarily
|
||||
//#define rPdp_AntA 0xb00
|
||||
//#define rPdp_AntA_4 0xb04
|
||||
//#define rConfig_Pmpd_AntA 0xb28
|
||||
//#define rConfig_AntA 0xb68
|
||||
//#define rConfig_AntB 0xb6c
|
||||
//#define rPdp_AntB 0xb70
|
||||
//#define rPdp_AntB_4 0xb74
|
||||
//#define rConfig_Pmpd_AntB 0xb98
|
||||
//#define rAPK 0xbd8
|
||||
|
||||
// RXIQC
|
||||
#define rA_RxIQC_AB_Jaguar 0xc10 //RxIQ imblance matrix coeff. A & B
|
||||
#define rA_RxIQC_CD_Jaguar 0xc14 //RxIQ imblance matrix coeff. C & D
|
||||
#define rA_TxScale_Jaguar 0xc1c // Pah_A TX scaling factor
|
||||
#define rB_TxScale_Jaguar 0xe1c // Path_B TX scaling factor
|
||||
#define rB_RxIQC_AB_Jaguar 0xe10 //RxIQ imblance matrix coeff. A & B
|
||||
#define rB_RxIQC_CD_Jaguar 0xe14 //RxIQ imblance matrix coeff. C & D
|
||||
#define b_RxIQC_AC_Jaguar 0x02ff // bit mask for IQC matrix element A & C
|
||||
#define b_RxIQC_BD_Jaguar 0x02ff0000 // bit mask for IQC matrix element A & C
|
||||
|
||||
#define rC_TxScale_Jaguar2 0x181c // Pah_C TX scaling factor
|
||||
#define rD_TxScale_Jaguar2 0x1A1c // Path_D TX scaling factor
|
||||
#define rRF_TxGainOffset 0x55
|
||||
|
||||
// DIG-related
|
||||
#define rA_IGI_Jaguar 0xc50 // Initial Gain for path-A
|
||||
#define rB_IGI_Jaguar 0xe50 // Initial Gain for path-B
|
||||
#define rC_IGI_Jaguar2 0x1850 // Initial Gain for path-C
|
||||
#define rD_IGI_Jaguar2 0x1A50 // Initial Gain for path-D
|
||||
|
||||
#define rOFDM_FalseAlarm1_Jaguar 0xf48 // counter for break
|
||||
#define rOFDM_FalseAlarm2_Jaguar 0xf4c // counter for spoofing
|
||||
#define rCCK_FalseAlarm_Jaguar 0xa5c // counter for cck false alarm
|
||||
#define b_FalseAlarm_Jaguar 0xffff
|
||||
#define rCCK_CCA_Jaguar 0xa08 // cca threshold
|
||||
#define bCCK_CCA_Jaguar 0x00ff0000
|
||||
|
||||
// Tx Power Ttraining-related
|
||||
#define rA_TxPwrTraing_Jaguar 0xc54
|
||||
#define rB_TxPwrTraing_Jaguar 0xe54
|
||||
|
||||
// Report-related
|
||||
#define rOFDM_ShortCFOAB_Jaguar 0xf60
|
||||
#define rOFDM_LongCFOAB_Jaguar 0xf64
|
||||
#define rOFDM_EndCFOAB_Jaguar 0xf70
|
||||
#define rOFDM_AGCReport_Jaguar 0xf84
|
||||
#define rOFDM_RxSNR_Jaguar 0xf88
|
||||
#define rOFDM_RxEVMCSI_Jaguar 0xf8c
|
||||
#define rOFDM_SIGReport_Jaguar 0xf90
|
||||
|
||||
// Misc functions
|
||||
#define rEDCCA_Jaguar 0x8a4 // EDCCA
|
||||
#define bEDCCA_Jaguar 0xffff
|
||||
#define rAGC_table_Jaguar 0x82c // AGC tabel select
|
||||
#define bAGC_table_Jaguar 0x3
|
||||
#define b_sel5g_Jaguar 0x1000 // sel5g
|
||||
#define b_LNA_sw_Jaguar 0x8000 // HW/WS control for LNA
|
||||
#define rFc_area_Jaguar 0x860 // fc_area
|
||||
#define bFc_area_Jaguar 0x1ffe000
|
||||
#define rSingleTone_ContTx_Jaguar 0x914
|
||||
|
||||
#define rAGC_table_Jaguar2 0x958 // AGC tabel select
|
||||
#define rDMA_trigger_Jaguar2 0x95C // ADC sample mode
|
||||
|
||||
|
||||
// RFE
|
||||
#define rA_RFE_Pinmux_Jaguar 0xcb0 // Path_A RFE cotrol pinmux
|
||||
#define rB_RFE_Pinmux_Jaguar 0xeb0 // Path_B RFE control pinmux
|
||||
#define rA_RFE_Inv_Jaguar 0xcb4 // Path_A RFE cotrol
|
||||
#define rB_RFE_Inv_Jaguar 0xeb4 // Path_B RFE control
|
||||
#define rA_RFE_Jaguar 0xcb8 // Path_A RFE cotrol
|
||||
#define rB_RFE_Jaguar 0xeb8 // Path_B RFE control
|
||||
#define r_ANTSEL_SW_Jaguar 0x900 // ANTSEL SW Control
|
||||
#define bMask_RFEInv_Jaguar 0x3ff00000
|
||||
#define bMask_AntselPathFollow_Jaguar 0x00030000
|
||||
|
||||
#define rC_RFE_Pinmux_Jaguar 0x18B4 // Path_C RFE cotrol pinmux
|
||||
#define rD_RFE_Pinmux_Jaguar 0x1AB4 // Path_D RFE cotrol pinmux
|
||||
#define rA_RFE_Sel_Jaguar2 0x1990
|
||||
|
||||
|
||||
|
||||
// TX AGC
|
||||
#define rTxAGC_A_CCK11_CCK1_JAguar 0xc20
|
||||
#define rTxAGC_A_Ofdm18_Ofdm6_JAguar 0xc24
|
||||
#define rTxAGC_A_Ofdm54_Ofdm24_JAguar 0xc28
|
||||
#define rTxAGC_A_MCS3_MCS0_JAguar 0xc2c
|
||||
#define rTxAGC_A_MCS7_MCS4_JAguar 0xc30
|
||||
#define rTxAGC_A_MCS11_MCS8_JAguar 0xc34
|
||||
#define rTxAGC_A_MCS15_MCS12_JAguar 0xc38
|
||||
#define rTxAGC_A_Nss1Index3_Nss1Index0_JAguar 0xc3c
|
||||
#define rTxAGC_A_Nss1Index7_Nss1Index4_JAguar 0xc40
|
||||
#define rTxAGC_A_Nss2Index1_Nss1Index8_JAguar 0xc44
|
||||
#define rTxAGC_A_Nss2Index5_Nss2Index2_JAguar 0xc48
|
||||
#define rTxAGC_A_Nss2Index9_Nss2Index6_JAguar 0xc4c
|
||||
#define rTxAGC_B_CCK11_CCK1_JAguar 0xe20
|
||||
#define rTxAGC_B_Ofdm18_Ofdm6_JAguar 0xe24
|
||||
#define rTxAGC_B_Ofdm54_Ofdm24_JAguar 0xe28
|
||||
#define rTxAGC_B_MCS3_MCS0_JAguar 0xe2c
|
||||
#define rTxAGC_B_MCS7_MCS4_JAguar 0xe30
|
||||
#define rTxAGC_B_MCS11_MCS8_JAguar 0xe34
|
||||
#define rTxAGC_B_MCS15_MCS12_JAguar 0xe38
|
||||
#define rTxAGC_B_Nss1Index3_Nss1Index0_JAguar 0xe3c
|
||||
#define rTxAGC_B_Nss1Index7_Nss1Index4_JAguar 0xe40
|
||||
#define rTxAGC_B_Nss2Index1_Nss1Index8_JAguar 0xe44
|
||||
#define rTxAGC_B_Nss2Index5_Nss2Index2_JAguar 0xe48
|
||||
#define rTxAGC_B_Nss2Index9_Nss2Index6_JAguar 0xe4c
|
||||
#define bTxAGC_byte0_Jaguar 0xff
|
||||
#define bTxAGC_byte1_Jaguar 0xff00
|
||||
#define bTxAGC_byte2_Jaguar 0xff0000
|
||||
#define bTxAGC_byte3_Jaguar 0xff000000
|
||||
|
||||
|
||||
// TX AGC
|
||||
#define rTxAGC_A_CCK11_CCK1_Jaguar2 0xc20
|
||||
#define rTxAGC_A_Ofdm18_Ofdm6_Jaguar2 0xc24
|
||||
#define rTxAGC_A_Ofdm54_Ofdm24_Jaguar2 0xc28
|
||||
#define rTxAGC_A_MCS3_MCS0_Jaguar2 0xc2c
|
||||
#define rTxAGC_A_MCS7_MCS4_Jaguar2 0xc30
|
||||
#define rTxAGC_A_MCS11_MCS8_Jaguar2 0xc34
|
||||
#define rTxAGC_A_MCS15_MCS12_Jaguar2 0xc38
|
||||
#define rTxAGC_A_MCS19_MCS16_Jaguar2 0xcd8
|
||||
#define rTxAGC_A_MCS23_MCS20_Jaguar2 0xcdc
|
||||
#define rTxAGC_A_Nss1Index3_Nss1Index0_Jaguar2 0xc3c
|
||||
#define rTxAGC_A_Nss1Index7_Nss1Index4_Jaguar2 0xc40
|
||||
#define rTxAGC_A_Nss2Index1_Nss1Index8_Jaguar2 0xc44
|
||||
#define rTxAGC_A_Nss2Index5_Nss2Index2_Jaguar2 0xc48
|
||||
#define rTxAGC_A_Nss2Index9_Nss2Index6_Jaguar2 0xc4c
|
||||
#define rTxAGC_A_Nss3Index3_Nss3Index0_Jaguar2 0xce0
|
||||
#define rTxAGC_A_Nss3Index7_Nss3Index4_Jaguar2 0xce4
|
||||
#define rTxAGC_A_Nss3Index9_Nss3Index8_Jaguar2 0xce8
|
||||
#define rTxAGC_B_CCK11_CCK1_Jaguar2 0xe20
|
||||
#define rTxAGC_B_Ofdm18_Ofdm6_Jaguar2 0xe24
|
||||
#define rTxAGC_B_Ofdm54_Ofdm24_Jaguar2 0xe28
|
||||
#define rTxAGC_B_MCS3_MCS0_Jaguar2 0xe2c
|
||||
#define rTxAGC_B_MCS7_MCS4_Jaguar2 0xe30
|
||||
#define rTxAGC_B_MCS11_MCS8_Jaguar2 0xe34
|
||||
#define rTxAGC_B_MCS15_MCS12_Jaguar2 0xe38
|
||||
#define rTxAGC_B_MCS19_MCS16_Jaguar2 0xed8
|
||||
#define rTxAGC_B_MCS23_MCS20_Jaguar2 0xedc
|
||||
#define rTxAGC_B_Nss1Index3_Nss1Index0_Jaguar2 0xe3c
|
||||
#define rTxAGC_B_Nss1Index7_Nss1Index4_Jaguar2 0xe40
|
||||
#define rTxAGC_B_Nss2Index1_Nss1Index8_Jaguar2 0xe44
|
||||
#define rTxAGC_B_Nss2Index5_Nss2Index2_Jaguar2 0xe48
|
||||
#define rTxAGC_B_Nss2Index9_Nss2Index6_Jaguar2 0xe4c
|
||||
#define rTxAGC_B_Nss3Index3_Nss3Index0_Jaguar2 0xee0
|
||||
#define rTxAGC_B_Nss3Index7_Nss3Index4_Jaguar2 0xee4
|
||||
#define rTxAGC_B_Nss3Index9_Nss3Index8_Jaguar2 0xee8
|
||||
#define rTxAGC_C_CCK11_CCK1_Jaguar2 0x1820
|
||||
#define rTxAGC_C_Ofdm18_Ofdm6_Jaguar2 0x1824
|
||||
#define rTxAGC_C_Ofdm54_Ofdm24_Jaguar2 0x1828
|
||||
#define rTxAGC_C_MCS3_MCS0_Jaguar2 0x182c
|
||||
#define rTxAGC_C_MCS7_MCS4_Jaguar2 0x1830
|
||||
#define rTxAGC_C_MCS11_MCS8_Jaguar2 0x1834
|
||||
#define rTxAGC_C_MCS15_MCS12_Jaguar2 0x1838
|
||||
#define rTxAGC_C_MCS19_MCS16_Jaguar2 0x18d8
|
||||
#define rTxAGC_C_MCS23_MCS20_Jaguar2 0x18dc
|
||||
#define rTxAGC_C_Nss1Index3_Nss1Index0_Jaguar2 0x183c
|
||||
#define rTxAGC_C_Nss1Index7_Nss1Index4_Jaguar2 0x1840
|
||||
#define rTxAGC_C_Nss2Index1_Nss1Index8_Jaguar2 0x1844
|
||||
#define rTxAGC_C_Nss2Index5_Nss2Index2_Jaguar2 0x1848
|
||||
#define rTxAGC_C_Nss2Index9_Nss2Index6_Jaguar2 0x184c
|
||||
#define rTxAGC_C_Nss3Index3_Nss3Index0_Jaguar2 0x18e0
|
||||
#define rTxAGC_C_Nss3Index7_Nss3Index4_Jaguar2 0x18e4
|
||||
#define rTxAGC_C_Nss3Index9_Nss3Index8_Jaguar2 0x18e8
|
||||
#define rTxAGC_D_CCK11_CCK1_Jaguar2 0x1a20
|
||||
#define rTxAGC_D_Ofdm18_Ofdm6_Jaguar2 0x1a24
|
||||
#define rTxAGC_D_Ofdm54_Ofdm24_Jaguar2 0x1a28
|
||||
#define rTxAGC_D_MCS3_MCS0_Jaguar2 0x1a2c
|
||||
#define rTxAGC_D_MCS7_MCS4_Jaguar2 0x1a30
|
||||
#define rTxAGC_D_MCS11_MCS8_Jaguar2 0x1a34
|
||||
#define rTxAGC_D_MCS15_MCS12_Jaguar2 0x1a38
|
||||
#define rTxAGC_D_MCS19_MCS16_Jaguar2 0x1ad8
|
||||
#define rTxAGC_D_MCS23_MCS20_Jaguar2 0x1adc
|
||||
#define rTxAGC_D_Nss1Index3_Nss1Index0_Jaguar2 0x1a3c
|
||||
#define rTxAGC_D_Nss1Index7_Nss1Index4_Jaguar2 0x1a40
|
||||
#define rTxAGC_D_Nss2Index1_Nss1Index8_Jaguar2 0x1a44
|
||||
#define rTxAGC_D_Nss2Index5_Nss2Index2_Jaguar2 0x1a48
|
||||
#define rTxAGC_D_Nss2Index9_Nss2Index6_Jaguar2 0x1a4c
|
||||
#define rTxAGC_D_Nss3Index3_Nss3Index0_Jaguar2 0x1ae0
|
||||
#define rTxAGC_D_Nss3Index7_Nss3Index4_Jaguar2 0x1ae4
|
||||
#define rTxAGC_D_Nss3Index9_Nss3Index8_Jaguar2 0x1ae8
|
||||
// IQK YN: temporaily mask this part
|
||||
//#define rFPGA0_IQK 0xe28
|
||||
//#define rTx_IQK_Tone_A 0xe30
|
||||
//#define rRx_IQK_Tone_A 0xe34
|
||||
//#define rTx_IQK_PI_A 0xe38
|
||||
//#define rRx_IQK_PI_A 0xe3c
|
||||
|
||||
//#define rTx_IQK 0xe40
|
||||
//#define rRx_IQK 0xe44
|
||||
//#define rIQK_AGC_Pts 0xe48
|
||||
//#define rIQK_AGC_Rsp 0xe4c
|
||||
//#define rTx_IQK_Tone_B 0xe50
|
||||
//#define rRx_IQK_Tone_B 0xe54
|
||||
//#define rTx_IQK_PI_B 0xe58
|
||||
//#define rRx_IQK_PI_B 0xe5c
|
||||
//#define rIQK_AGC_Cont 0xe60
|
||||
|
||||
|
||||
// AFE-related
|
||||
#define rA_AFEPwr1_Jaguar 0xc60 // dynamic AFE power control
|
||||
#define rA_AFEPwr2_Jaguar 0xc64 // dynamic AFE power control
|
||||
#define rA_Rx_WaitCCA_Tx_CCKRFON_Jaguar 0xc68
|
||||
#define rA_Tx_CCKBBON_OFDMRFON_Jaguar 0xc6c
|
||||
#define rA_Tx_OFDMBBON_Tx2Rx_Jaguar 0xc70
|
||||
#define rA_Tx2Tx_RXCCK_Jaguar 0xc74
|
||||
#define rA_Rx_OFDM_WaitRIFS_Jaguar 0xc78
|
||||
#define rA_Rx2Rx_BT_Jaguar 0xc7c
|
||||
#define rA_sleep_nav_Jaguar 0xc80
|
||||
#define rA_pmpd_Jaguar 0xc84
|
||||
#define rB_AFEPwr1_Jaguar 0xe60 // dynamic AFE power control
|
||||
#define rB_AFEPwr2_Jaguar 0xe64 // dynamic AFE power control
|
||||
#define rB_Rx_WaitCCA_Tx_CCKRFON_Jaguar 0xe68
|
||||
#define rB_Tx_CCKBBON_OFDMRFON_Jaguar 0xe6c
|
||||
#define rB_Tx_OFDMBBON_Tx2Rx_Jaguar 0xe70
|
||||
#define rB_Tx2Tx_RXCCK_Jaguar 0xe74
|
||||
#define rB_Rx_OFDM_WaitRIFS_Jaguar 0xe78
|
||||
#define rB_Rx2Rx_BT_Jaguar 0xe7c
|
||||
#define rB_sleep_nav_Jaguar 0xe80
|
||||
#define rB_pmpd_Jaguar 0xe84
|
||||
|
||||
|
||||
// YN: mask these registers temporaily
|
||||
//#define rTx_Power_Before_IQK_A 0xe94
|
||||
//#define rTx_Power_After_IQK_A 0xe9c
|
||||
|
||||
//#define rRx_Power_Before_IQK_A 0xea0
|
||||
//#define rRx_Power_Before_IQK_A_2 0xea4
|
||||
//#define rRx_Power_After_IQK_A 0xea8
|
||||
//#define rRx_Power_After_IQK_A_2 0xeac
|
||||
|
||||
//#define rTx_Power_Before_IQK_B 0xeb4
|
||||
//#define rTx_Power_After_IQK_B 0xebc
|
||||
|
||||
//#define rRx_Power_Before_IQK_B 0xec0
|
||||
//#define rRx_Power_Before_IQK_B_2 0xec4
|
||||
//#define rRx_Power_After_IQK_B 0xec8
|
||||
//#define rRx_Power_After_IQK_B_2 0xecc
|
||||
|
||||
|
||||
// RSSI Dump
|
||||
#define rA_RSSIDump_Jaguar 0xBF0
|
||||
#define rB_RSSIDump_Jaguar 0xBF1
|
||||
#define rS1_RXevmDump_Jaguar 0xBF4
|
||||
#define rS2_RXevmDump_Jaguar 0xBF5
|
||||
#define rA_RXsnrDump_Jaguar 0xBF6
|
||||
#define rB_RXsnrDump_Jaguar 0xBF7
|
||||
#define rA_CfoShortDump_Jaguar 0xBF8
|
||||
#define rB_CfoShortDump_Jaguar 0xBFA
|
||||
#define rA_CfoLongDump_Jaguar 0xBEC
|
||||
#define rB_CfoLongDump_Jaguar 0xBEE
|
||||
|
||||
|
||||
// RF Register
|
||||
//
|
||||
#define RF_AC_Jaguar 0x00 //
|
||||
#define RF_RF_Top_Jaguar 0x07 //
|
||||
#define RF_TXLOK_Jaguar 0x08 //
|
||||
#define RF_TXAPK_Jaguar 0x0B
|
||||
#define RF_CHNLBW_Jaguar 0x18 // RF channel and BW switch
|
||||
#define RF_RCK1_Jaguar 0x1c //
|
||||
#define RF_RCK2_Jaguar 0x1d
|
||||
#define RF_RCK3_Jaguar 0x1e
|
||||
#define RF_ModeTableAddr 0x30
|
||||
#define RF_ModeTableData0 0x31
|
||||
#define RF_ModeTableData1 0x32
|
||||
#define RF_TxLCTank_Jaguar 0x54
|
||||
#define RF_APK_Jaguar 0x63
|
||||
#define RF_LCK 0xB4
|
||||
#define RF_WeLut_Jaguar 0xEF
|
||||
|
||||
#define bRF_CHNLBW_MOD_AG_Jaguar 0x70300
|
||||
#define bRF_CHNLBW_BW 0xc00
|
||||
|
||||
|
||||
//
|
||||
// RL6052 Register definition
|
||||
//
|
||||
#define RF_AC 0x00 //
|
||||
#define RF_IPA_A 0x0C //
|
||||
#define RF_TXBIAS_A 0x0D
|
||||
#define RF_BS_PA_APSET_G9_G11 0x0E
|
||||
#define RF_MODE1 0x10 //
|
||||
#define RF_MODE2 0x11 //
|
||||
#define RF_CHNLBW 0x18 // RF channel and BW switch
|
||||
#define RF_RCK_OS 0x30 // RF TX PA control
|
||||
#define RF_TXPA_G1 0x31 // RF TX PA control
|
||||
#define RF_TXPA_G2 0x32 // RF TX PA control
|
||||
#define RF_TXPA_G3 0x33 // RF TX PA control
|
||||
#define RF_0x52 0x52
|
||||
#define RF_WE_LUT 0xEF
|
||||
|
||||
//
|
||||
//Bit Mask
|
||||
//
|
||||
// 1. Page1(0x100)
|
||||
#define bBBResetB 0x100 // Useless now?
|
||||
#define bGlobalResetB 0x200
|
||||
#define bOFDMTxStart 0x4
|
||||
#define bCCKTxStart 0x8
|
||||
#define bCRC32Debug 0x100
|
||||
#define bPMACLoopback 0x10
|
||||
#define bTxLSIG 0xffffff
|
||||
#define bOFDMTxRate 0xf
|
||||
#define bOFDMTxReserved 0x10
|
||||
#define bOFDMTxLength 0x1ffe0
|
||||
#define bOFDMTxParity 0x20000
|
||||
#define bTxHTSIG1 0xffffff
|
||||
#define bTxHTMCSRate 0x7f
|
||||
#define bTxHTBW 0x80
|
||||
#define bTxHTLength 0xffff00
|
||||
#define bTxHTSIG2 0xffffff
|
||||
#define bTxHTSmoothing 0x1
|
||||
#define bTxHTSounding 0x2
|
||||
#define bTxHTReserved 0x4
|
||||
#define bTxHTAggreation 0x8
|
||||
#define bTxHTSTBC 0x30
|
||||
#define bTxHTAdvanceCoding 0x40
|
||||
#define bTxHTShortGI 0x80
|
||||
#define bTxHTNumberHT_LTF 0x300
|
||||
#define bTxHTCRC8 0x3fc00
|
||||
#define bCounterReset 0x10000
|
||||
#define bNumOfOFDMTx 0xffff
|
||||
#define bNumOfCCKTx 0xffff0000
|
||||
#define bTxIdleInterval 0xffff
|
||||
#define bOFDMService 0xffff0000
|
||||
#define bTxMACHeader 0xffffffff
|
||||
#define bTxDataInit 0xff
|
||||
#define bTxHTMode 0x100
|
||||
#define bTxDataType 0x30000
|
||||
#define bTxRandomSeed 0xffffffff
|
||||
#define bCCKTxPreamble 0x1
|
||||
#define bCCKTxSFD 0xffff0000
|
||||
#define bCCKTxSIG 0xff
|
||||
#define bCCKTxService 0xff00
|
||||
#define bCCKLengthExt 0x8000
|
||||
#define bCCKTxLength 0xffff0000
|
||||
#define bCCKTxCRC16 0xffff
|
||||
#define bCCKTxStatus 0x1
|
||||
#define bOFDMTxStatus 0x2
|
||||
|
||||
|
||||
//
|
||||
// 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF
|
||||
// 1. Page1(0x100)
|
||||
//
|
||||
#define rPMAC_Reset 0x100
|
||||
#define rPMAC_TxStart 0x104
|
||||
#define rPMAC_TxLegacySIG 0x108
|
||||
#define rPMAC_TxHTSIG1 0x10c
|
||||
#define rPMAC_TxHTSIG2 0x110
|
||||
#define rPMAC_PHYDebug 0x114
|
||||
#define rPMAC_TxPacketNum 0x118
|
||||
#define rPMAC_TxIdle 0x11c
|
||||
#define rPMAC_TxMACHeader0 0x120
|
||||
#define rPMAC_TxMACHeader1 0x124
|
||||
#define rPMAC_TxMACHeader2 0x128
|
||||
#define rPMAC_TxMACHeader3 0x12c
|
||||
#define rPMAC_TxMACHeader4 0x130
|
||||
#define rPMAC_TxMACHeader5 0x134
|
||||
#define rPMAC_TxDataType 0x138
|
||||
#define rPMAC_TxRandomSeed 0x13c
|
||||
#define rPMAC_CCKPLCPPreamble 0x140
|
||||
#define rPMAC_CCKPLCPHeader 0x144
|
||||
#define rPMAC_CCKCRC16 0x148
|
||||
#define rPMAC_OFDMRxCRC32OK 0x170
|
||||
#define rPMAC_OFDMRxCRC32Er 0x174
|
||||
#define rPMAC_OFDMRxParityEr 0x178
|
||||
#define rPMAC_OFDMRxCRC8Er 0x17c
|
||||
#define rPMAC_CCKCRxRC16Er 0x180
|
||||
#define rPMAC_CCKCRxRC32Er 0x184
|
||||
#define rPMAC_CCKCRxRC32OK 0x188
|
||||
#define rPMAC_TxStatus 0x18c
|
||||
|
||||
//
|
||||
// 3. Page8(0x800)
|
||||
//
|
||||
#define rFPGA0_RFMOD 0x800 //RF mode & CCK TxSC // RF BW Setting??
|
||||
|
||||
#define rFPGA0_TxInfo 0x804 // Status report??
|
||||
#define rFPGA0_PSDFunction 0x808
|
||||
#define rFPGA0_TxGainStage 0x80c // Set TX PWR init gain?
|
||||
|
||||
#define rFPGA0_XA_HSSIParameter1 0x820 // RF 3 wire register
|
||||
#define rFPGA0_XA_HSSIParameter2 0x824
|
||||
#define rFPGA0_XB_HSSIParameter1 0x828
|
||||
#define rFPGA0_XB_HSSIParameter2 0x82c
|
||||
|
||||
#define rFPGA0_XA_LSSIParameter 0x840
|
||||
#define rFPGA0_XB_LSSIParameter 0x844
|
||||
|
||||
#define rFPGA0_XAB_SwitchControl 0x858 // RF Channel switch
|
||||
#define rFPGA0_XCD_SwitchControl 0x85c
|
||||
|
||||
#define rFPGA0_XAB_RFParameter 0x878 // RF Parameter
|
||||
#define rFPGA0_XCD_RFParameter 0x87c
|
||||
|
||||
#define rFPGA0_AnalogParameter1 0x880 // Crystal cap setting RF-R/W protection for parameter4??
|
||||
#define rFPGA0_AnalogParameter2 0x884
|
||||
#define rFPGA0_AnalogParameter3 0x888
|
||||
#define rFPGA0_AdDaClockEn 0x888 // enable ad/da clock1 for dual-phy
|
||||
#define rFPGA0_AnalogParameter4 0x88c
|
||||
|
||||
#define rFPGA0_XA_LSSIReadBack 0x8a0 // Tranceiver LSSI Readback
|
||||
#define rFPGA0_XB_LSSIReadBack 0x8a4
|
||||
#define rFPGA0_XC_LSSIReadBack 0x8a8
|
||||
#define rFPGA0_XD_LSSIReadBack 0x8ac
|
||||
|
||||
#define rFPGA0_XCD_RFPara 0x8b4
|
||||
#define rFPGA0_PSDReport 0x8b4 // Useless now
|
||||
#define TransceiverA_HSPI_Readback 0x8b8 // Transceiver A HSPI Readback
|
||||
#define TransceiverB_HSPI_Readback 0x8bc // Transceiver B HSPI Readback
|
||||
#define rFPGA0_XAB_RFInterfaceRB 0x8e0 // Useless now // RF Interface Readback Value
|
||||
#define rFPGA0_XCD_RFInterfaceRB 0x8e4 // Useless now
|
||||
|
||||
//
|
||||
// 4. Page9(0x900)
|
||||
//
|
||||
#define rFPGA1_RFMOD 0x900 //RF mode & OFDM TxSC // RF BW Setting??
|
||||
#define REG_BB_TX_PATH_SEL_1 0x93c
|
||||
#define REG_BB_TX_PATH_SEL_2 0x940
|
||||
#define rFPGA1_TxBlock 0x904 // Useless now
|
||||
#define rFPGA1_DebugSelect 0x908 // Useless now
|
||||
#define rFPGA1_TxInfo 0x90c // Useless now // Status report??
|
||||
/*Page 19 for TxBF*/
|
||||
#define REG_BB_TXBF_ANT_SET_BF1 0x19ac
|
||||
#define REG_BB_TXBF_ANT_SET_BF0 0x19b4
|
||||
//
|
||||
// PageA(0xA00)
|
||||
//
|
||||
#define rCCK0_System 0xa00
|
||||
#define rCCK0_AFESetting 0xa04 // Disable init gain now // Select RX path by RSSI
|
||||
#define rCCK0_DSPParameter2 0xa1c //SQ threshold
|
||||
#define rCCK0_TxFilter1 0xa20
|
||||
#define rCCK0_TxFilter2 0xa24
|
||||
#define rCCK0_DebugPort 0xa28 //debug port and Tx filter3
|
||||
#define rCCK0_FalseAlarmReport 0xa2c //0xa2d useless now 0xa30-a4f channel report
|
||||
|
||||
//
|
||||
// PageB(0xB00)
|
||||
//
|
||||
#define rPdp_AntA 0xb00
|
||||
#define rPdp_AntA_4 0xb04
|
||||
#define rConfig_Pmpd_AntA 0xb28
|
||||
#define rConfig_AntA 0xb68
|
||||
#define rConfig_AntB 0xb6c
|
||||
#define rPdp_AntB 0xb70
|
||||
#define rPdp_AntB_4 0xb74
|
||||
#define rConfig_Pmpd_AntB 0xb98
|
||||
#define rAPK 0xbd8
|
||||
|
||||
//
|
||||
// 6. PageC(0xC00)
|
||||
//
|
||||
#define rOFDM0_LSTF 0xc00
|
||||
|
||||
#define rOFDM0_TRxPathEnable 0xc04
|
||||
#define rOFDM0_TRMuxPar 0xc08
|
||||
#define rOFDM0_TRSWIsolation 0xc0c
|
||||
|
||||
#define rOFDM0_XARxAFE 0xc10 //RxIQ DC offset, Rx digital filter, DC notch filter
|
||||
#define rOFDM0_XARxIQImbalance 0xc14 //RxIQ imblance matrix
|
||||
#define rOFDM0_XBRxAFE 0xc18
|
||||
#define rOFDM0_XBRxIQImbalance 0xc1c
|
||||
#define rOFDM0_XCRxAFE 0xc20
|
||||
#define rOFDM0_XCRxIQImbalance 0xc24
|
||||
#define rOFDM0_XDRxAFE 0xc28
|
||||
#define rOFDM0_XDRxIQImbalance 0xc2c
|
||||
|
||||
#define rOFDM0_RxDetector1 0xc30 //PD,BW & SBD // DM tune init gain
|
||||
#define rOFDM0_RxDetector2 0xc34 //SBD & Fame Sync.
|
||||
#define rOFDM0_RxDetector3 0xc38 //Frame Sync.
|
||||
#define rOFDM0_RxDetector4 0xc3c //PD, SBD, Frame Sync & Short-GI
|
||||
|
||||
#define rOFDM0_RxDSP 0xc40 //Rx Sync Path
|
||||
#define rOFDM0_CFOandDAGC 0xc44 //CFO & DAGC
|
||||
#define rOFDM0_CCADropThreshold 0xc48 //CCA Drop threshold
|
||||
#define rOFDM0_ECCAThreshold 0xc4c // energy CCA
|
||||
|
||||
#define rOFDM0_XAAGCCore1 0xc50 // DIG
|
||||
#define rOFDM0_XAAGCCore2 0xc54
|
||||
#define rOFDM0_XBAGCCore1 0xc58
|
||||
#define rOFDM0_XBAGCCore2 0xc5c
|
||||
#define rOFDM0_XCAGCCore1 0xc60
|
||||
#define rOFDM0_XCAGCCore2 0xc64
|
||||
#define rOFDM0_XDAGCCore1 0xc68
|
||||
#define rOFDM0_XDAGCCore2 0xc6c
|
||||
|
||||
#define rOFDM0_AGCParameter1 0xc70
|
||||
#define rOFDM0_AGCParameter2 0xc74
|
||||
#define rOFDM0_AGCRSSITable 0xc78
|
||||
#define rOFDM0_HTSTFAGC 0xc7c
|
||||
|
||||
#define rOFDM0_XATxIQImbalance 0xc80 // TX PWR TRACK and DIG
|
||||
#define rOFDM0_XATxAFE 0xc84
|
||||
#define rOFDM0_XBTxIQImbalance 0xc88
|
||||
#define rOFDM0_XBTxAFE 0xc8c
|
||||
#define rOFDM0_XCTxIQImbalance 0xc90
|
||||
#define rOFDM0_XCTxAFE 0xc94
|
||||
#define rOFDM0_XDTxIQImbalance 0xc98
|
||||
#define rOFDM0_XDTxAFE 0xc9c
|
||||
|
||||
#define rOFDM0_RxIQExtAnta 0xca0
|
||||
#define rOFDM0_TxCoeff1 0xca4
|
||||
#define rOFDM0_TxCoeff2 0xca8
|
||||
#define rOFDM0_TxCoeff3 0xcac
|
||||
#define rOFDM0_TxCoeff4 0xcb0
|
||||
#define rOFDM0_TxCoeff5 0xcb4
|
||||
#define rOFDM0_TxCoeff6 0xcb8
|
||||
#define rOFDM0_RxHPParameter 0xce0
|
||||
#define rOFDM0_TxPseudoNoiseWgt 0xce4
|
||||
#define rOFDM0_FrameSync 0xcf0
|
||||
#define rOFDM0_DFSReport 0xcf4
|
||||
|
||||
//
|
||||
// 7. PageD(0xD00)
|
||||
//
|
||||
#define rOFDM1_LSTF 0xd00
|
||||
#define rOFDM1_TRxPathEnable 0xd04
|
||||
|
||||
//
|
||||
// 8. PageE(0xE00)
|
||||
//
|
||||
#define rTxAGC_A_Rate18_06 0xe00
|
||||
#define rTxAGC_A_Rate54_24 0xe04
|
||||
#define rTxAGC_A_CCK1_Mcs32 0xe08
|
||||
#define rTxAGC_A_Mcs03_Mcs00 0xe10
|
||||
#define rTxAGC_A_Mcs07_Mcs04 0xe14
|
||||
#define rTxAGC_A_Mcs11_Mcs08 0xe18
|
||||
#define rTxAGC_A_Mcs15_Mcs12 0xe1c
|
||||
|
||||
#define rTxAGC_B_Rate18_06 0x830
|
||||
#define rTxAGC_B_Rate54_24 0x834
|
||||
#define rTxAGC_B_CCK1_55_Mcs32 0x838
|
||||
#define rTxAGC_B_Mcs03_Mcs00 0x83c
|
||||
#define rTxAGC_B_Mcs07_Mcs04 0x848
|
||||
#define rTxAGC_B_Mcs11_Mcs08 0x84c
|
||||
#define rTxAGC_B_Mcs15_Mcs12 0x868
|
||||
#define rTxAGC_B_CCK11_A_CCK2_11 0x86c
|
||||
|
||||
#define rFPGA0_IQK 0xe28
|
||||
#define rTx_IQK_Tone_A 0xe30
|
||||
#define rRx_IQK_Tone_A 0xe34
|
||||
#define rTx_IQK_PI_A 0xe38
|
||||
#define rRx_IQK_PI_A 0xe3c
|
||||
|
||||
#define rTx_IQK 0xe40
|
||||
#define rRx_IQK 0xe44
|
||||
#define rIQK_AGC_Pts 0xe48
|
||||
#define rIQK_AGC_Rsp 0xe4c
|
||||
#define rTx_IQK_Tone_B 0xe50
|
||||
#define rRx_IQK_Tone_B 0xe54
|
||||
#define rTx_IQK_PI_B 0xe58
|
||||
#define rRx_IQK_PI_B 0xe5c
|
||||
#define rIQK_AGC_Cont 0xe60
|
||||
|
||||
#define rBlue_Tooth 0xe6c
|
||||
#define rRx_Wait_CCA 0xe70
|
||||
#define rTx_CCK_RFON 0xe74
|
||||
#define rTx_CCK_BBON 0xe78
|
||||
#define rTx_OFDM_RFON 0xe7c
|
||||
#define rTx_OFDM_BBON 0xe80
|
||||
#define rTx_To_Rx 0xe84
|
||||
#define rTx_To_Tx 0xe88
|
||||
#define rRx_CCK 0xe8c
|
||||
|
||||
#define rTx_Power_Before_IQK_A 0xe94
|
||||
#define rTx_Power_After_IQK_A 0xe9c
|
||||
|
||||
#define rRx_Power_Before_IQK_A 0xea0
|
||||
#define rRx_Power_Before_IQK_A_2 0xea4
|
||||
#define rRx_Power_After_IQK_A 0xea8
|
||||
#define rRx_Power_After_IQK_A_2 0xeac
|
||||
|
||||
#define rTx_Power_Before_IQK_B 0xeb4
|
||||
#define rTx_Power_After_IQK_B 0xebc
|
||||
|
||||
#define rRx_Power_Before_IQK_B 0xec0
|
||||
#define rRx_Power_Before_IQK_B_2 0xec4
|
||||
#define rRx_Power_After_IQK_B 0xec8
|
||||
#define rRx_Power_After_IQK_B_2 0xecc
|
||||
|
||||
#define rRx_OFDM 0xed0
|
||||
#define rRx_Wait_RIFS 0xed4
|
||||
#define rRx_TO_Rx 0xed8
|
||||
#define rStandby 0xedc
|
||||
#define rSleep 0xee0
|
||||
#define rPMPD_ANAEN 0xeec
|
||||
|
||||
|
||||
// 2. Page8(0x800)
|
||||
#define bRFMOD 0x1 // Reg 0x800 rFPGA0_RFMOD
|
||||
#define bJapanMode 0x2
|
||||
#define bCCKTxSC 0x30
|
||||
#define bCCKEn 0x1000000
|
||||
#define bOFDMEn 0x2000000
|
||||
#define bXBTxAGC 0xf00 // Reg 80c rFPGA0_TxGainStage
|
||||
#define bXCTxAGC 0xf000
|
||||
#define bXDTxAGC 0xf0000
|
||||
|
||||
// 4. PageA(0xA00)
|
||||
#define bCCKBBMode 0x3 // Useless
|
||||
#define bCCKTxPowerSaving 0x80
|
||||
#define bCCKRxPowerSaving 0x40
|
||||
|
||||
#define bCCKSideBand 0x10 // Reg 0xa00 rCCK0_System 20/40 switch
|
||||
|
||||
#define bCCKScramble 0x8 // Useless
|
||||
#define bCCKAntDiversity 0x8000
|
||||
#define bCCKCarrierRecovery 0x4000
|
||||
#define bCCKTxRate 0x3000
|
||||
#define bCCKDCCancel 0x0800
|
||||
#define bCCKISICancel 0x0400
|
||||
#define bCCKMatchFilter 0x0200
|
||||
#define bCCKEqualizer 0x0100
|
||||
#define bCCKPreambleDetect 0x800000
|
||||
#define bCCKFastFalseCCA 0x400000
|
||||
#define bCCKChEstStart 0x300000
|
||||
#define bCCKCCACount 0x080000
|
||||
#define bCCKcs_lim 0x070000
|
||||
#define bCCKBistMode 0x80000000
|
||||
#define bCCKCCAMask 0x40000000
|
||||
#define bCCKTxDACPhase 0x4
|
||||
#define bCCKRxADCPhase 0x20000000 //r_rx_clk
|
||||
#define bCCKr_cp_mode0 0x0100
|
||||
#define bCCKTxDCOffset 0xf0
|
||||
#define bCCKRxDCOffset 0xf
|
||||
#define bCCKCCAMode 0xc000
|
||||
#define bCCKFalseCS_lim 0x3f00
|
||||
#define bCCKCS_ratio 0xc00000
|
||||
#define bCCKCorgBit_sel 0x300000
|
||||
#define bCCKPD_lim 0x0f0000
|
||||
#define bCCKNewCCA 0x80000000
|
||||
#define bCCKRxHPofIG 0x8000
|
||||
#define bCCKRxIG 0x7f00
|
||||
#define bCCKLNAPolarity 0x800000
|
||||
#define bCCKRx1stGain 0x7f0000
|
||||
#define bCCKRFExtend 0x20000000 //CCK Rx Iinital gain polarity
|
||||
#define bCCKRxAGCSatLevel 0x1f000000
|
||||
#define bCCKRxAGCSatCount 0xe0
|
||||
#define bCCKRxRFSettle 0x1f //AGCsamp_dly
|
||||
#define bCCKFixedRxAGC 0x8000
|
||||
//#define bCCKRxAGCFormat 0x4000 //remove to HSSI register 0x824
|
||||
#define bCCKAntennaPolarity 0x2000
|
||||
#define bCCKTxFilterType 0x0c00
|
||||
#define bCCKRxAGCReportType 0x0300
|
||||
#define bCCKRxDAGCEn 0x80000000
|
||||
#define bCCKRxDAGCPeriod 0x20000000
|
||||
#define bCCKRxDAGCSatLevel 0x1f000000
|
||||
#define bCCKTimingRecovery 0x800000
|
||||
#define bCCKTxC0 0x3f0000
|
||||
#define bCCKTxC1 0x3f000000
|
||||
#define bCCKTxC2 0x3f
|
||||
#define bCCKTxC3 0x3f00
|
||||
#define bCCKTxC4 0x3f0000
|
||||
#define bCCKTxC5 0x3f000000
|
||||
#define bCCKTxC6 0x3f
|
||||
#define bCCKTxC7 0x3f00
|
||||
#define bCCKDebugPort 0xff0000
|
||||
#define bCCKDACDebug 0x0f000000
|
||||
#define bCCKFalseAlarmEnable 0x8000
|
||||
#define bCCKFalseAlarmRead 0x4000
|
||||
#define bCCKTRSSI 0x7f
|
||||
#define bCCKRxAGCReport 0xfe
|
||||
#define bCCKRxReport_AntSel 0x80000000
|
||||
#define bCCKRxReport_MFOff 0x40000000
|
||||
#define bCCKRxRxReport_SQLoss 0x20000000
|
||||
#define bCCKRxReport_Pktloss 0x10000000
|
||||
#define bCCKRxReport_Lockedbit 0x08000000
|
||||
#define bCCKRxReport_RateError 0x04000000
|
||||
#define bCCKRxReport_RxRate 0x03000000
|
||||
#define bCCKRxFACounterLower 0xff
|
||||
#define bCCKRxFACounterUpper 0xff000000
|
||||
#define bCCKRxHPAGCStart 0xe000
|
||||
#define bCCKRxHPAGCFinal 0x1c00
|
||||
#define bCCKRxFalseAlarmEnable 0x8000
|
||||
#define bCCKFACounterFreeze 0x4000
|
||||
#define bCCKTxPathSel 0x10000000
|
||||
#define bCCKDefaultRxPath 0xc000000
|
||||
#define bCCKOptionRxPath 0x3000000
|
||||
|
||||
#define RF_T_METER_88E 0x42 //
|
||||
|
||||
// 6. PageE(0xE00)
|
||||
#define bSTBCEn 0x4 // Useless
|
||||
#define bAntennaMapping 0x10
|
||||
#define bNss 0x20
|
||||
#define bCFOAntSumD 0x200
|
||||
#define bPHYCounterReset 0x8000000
|
||||
#define bCFOReportGet 0x4000000
|
||||
#define bOFDMContinueTx 0x10000000
|
||||
#define bOFDMSingleCarrier 0x20000000
|
||||
#define bOFDMSingleTone 0x40000000
|
||||
|
||||
|
||||
//
|
||||
// Other Definition
|
||||
//
|
||||
|
||||
#define bEnable 0x1 // Useless
|
||||
#define bDisable 0x0
|
||||
|
||||
//byte endable for srwrite
|
||||
#define bByte0 0x1 // Useless
|
||||
#define bByte1 0x2
|
||||
#define bByte2 0x4
|
||||
#define bByte3 0x8
|
||||
#define bWord0 0x3
|
||||
#define bWord1 0xc
|
||||
#define bDWord 0xf
|
||||
|
||||
//for PutRegsetting & GetRegSetting BitMask
|
||||
#define bMaskByte0 0xff // Reg 0xc50 rOFDM0_XAAGCCore~0xC6f
|
||||
#define bMaskByte1 0xff00
|
||||
#define bMaskByte2 0xff0000
|
||||
#define bMaskByte3 0xff000000
|
||||
#define bMaskHWord 0xffff0000
|
||||
#define bMaskLWord 0x0000ffff
|
||||
#define bMaskDWord 0xffffffff
|
||||
#define bMaskH3Bytes 0xffffff00
|
||||
#define bMask12Bits 0xfff
|
||||
#define bMaskH4Bits 0xf0000000
|
||||
#define bMaskOFDM_D 0xffc00000
|
||||
#define bMaskCCK 0x3f3f3f3f
|
||||
#define bMask7bits 0x7f
|
||||
#define bMaskByte2HighNibble 0x00f00000
|
||||
#define bMaskByte3LowNibble 0x0f000000
|
||||
#define bMaskL3Bytes 0x00ffffff
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
237
include/Hal8814PwrSeq.h
Normal file
237
include/Hal8814PwrSeq.h
Normal file
|
|
@ -0,0 +1,237 @@
|
|||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __HAL8814PWRSEQ_H__
|
||||
#define __HAL8814PWRSEQ_H__
|
||||
|
||||
#include "HalPwrSeqCmd.h"
|
||||
|
||||
/*
|
||||
Check document WB-110628-DZ-RTL8195 (Jaguar) Power Architecture-R04.pdf
|
||||
There are 6 HW Power States:
|
||||
0: POFF--Power Off
|
||||
1: PDN--Power Down
|
||||
2: CARDEMU--Card Emulation
|
||||
3: ACT--Active Mode
|
||||
4: LPS--Low Power State
|
||||
5: SUS--Suspend
|
||||
|
||||
The transision from different states are defined below
|
||||
TRANS_CARDEMU_TO_ACT
|
||||
TRANS_ACT_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_SUS
|
||||
TRANS_SUS_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_PDN
|
||||
TRANS_ACT_TO_LPS
|
||||
TRANS_LPS_TO_ACT
|
||||
|
||||
TRANS_END
|
||||
*/
|
||||
#define RTL8814A_TRANS_CARDEMU_TO_ACT_STEPS 16
|
||||
#define RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS 20
|
||||
#define RTL8814A_TRANS_CARDEMU_TO_SUS_STEPS 17
|
||||
#define RTL8814A_TRANS_SUS_TO_CARDEMU_STEPS 15
|
||||
#define RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS 17
|
||||
#define RTL8814A_TRANS_PDN_TO_CARDEMU_STEPS 16
|
||||
#define RTL8814A_TRANS_ACT_TO_LPS_STEPS 20
|
||||
#define RTL8814A_TRANS_LPS_TO_ACT_STEPS 15
|
||||
#define RTL8814A_TRANS_END_STEPS 1
|
||||
|
||||
|
||||
#define RTL8814A_TRANS_CARDEMU_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0},/* disable SW LPS 0x04[10]=0*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \
|
||||
{0x002B, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0}, /* ??0x28[24]=1, enable pll phase select*/ \
|
||||
{0x0015, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT3|BIT2|BIT1), (BIT3|BIT2|BIT1)},/* 0x14[11:9]=3'b111,OCP current threshold=1.5A */ \
|
||||
{0x002D, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x0E, 0x08},/* 0x2C[11:9]=3'b100, select lpf R3 */ \
|
||||
{0x002D, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x70, 0x50},/* 0x2C[14:12]=3'b101, select lpf Rs*/ \
|
||||
{0x007B, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, BIT6},/* 0x78[30]=1'b1, SDM order select*/ \
|
||||
/*{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0}, */ /* disable HWPDN 0x04[15]=0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, 0},/* disable WL suspend*/ \
|
||||
{0x00F0, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* */ \
|
||||
{0x0081, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x30, 0x20},/* */ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* polling until return 0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0},/**/
|
||||
|
||||
#define RTL8814A_TRANS_ACT_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xc00[7:0] = 4 turn off 3-wire */ \
|
||||
{0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xe00[7:0] = 4 turn off 3-wire */ \
|
||||
{0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /* 0x2[0] = 0 RESET BB, CLOSE RF */ \
|
||||
{0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US}, /*Delay 1us*/ \
|
||||
{0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \
|
||||
{0x1002, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /* 0x2[0] = 0 RESET BB, CLOSE RF */ \
|
||||
{0x0002, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US}, /*Delay 1us*/ \
|
||||
{0x1002, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \
|
||||
{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*0x1F[7:0] = 0 turn off RF*/ \
|
||||
/*{0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},*/ /*0x4C[23] = 0x4E[7] = 0, switch DPDT_SEL_P output from register 0x65[2] */ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x28}, /* 0x07[7:0] = 0x28 sps pwm mode 0x2a for BT coex*/ \
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x02, 0}, /*0x8[1] = 0 ANA clk =500k */ \
|
||||
/*{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0|BIT1, 0},*/ /* 0x02[1:0] = 0 reset BB */ \
|
||||
{0x0066, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0}, /*0x66[7]=0, disable ckreq for gpio7 output SUS */ \
|
||||
{0x0041, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x41[4]=0, disable sic for gpio7 output SUS */ \
|
||||
{0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /*0x42[1]=0, disable ckout for gpio7 output SUS */ \
|
||||
{0x004e, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5}, /*0x4E[5]=1, disable LED2 for gpio7 output SUS */ \
|
||||
{0x0041, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*0x41[0]=0, disable uart for gpio7 output SUS */ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/
|
||||
|
||||
#define RTL8814A_TRANS_CARDEMU_TO_SUS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0061, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x0F, 0x0c},\
|
||||
{0x0061, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x0F, 0x0E},\
|
||||
{0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x0F, 0x07},/* gpio11 input mode, gpio10~8 output mode */ \
|
||||
{0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio 0~7 output same value as input ?? */ \
|
||||
{0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xff},/* gpio0~7 output mode */ \
|
||||
{0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/* 0x47[7:0] = 00 gpio mode */ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/* suspend option all off */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*0x14[13] = 1 turn on ZCD */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, BIT6},/* 0x14[14] =1 trun on ZCD */ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4},/*0x23[4] = 1 hpon LDO sleep mode */ \
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*0x8[1] = 0 ANA clk =500k */ \
|
||||
{0x0091, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xA0, 0xA0}, /* 0x91[7]=1 0x91[5]=1 , disable sps,ldo sleep mode */ \
|
||||
{0x0070, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, BIT3}, /* 0x70[3]=1 enable mainbias polling */ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, BIT3}, /*0x04[11] = 1 enable WL suspend */
|
||||
|
||||
#define RTL8814A_TRANS_SUS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, 0}, /*0x04[11] = 0 enable WL suspend*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x10, 0},/*0x23[4] = 0 hpon LDO sleep mode leave */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, 0},/* 0x14[14] =0 trun off ZCD */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, 0},/*0x14[13] = 0 turn off ZCD */ \
|
||||
{0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio0~7 input mode */ \
|
||||
{0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio11 input mode, gpio10~8 input mode */
|
||||
|
||||
#define RTL8814A_TRANS_CARDEMU_TO_CARDDIS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
/**{0x0194, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, //0x194[0]=0 , disable 32K clock*/ \
|
||||
/**{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x94}, //0x93=0x94 , 90[30] =0 enable 500k ANA clock .switch clock from 12M to 500K , 90 [26] =0 disable EEprom loader clock*/ \
|
||||
{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0}, /*0x03[2] = 0, reset 3081*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x01}, /*0x80=05h if reload fw, fill the default value of host_CPU handshake field*/ \
|
||||
{0x0081, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x30}, /*0x80=05h if reload fw, fill the default value of host_CPU handshake field*/ \
|
||||
/*{0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xF0, 0xcc},*/ \
|
||||
/*{0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xF0, 0xEC},*/ \
|
||||
/*{0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x07},*/ /* gpio11 input mode, gpio10~8 output mode */ \
|
||||
{0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio 0~7 output same value as input ?? */ \
|
||||
{0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xff},/* gpio0~7 output mode */ \
|
||||
{0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/* 0x47[7:0] = 00 gpio mode */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, BIT6},/* 0x15[6] =1 trun on ZCD output */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*0x15[5] = 1 turn on ZCD */ \
|
||||
{0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, 0},/*0x12[6] = 0 force PFM mode */ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4},/*0x23[4] = 1 hpon LDO sleep mode */ \
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*0x8[1] = 0 ANA clk =500k */ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07=0x20 , SOP option to disable BG/MB*/ \
|
||||
{0x001f, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* 0x01f[1]=0 , disable RFC_0 control REG_RF_CTRL_8814A */ \
|
||||
{0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* 0x020[1]=0 , disable RFC_1 control REG_RF_CTRL_8814A */ \
|
||||
{0x0021, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* 0x021[1]=0 , disable RFC_2 control REG_RF_CTRL_8814A */ \
|
||||
{0x0076, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* 0x076[1]=0 , disable RFC_3 control REG_OPT_CTRL_8814A +2 */ \
|
||||
{0x0091, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xA0, 0xA0}, /* 0x91[7]=1 0x91[5]=1 , disable sps,ldo sleep mode */ \
|
||||
{0x0070, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, BIT3}, /* 0x70[3]=1 enable mainbias polling */ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, BIT3}, /*0x04[11] = 1 enable WL suspend*/
|
||||
|
||||
#define RTL8814A_TRANS_CARDDIS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, BIT6},/*0x12[6] = 1 force PWM mode */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, 0},/*0x15[5] = 0 turn off ZCD */ \
|
||||
{0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, 0},/* 0x15[6] =0 trun off ZCD output */ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0},/*0x23[4] = 0 hpon LDO leave sleep mode */ \
|
||||
{0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio0~7 input mode */ \
|
||||
{0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00}, /* gpio11 input mode, gpio10~8 input mode */ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0}, /*0x04[10] = 0, enable SW LPS PCIE only*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, 0}, /*0x04[11] = 0, enable WL suspend*/ \
|
||||
/*{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2},*/ /*0x03[2] = 1, enable 3081*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*PCIe DMA start*/ \
|
||||
{0x0071, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0},/*0x70[10] = 0, CPHY_MBIAS_EN disable*/
|
||||
|
||||
|
||||
#define RTL8814A_TRANS_CARDEMU_TO_PDN \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/
|
||||
|
||||
#define RTL8814A_TRANS_PDN_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/
|
||||
|
||||
#define RTL8814A_TRANS_ACT_TO_LPS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x7F},/*Tx Pause*/ \
|
||||
{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xc00[7:0] = 4 turn off 3-wire */ \
|
||||
{0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xe00[7:0] = 4 turn off 3-wire */ \
|
||||
{0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated,and RF closed*/ \
|
||||
{0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \
|
||||
{0x1002, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated,and RF closed*/ \
|
||||
{0x0002, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x1002, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x03},/*Reset MAC TRX*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \
|
||||
{0x05F1, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*Respond TxOK to scheduler*/
|
||||
|
||||
|
||||
#define RTL8814A_TRANS_LPS_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/ \
|
||||
{0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/ \
|
||||
{0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /* Delay*/ \
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*. 0x08[4] = 0 switch TSF to 40M*/ \
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, 0}, /* Polling 0x109[7]=0 TSF in 40M*/ \
|
||||
/*{0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6|BIT7, 0}, */ /*. ??0x29[7:6] = 2b'00 enable BB clock*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/ \
|
||||
{0x0002, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/ \
|
||||
{0x1002, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x1002[1:0] = 2b'11 enable BB macro*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/
|
||||
|
||||
#define RTL8814A_TRANS_END \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,0,PWR_CMD_END, 0, 0}, //
|
||||
|
||||
|
||||
extern WLAN_PWR_CFG rtl8814A_power_on_flow[RTL8814A_TRANS_CARDEMU_TO_ACT_STEPS+RTL8814A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8814A_radio_off_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8814A_card_disable_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8814A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8814A_card_enable_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8814A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8814A_suspend_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_TRANS_CARDEMU_TO_SUS_STEPS+RTL8814A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8814A_resume_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_TRANS_CARDEMU_TO_SUS_STEPS+RTL8814A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8814A_hwpdn_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8814A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8814A_enter_lps_flow[RTL8814A_TRANS_ACT_TO_LPS_STEPS+RTL8814A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8814A_leave_lps_flow[RTL8814A_TRANS_LPS_TO_ACT_STEPS+RTL8814A_TRANS_END_STEPS];
|
||||
|
||||
#endif //__HAL8814PWRSEQ_H__
|
||||
|
||||
186
include/Hal8821APwrSeq.h
Normal file
186
include/Hal8821APwrSeq.h
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
#ifndef REALTEK_POWER_SEQUENCE_8821
|
||||
#define REALTEK_POWER_SEQUENCE_8821
|
||||
|
||||
#include "HalPwrSeqCmd.h"
|
||||
|
||||
/*
|
||||
Check document WM-20130516-JackieLau-RTL8821A_Power_Architecture-R10.vsd
|
||||
There are 6 HW Power States:
|
||||
0: POFF--Power Off
|
||||
1: PDN--Power Down
|
||||
2: CARDEMU--Card Emulation
|
||||
3: ACT--Active Mode
|
||||
4: LPS--Low Power State
|
||||
5: SUS--Suspend
|
||||
|
||||
The transision from different states are defined below
|
||||
TRANS_CARDEMU_TO_ACT
|
||||
TRANS_ACT_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_SUS
|
||||
TRANS_SUS_TO_CARDEMU
|
||||
TRANS_CARDEMU_TO_PDN
|
||||
TRANS_ACT_TO_LPS
|
||||
TRANS_LPS_TO_ACT
|
||||
|
||||
TRANS_END
|
||||
*/
|
||||
#define RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS 25
|
||||
#define RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS 15
|
||||
#define RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS 15
|
||||
#define RTL8821A_TRANS_SUS_TO_CARDEMU_STEPS 15
|
||||
#define RTL8821A_TRANS_CARDDIS_TO_CARDEMU_STEPS 15
|
||||
#define RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS 15
|
||||
#define RTL8821A_TRANS_PDN_TO_CARDEMU_STEPS 15
|
||||
#define RTL8821A_TRANS_ACT_TO_LPS_STEPS 15
|
||||
#define RTL8821A_TRANS_LPS_TO_ACT_STEPS 15
|
||||
#define RTL8821A_TRANS_END_STEPS 1
|
||||
|
||||
|
||||
#define RTL8821A_TRANS_CARDEMU_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0}, /*0x20[0] = 1b'1 enable LDOA12 MACRO block for all interface*/ \
|
||||
{0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x67[0] = 0 to disable BT_GPS_SEL pins*/ \
|
||||
{0x0001, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 1, PWRSEQ_DELAY_MS},/*Delay 1ms*/ \
|
||||
{0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, 0}, /*0x00[5] = 1b'0 release analog Ips to digital ,1:isolation*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT4|BIT3|BIT2), 0},/* disable SW LPS 0x04[10]=0 and WLSUS_EN 0x04[12:11]=0*/ \
|
||||
{0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0 , BIT0},/* Disable USB suspend */ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \
|
||||
{0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0 , 0},/* Enable USB suspend */ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* release WLON reset 0x04[16]=1*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* disable HWPDN 0x04[15]=0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT4|BIT3), 0},/* disable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* polling until return 0*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0},/**/ \
|
||||
{0x004F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*0x4C[24] = 0x4F[0] = 1, switch DPDT_SEL_P output from WL BB */\
|
||||
{0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT5|BIT4), (BIT5|BIT4)},/*0x66[13] = 0x67[5] = 1, switch for PAPE_G/PAPE_A from WL BB ; 0x66[12] = 0x67[4] = 1, switch LNAON from WL BB */\
|
||||
{0x0025, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, 0},/*anapar_mac<118> , 0x25[6]=0 by wlan single function*/\
|
||||
{0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable falling edge triggering interrupt*/\
|
||||
{0x0063, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable GPIO9 interrupt mode*/\
|
||||
{0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Enable GPIO9 input mode*/\
|
||||
{0x0058, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*Enable HSISR GPIO[C:0] interrupt*/\
|
||||
{0x005A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable HSISR GPIO9 interrupt*/\
|
||||
{0x007A, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x3A},/*0x7A = 0x3A start BT*/\
|
||||
{0x002E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF , 0x82 },/* 0x2C[23:12]=0x820 ; XTAL trim */ \
|
||||
{0x0010, PWR_CUT_A_MSK , PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6 , BIT6 },/* 0x10[6]=1 ; MP新增對於0x2C的控制權,須把0x10[6]設為1才能讓WLAN控制 */ \
|
||||
|
||||
|
||||
#define RTL8821A_TRANS_ACT_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*0x1F[7:0] = 0 turn off RF*/ \
|
||||
{0x004F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*0x4C[24] = 0x4F[0] = 0, switch DPDT_SEL_P output from register 0x65[2] */\
|
||||
{0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Enable rising edge triggering interrupt*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* release WLON reset 0x04[16]=1*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/ \
|
||||
{0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5}, /*0x00[5] = 1b'1 analog Ips to digital ,1:isolation*/ \
|
||||
{0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*0x20[0] = 1b'0 disable LDOA12 MACRO block*/ \
|
||||
|
||||
|
||||
#define RTL8821A_TRANS_CARDEMU_TO_SUS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4|BIT3, (BIT4|BIT3)}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SDIO SOP option to disable BG/MB/ACK/SWR*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3|BIT4}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8821A_TRANS_SUS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 | BIT7, 0}, /*clear suspend enable and power down enable*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/
|
||||
|
||||
#define RTL8821A_TRANS_CARDEMU_TO_CARDDIS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07=0x20 , SOP option to disable BG/MB*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2}, /*0x04[10] = 1, enable SW LPS*/ \
|
||||
{0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 1}, /*0x48[16] = 1 to enable GPIO9 as EXT WAKEUP*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/
|
||||
|
||||
#define RTL8821A_TRANS_CARDDIS_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 | BIT7, 0}, /*clear suspend enable and power down enable*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \
|
||||
{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\
|
||||
{0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*0x48[16] = 0 to disable GPIO9 as EXT WAKEUP*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/\
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*PCIe DMA start*/
|
||||
|
||||
|
||||
#define RTL8821A_TRANS_CARDEMU_TO_PDN \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \
|
||||
{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK|PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SOP option to disable BG/MB/ACK/SWR*/ \
|
||||
{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/* 0x04[16] = 0*/\
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/
|
||||
|
||||
#define RTL8821A_TRANS_PDN_TO_CARDEMU \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/
|
||||
|
||||
#define RTL8821A_TRANS_ACT_TO_LPS \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/ \
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*Tx Pause*/ \
|
||||
{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Whole BB is reset*/ \
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x03},/*Reset MAC TRX*/ \
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \
|
||||
{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/*When driver enter Sus/ Disable, enable LOP for BT*/ \
|
||||
{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*Respond TxOK to scheduler*/ \
|
||||
|
||||
|
||||
#define RTL8821A_TRANS_LPS_TO_ACT \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/\
|
||||
{0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/\
|
||||
{0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/\
|
||||
{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*. 0x08[4] = 0 switch TSF to 40M*/\
|
||||
{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, 0}, /*Polling 0x109[7]=0 TSF in 40M*/\
|
||||
{0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6|BIT7, 0}, /*. 0x29[7:6] = 2b'00 enable BB clock*/\
|
||||
{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/\
|
||||
{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/\
|
||||
{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/\
|
||||
{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/
|
||||
|
||||
#define RTL8821A_TRANS_END \
|
||||
/* format */ \
|
||||
/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \
|
||||
{0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,0,PWR_CMD_END, 0, 0}, //
|
||||
|
||||
|
||||
extern WLAN_PWR_CFG rtl8821A_power_on_flow[RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS+RTL8821A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8821A_radio_off_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8821A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8821A_card_disable_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8821A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8821A_card_enable_flow[RTL8821A_TRANS_CARDDIS_TO_CARDEMU_STEPS+RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS+RTL8821A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8821A_suspend_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS+RTL8821A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8821A_resume_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS+RTL8821A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8821A_hwpdn_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8821A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8821A_enter_lps_flow[RTL8821A_TRANS_ACT_TO_LPS_STEPS+RTL8821A_TRANS_END_STEPS];
|
||||
extern WLAN_PWR_CFG rtl8821A_leave_lps_flow[RTL8821A_TRANS_LPS_TO_ACT_STEPS+RTL8821A_TRANS_END_STEPS];
|
||||
|
||||
#endif
|
||||
138
include/HalPwrSeqCmd.h
Normal file
138
include/HalPwrSeqCmd.h
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HALPWRSEQCMD_H__
|
||||
#define __HALPWRSEQCMD_H__
|
||||
|
||||
#include <drv_types.h>
|
||||
|
||||
/*---------------------------------------------*/
|
||||
//3 The value of cmd: 4 bits
|
||||
/*---------------------------------------------*/
|
||||
#define PWR_CMD_READ 0x00
|
||||
// offset: the read register offset
|
||||
// msk: the mask of the read value
|
||||
// value: N/A, left by 0
|
||||
// note: dirver shall implement this function by read & msk
|
||||
|
||||
#define PWR_CMD_WRITE 0x01
|
||||
// offset: the read register offset
|
||||
// msk: the mask of the write bits
|
||||
// value: write value
|
||||
// note: driver shall implement this cmd by read & msk after write
|
||||
|
||||
#define PWR_CMD_POLLING 0x02
|
||||
// offset: the read register offset
|
||||
// msk: the mask of the polled value
|
||||
// value: the value to be polled, masked by the msd field.
|
||||
// note: driver shall implement this cmd by
|
||||
// do{
|
||||
// if( (Read(offset) & msk) == (value & msk) )
|
||||
// break;
|
||||
// } while(not timeout);
|
||||
|
||||
#define PWR_CMD_DELAY 0x03
|
||||
// offset: the value to delay
|
||||
// msk: N/A
|
||||
// value: the unit of delay, 0: us, 1: ms
|
||||
|
||||
#define PWR_CMD_END 0x04
|
||||
// offset: N/A
|
||||
// msk: N/A
|
||||
// value: N/A
|
||||
|
||||
/*---------------------------------------------*/
|
||||
//3 The value of base: 4 bits
|
||||
/*---------------------------------------------*/
|
||||
// define the base address of each block
|
||||
#define PWR_BASEADDR_MAC 0x00
|
||||
#define PWR_BASEADDR_USB 0x01
|
||||
#define PWR_BASEADDR_PCIE 0x02
|
||||
#define PWR_BASEADDR_SDIO 0x03
|
||||
|
||||
/*---------------------------------------------*/
|
||||
//3 The value of interface_msk: 4 bits
|
||||
/*---------------------------------------------*/
|
||||
#define PWR_INTF_SDIO_MSK BIT(0)
|
||||
#define PWR_INTF_USB_MSK BIT(1)
|
||||
#define PWR_INTF_PCI_MSK BIT(2)
|
||||
#define PWR_INTF_ALL_MSK (BIT(0)|BIT(1)|BIT(2)|BIT(3))
|
||||
|
||||
/*---------------------------------------------*/
|
||||
//3 The value of fab_msk: 4 bits
|
||||
/*---------------------------------------------*/
|
||||
#define PWR_FAB_TSMC_MSK BIT(0)
|
||||
#define PWR_FAB_UMC_MSK BIT(1)
|
||||
#define PWR_FAB_ALL_MSK (BIT(0)|BIT(1)|BIT(2)|BIT(3))
|
||||
|
||||
/*---------------------------------------------*/
|
||||
//3 The value of cut_msk: 8 bits
|
||||
/*---------------------------------------------*/
|
||||
#define PWR_CUT_TESTCHIP_MSK BIT(0)
|
||||
#define PWR_CUT_A_MSK BIT(1)
|
||||
#define PWR_CUT_B_MSK BIT(2)
|
||||
#define PWR_CUT_C_MSK BIT(3)
|
||||
#define PWR_CUT_D_MSK BIT(4)
|
||||
#define PWR_CUT_E_MSK BIT(5)
|
||||
#define PWR_CUT_F_MSK BIT(6)
|
||||
#define PWR_CUT_G_MSK BIT(7)
|
||||
#define PWR_CUT_ALL_MSK 0xFF
|
||||
|
||||
|
||||
typedef enum _PWRSEQ_CMD_DELAY_UNIT_
|
||||
{
|
||||
PWRSEQ_DELAY_US,
|
||||
PWRSEQ_DELAY_MS,
|
||||
} PWRSEQ_DELAY_UNIT;
|
||||
|
||||
typedef struct _WL_PWR_CFG_
|
||||
{
|
||||
u16 offset;
|
||||
u8 cut_msk;
|
||||
u8 fab_msk:4;
|
||||
u8 interface_msk:4;
|
||||
u8 base:4;
|
||||
u8 cmd:4;
|
||||
u8 msk;
|
||||
u8 value;
|
||||
} WLAN_PWR_CFG, *PWLAN_PWR_CFG;
|
||||
|
||||
|
||||
#define GET_PWR_CFG_OFFSET(__PWR_CMD) __PWR_CMD.offset
|
||||
#define GET_PWR_CFG_CUT_MASK(__PWR_CMD) __PWR_CMD.cut_msk
|
||||
#define GET_PWR_CFG_FAB_MASK(__PWR_CMD) __PWR_CMD.fab_msk
|
||||
#define GET_PWR_CFG_INTF_MASK(__PWR_CMD) __PWR_CMD.interface_msk
|
||||
#define GET_PWR_CFG_BASE(__PWR_CMD) __PWR_CMD.base
|
||||
#define GET_PWR_CFG_CMD(__PWR_CMD) __PWR_CMD.cmd
|
||||
#define GET_PWR_CFG_MASK(__PWR_CMD) __PWR_CMD.msk
|
||||
#define GET_PWR_CFG_VALUE(__PWR_CMD) __PWR_CMD.value
|
||||
|
||||
|
||||
//================================================================================
|
||||
// Prototype of protected function.
|
||||
//================================================================================
|
||||
u8 HalPwrSeqCmdParsing(
|
||||
PADAPTER padapter,
|
||||
u8 CutVersion,
|
||||
u8 FabVersion,
|
||||
u8 InterfaceType,
|
||||
WLAN_PWR_CFG PwrCfgCmd[]);
|
||||
|
||||
#endif
|
||||
|
||||
202
include/HalVerDef.h
Normal file
202
include/HalVerDef.h
Normal file
|
|
@ -0,0 +1,202 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_VERSION_DEF_H__
|
||||
#define __HAL_VERSION_DEF_H__
|
||||
|
||||
#define TRUE _TRUE
|
||||
#define FALSE _FALSE
|
||||
|
||||
// HAL_IC_TYPE_E
|
||||
typedef enum tag_HAL_IC_Type_Definition
|
||||
{
|
||||
CHIP_8192S = 0,
|
||||
CHIP_8188C = 1,
|
||||
CHIP_8192C = 2,
|
||||
CHIP_8192D = 3,
|
||||
CHIP_8723A = 4,
|
||||
CHIP_8188E = 5,
|
||||
CHIP_8812 = 6,
|
||||
CHIP_8821 = 7,
|
||||
CHIP_8723B = 8,
|
||||
CHIP_8192E = 9,
|
||||
CHIP_8814A = 10,
|
||||
CHIP_8703B = 11,
|
||||
CHIP_8188F = 12,
|
||||
}HAL_IC_TYPE_E;
|
||||
|
||||
//HAL_CHIP_TYPE_E
|
||||
typedef enum tag_HAL_CHIP_Type_Definition
|
||||
{
|
||||
TEST_CHIP = 0,
|
||||
NORMAL_CHIP = 1,
|
||||
FPGA = 2,
|
||||
}HAL_CHIP_TYPE_E;
|
||||
|
||||
//HAL_CUT_VERSION_E
|
||||
typedef enum tag_HAL_Cut_Version_Definition
|
||||
{
|
||||
A_CUT_VERSION = 0,
|
||||
B_CUT_VERSION = 1,
|
||||
C_CUT_VERSION = 2,
|
||||
D_CUT_VERSION = 3,
|
||||
E_CUT_VERSION = 4,
|
||||
F_CUT_VERSION = 5,
|
||||
G_CUT_VERSION = 6,
|
||||
H_CUT_VERSION = 7,
|
||||
I_CUT_VERSION = 8,
|
||||
J_CUT_VERSION = 9,
|
||||
K_CUT_VERSION = 10,
|
||||
}HAL_CUT_VERSION_E;
|
||||
|
||||
// HAL_Manufacturer
|
||||
typedef enum tag_HAL_Manufacturer_Version_Definition
|
||||
{
|
||||
CHIP_VENDOR_TSMC = 0,
|
||||
CHIP_VENDOR_UMC = 1,
|
||||
CHIP_VENDOR_SMIC = 2,
|
||||
}HAL_VENDOR_E;
|
||||
|
||||
typedef enum tag_HAL_RF_Type_Definition
|
||||
{
|
||||
RF_TYPE_1T1R = 0,
|
||||
RF_TYPE_1T2R = 1,
|
||||
RF_TYPE_2T2R = 2,
|
||||
RF_TYPE_2T3R = 3,
|
||||
RF_TYPE_2T4R = 4,
|
||||
RF_TYPE_3T3R = 5,
|
||||
RF_TYPE_3T4R = 6,
|
||||
RF_TYPE_4T4R = 7,
|
||||
}HAL_RF_TYPE_E;
|
||||
|
||||
typedef struct tag_HAL_VERSION
|
||||
{
|
||||
HAL_IC_TYPE_E ICType;
|
||||
HAL_CHIP_TYPE_E ChipType;
|
||||
HAL_CUT_VERSION_E CUTVersion;
|
||||
HAL_VENDOR_E VendorType;
|
||||
HAL_RF_TYPE_E RFType;
|
||||
u8 ROMVer;
|
||||
}HAL_VERSION,*PHAL_VERSION;
|
||||
|
||||
//VERSION_8192C VersionID;
|
||||
//HAL_VERSION VersionID;
|
||||
|
||||
// Get element
|
||||
#define GET_CVID_IC_TYPE(version) ((HAL_IC_TYPE_E)(((HAL_VERSION)version).ICType) )
|
||||
#define GET_CVID_CHIP_TYPE(version) ((HAL_CHIP_TYPE_E)(((HAL_VERSION)version).ChipType) )
|
||||
#define GET_CVID_RF_TYPE(version) ((HAL_RF_TYPE_E)(((HAL_VERSION)version).RFType))
|
||||
#define GET_CVID_MANUFACTUER(version) ((HAL_VENDOR_E)(((HAL_VERSION)version).VendorType))
|
||||
#define GET_CVID_CUT_VERSION(version) ((HAL_CUT_VERSION_E)(((HAL_VERSION)version).CUTVersion))
|
||||
#define GET_CVID_ROM_VERSION(version) ((((HAL_VERSION)version).ROMVer) & ROM_VERSION_MASK)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//Common Macro. --
|
||||
//----------------------------------------------------------------------------
|
||||
//HAL_VERSION VersionID
|
||||
|
||||
// HAL_IC_TYPE_E
|
||||
#if 0
|
||||
#define IS_81XXC(version) (((GET_CVID_IC_TYPE(version) == CHIP_8192C)||(GET_CVID_IC_TYPE(version) == CHIP_8188C))? TRUE : FALSE)
|
||||
#define IS_8723_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8723A)? TRUE : FALSE)
|
||||
#define IS_92D(version) ((GET_CVID_IC_TYPE(version) == CHIP_8192D)? TRUE : FALSE)
|
||||
#endif
|
||||
|
||||
#define IS_8188E(version) ((GET_CVID_IC_TYPE(version) == CHIP_8188E)? TRUE : FALSE)
|
||||
#define IS_8188F(version) ((GET_CVID_IC_TYPE(version) == CHIP_8188F) ? TRUE : FALSE)
|
||||
#define IS_8192E(version) ((GET_CVID_IC_TYPE(version) == CHIP_8192E)? TRUE : FALSE)
|
||||
#define IS_8812_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8812)? TRUE : FALSE)
|
||||
#define IS_8821_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8821)? TRUE : FALSE)
|
||||
#define IS_8814A_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8814A) ? TRUE : FALSE)
|
||||
#define IS_8723B_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8723B)? TRUE : FALSE)
|
||||
#define IS_8703B_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8703B)? TRUE : FALSE)
|
||||
|
||||
//HAL_CHIP_TYPE_E
|
||||
#define IS_TEST_CHIP(version) ((GET_CVID_CHIP_TYPE(version)==TEST_CHIP)? TRUE: FALSE)
|
||||
#define IS_NORMAL_CHIP(version) ((GET_CVID_CHIP_TYPE(version)==NORMAL_CHIP)? TRUE: FALSE)
|
||||
|
||||
//HAL_CUT_VERSION_E
|
||||
#define IS_A_CUT(version) ((GET_CVID_CUT_VERSION(version) == A_CUT_VERSION) ? TRUE : FALSE)
|
||||
#define IS_B_CUT(version) ((GET_CVID_CUT_VERSION(version) == B_CUT_VERSION) ? TRUE : FALSE)
|
||||
#define IS_C_CUT(version) ((GET_CVID_CUT_VERSION(version) == C_CUT_VERSION) ? TRUE : FALSE)
|
||||
#define IS_D_CUT(version) ((GET_CVID_CUT_VERSION(version) == D_CUT_VERSION) ? TRUE : FALSE)
|
||||
#define IS_E_CUT(version) ((GET_CVID_CUT_VERSION(version) == E_CUT_VERSION) ? TRUE : FALSE)
|
||||
#define IS_F_CUT(version) ((GET_CVID_CUT_VERSION(version) == F_CUT_VERSION) ? TRUE : FALSE)
|
||||
#define IS_I_CUT(version) ((GET_CVID_CUT_VERSION(version) == I_CUT_VERSION) ? TRUE : FALSE)
|
||||
#define IS_J_CUT(version) ((GET_CVID_CUT_VERSION(version) == J_CUT_VERSION) ? TRUE : FALSE)
|
||||
#define IS_K_CUT(version) ((GET_CVID_CUT_VERSION(version) == K_CUT_VERSION) ? TRUE : FALSE)
|
||||
|
||||
//HAL_VENDOR_E
|
||||
#define IS_CHIP_VENDOR_TSMC(version) ((GET_CVID_MANUFACTUER(version) == CHIP_VENDOR_TSMC)? TRUE: FALSE)
|
||||
#define IS_CHIP_VENDOR_UMC(version) ((GET_CVID_MANUFACTUER(version) == CHIP_VENDOR_UMC)? TRUE: FALSE)
|
||||
#define IS_CHIP_VENDOR_SMIC(version) ((GET_CVID_MANUFACTUER(version) == CHIP_VENDOR_SMIC)? TRUE: FALSE)
|
||||
|
||||
//HAL_RF_TYPE_E
|
||||
#define IS_1T1R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_1T1R)? TRUE : FALSE )
|
||||
#define IS_1T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_1T2R)? TRUE : FALSE)
|
||||
#define IS_2T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_2T2R)? TRUE : FALSE)
|
||||
#define IS_3T3R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_3T3R)? TRUE : FALSE)
|
||||
#define IS_3T4R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_3T4R)? TRUE : FALSE)
|
||||
#define IS_4T4R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_4T4R)? TRUE : FALSE)
|
||||
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//Chip version Macro. --
|
||||
//----------------------------------------------------------------------------
|
||||
#if 0
|
||||
#define IS_81XXC_TEST_CHIP(version) ((IS_81XXC(version) && (!IS_NORMAL_CHIP(version)))? TRUE: FALSE)
|
||||
|
||||
#define IS_92C_SERIAL(version) ((IS_81XXC(version) && IS_2T2R(version)) ? TRUE : FALSE)
|
||||
#define IS_81xxC_VENDOR_UMC_A_CUT(version) (IS_81XXC(version)?(IS_CHIP_VENDOR_UMC(version) ? (IS_A_CUT(version) ? TRUE : FALSE) : FALSE): FALSE)
|
||||
#define IS_81xxC_VENDOR_UMC_B_CUT(version) (IS_81XXC(version)?(IS_CHIP_VENDOR_UMC(version) ? (IS_B_CUT(version) ? TRUE : FALSE) : FALSE): FALSE)
|
||||
#define IS_81xxC_VENDOR_UMC_C_CUT(version) (IS_81XXC(version)?(IS_CHIP_VENDOR_UMC(version) ? (IS_C_CUT(version) ? TRUE : FALSE) : FALSE): FALSE)
|
||||
|
||||
#define IS_NORMAL_CHIP92D(version) (( IS_92D(version))?((GET_CVID_CHIP_TYPE(version)==NORMAL_CHIP)? TRUE: FALSE):FALSE)
|
||||
|
||||
#define IS_92D_SINGLEPHY(version) ((IS_92D(version)) ? (IS_2T2R(version) ? TRUE: FALSE) : FALSE)
|
||||
#define IS_92D_C_CUT(version) ((IS_92D(version)) ? (IS_C_CUT(version) ? TRUE : FALSE) : FALSE)
|
||||
#define IS_92D_D_CUT(version) ((IS_92D(version)) ? (IS_D_CUT(version) ? TRUE : FALSE) : FALSE)
|
||||
#define IS_92D_E_CUT(version) ((IS_92D(version)) ? (IS_E_CUT(version) ? TRUE : FALSE) : FALSE)
|
||||
|
||||
#define IS_8723A_A_CUT(version) ((IS_8723_SERIES(version)) ? ( IS_A_CUT(version)?TRUE : FALSE) : FALSE)
|
||||
#define IS_8723A_B_CUT(version) ((IS_8723_SERIES(version)) ? ( IS_B_CUT(version)?TRUE : FALSE) : FALSE)
|
||||
#endif
|
||||
|
||||
#define IS_VENDOR_8188E_I_CUT_SERIES(_Adapter) ((IS_8188E(GET_HAL_DATA(_Adapter)->VersionID)) ? ((GET_CVID_CUT_VERSION(GET_HAL_DATA(_Adapter)->VersionID) >= I_CUT_VERSION) ? TRUE : FALSE) : FALSE)
|
||||
|
||||
#define IS_VENDOR_8812A_TEST_CHIP(_Adapter) ((IS_8812_SERIES(GET_HAL_DATA(_Adapter)->VersionID)) ? ((IS_NORMAL_CHIP(GET_HAL_DATA(_Adapter)->VersionID)) ? FALSE : TRUE) : FALSE)
|
||||
#define IS_VENDOR_8812A_MP_CHIP(_Adapter) ((IS_8812_SERIES(GET_HAL_DATA(_Adapter)->VersionID)) ? ((IS_NORMAL_CHIP(GET_HAL_DATA(_Adapter)->VersionID)) ? TRUE : FALSE) : FALSE)
|
||||
#define IS_VENDOR_8812A_C_CUT(_Adapter) ((IS_8812_SERIES(GET_HAL_DATA(_Adapter)->VersionID)) ? ((GET_CVID_CUT_VERSION(GET_HAL_DATA(_Adapter)->VersionID) == C_CUT_VERSION) ? TRUE : FALSE) : FALSE)
|
||||
|
||||
#define IS_VENDOR_8821A_TEST_CHIP(_Adapter) ((IS_8821_SERIES(GET_HAL_DATA(_Adapter)->VersionID)) ? ((IS_NORMAL_CHIP(GET_HAL_DATA(_Adapter)->VersionID)) ? FALSE : TRUE) : FALSE)
|
||||
#define IS_VENDOR_8821A_MP_CHIP(_Adapter) ((IS_8821_SERIES(GET_HAL_DATA(_Adapter)->VersionID)) ? ((IS_NORMAL_CHIP(GET_HAL_DATA(_Adapter)->VersionID)) ? TRUE : FALSE) : FALSE)
|
||||
|
||||
#define IS_VENDOR_8192E_B_CUT(_Adapter) ((GET_CVID_CUT_VERSION(GET_HAL_DATA(_Adapter)->VersionID) == B_CUT_VERSION) ? TRUE : FALSE)
|
||||
|
||||
#define IS_VENDOR_8723B_TEST_CHIP(_Adapter) ((IS_8723B_SERIES(GET_HAL_DATA(_Adapter)->VersionID)) ? ((IS_NORMAL_CHIP(GET_HAL_DATA(_Adapter)->VersionID)) ? FALSE : TRUE) : FALSE)
|
||||
#define IS_VENDOR_8723B_MP_CHIP(_Adapter) ((IS_8723B_SERIES(GET_HAL_DATA(_Adapter)->VersionID)) ? ((IS_NORMAL_CHIP(GET_HAL_DATA(_Adapter)->VersionID)) ? TRUE : FALSE) : FALSE)
|
||||
|
||||
#define IS_VENDOR_8703B_TEST_CHIP(_Adapter) ((IS_8703B_SERIES(GET_HAL_DATA(_Adapter)->VersionID)) ? ((IS_NORMAL_CHIP(GET_HAL_DATA(_Adapter)->VersionID)) ? FALSE : TRUE) : FALSE)
|
||||
#define IS_VENDOR_8703B_MP_CHIP(_Adapter) ((IS_8703B_SERIES(GET_HAL_DATA(_Adapter)->VersionID)) ? ((IS_NORMAL_CHIP(GET_HAL_DATA(_Adapter)->VersionID)) ? TRUE : FALSE) : FALSE)
|
||||
#define IS_VENDOR_8814A_TEST_CHIP(_Adapter) ((IS_8814A_SERIES(GET_HAL_DATA(_Adapter)->VersionID)) ? ((IS_NORMAL_CHIP(GET_HAL_DATA(_Adapter)->VersionID)) ? FALSE : TRUE) : FALSE)
|
||||
#define IS_VENDOR_8814A_MP_CHIP(_Adapter) ((IS_8814A_SERIES(GET_HAL_DATA(_Adapter)->VersionID)) ? ((IS_NORMAL_CHIP(GET_HAL_DATA(_Adapter)->VersionID)) ? TRUE : FALSE) : FALSE)
|
||||
|
||||
#endif
|
||||
|
||||
305
include/autoconf.h
Normal file
305
include/autoconf.h
Normal file
|
|
@ -0,0 +1,305 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2014 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
/*
|
||||
* Public General Config
|
||||
*/
|
||||
#define AUTOCONF_INCLUDED
|
||||
|
||||
#define RTL871X_MODULE_NAME "8723CS"
|
||||
#define DRV_NAME "rtl8723cs"
|
||||
#ifndef CONFIG_RTL8703B
|
||||
#define CONFIG_RTL8703B
|
||||
#endif
|
||||
#define CONFIG_SDIO_HCI
|
||||
|
||||
#define PLATFORM_LINUX
|
||||
|
||||
|
||||
/*
|
||||
* Wi-Fi Functions Config
|
||||
*/
|
||||
#define CONFIG_80211N_HT
|
||||
#define CONFIG_RECV_REORDERING_CTRL
|
||||
|
||||
/* #define CONFIG_IOCTL_CFG80211 */ /* Set from Makefile */
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
/*
|
||||
* Indecate new sta asoc through cfg80211_new_sta
|
||||
* If kernel version >= 3.2 or
|
||||
* version < 3.2 but already apply cfg80211 patch,
|
||||
* RTW_USE_CFG80211_STA_EVENT must be defiend!
|
||||
*/
|
||||
/* #define RTW_USE_CFG80211_STA_EVENT */ /* Indecate new sta asoc through cfg80211_new_sta */
|
||||
#ifndef CONFIG_PLATFORM_INTEL_BYT
|
||||
#define CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER
|
||||
#endif /* !CONFIG_PLATFORM_INTEL_BYT */
|
||||
/* #define CONFIG_DEBUG_CFG80211 */
|
||||
#define CONFIG_SET_SCAN_DENY_TIMER
|
||||
#endif
|
||||
|
||||
#define CONFIG_AP_MODE
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#define CONFIG_NATIVEAP_MLME
|
||||
#ifndef CONFIG_NATIVEAP_MLME
|
||||
#define CONFIG_HOSTAPD_MLME
|
||||
#endif
|
||||
/* #define CONFIG_FIND_BEST_CHANNEL */
|
||||
#define CONFIG_TX_MCAST2UNI /* Support IP multicast->unicast */
|
||||
#endif
|
||||
|
||||
#define CONFIG_P2P
|
||||
#ifdef CONFIG_P2P
|
||||
/* Added by Albert 20110812
|
||||
The CONFIG_WFD is for supporting the Wi-Fi display */
|
||||
#define CONFIG_WFD
|
||||
|
||||
#define CONFIG_P2P_REMOVE_GROUP_INFO
|
||||
|
||||
/* #define CONFIG_DBG_P2P */
|
||||
#define CONFIG_P2P_PS
|
||||
/* #define CONFIG_P2P_IPS */
|
||||
#define CONFIG_P2P_OP_CHK_SOCIAL_CH
|
||||
#define CONFIG_CFG80211_ONECHANNEL_UNDER_CONCURRENT /* replace CONFIG_P2P_CHK_INVITE_CH_LIST flag */
|
||||
#define CONFIG_P2P_INVITE_IOT
|
||||
#endif
|
||||
|
||||
/* Added by Kurt 20110511 */
|
||||
#ifdef CONFIG_TDLS
|
||||
#define CONFIG_TDLS_DRIVER_SETUP
|
||||
/* #ifndef CONFIG_WFD
|
||||
#define CONFIG_WFD
|
||||
#endif */
|
||||
/* #define CONFIG_TDLS_AUTOSETUP */
|
||||
#define CONFIG_TDLS_AUTOCHECKALIVE
|
||||
#define CONFIG_TDLS_CH_SW /* Enable "CONFIG_TDLS_CH_SW" by default, however limit it to only work in wifi logo test mode but not in normal mode currently */
|
||||
#endif
|
||||
|
||||
/* #define CONFIG_CONCURRENT_MODE */ /* Set from Makefile */
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
/* #define CONFIG_HWPORT_SWAP */ /* Port0->Sec , Port1 -> Pri */
|
||||
#define CONFIG_RUNTIME_PORT_SWITCH
|
||||
#ifndef CONFIG_RUNTIME_PORT_SWITCH
|
||||
#define CONFIG_TSF_RESET_OFFLOAD /* For 2 PORT TSF SYNC. */
|
||||
#endif
|
||||
/* #define DBG_RUNTIME_PORT_SWITCH */
|
||||
#define CONFIG_SCAN_BACKOP
|
||||
#endif /* CONFIG_CONCURRENT_MODE */
|
||||
|
||||
#define CONFIG_LAYER2_ROAMING
|
||||
#define CONFIG_LAYER2_ROAMING_RESUME
|
||||
|
||||
/* #define CONFIG_80211D */
|
||||
|
||||
|
||||
/*
|
||||
* Hareware/Firmware Related Config
|
||||
*/
|
||||
/* #define CONFIG_BT_COEXIST */ /* Set from Makefile */
|
||||
/* #define CONFIG_ANTENNA_DIVERSITY */ /* Set from Makefile */
|
||||
/* #define SUPPORT_HW_RFOFF_DETECTED */
|
||||
|
||||
/* #define CONFIG_SW_LED */
|
||||
|
||||
#define CONFIG_XMIT_ACK
|
||||
#ifdef CONFIG_XMIT_ACK
|
||||
#define CONFIG_ACTIVE_KEEP_ALIVE_CHECK
|
||||
#endif
|
||||
|
||||
#define CONFIG_C2H_PACKET_EN
|
||||
|
||||
#define CONFIG_RF_GAIN_OFFSET
|
||||
|
||||
#define DISABLE_BB_RF 0
|
||||
|
||||
#define RTW_NOTCH_FILTER 0 /* 0:Disable, 1:Enable, */
|
||||
|
||||
|
||||
/*
|
||||
* Interface Related Config
|
||||
*/
|
||||
#define CONFIG_TX_AGGREGATION
|
||||
#define CONFIG_SDIO_RX_COPY
|
||||
#define CONFIG_XMIT_THREAD_MODE
|
||||
/* #define CONFIG_SDIO_TX_ENABLE_AVAL_INT */
|
||||
|
||||
|
||||
/*
|
||||
* Others
|
||||
*/
|
||||
/* #define CONFIG_MAC_LOOPBACK_DRIVER */
|
||||
|
||||
#define CONFIG_SKB_COPY /* for amsdu */
|
||||
|
||||
#define CONFIG_NEW_SIGNAL_STAT_PROCESS
|
||||
|
||||
#define CONFIG_EMBEDDED_FWIMG
|
||||
/* #define CONFIG_FILE_FWIMG */
|
||||
|
||||
#define CONFIG_LONG_DELAY_ISSUE
|
||||
/* #define CONFIG_PATCH_JOIN_WRONG_CHANNEL */
|
||||
#define CONFIG_ATTEMPT_TO_FIX_AP_BEACON_ERROR
|
||||
|
||||
|
||||
/*
|
||||
* Auto Config Section
|
||||
*/
|
||||
#ifdef CONFIG_MAC_LOOPBACK_DRIVER
|
||||
#undef CONFIG_IOCTL_CFG80211
|
||||
#undef CONFIG_AP_MODE
|
||||
#undef CONFIG_NATIVEAP_MLME
|
||||
#undef CONFIG_POWER_SAVING
|
||||
#undef CONFIG_BT_COEXIST
|
||||
#undef CONFIG_ANTENNA_DIVERSITY
|
||||
#undef SUPPORT_HW_RFOFF_DETECTED
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MP_INCLUDED
|
||||
#define MP_DRIVER 1
|
||||
#define CONFIG_MP_IWPRIV_SUPPORT
|
||||
/* disable unnecessary functions for MP */
|
||||
/* #undef CONFIG_POWER_SAVING
|
||||
#undef CONFIG_BT_COEXIST
|
||||
#undef CONFIG_ANTENNA_DIVERSITY
|
||||
#undef SUPPORT_HW_RFOFF_DETECTED */
|
||||
#else /* !CONFIG_MP_INCLUDED */
|
||||
#define MP_DRIVER 0
|
||||
#undef CONFIG_MP_IWPRIV_SUPPORT
|
||||
#endif /* !CONFIG_MP_INCLUDED */
|
||||
|
||||
#ifdef CONFIG_POWER_SAVING
|
||||
#define CONFIG_IPS
|
||||
#define CONFIG_LPS
|
||||
|
||||
#if defined(CONFIG_LPS) && (defined(CONFIG_GSPI_HCI) || defined(CONFIG_SDIO_HCI))
|
||||
#define CONFIG_LPS_LCLK
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_LPS
|
||||
#define CONFIG_CHECK_LEAVE_LPS
|
||||
#ifndef CONFIG_PLATFORM_INTEL_BYT
|
||||
#define CONFIG_LPS_SLOW_TRANSITION
|
||||
#endif /* !CONFIG_PLATFORM_INTEL_BYT */
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_LPS_LCLK
|
||||
#define CONFIG_DETECT_CPWM_BY_POLLING
|
||||
#define CONFIG_LPS_RPWM_TIMER
|
||||
#if defined(CONFIG_LPS_RPWM_TIMER) || defined(CONFIG_DETECT_CPWM_BY_POLLING)
|
||||
#define LPS_RPWM_WAIT_MS 300
|
||||
#endif
|
||||
#define CONFIG_LPS_LCLK_WD_TIMER /* Watch Dog timer in LPS LCLK */
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IPS
|
||||
#define CONFIG_IPS_CHECK_IN_WD /* Do IPS Check in WatchDog. */
|
||||
/* #define CONFIG_SWLPS_IN_IPS */ /* Do SW LPS flow when entering and leaving IPS */
|
||||
/* #define CONFIG_FWLPS_IN_IPS */ /* issue H2C command to let FW do LPS when entering IPS */
|
||||
#endif
|
||||
#endif /* CONFIG_POWER_SAVING */
|
||||
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
/* for ODM and outsrc BT-Coex */
|
||||
|
||||
#ifndef CONFIG_LPS
|
||||
#define CONFIG_LPS /* download reserved page to FW */
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_C2H_PACKET_EN
|
||||
#define CONFIG_C2H_PACKET_EN
|
||||
#endif
|
||||
#endif /* !CONFIG_BT_COEXIST */
|
||||
|
||||
#ifdef CONFIG_WOWLAN
|
||||
/* #define CONFIG_GTK_OL */
|
||||
#define CONFIG_ARP_KEEP_ALIVE
|
||||
#endif /* CONFIG_WOWLAN */
|
||||
|
||||
#ifdef CONFIG_GPIO_WAKEUP
|
||||
#ifndef WAKEUP_GPIO_IDX
|
||||
//#define WAKEUP_GPIO_IDX 12 /* WIFI Chip Side */
|
||||
#define WAKEUP_GPIO_IDX 8 /* WIFI Chip Side */
|
||||
#endif /* !WAKEUP_GPIO_IDX */
|
||||
#endif /* CONFIG_GPIO_WAKEUP */
|
||||
|
||||
|
||||
|
||||
#ifdef CONFIG_ANTENNA_DIVERSITY
|
||||
#define CONFIG_HW_ANTENNA_DIVERSITY
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Platform dependent
|
||||
*/
|
||||
#ifdef CONFIG_PLATFORM_SPRD
|
||||
|
||||
#undef CONFIG_SDIO_RX_COPY
|
||||
|
||||
#ifdef ANDROID_2X
|
||||
|
||||
#define CONFIG_SDIO_RX_COPY
|
||||
|
||||
#else /* !ANDROID_2X */
|
||||
#undef CONFIG_WOWLAN
|
||||
#undef CONFIG_WOWLAN_8723
|
||||
/* #define CONFIG_SDIO_RX_COPY */
|
||||
/* #define CONFIG_LINKED_LCOK */
|
||||
#define CONFIG_AUTH_DIRECT_WITHOUT_BCN
|
||||
/* #define CONFIG_DISCONNECT_H2CWAY */
|
||||
/* #define CONFIG_DONT_CARE_TP */
|
||||
#define CONFIG_LOW_PWR_LPS
|
||||
/* #define CONFIG_CMCC_TEST */
|
||||
|
||||
/* 1) LPS unit is only 102 ms, it's not
|
||||
a good idear to retry it use timer,
|
||||
2) we must wait ACK, or lots of IO
|
||||
is not allowed under 32k, because
|
||||
this will cause hw hang */
|
||||
#undef CONFIG_LPS_RPWM_TIMER
|
||||
#define CONFIG_WAIT_PS_ACK
|
||||
#define CONFIG_SOFTAP_11N
|
||||
#define CONFIG_CHECK_BT_HANG
|
||||
|
||||
/* #define CONFIG_8703BS_TEST */
|
||||
#endif /* !ANDROID_2X */
|
||||
|
||||
#endif /* CONFIG_PLATFORM_SPRD */
|
||||
|
||||
|
||||
/*
|
||||
* Debug Related Config
|
||||
*/
|
||||
#define CONFIG_DEBUG
|
||||
|
||||
#ifdef CONFIG_DEBUG
|
||||
#define DBG 1 /* for ODM & BTCOEX debug */
|
||||
/* #define CONFIG_DEBUG_RTL871X */ /* RT_TRACE, RT_PRINT_DATA, _func_enter_, _func_exit_ */
|
||||
#else /* !CONFIG_DEBUG */
|
||||
#define DBG 0 /* for ODM & BTCOEX debug */
|
||||
#endif /* !CONFIG_DEBUG */
|
||||
|
||||
#define CONFIG_PROC_DEBUG
|
||||
|
||||
#define DBG_CONFIG_ERROR_DETECT
|
||||
/* #define DBG_XMIT_BUF */
|
||||
/* #define DBG_XMIT_BUF_EXT */
|
||||
#define DBG_CHECK_FW_PS_STATE
|
||||
#define DBG_CHECK_FW_PS_STATE_H2C
|
||||
/* #define CONFIG_FW_C2H_DEBUG */
|
||||
385
include/basic_types.h
Normal file
385
include/basic_types.h
Normal file
|
|
@ -0,0 +1,385 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __BASIC_TYPES_H__
|
||||
#define __BASIC_TYPES_H__
|
||||
|
||||
|
||||
#define SUCCESS 0
|
||||
#define FAIL (-1)
|
||||
|
||||
#ifndef TRUE
|
||||
#define _TRUE 1
|
||||
#else
|
||||
#define _TRUE TRUE
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
#define _FALSE 0
|
||||
#else
|
||||
#define _FALSE FALSE
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
|
||||
typedef signed char s8;
|
||||
typedef unsigned char u8;
|
||||
|
||||
typedef signed short s16;
|
||||
typedef unsigned short u16;
|
||||
|
||||
typedef signed long s32;
|
||||
typedef unsigned long u32;
|
||||
|
||||
typedef unsigned int uint;
|
||||
typedef signed int sint;
|
||||
|
||||
|
||||
typedef signed long long s64;
|
||||
typedef unsigned long long u64;
|
||||
|
||||
#ifdef NDIS50_MINIPORT
|
||||
|
||||
#define NDIS_MAJOR_VERSION 5
|
||||
#define NDIS_MINOR_VERSION 0
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef NDIS51_MINIPORT
|
||||
|
||||
#define NDIS_MAJOR_VERSION 5
|
||||
#define NDIS_MINOR_VERSION 1
|
||||
|
||||
#endif
|
||||
|
||||
typedef NDIS_PROC proc_t;
|
||||
|
||||
typedef LONG atomic_t;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
#include <linux/version.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/utsname.h>
|
||||
#define IN
|
||||
#define OUT
|
||||
#define VOID void
|
||||
#define NDIS_OID uint
|
||||
#define NDIS_STATUS uint
|
||||
|
||||
typedef signed int sint;
|
||||
|
||||
#ifndef PVOID
|
||||
typedef void * PVOID;
|
||||
//#define PVOID (void *)
|
||||
#endif
|
||||
|
||||
#define UCHAR u8
|
||||
#define USHORT u16
|
||||
#define UINT u32
|
||||
#define ULONG u32
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19))
|
||||
typedef _Bool bool;
|
||||
#endif
|
||||
|
||||
typedef void (*proc_t)(void*);
|
||||
|
||||
typedef __kernel_size_t SIZE_T;
|
||||
typedef __kernel_ssize_t SSIZE_T;
|
||||
#define FIELD_OFFSET(s,field) ((SSIZE_T)&((s*)(0))->field)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef PLATFORM_FREEBSD
|
||||
|
||||
typedef signed char s8;
|
||||
typedef unsigned char u8;
|
||||
|
||||
typedef signed short s16;
|
||||
typedef unsigned short u16;
|
||||
|
||||
typedef signed int s32;
|
||||
typedef unsigned int u32;
|
||||
|
||||
typedef unsigned int uint;
|
||||
typedef signed int sint;
|
||||
typedef long atomic_t;
|
||||
|
||||
typedef signed long long s64;
|
||||
typedef unsigned long long u64;
|
||||
#define IN
|
||||
#define OUT
|
||||
#define VOID void
|
||||
#define NDIS_OID uint
|
||||
#define NDIS_STATUS uint
|
||||
|
||||
#ifndef PVOID
|
||||
typedef void * PVOID;
|
||||
//#define PVOID (void *)
|
||||
#endif
|
||||
typedef u32 dma_addr_t;
|
||||
#define UCHAR u8
|
||||
#define USHORT u16
|
||||
#define UINT u32
|
||||
#define ULONG u32
|
||||
|
||||
typedef void (*proc_t)(void*);
|
||||
|
||||
typedef unsigned int __kernel_size_t;
|
||||
typedef int __kernel_ssize_t;
|
||||
|
||||
typedef __kernel_size_t SIZE_T;
|
||||
typedef __kernel_ssize_t SSIZE_T;
|
||||
#define FIELD_OFFSET(s,field) ((SSIZE_T)&((s*)(0))->field)
|
||||
|
||||
#endif
|
||||
|
||||
#define MEM_ALIGNMENT_OFFSET (sizeof (SIZE_T))
|
||||
#define MEM_ALIGNMENT_PADDING (sizeof(SIZE_T) - 1)
|
||||
|
||||
#define SIZE_PTR SIZE_T
|
||||
#define SSIZE_PTR SSIZE_T
|
||||
|
||||
/*
|
||||
* Continuous bits starting from least significant bit
|
||||
* Example:
|
||||
* BIT_LEN_MASK_32(0) => 0x00000000
|
||||
* BIT_LEN_MASK_32(1) => 0x00000001
|
||||
* BIT_LEN_MASK_32(2) => 0x00000003
|
||||
* BIT_LEN_MASK_32(32) => 0xFFFFFFFF
|
||||
*/
|
||||
#define BIT_LEN_MASK_32(__BitLen) ((u32)(0xFFFFFFFF >> (32 - (__BitLen))))
|
||||
#define BIT_LEN_MASK_16(__BitLen) ((u16)(0xFFFF >> (16 - (__BitLen))))
|
||||
#define BIT_LEN_MASK_8(__BitLen) ((u8)(0xFF >> (8 - (__BitLen))))
|
||||
|
||||
/*
|
||||
* Continuous bits starting from least significant bit
|
||||
* Example:
|
||||
* BIT_OFFSET_LEN_MASK_32(0, 2) => 0x00000003
|
||||
* BIT_OFFSET_LEN_MASK_32(16, 2) => 0x00030000
|
||||
*/
|
||||
#define BIT_OFFSET_LEN_MASK_32(__BitOffset, __BitLen) ((u32)(BIT_LEN_MASK_32(__BitLen) << (__BitOffset)))
|
||||
#define BIT_OFFSET_LEN_MASK_16(__BitOffset, __BitLen) ((u16)(BIT_LEN_MASK_16(__BitLen) << (__BitOffset)))
|
||||
#define BIT_OFFSET_LEN_MASK_8(__BitOffset, __BitLen) ((u8)(BIT_LEN_MASK_8(__BitLen) << (__BitOffset)))
|
||||
|
||||
/*
|
||||
* Convert LE data to host byte order
|
||||
*/
|
||||
#define EF1Byte (u8)
|
||||
#define EF2Byte le16_to_cpu
|
||||
#define EF4Byte le32_to_cpu
|
||||
|
||||
/*
|
||||
* Read LE data from memory to host byte order
|
||||
*/
|
||||
#define ReadLE4Byte(_ptr) le32_to_cpu(*((u32 *)(_ptr)))
|
||||
#define ReadLE2Byte(_ptr) le16_to_cpu(*((u16 *)(_ptr)))
|
||||
#define ReadLE1Byte(_ptr) (*((u8 *)(_ptr)))
|
||||
|
||||
/*
|
||||
* Read BE data from memory to host byte order
|
||||
*/
|
||||
#define ReadBEE4Byte(_ptr) be32_to_cpu(*((u32 *)(_ptr)))
|
||||
#define ReadBE2Byte(_ptr) be16_to_cpu(*((u16 *)(_ptr)))
|
||||
#define ReadBE1Byte(_ptr) (*((u8 *)(_ptr)))
|
||||
|
||||
/*
|
||||
* Write host byte order data to memory in LE order
|
||||
*/
|
||||
#define WriteLE4Byte(_ptr, _val) (*((u32 *)(_ptr))) = cpu_to_le32(_val)
|
||||
#define WriteLE2Byte(_ptr, _val) (*((u16 *)(_ptr))) = cpu_to_le16(_val)
|
||||
#define WriteLE1Byte(_ptr, _val) (*((u8 *)(_ptr))) = ((u8)(_val))
|
||||
|
||||
/*
|
||||
* Write host byte order data to memory in BE order
|
||||
*/
|
||||
#define WriteBE4Byte(_ptr, _val) (*((u32 *)(_ptr))) = cpu_to_be32(_val)
|
||||
#define WriteBE2Byte(_ptr, _val) (*((u16 *)(_ptr))) = cpu_to_be16(_val)
|
||||
#define WriteBE1Byte(_ptr, _val) (*((u8 *)(_ptr))) = ((u8)(_val))
|
||||
|
||||
/*
|
||||
* Return 4-byte value in host byte ordering from 4-byte pointer in litten-endian system.
|
||||
*/
|
||||
#define LE_P4BYTE_TO_HOST_4BYTE(__pStart) (le32_to_cpu(*((u32 *)(__pStart))))
|
||||
#define LE_P2BYTE_TO_HOST_2BYTE(__pStart) (le16_to_cpu(*((u16 *)(__pStart))))
|
||||
#define LE_P1BYTE_TO_HOST_1BYTE(__pStart) ((*((u8 *)(__pStart))))
|
||||
|
||||
/*
|
||||
* Return 4-byte value in host byte ordering from 4-byte pointer in big-endian system.
|
||||
*/
|
||||
#define BE_P4BYTE_TO_HOST_4BYTE(__pStart) (be32_to_cpu(*((u32 *)(__pStart))))
|
||||
#define BE_P2BYTE_TO_HOST_2BYTE(__pStart) (be16_to_cpu(*((u16 *)(__pStart))))
|
||||
#define BE_P1BYTE_TO_HOST_1BYTE(__pStart) ((*((u8 *)(__pStart))))
|
||||
|
||||
/*
|
||||
* Translate subfield (continuous bits in little-endian) of 4-byte value in LE byte to
|
||||
* 4-byte value in host byte ordering.
|
||||
*/
|
||||
#define LE_BITS_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
((LE_P4BYTE_TO_HOST_4BYTE(__pStart) >> (__BitOffset)) & BIT_LEN_MASK_32(__BitLen))
|
||||
|
||||
#define LE_BITS_TO_2BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
((LE_P2BYTE_TO_HOST_2BYTE(__pStart) >> (__BitOffset)) & BIT_LEN_MASK_16(__BitLen))
|
||||
|
||||
#define LE_BITS_TO_1BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
((LE_P1BYTE_TO_HOST_1BYTE(__pStart) >> (__BitOffset)) & BIT_LEN_MASK_8(__BitLen))
|
||||
|
||||
/*
|
||||
* Translate subfield (continuous bits in big-endian) of 4-byte value in BE byte to
|
||||
* 4-byte value in host byte ordering.
|
||||
*/
|
||||
#define BE_BITS_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
((BE_P4BYTE_TO_HOST_4BYTE(__pStart) >> (__BitOffset)) & BIT_LEN_MASK_32(__BitLen))
|
||||
|
||||
#define BE_BITS_TO_2BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
((BE_P2BYTE_TO_HOST_2BYTE(__pStart) >> (__BitOffset)) & BIT_LEN_MASK_16(__BitLen))
|
||||
|
||||
#define BE_BITS_TO_1BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
((BE_P1BYTE_TO_HOST_1BYTE(__pStart) >> (__BitOffset)) & BIT_LEN_MASK_8(__BitLen))
|
||||
|
||||
/*
|
||||
* Mask subfield (continuous bits in little-endian) of 4-byte value in LE byte oredering
|
||||
* and return the result in 4-byte value in host byte ordering.
|
||||
*/
|
||||
#define LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
(LE_P4BYTE_TO_HOST_4BYTE(__pStart) & (~BIT_OFFSET_LEN_MASK_32(__BitOffset, __BitLen)))
|
||||
|
||||
#define LE_BITS_CLEARED_TO_2BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
(LE_P2BYTE_TO_HOST_2BYTE(__pStart) & (~BIT_OFFSET_LEN_MASK_16(__BitOffset, __BitLen)))
|
||||
|
||||
#define LE_BITS_CLEARED_TO_1BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
(LE_P1BYTE_TO_HOST_1BYTE(__pStart) & (~BIT_OFFSET_LEN_MASK_8(__BitOffset, __BitLen)))
|
||||
|
||||
/*
|
||||
* Mask subfield (continuous bits in big-endian) of 4-byte value in BE byte oredering
|
||||
* and return the result in 4-byte value in host byte ordering.
|
||||
*/
|
||||
#define BE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
(BE_P4BYTE_TO_HOST_4BYTE(__pStart) & (~BIT_OFFSET_LEN_MASK_32(__BitOffset, __BitLen)))
|
||||
|
||||
#define BE_BITS_CLEARED_TO_2BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
(BE_P2BYTE_TO_HOST_2BYTE(__pStart) & (~BIT_OFFSET_LEN_MASK_16(__BitOffset, __BitLen)))
|
||||
|
||||
#define BE_BITS_CLEARED_TO_1BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
(BE_P1BYTE_TO_HOST_1BYTE(__pStart) & (~BIT_OFFSET_LEN_MASK_8(__BitOffset, __BitLen)))
|
||||
|
||||
/*
|
||||
* Set subfield of little-endian 4-byte value to specified value.
|
||||
*/
|
||||
#define SET_BITS_TO_LE_4BYTE(__pStart, __BitOffset, __BitLen, __Value) \
|
||||
do { \
|
||||
if (__BitOffset == 0 && __BitLen == 32) \
|
||||
WriteLE4Byte(__pStart, __Value); \
|
||||
else { \
|
||||
WriteLE4Byte(__pStart, \
|
||||
LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
| \
|
||||
((((u32)__Value) & BIT_LEN_MASK_32(__BitLen)) << (__BitOffset)) \
|
||||
); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define SET_BITS_TO_LE_2BYTE(__pStart, __BitOffset, __BitLen, __Value) \
|
||||
do { \
|
||||
if (__BitOffset == 0 && __BitLen == 16) \
|
||||
WriteLE2Byte(__pStart, __Value); \
|
||||
else { \
|
||||
WriteLE2Byte(__pStart, \
|
||||
LE_BITS_CLEARED_TO_2BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
| \
|
||||
((((u16)__Value) & BIT_LEN_MASK_16(__BitLen)) << (__BitOffset)) \
|
||||
); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define SET_BITS_TO_LE_1BYTE(__pStart, __BitOffset, __BitLen, __Value) \
|
||||
do { \
|
||||
if (__BitOffset == 0 && __BitLen == 8) \
|
||||
WriteLE1Byte(__pStart, __Value); \
|
||||
else { \
|
||||
WriteLE1Byte(__pStart, \
|
||||
LE_BITS_CLEARED_TO_1BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
| \
|
||||
((((u8)__Value) & BIT_LEN_MASK_8(__BitLen)) << (__BitOffset)) \
|
||||
); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Set subfield of big-endian 4-byte value to specified value.
|
||||
*/
|
||||
#define SET_BITS_TO_BE_4BYTE(__pStart, __BitOffset, __BitLen, __Value) \
|
||||
do { \
|
||||
if (__BitOffset == 0 && __BitLen == 32) \
|
||||
WriteBE4Byte(__pStart, __Value); \
|
||||
else { \
|
||||
WriteBE4Byte(__pStart, \
|
||||
BE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
| \
|
||||
((((u32)__Value) & BIT_LEN_MASK_32(__BitLen)) << (__BitOffset)) \
|
||||
); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define SET_BITS_TO_BE_2BYTE(__pStart, __BitOffset, __BitLen, __Value) \
|
||||
do { \
|
||||
if (__BitOffset == 0 && __BitLen == 16) \
|
||||
WriteBE2Byte(__pStart, __Value); \
|
||||
else { \
|
||||
WriteBE2Byte(__pStart, \
|
||||
BE_BITS_CLEARED_TO_2BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
| \
|
||||
((((u16)__Value) & BIT_LEN_MASK_16(__BitLen)) << (__BitOffset)) \
|
||||
); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define SET_BITS_TO_BE_1BYTE(__pStart, __BitOffset, __BitLen, __Value) \
|
||||
do { \
|
||||
if (__BitOffset == 0 && __BitLen == 8) \
|
||||
WriteBE1Byte(__pStart, __Value); \
|
||||
else { \
|
||||
WriteBE1Byte(__pStart, \
|
||||
BE_BITS_CLEARED_TO_1BYTE(__pStart, __BitOffset, __BitLen) \
|
||||
| \
|
||||
((((u8)__Value) & BIT_LEN_MASK_8(__BitLen)) << (__BitOffset)) \
|
||||
); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
// Get the N-bytes aligment offset from the current length
|
||||
#define N_BYTE_ALIGMENT(__Value, __Aligment) ((__Aligment == 1) ? (__Value) : (((__Value + __Aligment - 1) / __Aligment) * __Aligment))
|
||||
|
||||
typedef unsigned char BOOLEAN, *PBOOLEAN, boolean;
|
||||
|
||||
#define TEST_FLAG(__Flag,__testFlag) (((__Flag) & (__testFlag)) != 0)
|
||||
#define SET_FLAG(__Flag, __setFlag) ((__Flag) |= __setFlag)
|
||||
#define CLEAR_FLAG(__Flag, __clearFlag) ((__Flag) &= ~(__clearFlag))
|
||||
#define CLEAR_FLAGS(__Flag) ((__Flag) = 0)
|
||||
#define TEST_FLAGS(__Flag, __testFlags) (((__Flag) & (__testFlags)) == (__testFlags))
|
||||
|
||||
#endif //__BASIC_TYPES_H__
|
||||
|
||||
88
include/byteorder/big_endian.h
Normal file
88
include/byteorder/big_endian.h
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _LINUX_BYTEORDER_BIG_ENDIAN_H
|
||||
#define _LINUX_BYTEORDER_BIG_ENDIAN_H
|
||||
|
||||
#ifndef __BIG_ENDIAN
|
||||
#define __BIG_ENDIAN 4321
|
||||
#endif
|
||||
#ifndef __BIG_ENDIAN_BITFIELD
|
||||
#define __BIG_ENDIAN_BITFIELD
|
||||
#endif
|
||||
|
||||
#include <byteorder/swab.h>
|
||||
|
||||
#define __constant_htonl(x) ((__u32)(x))
|
||||
#define __constant_ntohl(x) ((__u32)(x))
|
||||
#define __constant_htons(x) ((__u16)(x))
|
||||
#define __constant_ntohs(x) ((__u16)(x))
|
||||
#define __constant_cpu_to_le64(x) ___constant_swab64((x))
|
||||
#define __constant_le64_to_cpu(x) ___constant_swab64((x))
|
||||
#define __constant_cpu_to_le32(x) ___constant_swab32((x))
|
||||
#define __constant_le32_to_cpu(x) ___constant_swab32((x))
|
||||
#define __constant_cpu_to_le16(x) ___constant_swab16((x))
|
||||
#define __constant_le16_to_cpu(x) ___constant_swab16((x))
|
||||
#define __constant_cpu_to_be64(x) ((__u64)(x))
|
||||
#define __constant_be64_to_cpu(x) ((__u64)(x))
|
||||
#define __constant_cpu_to_be32(x) ((__u32)(x))
|
||||
#define __constant_be32_to_cpu(x) ((__u32)(x))
|
||||
#define __constant_cpu_to_be16(x) ((__u16)(x))
|
||||
#define __constant_be16_to_cpu(x) ((__u16)(x))
|
||||
#define __cpu_to_le64(x) __swab64((x))
|
||||
#define __le64_to_cpu(x) __swab64((x))
|
||||
#define __cpu_to_le32(x) __swab32((x))
|
||||
#define __le32_to_cpu(x) __swab32((x))
|
||||
#define __cpu_to_le16(x) __swab16((x))
|
||||
#define __le16_to_cpu(x) __swab16((x))
|
||||
#define __cpu_to_be64(x) ((__u64)(x))
|
||||
#define __be64_to_cpu(x) ((__u64)(x))
|
||||
#define __cpu_to_be32(x) ((__u32)(x))
|
||||
#define __be32_to_cpu(x) ((__u32)(x))
|
||||
#define __cpu_to_be16(x) ((__u16)(x))
|
||||
#define __be16_to_cpu(x) ((__u16)(x))
|
||||
#define __cpu_to_le64p(x) __swab64p((x))
|
||||
#define __le64_to_cpup(x) __swab64p((x))
|
||||
#define __cpu_to_le32p(x) __swab32p((x))
|
||||
#define __le32_to_cpup(x) __swab32p((x))
|
||||
#define __cpu_to_le16p(x) __swab16p((x))
|
||||
#define __le16_to_cpup(x) __swab16p((x))
|
||||
#define __cpu_to_be64p(x) (*(__u64*)(x))
|
||||
#define __be64_to_cpup(x) (*(__u64*)(x))
|
||||
#define __cpu_to_be32p(x) (*(__u32*)(x))
|
||||
#define __be32_to_cpup(x) (*(__u32*)(x))
|
||||
#define __cpu_to_be16p(x) (*(__u16*)(x))
|
||||
#define __be16_to_cpup(x) (*(__u16*)(x))
|
||||
#define __cpu_to_le64s(x) __swab64s((x))
|
||||
#define __le64_to_cpus(x) __swab64s((x))
|
||||
#define __cpu_to_le32s(x) __swab32s((x))
|
||||
#define __le32_to_cpus(x) __swab32s((x))
|
||||
#define __cpu_to_le16s(x) __swab16s((x))
|
||||
#define __le16_to_cpus(x) __swab16s((x))
|
||||
#define __cpu_to_be64s(x) do {} while (0)
|
||||
#define __be64_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_be32s(x) do {} while (0)
|
||||
#define __be32_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_be16s(x) do {} while (0)
|
||||
#define __be16_to_cpus(x) do {} while (0)
|
||||
|
||||
#include <byteorder/generic.h>
|
||||
|
||||
#endif /* _LINUX_BYTEORDER_BIG_ENDIAN_H */
|
||||
|
||||
213
include/byteorder/generic.h
Normal file
213
include/byteorder/generic.h
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _LINUX_BYTEORDER_GENERIC_H
|
||||
#define _LINUX_BYTEORDER_GENERIC_H
|
||||
|
||||
/*
|
||||
* linux/byteorder_generic.h
|
||||
* Generic Byte-reordering support
|
||||
*
|
||||
* Francois-Rene Rideau <fare@tunes.org> 19970707
|
||||
* gathered all the good ideas from all asm-foo/byteorder.h into one file,
|
||||
* cleaned them up.
|
||||
* I hope it is compliant with non-GCC compilers.
|
||||
* I decided to put __BYTEORDER_HAS_U64__ in byteorder.h,
|
||||
* because I wasn't sure it would be ok to put it in types.h
|
||||
* Upgraded it to 2.1.43
|
||||
* Francois-Rene Rideau <fare@tunes.org> 19971012
|
||||
* Upgraded it to 2.1.57
|
||||
* to please Linus T., replaced huge #ifdef's between little/big endian
|
||||
* by nestedly #include'd files.
|
||||
* Francois-Rene Rideau <fare@tunes.org> 19971205
|
||||
* Made it to 2.1.71; now a facelift:
|
||||
* Put files under include/linux/byteorder/
|
||||
* Split swab from generic support.
|
||||
*
|
||||
* TODO:
|
||||
* = Regular kernel maintainers could also replace all these manual
|
||||
* byteswap macros that remain, disseminated among drivers,
|
||||
* after some grep or the sources...
|
||||
* = Linus might want to rename all these macros and files to fit his taste,
|
||||
* to fit his personal naming scheme.
|
||||
* = it seems that a few drivers would also appreciate
|
||||
* nybble swapping support...
|
||||
* = every architecture could add their byteswap macro in asm/byteorder.h
|
||||
* see how some architectures already do (i386, alpha, ppc, etc)
|
||||
* = cpu_to_beXX and beXX_to_cpu might some day need to be well
|
||||
* distinguished throughout the kernel. This is not the case currently,
|
||||
* since little endian, big endian, and pdp endian machines needn't it.
|
||||
* But this might be the case for, say, a port of Linux to 20/21 bit
|
||||
* architectures (and F21 Linux addict around?).
|
||||
*/
|
||||
|
||||
/*
|
||||
* The following macros are to be defined by <asm/byteorder.h>:
|
||||
*
|
||||
* Conversion of long and short int between network and host format
|
||||
* ntohl(__u32 x)
|
||||
* ntohs(__u16 x)
|
||||
* htonl(__u32 x)
|
||||
* htons(__u16 x)
|
||||
* It seems that some programs (which? where? or perhaps a standard? POSIX?)
|
||||
* might like the above to be functions, not macros (why?).
|
||||
* if that's true, then detect them, and take measures.
|
||||
* Anyway, the measure is: define only ___ntohl as a macro instead,
|
||||
* and in a separate file, have
|
||||
* unsigned long inline ntohl(x){return ___ntohl(x);}
|
||||
*
|
||||
* The same for constant arguments
|
||||
* __constant_ntohl(__u32 x)
|
||||
* __constant_ntohs(__u16 x)
|
||||
* __constant_htonl(__u32 x)
|
||||
* __constant_htons(__u16 x)
|
||||
*
|
||||
* Conversion of XX-bit integers (16- 32- or 64-)
|
||||
* between native CPU format and little/big endian format
|
||||
* 64-bit stuff only defined for proper architectures
|
||||
* cpu_to_[bl]eXX(__uXX x)
|
||||
* [bl]eXX_to_cpu(__uXX x)
|
||||
*
|
||||
* The same, but takes a pointer to the value to convert
|
||||
* cpu_to_[bl]eXXp(__uXX x)
|
||||
* [bl]eXX_to_cpup(__uXX x)
|
||||
*
|
||||
* The same, but change in situ
|
||||
* cpu_to_[bl]eXXs(__uXX x)
|
||||
* [bl]eXX_to_cpus(__uXX x)
|
||||
*
|
||||
* See asm-foo/byteorder.h for examples of how to provide
|
||||
* architecture-optimized versions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#if defined(PLATFORM_LINUX) || defined(PLATFORM_WINDOWS) || defined(PLATFORM_MPIXEL) || defined(PLATFORM_FREEBSD)
|
||||
/*
|
||||
* inside the kernel, we can use nicknames;
|
||||
* outside of it, we must avoid POSIX namespace pollution...
|
||||
*/
|
||||
#define cpu_to_le64 __cpu_to_le64
|
||||
#define le64_to_cpu __le64_to_cpu
|
||||
#define cpu_to_le32 __cpu_to_le32
|
||||
#define le32_to_cpu __le32_to_cpu
|
||||
#define cpu_to_le16 __cpu_to_le16
|
||||
#define le16_to_cpu __le16_to_cpu
|
||||
#define cpu_to_be64 __cpu_to_be64
|
||||
#define be64_to_cpu __be64_to_cpu
|
||||
#define cpu_to_be32 __cpu_to_be32
|
||||
#define be32_to_cpu __be32_to_cpu
|
||||
#define cpu_to_be16 __cpu_to_be16
|
||||
#define be16_to_cpu __be16_to_cpu
|
||||
#define cpu_to_le64p __cpu_to_le64p
|
||||
#define le64_to_cpup __le64_to_cpup
|
||||
#define cpu_to_le32p __cpu_to_le32p
|
||||
#define le32_to_cpup __le32_to_cpup
|
||||
#define cpu_to_le16p __cpu_to_le16p
|
||||
#define le16_to_cpup __le16_to_cpup
|
||||
#define cpu_to_be64p __cpu_to_be64p
|
||||
#define be64_to_cpup __be64_to_cpup
|
||||
#define cpu_to_be32p __cpu_to_be32p
|
||||
#define be32_to_cpup __be32_to_cpup
|
||||
#define cpu_to_be16p __cpu_to_be16p
|
||||
#define be16_to_cpup __be16_to_cpup
|
||||
#define cpu_to_le64s __cpu_to_le64s
|
||||
#define le64_to_cpus __le64_to_cpus
|
||||
#define cpu_to_le32s __cpu_to_le32s
|
||||
#define le32_to_cpus __le32_to_cpus
|
||||
#define cpu_to_le16s __cpu_to_le16s
|
||||
#define le16_to_cpus __le16_to_cpus
|
||||
#define cpu_to_be64s __cpu_to_be64s
|
||||
#define be64_to_cpus __be64_to_cpus
|
||||
#define cpu_to_be32s __cpu_to_be32s
|
||||
#define be32_to_cpus __be32_to_cpus
|
||||
#define cpu_to_be16s __cpu_to_be16s
|
||||
#define be16_to_cpus __be16_to_cpus
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Handle ntohl and suches. These have various compatibility
|
||||
* issues - like we want to give the prototype even though we
|
||||
* also have a macro for them in case some strange program
|
||||
* wants to take the address of the thing or something..
|
||||
*
|
||||
* Note that these used to return a "long" in libc5, even though
|
||||
* long is often 64-bit these days.. Thus the casts.
|
||||
*
|
||||
* They have to be macros in order to do the constant folding
|
||||
* correctly - if the argument passed into a inline function
|
||||
* it is no longer constant according to gcc..
|
||||
*/
|
||||
|
||||
#undef ntohl
|
||||
#undef ntohs
|
||||
#undef htonl
|
||||
#undef htons
|
||||
|
||||
/*
|
||||
* Do the prototypes. Somebody might want to take the
|
||||
* address or some such sick thing..
|
||||
*/
|
||||
#if defined(PLATFORM_LINUX) || (defined (__GLIBC__) && __GLIBC__ >= 2)
|
||||
extern __u32 ntohl(__u32);
|
||||
extern __u32 htonl(__u32);
|
||||
#else //defined(PLATFORM_LINUX) || (defined (__GLIBC__) && __GLIBC__ >= 2)
|
||||
#ifndef PLATFORM_FREEBSD
|
||||
extern unsigned long int ntohl(unsigned long int);
|
||||
extern unsigned long int htonl(unsigned long int);
|
||||
#endif
|
||||
#endif
|
||||
#ifndef PLATFORM_FREEBSD
|
||||
extern unsigned short int ntohs(unsigned short int);
|
||||
extern unsigned short int htons(unsigned short int);
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__) || defined(PLATFORM_MPIXEL)
|
||||
|
||||
#define ___htonl(x) __cpu_to_be32(x)
|
||||
#define ___htons(x) __cpu_to_be16(x)
|
||||
#define ___ntohl(x) __be32_to_cpu(x)
|
||||
#define ___ntohs(x) __be16_to_cpu(x)
|
||||
|
||||
#if defined(PLATFORM_LINUX) || (defined (__GLIBC__) && __GLIBC__ >= 2)
|
||||
#define htonl(x) ___htonl(x)
|
||||
#define ntohl(x) ___ntohl(x)
|
||||
#else
|
||||
#define htonl(x) ((unsigned long)___htonl(x))
|
||||
#define ntohl(x) ((unsigned long)___ntohl(x))
|
||||
#endif
|
||||
#define htons(x) ___htons(x)
|
||||
#define ntohs(x) ___ntohs(x)
|
||||
|
||||
#endif /* OPTIMIZE */
|
||||
|
||||
|
||||
#if defined (PLATFORM_WINDOWS)
|
||||
|
||||
#define htonl(x) __cpu_to_be32(x)
|
||||
#define ntohl(x) __be32_to_cpu(x)
|
||||
#define htons(x) __cpu_to_be16(x)
|
||||
#define ntohs(x) __be16_to_cpu(x)
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_BYTEORDER_GENERIC_H */
|
||||
|
||||
90
include/byteorder/little_endian.h
Normal file
90
include/byteorder/little_endian.h
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _LINUX_BYTEORDER_LITTLE_ENDIAN_H
|
||||
#define _LINUX_BYTEORDER_LITTLE_ENDIAN_H
|
||||
|
||||
#ifndef __LITTLE_ENDIAN
|
||||
#define __LITTLE_ENDIAN 1234
|
||||
#endif
|
||||
#ifndef __LITTLE_ENDIAN_BITFIELD
|
||||
#define __LITTLE_ENDIAN_BITFIELD
|
||||
#endif
|
||||
|
||||
#include <byteorder/swab.h>
|
||||
|
||||
#ifndef __constant_htonl
|
||||
#define __constant_htonl(x) ___constant_swab32((x))
|
||||
#define __constant_ntohl(x) ___constant_swab32((x))
|
||||
#define __constant_htons(x) ___constant_swab16((x))
|
||||
#define __constant_ntohs(x) ___constant_swab16((x))
|
||||
#define __constant_cpu_to_le64(x) ((__u64)(x))
|
||||
#define __constant_le64_to_cpu(x) ((__u64)(x))
|
||||
#define __constant_cpu_to_le32(x) ((__u32)(x))
|
||||
#define __constant_le32_to_cpu(x) ((__u32)(x))
|
||||
#define __constant_cpu_to_le16(x) ((__u16)(x))
|
||||
#define __constant_le16_to_cpu(x) ((__u16)(x))
|
||||
#define __constant_cpu_to_be64(x) ___constant_swab64((x))
|
||||
#define __constant_be64_to_cpu(x) ___constant_swab64((x))
|
||||
#define __constant_cpu_to_be32(x) ___constant_swab32((x))
|
||||
#define __constant_be32_to_cpu(x) ___constant_swab32((x))
|
||||
#define __constant_cpu_to_be16(x) ___constant_swab16((x))
|
||||
#define __constant_be16_to_cpu(x) ___constant_swab16((x))
|
||||
#define __cpu_to_le64(x) ((__u64)(x))
|
||||
#define __le64_to_cpu(x) ((__u64)(x))
|
||||
#define __cpu_to_le32(x) ((__u32)(x))
|
||||
#define __le32_to_cpu(x) ((__u32)(x))
|
||||
#define __cpu_to_le16(x) ((__u16)(x))
|
||||
#define __le16_to_cpu(x) ((__u16)(x))
|
||||
#define __cpu_to_be64(x) __swab64((x))
|
||||
#define __be64_to_cpu(x) __swab64((x))
|
||||
#define __cpu_to_be32(x) __swab32((x))
|
||||
#define __be32_to_cpu(x) __swab32((x))
|
||||
#define __cpu_to_be16(x) __swab16((x))
|
||||
#define __be16_to_cpu(x) __swab16((x))
|
||||
#define __cpu_to_le64p(x) (*(__u64*)(x))
|
||||
#define __le64_to_cpup(x) (*(__u64*)(x))
|
||||
#define __cpu_to_le32p(x) (*(__u32*)(x))
|
||||
#define __le32_to_cpup(x) (*(__u32*)(x))
|
||||
#define __cpu_to_le16p(x) (*(__u16*)(x))
|
||||
#define __le16_to_cpup(x) (*(__u16*)(x))
|
||||
#define __cpu_to_be64p(x) __swab64p((x))
|
||||
#define __be64_to_cpup(x) __swab64p((x))
|
||||
#define __cpu_to_be32p(x) __swab32p((x))
|
||||
#define __be32_to_cpup(x) __swab32p((x))
|
||||
#define __cpu_to_be16p(x) __swab16p((x))
|
||||
#define __be16_to_cpup(x) __swab16p((x))
|
||||
#define __cpu_to_le64s(x) do {} while (0)
|
||||
#define __le64_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_le32s(x) do {} while (0)
|
||||
#define __le32_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_le16s(x) do {} while (0)
|
||||
#define __le16_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_be64s(x) __swab64s((x))
|
||||
#define __be64_to_cpus(x) __swab64s((x))
|
||||
#define __cpu_to_be32s(x) __swab32s((x))
|
||||
#define __be32_to_cpus(x) __swab32s((x))
|
||||
#define __cpu_to_be16s(x) __swab16s((x))
|
||||
#define __be16_to_cpus(x) __swab16s((x))
|
||||
#endif // __constant_htonl
|
||||
|
||||
#include <byteorder/generic.h>
|
||||
|
||||
#endif /* _LINUX_BYTEORDER_LITTLE_ENDIAN_H */
|
||||
|
||||
141
include/byteorder/swab.h
Normal file
141
include/byteorder/swab.h
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _LINUX_BYTEORDER_SWAB_H
|
||||
#define _LINUX_BYTEORDER_SWAB_H
|
||||
|
||||
#if !defined(CONFIG_PLATFORM_MSTAR)
|
||||
#ifndef __u16
|
||||
typedef unsigned short __u16;
|
||||
#endif
|
||||
|
||||
#ifndef __u32
|
||||
typedef unsigned int __u32;
|
||||
#endif
|
||||
|
||||
#ifndef __u8
|
||||
typedef unsigned char __u8;
|
||||
#endif
|
||||
|
||||
#ifndef __u64
|
||||
typedef unsigned long long __u64;
|
||||
#endif
|
||||
|
||||
|
||||
__inline static __u16 ___swab16(__u16 x)
|
||||
{
|
||||
__u16 __x = x;
|
||||
return
|
||||
((__u16)(
|
||||
(((__u16)(__x) & (__u16)0x00ffU) << 8) |
|
||||
(((__u16)(__x) & (__u16)0xff00U) >> 8) ));
|
||||
|
||||
}
|
||||
|
||||
__inline static __u32 ___swab32(__u32 x)
|
||||
{
|
||||
__u32 __x = (x);
|
||||
return ((__u32)(
|
||||
(((__u32)(__x) & (__u32)0x000000ffUL) << 24) |
|
||||
(((__u32)(__x) & (__u32)0x0000ff00UL) << 8) |
|
||||
(((__u32)(__x) & (__u32)0x00ff0000UL) >> 8) |
|
||||
(((__u32)(__x) & (__u32)0xff000000UL) >> 24) ));
|
||||
}
|
||||
|
||||
__inline static __u64 ___swab64(__u64 x)
|
||||
{
|
||||
__u64 __x = (x);
|
||||
|
||||
return
|
||||
((__u64)( \
|
||||
(__u64)(((__u64)(__x) & (__u64)0x00000000000000ffULL) << 56) | \
|
||||
(__u64)(((__u64)(__x) & (__u64)0x000000000000ff00ULL) << 40) | \
|
||||
(__u64)(((__u64)(__x) & (__u64)0x0000000000ff0000ULL) << 24) | \
|
||||
(__u64)(((__u64)(__x) & (__u64)0x00000000ff000000ULL) << 8) | \
|
||||
(__u64)(((__u64)(__x) & (__u64)0x000000ff00000000ULL) >> 8) | \
|
||||
(__u64)(((__u64)(__x) & (__u64)0x0000ff0000000000ULL) >> 24) | \
|
||||
(__u64)(((__u64)(__x) & (__u64)0x00ff000000000000ULL) >> 40) | \
|
||||
(__u64)(((__u64)(__x) & (__u64)0xff00000000000000ULL) >> 56) )); \
|
||||
}
|
||||
#endif // CONFIG_PLATFORM_MSTAR
|
||||
|
||||
#ifndef __arch__swab16
|
||||
__inline static __u16 __arch__swab16(__u16 x)
|
||||
{
|
||||
return ___swab16(x);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef __arch__swab32
|
||||
__inline static __u32 __arch__swab32(__u32 x)
|
||||
{
|
||||
__u32 __tmp = (x) ;
|
||||
return ___swab32(__tmp);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef __arch__swab64
|
||||
|
||||
__inline static __u64 __arch__swab64(__u64 x)
|
||||
{
|
||||
__u64 __tmp = (x) ;
|
||||
return ___swab64(__tmp);
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef __swab16
|
||||
#define __swab16(x) __fswab16(x)
|
||||
#define __swab32(x) __fswab32(x)
|
||||
#define __swab64(x) __fswab64(x)
|
||||
#endif // __swab16
|
||||
|
||||
#ifdef PLATFORM_FREEBSD
|
||||
__inline static __u16 __fswab16(__u16 x)
|
||||
#else
|
||||
__inline static const __u16 __fswab16(__u16 x)
|
||||
#endif //PLATFORM_FREEBSD
|
||||
{
|
||||
return __arch__swab16(x);
|
||||
}
|
||||
#ifdef PLATFORM_FREEBSD
|
||||
__inline static __u32 __fswab32(__u32 x)
|
||||
#else
|
||||
__inline static const __u32 __fswab32(__u32 x)
|
||||
#endif //PLATFORM_FREEBSD
|
||||
{
|
||||
return __arch__swab32(x);
|
||||
}
|
||||
|
||||
#if defined(PLATFORM_LINUX) || defined(PLATFORM_WINDOWS)
|
||||
#define swab16 __swab16
|
||||
#define swab32 __swab32
|
||||
#define swab64 __swab64
|
||||
#define swab16p __swab16p
|
||||
#define swab32p __swab32p
|
||||
#define swab64p __swab64p
|
||||
#define swab16s __swab16s
|
||||
#define swab32s __swab32s
|
||||
#define swab64s __swab64s
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_BYTEORDER_SWAB_H */
|
||||
|
||||
157
include/byteorder/swabb.h
Normal file
157
include/byteorder/swabb.h
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _LINUX_BYTEORDER_SWABB_H
|
||||
#define _LINUX_BYTEORDER_SWABB_H
|
||||
|
||||
/*
|
||||
* linux/byteorder/swabb.h
|
||||
* SWAp Bytes Bizarrely
|
||||
* swaHHXX[ps]?(foo)
|
||||
*
|
||||
* Support for obNUXIous pdp-endian and other bizarre architectures.
|
||||
* Will Linux ever run on such ancient beasts? if not, this file
|
||||
* will be but a programming pearl. Still, it's a reminder that we
|
||||
* shouldn't be making too many assumptions when trying to be portable.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Meaning of the names I chose (vaxlinux people feel free to correct them):
|
||||
* swahw32 swap 16-bit half-words in a 32-bit word
|
||||
* swahb32 swap 8-bit halves of each 16-bit half-word in a 32-bit word
|
||||
*
|
||||
* No 64-bit support yet. I don't know NUXI conventions for long longs.
|
||||
* I guarantee it will be a mess when it's there, though :->
|
||||
* It will be even worse if there are conflicting 64-bit conventions.
|
||||
* Hopefully, no one ever used 64-bit objects on NUXI machines.
|
||||
*
|
||||
*/
|
||||
|
||||
#define ___swahw32(x) \
|
||||
({ \
|
||||
__u32 __x = (x); \
|
||||
((__u32)( \
|
||||
(((__u32)(__x) & (__u32)0x0000ffffUL) << 16) | \
|
||||
(((__u32)(__x) & (__u32)0xffff0000UL) >> 16) )); \
|
||||
})
|
||||
#define ___swahb32(x) \
|
||||
({ \
|
||||
__u32 __x = (x); \
|
||||
((__u32)( \
|
||||
(((__u32)(__x) & (__u32)0x00ff00ffUL) << 8) | \
|
||||
(((__u32)(__x) & (__u32)0xff00ff00UL) >> 8) )); \
|
||||
})
|
||||
|
||||
#define ___constant_swahw32(x) \
|
||||
((__u32)( \
|
||||
(((__u32)(x) & (__u32)0x0000ffffUL) << 16) | \
|
||||
(((__u32)(x) & (__u32)0xffff0000UL) >> 16) ))
|
||||
#define ___constant_swahb32(x) \
|
||||
((__u32)( \
|
||||
(((__u32)(x) & (__u32)0x00ff00ffUL) << 8) | \
|
||||
(((__u32)(x) & (__u32)0xff00ff00UL) >> 8) ))
|
||||
|
||||
/*
|
||||
* provide defaults when no architecture-specific optimization is detected
|
||||
*/
|
||||
#ifndef __arch__swahw32
|
||||
# define __arch__swahw32(x) ___swahw32(x)
|
||||
#endif
|
||||
#ifndef __arch__swahb32
|
||||
# define __arch__swahb32(x) ___swahb32(x)
|
||||
#endif
|
||||
|
||||
#ifndef __arch__swahw32p
|
||||
# define __arch__swahw32p(x) __swahw32(*(x))
|
||||
#endif
|
||||
#ifndef __arch__swahb32p
|
||||
# define __arch__swahb32p(x) __swahb32(*(x))
|
||||
#endif
|
||||
|
||||
#ifndef __arch__swahw32s
|
||||
# define __arch__swahw32s(x) do { *(x) = __swahw32p((x)); } while (0)
|
||||
#endif
|
||||
#ifndef __arch__swahb32s
|
||||
# define __arch__swahb32s(x) do { *(x) = __swahb32p((x)); } while (0)
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Allow constant folding
|
||||
*/
|
||||
#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
|
||||
# define __swahw32(x) \
|
||||
(__builtin_constant_p((__u32)(x)) ? \
|
||||
___swahw32((x)) : \
|
||||
__fswahw32((x)))
|
||||
# define __swahb32(x) \
|
||||
(__builtin_constant_p((__u32)(x)) ? \
|
||||
___swahb32((x)) : \
|
||||
__fswahb32((x)))
|
||||
#else
|
||||
# define __swahw32(x) __fswahw32(x)
|
||||
# define __swahb32(x) __fswahb32(x)
|
||||
#endif /* OPTIMIZE */
|
||||
|
||||
|
||||
__inline static__ __const__ __u32 __fswahw32(__u32 x)
|
||||
{
|
||||
return __arch__swahw32(x);
|
||||
}
|
||||
__inline static__ __u32 __swahw32p(__u32 *x)
|
||||
{
|
||||
return __arch__swahw32p(x);
|
||||
}
|
||||
__inline static__ void __swahw32s(__u32 *addr)
|
||||
{
|
||||
__arch__swahw32s(addr);
|
||||
}
|
||||
|
||||
|
||||
__inline static__ __const__ __u32 __fswahb32(__u32 x)
|
||||
{
|
||||
return __arch__swahb32(x);
|
||||
}
|
||||
__inline static__ __u32 __swahb32p(__u32 *x)
|
||||
{
|
||||
return __arch__swahb32p(x);
|
||||
}
|
||||
__inline static__ void __swahb32s(__u32 *addr)
|
||||
{
|
||||
__arch__swahb32s(addr);
|
||||
}
|
||||
|
||||
#ifdef __BYTEORDER_HAS_U64__
|
||||
/*
|
||||
* Not supported yet
|
||||
*/
|
||||
#endif /* __BYTEORDER_HAS_U64__ */
|
||||
|
||||
#if defined(PLATFORM_LINUX)
|
||||
#define swahw32 __swahw32
|
||||
#define swahb32 __swahb32
|
||||
#define swahw32p __swahw32p
|
||||
#define swahb32p __swahb32p
|
||||
#define swahw32s __swahw32s
|
||||
#define swahb32s __swahb32s
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_BYTEORDER_SWABB_H */
|
||||
|
||||
28
include/circ_buf.h
Normal file
28
include/circ_buf.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __CIRC_BUF_H_
|
||||
#define __CIRC_BUF_H_ 1
|
||||
|
||||
#define CIRC_CNT(head,tail,size) (((head) - (tail)) & ((size)-1))
|
||||
|
||||
#define CIRC_SPACE(head,tail,size) CIRC_CNT((tail),((head)+1),(size))
|
||||
|
||||
#endif //_CIRC_BUF_H_
|
||||
|
||||
32
include/cmd_osdep.h
Normal file
32
include/cmd_osdep.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __CMD_OSDEP_H_
|
||||
#define __CMD_OSDEP_H_
|
||||
|
||||
|
||||
extern sint _rtw_init_cmd_priv (struct cmd_priv *pcmdpriv);
|
||||
extern sint _rtw_init_evt_priv(struct evt_priv *pevtpriv);
|
||||
extern void _rtw_free_evt_priv (struct evt_priv *pevtpriv);
|
||||
extern void _rtw_free_cmd_priv (struct cmd_priv *pcmdpriv);
|
||||
extern sint _rtw_enqueue_cmd(_queue *queue, struct cmd_obj *obj, bool to_head);
|
||||
extern struct cmd_obj *_rtw_dequeue_cmd(_queue *queue);
|
||||
|
||||
#endif
|
||||
|
||||
32
include/custom_gpio.h
Normal file
32
include/custom_gpio.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#ifndef __CUSTOM_GPIO_H__
|
||||
#define __CUSTOM_GPIO_H___
|
||||
|
||||
#include <drv_conf.h>
|
||||
#include <osdep_service.h>
|
||||
|
||||
#ifdef PLATFORM_OS_XP
|
||||
#include <drv_types_xp.h>
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_OS_CE
|
||||
#include <drv_types_ce.h>
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
#include <drv_types_linux.h>
|
||||
#endif
|
||||
|
||||
typedef enum cust_gpio_modes {
|
||||
WLAN_PWDN_ON,
|
||||
WLAN_PWDN_OFF,
|
||||
WLAN_POWER_ON,
|
||||
WLAN_POWER_OFF,
|
||||
WLAN_BT_PWDN_ON,
|
||||
WLAN_BT_PWDN_OFF
|
||||
} cust_gpio_modes_t;
|
||||
|
||||
extern int rtw_wifi_gpio_init(void);
|
||||
extern int rtw_wifi_gpio_deinit(void);
|
||||
extern void rtw_wifi_gpio_wlan_ctrl(int onoff);
|
||||
|
||||
#endif
|
||||
190
include/drv_conf.h
Normal file
190
include/drv_conf.h
Normal file
|
|
@ -0,0 +1,190 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __DRV_CONF_H__
|
||||
#define __DRV_CONF_H__
|
||||
#include "autoconf.h"
|
||||
#include "hal_ic_cfg.h"
|
||||
|
||||
#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS)
|
||||
|
||||
#error "Shall be Linux or Windows, but not both!\n"
|
||||
|
||||
#endif
|
||||
|
||||
//Older Android kernel doesn't has CONFIG_ANDROID defined,
|
||||
//add this to force CONFIG_ANDROID defined
|
||||
#ifdef CONFIG_PLATFORM_ANDROID
|
||||
#ifndef CONFIG_ANDROID
|
||||
#define CONFIG_ANDROID
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ANDROID
|
||||
//Some Android build will restart the UI while non-printable ascii is passed
|
||||
//between java and c/c++ layer (JNI). We force CONFIG_VALIDATE_SSID
|
||||
//for Android here. If you are sure there is no risk on your system about this,
|
||||
//mask this macro define to support non-printable ascii ssid.
|
||||
//#define CONFIG_VALIDATE_SSID
|
||||
|
||||
//Android expect dbm as the rx signal strength unit
|
||||
#define CONFIG_SIGNAL_DISPLAY_DBM
|
||||
#endif
|
||||
|
||||
/*
|
||||
#if defined(CONFIG_HAS_EARLYSUSPEND) && defined (CONFIG_RESUME_IN_WORKQUEUE)
|
||||
#warning "You have CONFIG_HAS_EARLYSUSPEND enabled in your system, we disable CONFIG_RESUME_IN_WORKQUEUE automatically"
|
||||
#undef CONFIG_RESUME_IN_WORKQUEUE
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_ANDROID_POWER) && defined (CONFIG_RESUME_IN_WORKQUEUE)
|
||||
#warning "You have CONFIG_ANDROID_POWER enabled in your system, we disable CONFIG_RESUME_IN_WORKQUEUE automatically"
|
||||
#undef CONFIG_RESUME_IN_WORKQUEUE
|
||||
#endif
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_RESUME_IN_WORKQUEUE //this can be removed, because there is no case for this...
|
||||
#if !defined( CONFIG_WAKELOCK) && !defined(CONFIG_ANDROID_POWER)
|
||||
#error "enable CONFIG_RESUME_IN_WORKQUEUE without CONFIG_WAKELOCK or CONFIG_ANDROID_POWER will suffer from the danger of wifi's unfunctionality..."
|
||||
#error "If you still want to enable CONFIG_RESUME_IN_WORKQUEUE in this case, mask this preprossor checking and GOOD LUCK..."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//About USB VENDOR REQ
|
||||
#if defined(CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC) && !defined(CONFIG_USB_VENDOR_REQ_MUTEX)
|
||||
#warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC automatically"
|
||||
#define CONFIG_USB_VENDOR_REQ_MUTEX
|
||||
#endif
|
||||
#if defined(CONFIG_VENDOR_REQ_RETRY) && !defined(CONFIG_USB_VENDOR_REQ_MUTEX)
|
||||
#warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_VENDOR_REQ_RETRY automatically"
|
||||
#define CONFIG_USB_VENDOR_REQ_MUTEX
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_AP_MODE) && defined(CONFIG_DFS_MASTER)
|
||||
#warning "undef CONFIG_DFS_MASTER because CONFIG_AP_MODE is not defined"
|
||||
#undef CONFIG_DFS_MASTER
|
||||
#endif
|
||||
|
||||
#define DYNAMIC_CAMID_ALLOC
|
||||
|
||||
#define RTW_SCAN_SPARSE_MIRACAST 1
|
||||
#define RTW_SCAN_SPARSE_BG 0
|
||||
|
||||
#ifndef CONFIG_RTW_HIQ_FILTER
|
||||
#define CONFIG_RTW_HIQ_FILTER 1
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_ADAPTIVITY_EN
|
||||
#define CONFIG_RTW_ADAPTIVITY_EN 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_ADAPTIVITY_MODE
|
||||
#define CONFIG_RTW_ADAPTIVITY_MODE 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_ADAPTIVITY_DML
|
||||
#define CONFIG_RTW_ADAPTIVITY_DML 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_ADAPTIVITY_DC_BACKOFF
|
||||
#define CONFIG_RTW_ADAPTIVITY_DC_BACKOFF 2
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_ADAPTIVITY_TH_L2H_INI
|
||||
#define CONFIG_RTW_ADAPTIVITY_TH_L2H_INI 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_ADAPTIVITY_TH_EDCCA_HL_DIFF
|
||||
#define CONFIG_RTW_ADAPTIVITY_TH_EDCCA_HL_DIFF 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_TARGET_TX_PWR_2G_A
|
||||
#define CONFIG_RTW_TARGET_TX_PWR_2G_A {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_TARGET_TX_PWR_2G_B
|
||||
#define CONFIG_RTW_TARGET_TX_PWR_2G_B {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_TARGET_TX_PWR_2G_C
|
||||
#define CONFIG_RTW_TARGET_TX_PWR_2G_C {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_TARGET_TX_PWR_2G_D
|
||||
#define CONFIG_RTW_TARGET_TX_PWR_2G_D {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_TARGET_TX_PWR_5G_A
|
||||
#define CONFIG_RTW_TARGET_TX_PWR_5G_A {-1, -1, -1, -1, -1, -1, -1, -1, -1}
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_TARGET_TX_PWR_5G_B
|
||||
#define CONFIG_RTW_TARGET_TX_PWR_5G_B {-1, -1, -1, -1, -1, -1, -1, -1, -1}
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_TARGET_TX_PWR_5G_C
|
||||
#define CONFIG_RTW_TARGET_TX_PWR_5G_C {-1, -1, -1, -1, -1, -1, -1, -1, -1}
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_TARGET_TX_PWR_5G_D
|
||||
#define CONFIG_RTW_TARGET_TX_PWR_5G_D {-1, -1, -1, -1, -1, -1, -1, -1, -1}
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_AMPLIFIER_TYPE_2G
|
||||
#define CONFIG_RTW_AMPLIFIER_TYPE_2G 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_AMPLIFIER_TYPE_5G
|
||||
#define CONFIG_RTW_AMPLIFIER_TYPE_5G 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_RFE_TYPE
|
||||
#define CONFIG_RTW_RFE_TYPE 64
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_GLNA_TYPE
|
||||
#define CONFIG_RTW_GLNA_TYPE 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RTW_PLL_REF_CLK_SEL
|
||||
#define CONFIG_RTW_PLL_REF_CLK_SEL 0x0F
|
||||
#endif
|
||||
|
||||
#define MACID_NUM_SW_LIMIT 32
|
||||
#define SEC_CAM_ENT_NUM_SW_LIMIT 32
|
||||
|
||||
#if defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A) || defined(CONFIG_RTL8814A)
|
||||
#define CONFIG_IEEE80211_BAND_5GHZ
|
||||
#endif
|
||||
|
||||
/*
|
||||
Mark CONFIG_DEAUTH_BEFORE_CONNECT by Arvin 2015/07/20
|
||||
If the failure of Wi-Fi connection is due to some irregular disconnection behavior (like unplug dongle,
|
||||
power down etc.) in last time, we can unmark this flag to avoid some unpredictable response from AP.
|
||||
*/
|
||||
/*#define CONFIG_DEAUTH_BEFORE_CONNECT */
|
||||
|
||||
/*#define CONFIG_WEXT_DONT_JOIN_BYSSID */
|
||||
//#include <rtl871x_byteorder.h>
|
||||
|
||||
|
||||
/*#define CONFIG_DOSCAN_IN_BUSYTRAFFIC */
|
||||
|
||||
#endif // __DRV_CONF_H__
|
||||
|
||||
1303
include/drv_types.h
Normal file
1303
include/drv_types.h
Normal file
File diff suppressed because it is too large
Load diff
93
include/drv_types_ce.h
Normal file
93
include/drv_types_ce.h
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __DRV_TYPES_CE_H__
|
||||
#define __DRV_TYPES_CE_H__
|
||||
|
||||
#include <drv_conf.h>
|
||||
#include <osdep_service.h>
|
||||
|
||||
#include <Sdcardddk.h>
|
||||
|
||||
#define MAX_ACTIVE_REG_PATH 256
|
||||
|
||||
#define MAX_MCAST_LIST_NUM 32
|
||||
|
||||
|
||||
|
||||
//for ioctl
|
||||
#define MAKE_DRIVER_VERSION(_MainVer,_MinorVer) ((((u32)(_MainVer))<<16)+_MinorVer)
|
||||
|
||||
#define NIC_HEADER_SIZE 14 //!< can be moved to typedef.h
|
||||
#define NIC_MAX_PACKET_SIZE 1514 //!< can be moved to typedef.h
|
||||
#define NIC_MAX_SEND_PACKETS 10 // max number of send packets the MiniportSendPackets function can accept, can be moved to typedef.h
|
||||
#define NIC_VENDOR_DRIVER_VERSION MAKE_DRIVER_VERSION(0,001) //!< can be moved to typedef.h
|
||||
#define NIC_MAX_PACKET_SIZE 1514 //!< can be moved to typedef.h
|
||||
|
||||
typedef struct _MP_REG_ENTRY
|
||||
{
|
||||
|
||||
NDIS_STRING RegName; // variable name text
|
||||
BOOLEAN bRequired; // 1 -> required, 0 -> optional
|
||||
|
||||
u8 Type; // NdisParameterInteger/NdisParameterHexInteger/NdisParameterStringle/NdisParameterMultiString
|
||||
uint FieldOffset; // offset to MP_ADAPTER field
|
||||
uint FieldSize; // size (in bytes) of the field
|
||||
|
||||
#ifdef UNDER_AMD64
|
||||
u64 Default;
|
||||
#else
|
||||
u32 Default; // default value to use
|
||||
#endif
|
||||
|
||||
u32 Min; // minimum value allowed
|
||||
u32 Max; // maximum value allowed
|
||||
} MP_REG_ENTRY, *PMP_REG_ENTRY;
|
||||
|
||||
#ifdef CONFIG_USB_HCI
|
||||
typedef struct _USB_EXTENSION {
|
||||
LPCUSB_FUNCS _lpUsbFuncs;
|
||||
USB_HANDLE _hDevice;
|
||||
PVOID pAdapter;
|
||||
|
||||
#if 0
|
||||
USB_ENDPOINT_DESCRIPTOR _endpACLIn;
|
||||
USB_ENDPOINT_DESCRIPTOR _endpACLOutHigh;
|
||||
USB_ENDPOINT_DESCRIPTOR _endpACLOutNormal;
|
||||
|
||||
USB_PIPE pPipeIn;
|
||||
USB_PIPE pPipeOutNormal;
|
||||
USB_PIPE pPipeOutHigh;
|
||||
#endif
|
||||
|
||||
} USB_EXTENSION, *PUSB_EXTENSION;
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct _OCTET_STRING{
|
||||
u8 *Octet;
|
||||
u16 Length;
|
||||
} OCTET_STRING, *POCTET_STRING;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
56
include/drv_types_gspi.h
Normal file
56
include/drv_types_gspi.h
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __DRV_TYPES_GSPI_H__
|
||||
#define __DRV_TYPES_GSPI_H__
|
||||
|
||||
// SPI Header Files
|
||||
#ifdef PLATFORM_LINUX
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/gpio.h>
|
||||
//#include <mach/ldo.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/gpio.h>
|
||||
#include <asm/io.h>
|
||||
#include <mach/board.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <custom_gpio.h>
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct gspi_data
|
||||
{
|
||||
u8 func_number;
|
||||
|
||||
u8 tx_block_mode;
|
||||
u8 rx_block_mode;
|
||||
u32 block_transfer_len;
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
struct spi_device *func;
|
||||
|
||||
struct workqueue_struct *priv_wq;
|
||||
struct delayed_work irq_work;
|
||||
#endif
|
||||
} GSPI_DATA, *PGSPI_DATA;
|
||||
|
||||
#endif // #ifndef __DRV_TYPES_GSPI_H__
|
||||
|
||||
25
include/drv_types_linux.h
Normal file
25
include/drv_types_linux.h
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __DRV_TYPES_LINUX_H__
|
||||
#define __DRV_TYPES_LINUX_H__
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
273
include/drv_types_pci.h
Normal file
273
include/drv_types_pci.h
Normal file
|
|
@ -0,0 +1,273 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __DRV_TYPES_PCI_H__
|
||||
#define __DRV_TYPES_PCI_H__
|
||||
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
#include <linux/pci.h>
|
||||
#endif
|
||||
|
||||
|
||||
#define INTEL_VENDOR_ID 0x8086
|
||||
#define SIS_VENDOR_ID 0x1039
|
||||
#define ATI_VENDOR_ID 0x1002
|
||||
#define ATI_DEVICE_ID 0x7914
|
||||
#define AMD_VENDOR_ID 0x1022
|
||||
|
||||
#define PCI_MAX_BRIDGE_NUMBER 255
|
||||
#define PCI_MAX_DEVICES 32
|
||||
#define PCI_MAX_FUNCTION 8
|
||||
|
||||
#define PCI_CONF_ADDRESS 0x0CF8 // PCI Configuration Space Address
|
||||
#define PCI_CONF_DATA 0x0CFC // PCI Configuration Space Data
|
||||
|
||||
#define PCI_CLASS_BRIDGE_DEV 0x06
|
||||
#define PCI_SUBCLASS_BR_PCI_TO_PCI 0x04
|
||||
|
||||
#define PCI_CAPABILITY_ID_PCI_EXPRESS 0x10
|
||||
|
||||
#define U1DONTCARE 0xFF
|
||||
#define U2DONTCARE 0xFFFF
|
||||
#define U4DONTCARE 0xFFFFFFFF
|
||||
|
||||
#define PCI_VENDER_ID_REALTEK 0x10ec
|
||||
|
||||
#define HAL_HW_PCI_8180_DEVICE_ID 0x8180
|
||||
#define HAL_HW_PCI_8185_DEVICE_ID 0x8185 //8185 or 8185b
|
||||
#define HAL_HW_PCI_8188_DEVICE_ID 0x8188 //8185b
|
||||
#define HAL_HW_PCI_8198_DEVICE_ID 0x8198 //8185b
|
||||
#define HAL_HW_PCI_8190_DEVICE_ID 0x8190 //8190
|
||||
#define HAL_HW_PCI_8723E_DEVICE_ID 0x8723 //8723E
|
||||
#define HAL_HW_PCI_8192_DEVICE_ID 0x8192 //8192 PCI-E
|
||||
#define HAL_HW_PCI_8192SE_DEVICE_ID 0x8192 //8192 SE
|
||||
#define HAL_HW_PCI_8174_DEVICE_ID 0x8174 //8192 SE
|
||||
#define HAL_HW_PCI_8173_DEVICE_ID 0x8173 //8191 SE Crab
|
||||
#define HAL_HW_PCI_8172_DEVICE_ID 0x8172 //8191 SE RE
|
||||
#define HAL_HW_PCI_8171_DEVICE_ID 0x8171 //8191 SE Unicron
|
||||
#define HAL_HW_PCI_0045_DEVICE_ID 0x0045 //8190 PCI for Ceraga
|
||||
#define HAL_HW_PCI_0046_DEVICE_ID 0x0046 //8190 Cardbus for Ceraga
|
||||
#define HAL_HW_PCI_0044_DEVICE_ID 0x0044 //8192e PCIE for Ceraga
|
||||
#define HAL_HW_PCI_0047_DEVICE_ID 0x0047 //8192e Express Card for Ceraga
|
||||
#define HAL_HW_PCI_700F_DEVICE_ID 0x700F
|
||||
#define HAL_HW_PCI_701F_DEVICE_ID 0x701F
|
||||
#define HAL_HW_PCI_DLINK_DEVICE_ID 0x3304
|
||||
#define HAL_HW_PCI_8188EE_DEVICE_ID 0x8179
|
||||
|
||||
#define HAL_MEMORY_MAPPED_IO_RANGE_8190PCI 0x1000 //8190 support 16 pages of IO registers
|
||||
#define HAL_HW_PCI_REVISION_ID_8190PCI 0x00
|
||||
#define HAL_MEMORY_MAPPED_IO_RANGE_8192PCIE 0x4000 //8192 support 16 pages of IO registers
|
||||
#define HAL_HW_PCI_REVISION_ID_8192PCIE 0x01
|
||||
#define HAL_MEMORY_MAPPED_IO_RANGE_8192SE 0x4000 //8192 support 16 pages of IO registers
|
||||
#define HAL_HW_PCI_REVISION_ID_8192SE 0x10
|
||||
#define HAL_HW_PCI_REVISION_ID_8192CE 0x1
|
||||
#define HAL_MEMORY_MAPPED_IO_RANGE_8192CE 0x4000 //8192 support 16 pages of IO registers
|
||||
#define HAL_HW_PCI_REVISION_ID_8192DE 0x0
|
||||
#define HAL_MEMORY_MAPPED_IO_RANGE_8192DE 0x4000 //8192 support 16 pages of IO registers
|
||||
|
||||
enum pci_bridge_vendor {
|
||||
PCI_BRIDGE_VENDOR_INTEL = 0x0,//0b'0000,0001
|
||||
PCI_BRIDGE_VENDOR_ATI, //= 0x02,//0b'0000,0010
|
||||
PCI_BRIDGE_VENDOR_AMD, //= 0x04,//0b'0000,0100
|
||||
PCI_BRIDGE_VENDOR_SIS ,//= 0x08,//0b'0000,1000
|
||||
PCI_BRIDGE_VENDOR_UNKNOWN, //= 0x40,//0b'0100,0000
|
||||
PCI_BRIDGE_VENDOR_MAX ,//= 0x80
|
||||
} ;
|
||||
|
||||
// copy this data structor defination from MSDN SDK
|
||||
typedef struct _PCI_COMMON_CONFIG {
|
||||
u16 VendorID;
|
||||
u16 DeviceID;
|
||||
u16 Command;
|
||||
u16 Status;
|
||||
u8 RevisionID;
|
||||
u8 ProgIf;
|
||||
u8 SubClass;
|
||||
u8 BaseClass;
|
||||
u8 CacheLineSize;
|
||||
u8 LatencyTimer;
|
||||
u8 HeaderType;
|
||||
u8 BIST;
|
||||
|
||||
union {
|
||||
struct _PCI_HEADER_TYPE_0 {
|
||||
u32 BaseAddresses[6];
|
||||
u32 CIS;
|
||||
u16 SubVendorID;
|
||||
u16 SubSystemID;
|
||||
u32 ROMBaseAddress;
|
||||
u8 CapabilitiesPtr;
|
||||
u8 Reserved1[3];
|
||||
u32 Reserved2;
|
||||
|
||||
u8 InterruptLine;
|
||||
u8 InterruptPin;
|
||||
u8 MinimumGrant;
|
||||
u8 MaximumLatency;
|
||||
} type0;
|
||||
#if 0
|
||||
struct _PCI_HEADER_TYPE_1 {
|
||||
ULONG BaseAddresses[PCI_TYPE1_ADDRESSES];
|
||||
UCHAR PrimaryBusNumber;
|
||||
UCHAR SecondaryBusNumber;
|
||||
UCHAR SubordinateBusNumber;
|
||||
UCHAR SecondaryLatencyTimer;
|
||||
UCHAR IOBase;
|
||||
UCHAR IOLimit;
|
||||
USHORT SecondaryStatus;
|
||||
USHORT MemoryBase;
|
||||
USHORT MemoryLimit;
|
||||
USHORT PrefetchableMemoryBase;
|
||||
USHORT PrefetchableMemoryLimit;
|
||||
ULONG PrefetchableMemoryBaseUpper32;
|
||||
ULONG PrefetchableMemoryLimitUpper32;
|
||||
USHORT IOBaseUpper;
|
||||
USHORT IOLimitUpper;
|
||||
ULONG Reserved2;
|
||||
ULONG ExpansionROMBase;
|
||||
UCHAR InterruptLine;
|
||||
UCHAR InterruptPin;
|
||||
USHORT BridgeControl;
|
||||
} type1;
|
||||
|
||||
struct _PCI_HEADER_TYPE_2 {
|
||||
ULONG BaseAddress;
|
||||
UCHAR CapabilitiesPtr;
|
||||
UCHAR Reserved2;
|
||||
USHORT SecondaryStatus;
|
||||
UCHAR PrimaryBusNumber;
|
||||
UCHAR CardbusBusNumber;
|
||||
UCHAR SubordinateBusNumber;
|
||||
UCHAR CardbusLatencyTimer;
|
||||
ULONG MemoryBase0;
|
||||
ULONG MemoryLimit0;
|
||||
ULONG MemoryBase1;
|
||||
ULONG MemoryLimit1;
|
||||
USHORT IOBase0_LO;
|
||||
USHORT IOBase0_HI;
|
||||
USHORT IOLimit0_LO;
|
||||
USHORT IOLimit0_HI;
|
||||
USHORT IOBase1_LO;
|
||||
USHORT IOBase1_HI;
|
||||
USHORT IOLimit1_LO;
|
||||
USHORT IOLimit1_HI;
|
||||
UCHAR InterruptLine;
|
||||
UCHAR InterruptPin;
|
||||
USHORT BridgeControl;
|
||||
USHORT SubVendorID;
|
||||
USHORT SubSystemID;
|
||||
ULONG LegacyBaseAddress;
|
||||
UCHAR Reserved3[56];
|
||||
ULONG SystemControl;
|
||||
UCHAR MultiMediaControl;
|
||||
UCHAR GeneralStatus;
|
||||
UCHAR Reserved4[2];
|
||||
UCHAR GPIO0Control;
|
||||
UCHAR GPIO1Control;
|
||||
UCHAR GPIO2Control;
|
||||
UCHAR GPIO3Control;
|
||||
ULONG IRQMuxRouting;
|
||||
UCHAR RetryStatus;
|
||||
UCHAR CardControl;
|
||||
UCHAR DeviceControl;
|
||||
UCHAR Diagnostic;
|
||||
} type2;
|
||||
#endif
|
||||
} u;
|
||||
|
||||
u8 DeviceSpecific[108];
|
||||
} PCI_COMMON_CONFIG , *PPCI_COMMON_CONFIG;
|
||||
|
||||
typedef struct _RT_PCI_CAPABILITIES_HEADER {
|
||||
u8 CapabilityID;
|
||||
u8 Next;
|
||||
} RT_PCI_CAPABILITIES_HEADER, *PRT_PCI_CAPABILITIES_HEADER;
|
||||
|
||||
struct pci_priv{
|
||||
BOOLEAN pci_clk_req;
|
||||
|
||||
u8 pciehdr_offset;
|
||||
// PCIeCap is only differece between B-cut and C-cut.
|
||||
// Configuration Space offset 72[7:4]
|
||||
// 0: A/B cut
|
||||
// 1: C cut and later.
|
||||
u8 pcie_cap;
|
||||
u8 linkctrl_reg;
|
||||
|
||||
u8 busnumber;
|
||||
u8 devnumber;
|
||||
u8 funcnumber;
|
||||
|
||||
u8 pcibridge_busnum;
|
||||
u8 pcibridge_devnum;
|
||||
u8 pcibridge_funcnum;
|
||||
u8 pcibridge_vendor;
|
||||
u16 pcibridge_vendorid;
|
||||
u16 pcibridge_deviceid;
|
||||
u8 pcibridge_pciehdr_offset;
|
||||
u8 pcibridge_linkctrlreg;
|
||||
|
||||
u8 amd_l1_patch;
|
||||
};
|
||||
|
||||
typedef struct _RT_ISR_CONTENT
|
||||
{
|
||||
union{
|
||||
u32 IntArray[2];
|
||||
u32 IntReg4Byte;
|
||||
u16 IntReg2Byte;
|
||||
};
|
||||
}RT_ISR_CONTENT, *PRT_ISR_CONTENT;
|
||||
|
||||
//#define RegAddr(addr) (addr + 0xB2000000UL)
|
||||
//some platform macros will def here
|
||||
static inline void NdisRawWritePortUlong(u32 port, u32 val)
|
||||
{
|
||||
outl(val, port);
|
||||
//writel(val, (u8 *)RegAddr(port));
|
||||
}
|
||||
|
||||
static inline void NdisRawWritePortUchar(u32 port, u8 val)
|
||||
{
|
||||
outb(val, port);
|
||||
//writeb(val, (u8 *)RegAddr(port));
|
||||
}
|
||||
|
||||
static inline void NdisRawReadPortUchar(u32 port, u8 *pval)
|
||||
{
|
||||
*pval = inb(port);
|
||||
//*pval = readb((u8 *)RegAddr(port));
|
||||
}
|
||||
|
||||
static inline void NdisRawReadPortUshort(u32 port, u16 *pval)
|
||||
{
|
||||
*pval = inw(port);
|
||||
//*pval = readw((u8 *)RegAddr(port));
|
||||
}
|
||||
|
||||
static inline void NdisRawReadPortUlong(u32 port, u32 *pval)
|
||||
{
|
||||
*pval = inl(port);
|
||||
//*pval = readl((u8 *)RegAddr(port));
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
81
include/drv_types_sdio.h
Normal file
81
include/drv_types_sdio.h
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __DRV_TYPES_SDIO_H__
|
||||
#define __DRV_TYPES_SDIO_H__
|
||||
|
||||
// SDIO Header Files
|
||||
#ifdef PLATFORM_LINUX
|
||||
#include <linux/mmc/sdio_func.h>
|
||||
#include <linux/mmc/sdio_ids.h>
|
||||
|
||||
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN) || defined(CONFIG_PLATFORM_SPRD)
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/mmc/card.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PLATFORM_SPRD
|
||||
#include <linux/gpio.h>
|
||||
#include <custom_gpio.h>
|
||||
#endif // CONFIG_PLATFORM_SPRD
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_OS_XP
|
||||
#include <wdm.h>
|
||||
#include <ntddsd.h>
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_OS_CE
|
||||
#include <sdcardddk.h>
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct sdio_data
|
||||
{
|
||||
u8 func_number;
|
||||
|
||||
u8 tx_block_mode;
|
||||
u8 rx_block_mode;
|
||||
u32 block_transfer_len;
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
struct sdio_func *func;
|
||||
_thread_hdl_ sys_sdio_irq_thd;
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_OS_XP
|
||||
PDEVICE_OBJECT pphysdevobj;
|
||||
PDEVICE_OBJECT pfuncdevobj;
|
||||
PDEVICE_OBJECT pnextdevobj;
|
||||
SDBUS_INTERFACE_STANDARD sdbusinft;
|
||||
u8 nextdevstacksz;
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_OS_CE
|
||||
SD_DEVICE_HANDLE hDevice;
|
||||
SD_CARD_RCA sd_rca;
|
||||
SD_CARD_INTERFACE card_intf;
|
||||
BOOLEAN enableIsarWithStatus;
|
||||
WCHAR active_path[MAX_ACTIVE_REG_PATH];
|
||||
SD_HOST_BLOCK_CAPABILITY sd_host_blk_cap;
|
||||
#endif
|
||||
} SDIO_DATA, *PSDIO_DATA;
|
||||
|
||||
#endif
|
||||
|
||||
95
include/drv_types_xp.h
Normal file
95
include/drv_types_xp.h
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __DRV_TYPES_XP_H__
|
||||
#define __DRV_TYPES_XP_H__
|
||||
|
||||
#include <drv_conf.h>
|
||||
#include <osdep_service.h>
|
||||
|
||||
|
||||
|
||||
#define MAX_MCAST_LIST_NUM 32
|
||||
|
||||
|
||||
|
||||
//for ioctl
|
||||
#define MAKE_DRIVER_VERSION(_MainVer,_MinorVer) ((((u32)(_MainVer))<<16)+_MinorVer)
|
||||
|
||||
#define NIC_HEADER_SIZE 14 //!< can be moved to typedef.h
|
||||
#define NIC_MAX_PACKET_SIZE 1514 //!< can be moved to typedef.h
|
||||
#define NIC_MAX_SEND_PACKETS 10 // max number of send packets the MiniportSendPackets function can accept, can be moved to typedef.h
|
||||
#define NIC_VENDOR_DRIVER_VERSION MAKE_DRIVER_VERSION(0,001) //!< can be moved to typedef.h
|
||||
#define NIC_MAX_PACKET_SIZE 1514 //!< can be moved to typedef.h
|
||||
|
||||
|
||||
#undef ON_VISTA
|
||||
//added by Jackson
|
||||
#ifndef ON_VISTA
|
||||
//
|
||||
// Bus driver versions
|
||||
//
|
||||
|
||||
#define SDBUS_DRIVER_VERSION_1 0x100
|
||||
#define SDBUS_DRIVER_VERSION_2 0x200
|
||||
|
||||
#define SDP_FUNCTION_TYPE 4
|
||||
#define SDP_BUS_DRIVER_VERSION 5
|
||||
#define SDP_BUS_WIDTH 6
|
||||
#define SDP_BUS_CLOCK 7
|
||||
#define SDP_BUS_INTERFACE_CONTROL 8
|
||||
#define SDP_HOST_BLOCK_LENGTH 9
|
||||
#define SDP_FUNCTION_BLOCK_LENGTH 10
|
||||
#define SDP_FN0_BLOCK_LENGTH 11
|
||||
#define SDP_FUNCTION_INT_ENABLE 12
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct _MP_REG_ENTRY
|
||||
{
|
||||
|
||||
NDIS_STRING RegName; // variable name text
|
||||
BOOLEAN bRequired; // 1 -> required, 0 -> optional
|
||||
|
||||
u8 Type; // NdisParameterInteger/NdisParameterHexInteger/NdisParameterStringle/NdisParameterMultiString
|
||||
uint FieldOffset; // offset to MP_ADAPTER field
|
||||
uint FieldSize; // size (in bytes) of the field
|
||||
|
||||
#ifdef UNDER_AMD64
|
||||
u64 Default;
|
||||
#else
|
||||
u32 Default; // default value to use
|
||||
#endif
|
||||
|
||||
u32 Min; // minimum value allowed
|
||||
u32 Max; // maximum value allowed
|
||||
} MP_REG_ENTRY, *PMP_REG_ENTRY;
|
||||
|
||||
|
||||
typedef struct _OCTET_STRING{
|
||||
u8 *Octet;
|
||||
u16 Length;
|
||||
} OCTET_STRING, *POCTET_STRING;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
42
include/ethernet.h
Normal file
42
include/ethernet.h
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
/*! \file */
|
||||
#ifndef __INC_ETHERNET_H
|
||||
#define __INC_ETHERNET_H
|
||||
|
||||
#define ETHERNET_ADDRESS_LENGTH 6 //!< Ethernet Address Length
|
||||
#define ETHERNET_HEADER_SIZE 14 //!< Ethernet Header Length
|
||||
#define LLC_HEADER_SIZE 6 //!< LLC Header Length
|
||||
#define TYPE_LENGTH_FIELD_SIZE 2 //!< Type/Length Size
|
||||
#define MINIMUM_ETHERNET_PACKET_SIZE 60 //!< Minimum Ethernet Packet Size
|
||||
#define MAXIMUM_ETHERNET_PACKET_SIZE 1514 //!< Maximum Ethernet Packet Size
|
||||
|
||||
#define RT_ETH_IS_MULTICAST(_pAddr) ((((UCHAR *)(_pAddr))[0]&0x01)!=0) //!< Is Multicast Address?
|
||||
#define RT_ETH_IS_BROADCAST(_pAddr) ( \
|
||||
((UCHAR *)(_pAddr))[0]==0xff && \
|
||||
((UCHAR *)(_pAddr))[1]==0xff && \
|
||||
((UCHAR *)(_pAddr))[2]==0xff && \
|
||||
((UCHAR *)(_pAddr))[3]==0xff && \
|
||||
((UCHAR *)(_pAddr))[4]==0xff && \
|
||||
((UCHAR *)(_pAddr))[5]==0xff ) //!< Is Broadcast Address?
|
||||
|
||||
|
||||
#endif // #ifndef __INC_ETHERNET_H
|
||||
|
||||
36
include/gspi_hal.h
Normal file
36
include/gspi_hal.h
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __GSPI_HAL_H__
|
||||
#define __GSPI_HAL_H__
|
||||
|
||||
|
||||
void spi_int_dpc(PADAPTER padapter, u32 sdio_hisr);
|
||||
u8 rtw_set_hal_ops(_adapter *padapter);
|
||||
|
||||
#ifdef CONFIG_RTL8188E
|
||||
void rtl8188es_set_hal_ops(PADAPTER padapter);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8723B
|
||||
void rtl8723bs_set_hal_ops(PADAPTER padapter);
|
||||
#endif
|
||||
|
||||
#endif //__GSPI_HAL_H__
|
||||
|
||||
185
include/gspi_ops.h
Normal file
185
include/gspi_ops.h
Normal file
|
|
@ -0,0 +1,185 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __GSPI_OPS_H__
|
||||
#define __GSPI_OPS_H__
|
||||
|
||||
/* follwing defination is based on
|
||||
* GSPI spec of RTL8723, we temp
|
||||
* suppose that it will be the same
|
||||
* for diff chips of GSPI, if not
|
||||
* we should move it to HAL folder */
|
||||
#define SPI_LOCAL_DOMAIN 0x0
|
||||
#define WLAN_IOREG_DOMAIN 0x8
|
||||
#define FW_FIFO_DOMAIN 0x4
|
||||
#define TX_HIQ_DOMAIN 0xc
|
||||
#define TX_MIQ_DOMAIN 0xd
|
||||
#define TX_LOQ_DOMAIN 0xe
|
||||
#define RX_RXFIFO_DOMAIN 0x1f
|
||||
|
||||
//IO Bus domain address mapping
|
||||
#define DEFUALT_OFFSET 0x0
|
||||
#define SPI_LOCAL_OFFSET 0x10250000
|
||||
#define WLAN_IOREG_OFFSET 0x10260000
|
||||
#define FW_FIFO_OFFSET 0x10270000
|
||||
#define TX_HIQ_OFFSET 0x10310000
|
||||
#define TX_MIQ_OFFSET 0x1032000
|
||||
#define TX_LOQ_OFFSET 0x10330000
|
||||
#define RX_RXOFF_OFFSET 0x10340000
|
||||
|
||||
//SPI Local registers
|
||||
#define SPI_REG_TX_CTRL 0x0000 // SPI Tx Control
|
||||
#define SPI_REG_STATUS_RECOVERY 0x0004
|
||||
#define SPI_REG_INT_TIMEOUT 0x0006
|
||||
#define SPI_REG_HIMR 0x0014 // SPI Host Interrupt Mask
|
||||
#define SPI_REG_HISR 0x0018 // SPI Host Interrupt Service Routine
|
||||
#define SPI_REG_RX0_REQ_LEN 0x001C // RXDMA Request Length
|
||||
#define SPI_REG_FREE_TXPG 0x0020 // Free Tx Buffer Page
|
||||
#define SPI_REG_HCPWM1 0x0024 // HCI Current Power Mode 1
|
||||
#define SPI_REG_HCPWM2 0x0026 // HCI Current Power Mode 2
|
||||
#define SPI_REG_HTSFR_INFO 0x0030 // HTSF Informaion
|
||||
#define SPI_REG_HRPWM1 0x0080 // HCI Request Power Mode 1
|
||||
#define SPI_REG_HRPWM2 0x0082 // HCI Request Power Mode 2
|
||||
#define SPI_REG_HPS_CLKR 0x0084 // HCI Power Save Clock
|
||||
#define SPI_REG_HSUS_CTRL 0x0086 // SPI HCI Suspend Control
|
||||
#define SPI_REG_HIMR_ON 0x0090 //SPI Host Extension Interrupt Mask Always
|
||||
#define SPI_REG_HISR_ON 0x0091 //SPI Host Extension Interrupt Status Always
|
||||
#define SPI_REG_CFG 0x00F0 //SPI Configuration Register
|
||||
|
||||
#define SPI_TX_CTRL (SPI_REG_TX_CTRL |SPI_LOCAL_OFFSET)
|
||||
#define SPI_STATUS_RECOVERY (SPI_REG_STATUS_RECOVERY |SPI_LOCAL_OFFSET)
|
||||
#define SPI_INT_TIMEOUT (SPI_REG_INT_TIMEOUT |SPI_LOCAL_OFFSET)
|
||||
#define SPI_HIMR (SPI_REG_HIMR |SPI_LOCAL_OFFSET)
|
||||
#define SPI_HISR (SPI_REG_HISR |SPI_LOCAL_OFFSET)
|
||||
#define SPI_RX0_REQ_LEN_1_BYTE (SPI_REG_RX0_REQ_LEN |SPI_LOCAL_OFFSET)
|
||||
#define SPI_FREE_TXPG (SPI_REG_FREE_TXPG |SPI_LOCAL_OFFSET)
|
||||
|
||||
#define SPI_HIMR_DISABLED 0
|
||||
|
||||
//SPI HIMR MASK diff with SDIO
|
||||
#define SPI_HISR_RX_REQUEST BIT(0)
|
||||
#define SPI_HISR_AVAL BIT(1)
|
||||
#define SPI_HISR_TXERR BIT(2)
|
||||
#define SPI_HISR_RXERR BIT(3)
|
||||
#define SPI_HISR_TXFOVW BIT(4)
|
||||
#define SPI_HISR_RXFOVW BIT(5)
|
||||
#define SPI_HISR_TXBCNOK BIT(6)
|
||||
#define SPI_HISR_TXBCNERR BIT(7)
|
||||
#define SPI_HISR_BCNERLY_INT BIT(16)
|
||||
#define SPI_HISR_ATIMEND BIT(17)
|
||||
#define SPI_HISR_ATIMEND_E BIT(18)
|
||||
#define SPI_HISR_CTWEND BIT(19)
|
||||
#define SPI_HISR_C2HCMD BIT(20)
|
||||
#define SPI_HISR_CPWM1 BIT(21)
|
||||
#define SPI_HISR_CPWM2 BIT(22)
|
||||
#define SPI_HISR_HSISR_IND BIT(23)
|
||||
#define SPI_HISR_GTINT3_IND BIT(24)
|
||||
#define SPI_HISR_GTINT4_IND BIT(25)
|
||||
#define SPI_HISR_PSTIMEOUT BIT(26)
|
||||
#define SPI_HISR_OCPINT BIT(27)
|
||||
#define SPI_HISR_TSF_BIT32_TOGGLE BIT(29)
|
||||
|
||||
#define MASK_SPI_HISR_CLEAR (SPI_HISR_TXERR |\
|
||||
SPI_HISR_RXERR |\
|
||||
SPI_HISR_TXFOVW |\
|
||||
SPI_HISR_RXFOVW |\
|
||||
SPI_HISR_TXBCNOK |\
|
||||
SPI_HISR_TXBCNERR |\
|
||||
SPI_HISR_C2HCMD |\
|
||||
SPI_HISR_CPWM1 |\
|
||||
SPI_HISR_CPWM2 |\
|
||||
SPI_HISR_HSISR_IND |\
|
||||
SPI_HISR_GTINT3_IND |\
|
||||
SPI_HISR_GTINT4_IND |\
|
||||
SPI_HISR_PSTIMEOUT |\
|
||||
SPI_HISR_OCPINT)
|
||||
|
||||
#define REG_LEN_FORMAT(pcmd, x) SET_BITS_TO_LE_4BYTE(pcmd, 0, 8, x)//(x<<(unsigned int)24)
|
||||
#define REG_ADDR_FORMAT(pcmd,x) SET_BITS_TO_LE_4BYTE(pcmd, 8, 16, x)//(x<<(unsigned int)16)
|
||||
#define REG_DOMAIN_ID_FORMAT(pcmd,x) SET_BITS_TO_LE_4BYTE(pcmd, 24, 5, x)//(x<<(unsigned int)0)
|
||||
#define REG_FUN_FORMAT(pcmd,x) SET_BITS_TO_LE_4BYTE(pcmd, 29, 2, x)//(x<<(unsigned int)5)
|
||||
#define REG_RW_FORMAT(pcmd,x) SET_BITS_TO_LE_4BYTE(pcmd, 31, 1, x)//(x<<(unsigned int)7)
|
||||
|
||||
#define FIFO_LEN_FORMAT(pcmd, x) SET_BITS_TO_LE_4BYTE(pcmd, 0, 16, x)//(x<<(unsigned int)24)
|
||||
//#define FIFO_ADDR_FORMAT(pcmd,x) SET_BITS_TO_LE_4BYTE(pcmd, 8, 16, x)//(x<<(unsigned int)16)
|
||||
#define FIFO_DOMAIN_ID_FORMAT(pcmd,x) SET_BITS_TO_LE_4BYTE(pcmd, 24, 5, x)//(x<<(unsigned int)0)
|
||||
#define FIFO_FUN_FORMAT(pcmd,x) SET_BITS_TO_LE_4BYTE(pcmd, 29, 2, x)//(x<<(unsigned int)5)
|
||||
#define FIFO_RW_FORMAT(pcmd,x) SET_BITS_TO_LE_4BYTE(pcmd, 31, 1, x)//(x<<(unsigned int)7)
|
||||
|
||||
|
||||
//get status dword0
|
||||
#define GET_STATUS_PUB_PAGE_NUM(status) LE_BITS_TO_4BYTE(status, 24, 8)
|
||||
#define GET_STATUS_HI_PAGE_NUM(status) LE_BITS_TO_4BYTE(status, 18, 6)
|
||||
#define GET_STATUS_MID_PAGE_NUM(status) LE_BITS_TO_4BYTE(status, 12, 6)
|
||||
#define GET_STATUS_LOW_PAGE_NUM(status) LE_BITS_TO_4BYTE(status, 6, 6)
|
||||
#define GET_STATUS_HISR_HI6BIT(status) LE_BITS_TO_4BYTE(status, 0, 6)
|
||||
|
||||
//get status dword1
|
||||
#define GET_STATUS_HISR_MID8BIT(status) LE_BITS_TO_4BYTE(status + 4, 24, 8)
|
||||
#define GET_STATUS_HISR_LOW8BIT(status) LE_BITS_TO_4BYTE(status + 4, 16, 8)
|
||||
#define GET_STATUS_ERROR(status) LE_BITS_TO_4BYTE(status + 4, 17, 1)
|
||||
#define GET_STATUS_INT(status) LE_BITS_TO_4BYTE(status + 4, 16, 1)
|
||||
#define GET_STATUS_RX_LENGTH(status) LE_BITS_TO_4BYTE(status + 4, 0, 16)
|
||||
|
||||
|
||||
#define RXDESC_SIZE 24
|
||||
|
||||
|
||||
struct spi_more_data {
|
||||
unsigned long more_data;
|
||||
unsigned long len;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_RTL8188E
|
||||
void rtl8188es_set_hal_ops(PADAPTER padapter);
|
||||
#define set_hal_ops rtl8188es_set_hal_ops
|
||||
#endif
|
||||
extern void spi_set_chip_endian(PADAPTER padapter);
|
||||
extern unsigned int spi_write8_endian(ADAPTER *Adapter, unsigned int addr, unsigned int buf, u32 big);
|
||||
extern void spi_set_intf_ops(_adapter *padapter,struct _io_ops *pops);
|
||||
extern void spi_set_chip_endian(PADAPTER padapter);
|
||||
extern void InitInterrupt8723ASdio(PADAPTER padapter);
|
||||
extern void InitSysInterrupt8723ASdio(PADAPTER padapter);
|
||||
extern void EnableInterrupt8723ASdio(PADAPTER padapter);
|
||||
extern void DisableInterrupt8723ASdio(PADAPTER padapter);
|
||||
extern void spi_int_hdl(PADAPTER padapter);
|
||||
extern u8 HalQueryTxBufferStatus8723ASdio(PADAPTER padapter);
|
||||
#ifdef CONFIG_RTL8723B
|
||||
extern void InitInterrupt8723BSdio(PADAPTER padapter);
|
||||
extern void InitSysInterrupt8723BSdio(PADAPTER padapter);
|
||||
extern void EnableInterrupt8723BSdio(PADAPTER padapter);
|
||||
extern void DisableInterrupt8723BSdio(PADAPTER padapter);
|
||||
extern u8 HalQueryTxBufferStatus8723BSdio(PADAPTER padapter);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8188E
|
||||
extern void InitInterrupt8188EGspi(PADAPTER padapter);
|
||||
extern void EnableInterrupt8188EGspi(PADAPTER padapter);
|
||||
extern void DisableInterrupt8188EGspi(PADAPTER padapter);
|
||||
extern void UpdateInterruptMask8188EGspi(PADAPTER padapter, u32 AddMSR, u32 RemoveMSR);
|
||||
extern u8 HalQueryTxBufferStatus8189EGspi(PADAPTER padapter);
|
||||
extern u8 HalQueryTxOQTBufferStatus8189EGspi(PADAPTER padapter);
|
||||
extern void ClearInterrupt8188EGspi(PADAPTER padapter);
|
||||
extern u8 CheckIPSStatus(PADAPTER padapter);
|
||||
#endif // CONFIG_RTL8188E
|
||||
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
|
||||
extern u8 RecvOnePkt(PADAPTER padapter, u32 size);
|
||||
#endif // CONFIG_WOWLAN
|
||||
|
||||
#endif //__GSPI_OPS_H__
|
||||
24
include/gspi_ops_linux.h
Normal file
24
include/gspi_ops_linux.h
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __SDIO_OPS_LINUX_H__
|
||||
#define __SDIO_OPS_LINUX_H__
|
||||
|
||||
#endif
|
||||
|
||||
31
include/gspi_osintf.h
Normal file
31
include/gspi_osintf.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __SDIO_OSINTF_H__
|
||||
#define __SDIO_OSINTF_H__
|
||||
|
||||
|
||||
#ifdef PLATFORM_OS_CE
|
||||
extern NDIS_STATUS ce_sd_get_dev_hdl(PADAPTER padapter);
|
||||
SD_API_STATUS ce_sd_int_callback(SD_DEVICE_HANDLE hDevice, PADAPTER padapter);
|
||||
extern void sd_setup_irs(PADAPTER padapter);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
32
include/h2clbk.h
Normal file
32
include/h2clbk.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#define _H2CLBK_H_
|
||||
|
||||
|
||||
void _lbk_cmd(PADAPTER Adapter);
|
||||
|
||||
void _lbk_rsp(PADAPTER Adapter);
|
||||
|
||||
void _lbk_evt(IN PADAPTER Adapter);
|
||||
|
||||
void h2c_event_callback(unsigned char *dev, unsigned char *pbuf);
|
||||
|
||||
97
include/hal_btcoex.h
Normal file
97
include/hal_btcoex.h
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2013 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_BTCOEX_H__
|
||||
#define __HAL_BTCOEX_H__
|
||||
|
||||
#include <drv_types.h>
|
||||
|
||||
// Some variables can't get from outsrc BT-Coex,
|
||||
// so we need to save here
|
||||
typedef struct _BT_COEXIST
|
||||
{
|
||||
u8 bBtExist;
|
||||
u8 btTotalAntNum;
|
||||
u8 btChipType;
|
||||
u8 bInitlized;
|
||||
u8 btAntisolation;
|
||||
} BT_COEXIST, *PBT_COEXIST;
|
||||
|
||||
void DBG_BT_INFO(u8 *dbgmsg);
|
||||
|
||||
void hal_btcoex_SetBTCoexist(PADAPTER padapter, u8 bBtExist);
|
||||
u8 hal_btcoex_IsBtExist(PADAPTER padapter);
|
||||
u8 hal_btcoex_IsBtDisabled(PADAPTER);
|
||||
void hal_btcoex_SetChipType(PADAPTER padapter, u8 chipType);
|
||||
u8 hal_btcoex_GetChipType(PADAPTER padapter);
|
||||
void hal_btcoex_SetPgAntNum(PADAPTER padapter, u8 antNum);
|
||||
u8 hal_btcoex_GetPgAntNum(PADAPTER padapter);
|
||||
void hal_btcoex_SetSingleAntPath(PADAPTER padapter, u8 singleAntPath);
|
||||
|
||||
u8 hal_btcoex_Initialize(PADAPTER padapter);
|
||||
void hal_btcoex_PowerOnSetting(PADAPTER padapter);
|
||||
void hal_btcoex_PreLoadFirmware(PADAPTER padapter);
|
||||
void hal_btcoex_InitHwConfig(PADAPTER padapter, u8 bWifiOnly);
|
||||
|
||||
void hal_btcoex_IpsNotify(PADAPTER padapter, u8 type);
|
||||
void hal_btcoex_LpsNotify(PADAPTER padapter, u8 type);
|
||||
void hal_btcoex_ScanNotify(PADAPTER padapter, u8 type);
|
||||
void hal_btcoex_ConnectNotify(PADAPTER padapter, u8 action);
|
||||
void hal_btcoex_MediaStatusNotify(PADAPTER padapter, u8 mediaStatus);
|
||||
void hal_btcoex_SpecialPacketNotify(PADAPTER padapter, u8 pktType);
|
||||
void hal_btcoex_IQKNotify(PADAPTER padapter, u8 state);
|
||||
void hal_btcoex_BtInfoNotify(PADAPTER padapter, u8 length, u8 *tmpBuf);
|
||||
void hal_btcoex_BtMpRptNotify(PADAPTER padapter, u8 length, u8 *tmpBuf);
|
||||
void hal_btcoex_SuspendNotify(PADAPTER padapter, u8 state);
|
||||
void hal_btcoex_HaltNotify(PADAPTER padapter);
|
||||
void hal_btcoex_ScoreBoardStatusNotify(PADAPTER padapter, u8 length, u8 *tmpBuf);
|
||||
void hal_btcoex_SwitchBtTRxMask(PADAPTER padapter);
|
||||
|
||||
void hal_btcoex_Hanlder(PADAPTER padapter);
|
||||
|
||||
s32 hal_btcoex_IsBTCoexRejectAMPDU(PADAPTER padapter);
|
||||
s32 hal_btcoex_IsBTCoexCtrlAMPDUSize(PADAPTER padapter);
|
||||
u32 hal_btcoex_GetAMPDUSize(PADAPTER padapter);
|
||||
void hal_btcoex_SetManualControl(PADAPTER padapter, u8 bmanual);
|
||||
u8 hal_btcoex_1Ant(PADAPTER padapter);
|
||||
u8 hal_btcoex_IsBtControlLps(PADAPTER);
|
||||
u8 hal_btcoex_IsLpsOn(PADAPTER);
|
||||
u8 hal_btcoex_RpwmVal(PADAPTER);
|
||||
u8 hal_btcoex_LpsVal(PADAPTER);
|
||||
u32 hal_btcoex_GetRaMask(PADAPTER);
|
||||
void hal_btcoex_RecordPwrMode(PADAPTER padapter, u8 *pCmdBuf, u8 cmdLen);
|
||||
void hal_btcoex_DisplayBtCoexInfo(PADAPTER, u8 *pbuf, u32 bufsize);
|
||||
void hal_btcoex_SetDBG(PADAPTER, u32 *pDbgModule);
|
||||
u32 hal_btcoex_GetDBG(PADAPTER, u8 *pStrBuf, u32 bufSize);
|
||||
u8 hal_btcoex_IncreaseScanDeviceNum(PADAPTER);
|
||||
u8 hal_btcoex_IsBtLinkExist(PADAPTER);
|
||||
void hal_btcoex_SetBtPatchVersion(PADAPTER,u16 btHciVer,u16 btPatchVer);
|
||||
void hal_btcoex_SetHciVersion(PADAPTER, u16 hciVersion);
|
||||
void hal_btcoex_SendScanNotify(PADAPTER, u8 type);
|
||||
void hal_btcoex_StackUpdateProfileInfo(void);
|
||||
void hal_btcoex_BTOffOnNotify(PADAPTER padapter, u8 bBTON);
|
||||
void hal_btcoex_SetAntIsolationType(PADAPTER padapter, u8 anttype);
|
||||
#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE
|
||||
int hal_btcoex_AntIsolationConfig_ParaFile(IN PADAPTER Adapter,IN char* pFileName);
|
||||
int hal_btcoex_ParseAntIsolationConfigFile(PADAPTER Adapter, char* buffer);
|
||||
#endif // CONFIG_LOAD_PHY_PARA_FROM_FILE
|
||||
u16 hal_btcoex_btreg_read(PADAPTER padapter, u8 type, u16 addr, u32 *data);
|
||||
u16 hal_btcoex_btreg_write(PADAPTER padapter, u8 type, u16 addr, u16 val);
|
||||
#endif // !__HAL_BTCOEX_H__
|
||||
|
||||
544
include/hal_com.h
Normal file
544
include/hal_com.h
Normal file
|
|
@ -0,0 +1,544 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_COMMON_H__
|
||||
#define __HAL_COMMON_H__
|
||||
|
||||
#include "HalVerDef.h"
|
||||
#include "hal_pg.h"
|
||||
#include "hal_phy.h"
|
||||
#include "hal_phy_reg.h"
|
||||
#include "hal_com_reg.h"
|
||||
#include "hal_com_phycfg.h"
|
||||
#include "../hal/hal_com_c2h.h"
|
||||
|
||||
/*------------------------------ Tx Desc definition Macro ------------------------*/
|
||||
//#pragma mark -- Tx Desc related definition. --
|
||||
//----------------------------------------------------------------------------
|
||||
//-----------------------------------------------------------
|
||||
// Rate
|
||||
//-----------------------------------------------------------
|
||||
// CCK Rates, TxHT = 0
|
||||
#define DESC_RATE1M 0x00
|
||||
#define DESC_RATE2M 0x01
|
||||
#define DESC_RATE5_5M 0x02
|
||||
#define DESC_RATE11M 0x03
|
||||
|
||||
// OFDM Rates, TxHT = 0
|
||||
#define DESC_RATE6M 0x04
|
||||
#define DESC_RATE9M 0x05
|
||||
#define DESC_RATE12M 0x06
|
||||
#define DESC_RATE18M 0x07
|
||||
#define DESC_RATE24M 0x08
|
||||
#define DESC_RATE36M 0x09
|
||||
#define DESC_RATE48M 0x0a
|
||||
#define DESC_RATE54M 0x0b
|
||||
|
||||
// MCS Rates, TxHT = 1
|
||||
#define DESC_RATEMCS0 0x0c
|
||||
#define DESC_RATEMCS1 0x0d
|
||||
#define DESC_RATEMCS2 0x0e
|
||||
#define DESC_RATEMCS3 0x0f
|
||||
#define DESC_RATEMCS4 0x10
|
||||
#define DESC_RATEMCS5 0x11
|
||||
#define DESC_RATEMCS6 0x12
|
||||
#define DESC_RATEMCS7 0x13
|
||||
#define DESC_RATEMCS8 0x14
|
||||
#define DESC_RATEMCS9 0x15
|
||||
#define DESC_RATEMCS10 0x16
|
||||
#define DESC_RATEMCS11 0x17
|
||||
#define DESC_RATEMCS12 0x18
|
||||
#define DESC_RATEMCS13 0x19
|
||||
#define DESC_RATEMCS14 0x1a
|
||||
#define DESC_RATEMCS15 0x1b
|
||||
#define DESC_RATEMCS16 0x1C
|
||||
#define DESC_RATEMCS17 0x1D
|
||||
#define DESC_RATEMCS18 0x1E
|
||||
#define DESC_RATEMCS19 0x1F
|
||||
#define DESC_RATEMCS20 0x20
|
||||
#define DESC_RATEMCS21 0x21
|
||||
#define DESC_RATEMCS22 0x22
|
||||
#define DESC_RATEMCS23 0x23
|
||||
#define DESC_RATEMCS24 0x24
|
||||
#define DESC_RATEMCS25 0x25
|
||||
#define DESC_RATEMCS26 0x26
|
||||
#define DESC_RATEMCS27 0x27
|
||||
#define DESC_RATEMCS28 0x28
|
||||
#define DESC_RATEMCS29 0x29
|
||||
#define DESC_RATEMCS30 0x2A
|
||||
#define DESC_RATEMCS31 0x2B
|
||||
#define DESC_RATEVHTSS1MCS0 0x2C
|
||||
#define DESC_RATEVHTSS1MCS1 0x2D
|
||||
#define DESC_RATEVHTSS1MCS2 0x2E
|
||||
#define DESC_RATEVHTSS1MCS3 0x2F
|
||||
#define DESC_RATEVHTSS1MCS4 0x30
|
||||
#define DESC_RATEVHTSS1MCS5 0x31
|
||||
#define DESC_RATEVHTSS1MCS6 0x32
|
||||
#define DESC_RATEVHTSS1MCS7 0x33
|
||||
#define DESC_RATEVHTSS1MCS8 0x34
|
||||
#define DESC_RATEVHTSS1MCS9 0x35
|
||||
#define DESC_RATEVHTSS2MCS0 0x36
|
||||
#define DESC_RATEVHTSS2MCS1 0x37
|
||||
#define DESC_RATEVHTSS2MCS2 0x38
|
||||
#define DESC_RATEVHTSS2MCS3 0x39
|
||||
#define DESC_RATEVHTSS2MCS4 0x3A
|
||||
#define DESC_RATEVHTSS2MCS5 0x3B
|
||||
#define DESC_RATEVHTSS2MCS6 0x3C
|
||||
#define DESC_RATEVHTSS2MCS7 0x3D
|
||||
#define DESC_RATEVHTSS2MCS8 0x3E
|
||||
#define DESC_RATEVHTSS2MCS9 0x3F
|
||||
#define DESC_RATEVHTSS3MCS0 0x40
|
||||
#define DESC_RATEVHTSS3MCS1 0x41
|
||||
#define DESC_RATEVHTSS3MCS2 0x42
|
||||
#define DESC_RATEVHTSS3MCS3 0x43
|
||||
#define DESC_RATEVHTSS3MCS4 0x44
|
||||
#define DESC_RATEVHTSS3MCS5 0x45
|
||||
#define DESC_RATEVHTSS3MCS6 0x46
|
||||
#define DESC_RATEVHTSS3MCS7 0x47
|
||||
#define DESC_RATEVHTSS3MCS8 0x48
|
||||
#define DESC_RATEVHTSS3MCS9 0x49
|
||||
#define DESC_RATEVHTSS4MCS0 0x4A
|
||||
#define DESC_RATEVHTSS4MCS1 0x4B
|
||||
#define DESC_RATEVHTSS4MCS2 0x4C
|
||||
#define DESC_RATEVHTSS4MCS3 0x4D
|
||||
#define DESC_RATEVHTSS4MCS4 0x4E
|
||||
#define DESC_RATEVHTSS4MCS5 0x4F
|
||||
#define DESC_RATEVHTSS4MCS6 0x50
|
||||
#define DESC_RATEVHTSS4MCS7 0x51
|
||||
#define DESC_RATEVHTSS4MCS8 0x52
|
||||
#define DESC_RATEVHTSS4MCS9 0x53
|
||||
|
||||
#define HDATA_RATE(rate)\
|
||||
(rate == DESC_RATE1M)?"CCK_1M" :\
|
||||
(rate == DESC_RATE2M)?"CCK_2M" :\
|
||||
(rate == DESC_RATE5_5M)?"CCK5_5M" :\
|
||||
(rate == DESC_RATE11M)?"CCK_11M" :\
|
||||
(rate == DESC_RATE6M)?"OFDM_6M" :\
|
||||
(rate == DESC_RATE9M)?"OFDM_9M" :\
|
||||
(rate == DESC_RATE12M)?"OFDM_12M" :\
|
||||
(rate == DESC_RATE18M)?"OFDM_18M" :\
|
||||
(rate == DESC_RATE24M)?"OFDM_24M" :\
|
||||
(rate == DESC_RATE36M)?"OFDM_36M" :\
|
||||
(rate == DESC_RATE48M)?"OFDM_48M" :\
|
||||
(rate == DESC_RATE54M)?"OFDM_54M" :\
|
||||
(rate == DESC_RATEMCS0)?"MCS0" :\
|
||||
(rate == DESC_RATEMCS1)?"MCS1" :\
|
||||
(rate == DESC_RATEMCS2)?"MCS2" :\
|
||||
(rate == DESC_RATEMCS3)?"MCS3" :\
|
||||
(rate == DESC_RATEMCS4)?"MCS4" :\
|
||||
(rate == DESC_RATEMCS5)?"MCS5" :\
|
||||
(rate == DESC_RATEMCS6)?"MCS6" :\
|
||||
(rate == DESC_RATEMCS7)?"MCS7" :\
|
||||
(rate == DESC_RATEMCS8)?"MCS8" :\
|
||||
(rate == DESC_RATEMCS9)?"MCS9" :\
|
||||
(rate == DESC_RATEMCS10)?"MCS10" :\
|
||||
(rate == DESC_RATEMCS11)?"MCS11" :\
|
||||
(rate == DESC_RATEMCS12)?"MCS12" :\
|
||||
(rate == DESC_RATEMCS13)?"MCS13" :\
|
||||
(rate == DESC_RATEMCS14)?"MCS14" :\
|
||||
(rate == DESC_RATEMCS15)?"MCS15" :\
|
||||
(rate == DESC_RATEMCS16)?"MCS16" :\
|
||||
(rate == DESC_RATEMCS17)?"MCS17" :\
|
||||
(rate == DESC_RATEMCS18)?"MCS18" :\
|
||||
(rate == DESC_RATEMCS19)?"MCS19" :\
|
||||
(rate == DESC_RATEMCS20)?"MCS20" :\
|
||||
(rate == DESC_RATEMCS21)?"MCS21" :\
|
||||
(rate == DESC_RATEMCS22)?"MCS22" :\
|
||||
(rate == DESC_RATEMCS23)?"MCS23" :\
|
||||
(rate == DESC_RATEVHTSS1MCS0)?"VHTSS1MCS0" :\
|
||||
(rate == DESC_RATEVHTSS1MCS1)?"VHTSS1MCS1" :\
|
||||
(rate == DESC_RATEVHTSS1MCS2)?"VHTSS1MCS2" :\
|
||||
(rate == DESC_RATEVHTSS1MCS3)?"VHTSS1MCS3" :\
|
||||
(rate == DESC_RATEVHTSS1MCS4)?"VHTSS1MCS4" :\
|
||||
(rate == DESC_RATEVHTSS1MCS5)?"VHTSS1MCS5" :\
|
||||
(rate == DESC_RATEVHTSS1MCS6)?"VHTSS1MCS6" :\
|
||||
(rate == DESC_RATEVHTSS1MCS7)?"VHTSS1MCS7" :\
|
||||
(rate == DESC_RATEVHTSS1MCS8)?"VHTSS1MCS8" :\
|
||||
(rate == DESC_RATEVHTSS1MCS9)?"VHTSS1MCS9" :\
|
||||
(rate == DESC_RATEVHTSS2MCS0)?"VHTSS2MCS0" :\
|
||||
(rate == DESC_RATEVHTSS2MCS1)?"VHTSS2MCS1" :\
|
||||
(rate == DESC_RATEVHTSS2MCS2)?"VHTSS2MCS2" :\
|
||||
(rate == DESC_RATEVHTSS2MCS3)?"VHTSS2MCS3" :\
|
||||
(rate == DESC_RATEVHTSS2MCS4)?"VHTSS2MCS4" :\
|
||||
(rate == DESC_RATEVHTSS2MCS5)?"VHTSS2MCS5" :\
|
||||
(rate == DESC_RATEVHTSS2MCS6)?"VHTSS2MCS6" :\
|
||||
(rate == DESC_RATEVHTSS2MCS7)?"VHTSS2MCS7" :\
|
||||
(rate == DESC_RATEVHTSS2MCS8)?"VHTSS2MCS8" :\
|
||||
(rate == DESC_RATEVHTSS2MCS9)?"VHTSS2MCS9" :\
|
||||
(rate == DESC_RATEVHTSS3MCS0)?"VHTSS3MCS0" :\
|
||||
(rate == DESC_RATEVHTSS3MCS1)?"VHTSS3MCS1" :\
|
||||
(rate == DESC_RATEVHTSS3MCS2)?"VHTSS3MCS2" :\
|
||||
(rate == DESC_RATEVHTSS3MCS3)?"VHTSS3MCS3" :\
|
||||
(rate == DESC_RATEVHTSS3MCS4)?"VHTSS3MCS4" :\
|
||||
(rate == DESC_RATEVHTSS3MCS5)?"VHTSS3MCS5" :\
|
||||
(rate == DESC_RATEVHTSS3MCS6)?"VHTSS3MCS6" :\
|
||||
(rate == DESC_RATEVHTSS3MCS7)?"VHTSS3MCS7" :\
|
||||
(rate == DESC_RATEVHTSS3MCS8)?"VHTSS3MCS8" :\
|
||||
(rate == DESC_RATEVHTSS3MCS9)?"VHTSS3MCS9" : "UNKNOWN"
|
||||
|
||||
|
||||
enum{
|
||||
UP_LINK,
|
||||
DOWN_LINK,
|
||||
};
|
||||
typedef enum _RT_MEDIA_STATUS {
|
||||
RT_MEDIA_DISCONNECT = 0,
|
||||
RT_MEDIA_CONNECT = 1
|
||||
} RT_MEDIA_STATUS;
|
||||
|
||||
#define MAX_DLFW_PAGE_SIZE 4096 // @ page : 4k bytes
|
||||
typedef enum _FIRMWARE_SOURCE {
|
||||
FW_SOURCE_IMG_FILE = 0,
|
||||
FW_SOURCE_HEADER_FILE = 1, //from header file
|
||||
} FIRMWARE_SOURCE, *PFIRMWARE_SOURCE;
|
||||
|
||||
//
|
||||
// Queue Select Value in TxDesc
|
||||
//
|
||||
#define QSLT_BK 0x2//0x01
|
||||
#define QSLT_BE 0x0
|
||||
#define QSLT_VI 0x5//0x4
|
||||
#define QSLT_VO 0x7//0x6
|
||||
#define QSLT_BEACON 0x10
|
||||
#define QSLT_HIGH 0x11
|
||||
#define QSLT_MGNT 0x12
|
||||
#define QSLT_CMD 0x13
|
||||
|
||||
// BK, BE, VI, VO, HCCA, MANAGEMENT, COMMAND, HIGH, BEACON.
|
||||
//#define MAX_TX_QUEUE 9
|
||||
|
||||
#define TX_SELE_HQ BIT(0) // High Queue
|
||||
#define TX_SELE_LQ BIT(1) // Low Queue
|
||||
#define TX_SELE_NQ BIT(2) // Normal Queue
|
||||
#define TX_SELE_EQ BIT(3) // Extern Queue
|
||||
|
||||
#define PageNum_128(_Len) (u32)(((_Len)>>7) + ((_Len)&0x7F ? 1:0))
|
||||
#define PageNum_256(_Len) (u32)(((_Len)>>8) + ((_Len)&0xFF ? 1:0))
|
||||
#define PageNum_512(_Len) (u32)(((_Len)>>9) + ((_Len)&0x1FF ? 1:0))
|
||||
#define PageNum(_Len, _Size) (u32)(((_Len)/(_Size)) + ((_Len)&((_Size) - 1) ? 1:0))
|
||||
|
||||
struct dbg_rx_counter
|
||||
{
|
||||
u32 rx_pkt_ok;
|
||||
u32 rx_pkt_crc_error;
|
||||
u32 rx_pkt_drop;
|
||||
u32 rx_ofdm_fa;
|
||||
u32 rx_cck_fa;
|
||||
u32 rx_ht_fa;
|
||||
};
|
||||
void rtw_dump_mac_rx_counters(_adapter* padapter,struct dbg_rx_counter *rx_counter);
|
||||
void rtw_dump_phy_rx_counters(_adapter* padapter,struct dbg_rx_counter *rx_counter);
|
||||
void rtw_reset_mac_rx_counters(_adapter* padapter);
|
||||
void rtw_reset_phy_rx_counters(_adapter* padapter);
|
||||
|
||||
#ifdef DBG_RX_COUNTER_DUMP
|
||||
#define DUMP_DRV_RX_COUNTER BIT0
|
||||
#define DUMP_MAC_RX_COUNTER BIT1
|
||||
#define DUMP_PHY_RX_COUNTER BIT2
|
||||
#define DUMP_DRV_TRX_COUNTER_DATA BIT3
|
||||
|
||||
void rtw_dump_phy_rxcnts_preprocess(_adapter* padapter,u8 rx_cnt_mode);
|
||||
void rtw_dump_rx_counters(_adapter* padapter);
|
||||
#endif
|
||||
|
||||
void dump_chip_info(HAL_VERSION ChipVersion);
|
||||
void rtw_hal_config_rftype(PADAPTER padapter);
|
||||
|
||||
#define BAND_CAP_2G BIT0
|
||||
#define BAND_CAP_5G BIT1
|
||||
#define BAND_CAP_BIT_NUM 2
|
||||
|
||||
#define BW_CAP_5M BIT0
|
||||
#define BW_CAP_10M BIT1
|
||||
#define BW_CAP_20M BIT2
|
||||
#define BW_CAP_40M BIT3
|
||||
#define BW_CAP_80M BIT4
|
||||
#define BW_CAP_160M BIT5
|
||||
#define BW_CAP_80_80M BIT6
|
||||
#define BW_CAP_BIT_NUM 7
|
||||
|
||||
#define PROTO_CAP_11B BIT0
|
||||
#define PROTO_CAP_11G BIT1
|
||||
#define PROTO_CAP_11N BIT2
|
||||
#define PROTO_CAP_11AC BIT3
|
||||
#define PROTO_CAP_BIT_NUM 4
|
||||
|
||||
#define WL_FUNC_P2P BIT0
|
||||
#define WL_FUNC_MIRACAST BIT1
|
||||
#define WL_FUNC_TDLS BIT2
|
||||
#define WL_FUNC_FTM BIT3
|
||||
#define WL_FUNC_BIT_NUM 4
|
||||
|
||||
int hal_spec_init(_adapter *adapter);
|
||||
void dump_hal_spec(void *sel, _adapter *adapter);
|
||||
|
||||
bool hal_chk_band_cap(_adapter *adapter, u8 cap);
|
||||
bool hal_chk_bw_cap(_adapter *adapter, u8 cap);
|
||||
bool hal_chk_proto_cap(_adapter *adapter, u8 cap);
|
||||
bool hal_is_band_support(_adapter *adapter, u8 band);
|
||||
bool hal_is_bw_support(_adapter *adapter, u8 bw);
|
||||
bool hal_is_wireless_mode_support(_adapter *adapter, u8 mode);
|
||||
u8 hal_largest_bw(_adapter *adapter, u8 in_bw);
|
||||
|
||||
bool hal_chk_wl_func(_adapter *adapter, u8 func);
|
||||
|
||||
u8 //return the final channel plan decision
|
||||
hal_com_config_channel_plan(
|
||||
IN PADAPTER padapter,
|
||||
IN u8 hw_channel_plan, //channel plan from HW (efuse/eeprom)
|
||||
IN u8 sw_channel_plan, //channel plan from SW (registry/module param)
|
||||
IN u8 def_channel_plan, //channel plan used when the former two is invalid
|
||||
IN BOOLEAN AutoLoadFail
|
||||
);
|
||||
|
||||
int hal_config_macaddr(_adapter *adapter, bool autoload_fail);
|
||||
|
||||
BOOLEAN
|
||||
HAL_IsLegalChannel(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 Channel
|
||||
);
|
||||
|
||||
u8 MRateToHwRate(u8 rate);
|
||||
|
||||
u8 HwRateToMRate(u8 rate);
|
||||
|
||||
void HalSetBrateCfg(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 *mBratesOS,
|
||||
OUT u16 *pBrateCfg);
|
||||
|
||||
BOOLEAN
|
||||
Hal_MappingOutPipe(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 NumOutPipe
|
||||
);
|
||||
|
||||
void hal_init_macaddr(_adapter *adapter);
|
||||
|
||||
void rtw_init_hal_com_default_value(PADAPTER Adapter);
|
||||
|
||||
void c2h_evt_clear(_adapter *adapter);
|
||||
s32 c2h_evt_read(_adapter *adapter, u8 *buf);
|
||||
s32 c2h_evt_read_88xx(_adapter *adapter, u8 *buf);
|
||||
|
||||
u8 rtw_hal_networktype_to_raid(_adapter *adapter, struct sta_info *psta);
|
||||
u8 rtw_get_mgntframe_raid(_adapter *adapter,unsigned char network_type);
|
||||
void rtw_hal_update_sta_rate_mask(PADAPTER padapter, struct sta_info *psta);
|
||||
|
||||
/* access HW only */
|
||||
u32 rtw_sec_read_cam(_adapter *adapter, u8 addr);
|
||||
void rtw_sec_write_cam(_adapter *adapter, u8 addr, u32 wdata);
|
||||
void rtw_sec_read_cam_ent(_adapter *adapter, u8 id, u8 *ctrl, u8 *mac, u8 *key);
|
||||
void rtw_sec_write_cam_ent(_adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key);
|
||||
bool rtw_sec_read_cam_is_gk(_adapter *adapter, u8 id);
|
||||
|
||||
void hw_var_port_switch(_adapter *adapter);
|
||||
|
||||
void SetHwReg(PADAPTER padapter, u8 variable, u8 *val);
|
||||
void GetHwReg(PADAPTER padapter, u8 variable, u8 *val);
|
||||
void rtw_hal_check_rxfifo_full(_adapter *adapter);
|
||||
|
||||
u8 SetHalDefVar(_adapter *adapter, HAL_DEF_VARIABLE variable, void *value);
|
||||
u8 GetHalDefVar(_adapter *adapter, HAL_DEF_VARIABLE variable, void *value);
|
||||
|
||||
BOOLEAN
|
||||
eqNByte(
|
||||
u8* str1,
|
||||
u8* str2,
|
||||
u32 num
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
IsHexDigit(
|
||||
IN char chTmp
|
||||
);
|
||||
|
||||
u32
|
||||
MapCharToHexDigit(
|
||||
IN char chTmp
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
GetHexValueFromString(
|
||||
IN char* szStr,
|
||||
IN OUT u32* pu4bVal,
|
||||
IN OUT u32* pu4bMove
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
GetFractionValueFromString(
|
||||
IN char* szStr,
|
||||
IN OUT u8* pInteger,
|
||||
IN OUT u8* pFraction,
|
||||
IN OUT u32* pu4bMove
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
IsCommentString(
|
||||
IN char* szStr
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
ParseQualifiedString(
|
||||
IN char* In,
|
||||
IN OUT u32* Start,
|
||||
OUT char* Out,
|
||||
IN char LeftQualifier,
|
||||
IN char RightQualifier
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
GetU1ByteIntegerFromStringInDecimal(
|
||||
IN char* Str,
|
||||
IN OUT u8* pInt
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
isAllSpaceOrTab(
|
||||
u8* data,
|
||||
u8 size
|
||||
);
|
||||
|
||||
void linked_info_dump(_adapter *padapter,u8 benable);
|
||||
#ifdef DBG_RX_SIGNAL_DISPLAY_RAW_DATA
|
||||
void rtw_get_raw_rssi_info(void *sel, _adapter *padapter);
|
||||
void rtw_store_phy_info(_adapter *padapter, union recv_frame *prframe);
|
||||
void rtw_dump_raw_rssi_info(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
#define HWSET_MAX_SIZE 512
|
||||
#ifdef CONFIG_EFUSE_CONFIG_FILE
|
||||
#define EFUSE_FILE_COLUMN_NUM 16
|
||||
u32 Hal_readPGDataFromConfigFile(PADAPTER padapter);
|
||||
u32 Hal_ReadMACAddrFromFile(PADAPTER padapter, u8 *mac_addr);
|
||||
#endif /* CONFIG_EFUSE_CONFIG_FILE */
|
||||
|
||||
int check_phy_efuse_tx_power_info_valid(PADAPTER padapter);
|
||||
int hal_efuse_macaddr_offset(_adapter *adapter);
|
||||
int Hal_GetPhyEfuseMACAddr(PADAPTER padapter, u8 *mac_addr);
|
||||
|
||||
#ifdef CONFIG_RF_GAIN_OFFSET
|
||||
void rtw_bb_rf_gain_offset(_adapter *padapter);
|
||||
#endif //CONFIG_RF_GAIN_OFFSET
|
||||
|
||||
void dm_DynamicUsbTxAgg(_adapter *padapter, u8 from_timer);
|
||||
u8 rtw_hal_busagg_qsel_check(_adapter *padapter,u8 pre_qsel,u8 next_qsel);
|
||||
void GetHalODMVar(
|
||||
PADAPTER Adapter,
|
||||
HAL_ODM_VARIABLE eVariable,
|
||||
PVOID pValue1,
|
||||
PVOID pValue2);
|
||||
void SetHalODMVar(
|
||||
PADAPTER Adapter,
|
||||
HAL_ODM_VARIABLE eVariable,
|
||||
PVOID pValue1,
|
||||
BOOLEAN bSet);
|
||||
|
||||
#ifdef CONFIG_BACKGROUND_NOISE_MONITOR
|
||||
struct noise_info
|
||||
{
|
||||
u8 bPauseDIG;
|
||||
u8 IGIValue;
|
||||
u32 max_time;//ms
|
||||
u8 chan;
|
||||
};
|
||||
#endif
|
||||
|
||||
void rtw_get_noise(_adapter* padapter);
|
||||
|
||||
void rtw_hal_set_fw_rsvd_page(_adapter* adapter, bool finished);
|
||||
|
||||
#ifdef CONFIG_GPIO_API
|
||||
u8 rtw_hal_get_gpio(_adapter* adapter, u8 gpio_num);
|
||||
int rtw_hal_set_gpio_output_value(_adapter* adapter, u8 gpio_num, bool isHigh);
|
||||
int rtw_hal_config_gpio(_adapter* adapter, u8 gpio_num, bool isOutput);
|
||||
int rtw_hal_register_gpio_interrupt(_adapter* adapter, int gpio_num, void(*callback)(u8 level));
|
||||
int rtw_hal_disable_gpio_interrupt(_adapter* adapter, int gpio_num);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_GPIO_WAKEUP
|
||||
void rtw_hal_set_output_gpio(_adapter *padapter, u8 index, u8 outputval);
|
||||
#endif
|
||||
|
||||
typedef enum _HAL_PHYDM_OPS {
|
||||
HAL_PHYDM_DIS_ALL_FUNC,
|
||||
HAL_PHYDM_FUNC_SET,
|
||||
HAL_PHYDM_FUNC_CLR,
|
||||
HAL_PHYDM_ABILITY_BK,
|
||||
HAL_PHYDM_ABILITY_RESTORE,
|
||||
HAL_PHYDM_ABILITY_SET,
|
||||
HAL_PHYDM_ABILITY_GET,
|
||||
} HAL_PHYDM_OPS;
|
||||
|
||||
|
||||
#define DYNAMIC_FUNC_DISABLE (0x0)
|
||||
u32 rtw_phydm_ability_ops(_adapter *adapter, HAL_PHYDM_OPS ops, u32 ability);
|
||||
|
||||
#define rtw_phydm_func_disable_all(adapter) \
|
||||
rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0)
|
||||
|
||||
#define rtw_phydm_func_for_offchannel(adapter) \
|
||||
do { \
|
||||
rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0); \
|
||||
if (rtw_odm_adaptivity_needed(adapter)) \
|
||||
rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ADAPTIVITY); \
|
||||
} while (0)
|
||||
|
||||
#define rtw_phydm_func_set(adapter, ability) \
|
||||
rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ability)
|
||||
|
||||
#define rtw_phydm_func_clr(adapter, ability) \
|
||||
rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_CLR, ability)
|
||||
|
||||
#define rtw_phydm_ability_backup(adapter) \
|
||||
rtw_phydm_ability_ops(adapter, HAL_PHYDM_ABILITY_BK, 0)
|
||||
|
||||
#define rtw_phydm_ability_restore(adapter) \
|
||||
rtw_phydm_ability_ops(adapter, HAL_PHYDM_ABILITY_RESTORE, 0)
|
||||
|
||||
#define rtw_phydm_ability_set(adapter, ability) \
|
||||
rtw_phydm_ability_ops(adapter, HAL_PHYDM_ABILITY_SET, ability)
|
||||
|
||||
static inline u32 rtw_phydm_ability_get(_adapter *adapter)
|
||||
{
|
||||
return rtw_phydm_ability_ops(adapter, HAL_PHYDM_ABILITY_GET, 0);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE
|
||||
extern char *rtw_phy_file_path;
|
||||
extern char file_path[PATH_LENGTH_MAX];
|
||||
#define GetLineFromBuffer(buffer) strsep(&buffer, "\r\n")
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FW_C2H_DEBUG
|
||||
void Debug_FwC2H(PADAPTER padapter, u8 *pdata, u8 len);
|
||||
#endif
|
||||
/*CONFIG_FW_C2H_DEBUG*/
|
||||
|
||||
void update_IOT_info(_adapter *padapter);
|
||||
|
||||
#ifdef CONFIG_AUTO_CHNL_SEL_NHM
|
||||
void rtw_acs_start(_adapter *padapter, bool bStart);
|
||||
#endif
|
||||
|
||||
void hal_set_crystal_cap(_adapter *adapter, u8 crystal_cap);
|
||||
|
||||
#endif //__HAL_COMMON_H__
|
||||
|
||||
363
include/hal_com_h2c.h
Normal file
363
include/hal_com_h2c.h
Normal file
|
|
@ -0,0 +1,363 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __COMMON_H2C_H__
|
||||
#define __COMMON_H2C_H__
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
//---------------------------------- H2C CMD DEFINITION ------------------------------------------------//
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
// 88e, 8723b, 8812, 8821, 92e use the same FW code base
|
||||
enum h2c_cmd{
|
||||
//Common Class: 000
|
||||
H2C_RSVD_PAGE = 0x00,
|
||||
H2C_MEDIA_STATUS_RPT = 0x01,
|
||||
H2C_SCAN_ENABLE = 0x02,
|
||||
H2C_KEEP_ALIVE = 0x03,
|
||||
H2C_DISCON_DECISION = 0x04,
|
||||
H2C_PSD_OFFLOAD = 0x05,
|
||||
H2C_AP_OFFLOAD = 0x08,
|
||||
H2C_BCN_RSVDPAGE = 0x09,
|
||||
H2C_PROBERSP_RSVDPAGE = 0x0A,
|
||||
H2C_FCS_RSVDPAGE = 0x10,
|
||||
H2C_FCS_INFO = 0x11,
|
||||
H2C_AP_WOW_GPIO_CTRL = 0x13,
|
||||
|
||||
//PoweSave Class: 001
|
||||
H2C_SET_PWR_MODE = 0x20,
|
||||
H2C_PS_TUNING_PARA = 0x21,
|
||||
H2C_PS_TUNING_PARA2 = 0x22,
|
||||
H2C_P2P_LPS_PARAM = 0x23,
|
||||
H2C_P2P_PS_OFFLOAD = 0x24,
|
||||
H2C_PS_SCAN_ENABLE = 0x25,
|
||||
H2C_SAP_PS_ = 0x26,
|
||||
H2C_INACTIVE_PS_ = 0x27, //Inactive_PS
|
||||
H2C_FWLPS_IN_IPS_ = 0x28,
|
||||
|
||||
//Dynamic Mechanism Class: 010
|
||||
H2C_MACID_CFG = 0x40,
|
||||
H2C_TXBF = 0x41,
|
||||
H2C_RSSI_SETTING = 0x42,
|
||||
H2C_AP_REQ_TXRPT = 0x43,
|
||||
H2C_INIT_RATE_COLLECT = 0x44,
|
||||
H2C_IQ_CALIBRATION = 0x45,
|
||||
|
||||
H2C_RA_MASK_3SS = 0x46,/* for 8814A */
|
||||
H2C_RA_PARA_ADJUST = 0x47,/* CONFIG_RA_DBG_CMD */
|
||||
H2C_DYNAMIC_TX_PATH = 0x48,/* for 8814A */
|
||||
|
||||
H2C_FW_TRACE_EN = 0x49,
|
||||
|
||||
//BT Class: 011
|
||||
H2C_B_TYPE_TDMA = 0x60,
|
||||
H2C_BT_INFO = 0x61,
|
||||
H2C_FORCE_BT_TXPWR = 0x62,
|
||||
H2C_BT_IGNORE_WLANACT = 0x63,
|
||||
H2C_DAC_SWING_VALUE = 0x64,
|
||||
H2C_ANT_SEL_RSV = 0x65,
|
||||
H2C_WL_OPMODE = 0x66,
|
||||
H2C_BT_MP_OPER = 0x67,
|
||||
H2C_BT_CONTROL = 0x68,
|
||||
H2C_BT_WIFI_CTRL = 0x69,
|
||||
H2C_BT_FW_PATCH = 0x6A,
|
||||
|
||||
//WOWLAN Class: 100
|
||||
H2C_WOWLAN = 0x80,
|
||||
H2C_REMOTE_WAKE_CTRL = 0x81,
|
||||
H2C_AOAC_GLOBAL_INFO = 0x82,
|
||||
H2C_AOAC_RSVD_PAGE = 0x83,
|
||||
H2C_AOAC_RSVD_PAGE2 = 0x84,
|
||||
H2C_D0_SCAN_OFFLOAD_CTRL = 0x85,
|
||||
H2C_D0_SCAN_OFFLOAD_INFO = 0x86,
|
||||
H2C_CHNL_SWITCH_OFFLOAD = 0x87,
|
||||
H2C_AOAC_RSVDPAGE3 = 0x88,
|
||||
H2C_P2P_OFFLOAD_RSVD_PAGE = 0x8A,
|
||||
H2C_P2P_OFFLOAD = 0x8B,
|
||||
|
||||
H2C_RESET_TSF = 0xC0,
|
||||
H2C_BCNHWSEQ = 0xC2,
|
||||
H2C_MAXID,
|
||||
};
|
||||
|
||||
#define H2C_INACTIVE_PS_LEN 3
|
||||
#define H2C_RSVDPAGE_LOC_LEN 5
|
||||
#define H2C_MEDIA_STATUS_RPT_LEN 3
|
||||
#define H2C_KEEP_ALIVE_CTRL_LEN 2
|
||||
#define H2C_DISCON_DECISION_LEN 3
|
||||
#define H2C_AP_OFFLOAD_LEN 3
|
||||
#define H2C_AP_WOW_GPIO_CTRL_LEN 4
|
||||
#define H2C_AP_PS_LEN 2
|
||||
#define H2C_PWRMODE_LEN 7
|
||||
#define H2C_PSTUNEPARAM_LEN 4
|
||||
#define H2C_MACID_CFG_LEN 7
|
||||
#define H2C_BTMP_OPER_LEN 5
|
||||
#define H2C_WOWLAN_LEN 5
|
||||
#define H2C_REMOTE_WAKE_CTRL_LEN 3
|
||||
#define H2C_AOAC_GLOBAL_INFO_LEN 2
|
||||
#define H2C_AOAC_RSVDPAGE_LOC_LEN 7
|
||||
#define H2C_SCAN_OFFLOAD_CTRL_LEN 4
|
||||
#define H2C_BT_FW_PATCH_LEN 6
|
||||
#define H2C_RSSI_SETTING_LEN 4
|
||||
#define H2C_AP_REQ_TXRPT_LEN 2
|
||||
#define H2C_FORCE_BT_TXPWR_LEN 3
|
||||
#define H2C_BCN_RSVDPAGE_LEN 5
|
||||
#define H2C_PROBERSP_RSVDPAGE_LEN 5
|
||||
#define H2C_P2PRSVDPAGE_LOC_LEN 5
|
||||
#define H2C_P2P_OFFLOAD_LEN 3
|
||||
|
||||
#define eqMacAddr(a,b) ( ((a)[0]==(b)[0] && (a)[1]==(b)[1] && (a)[2]==(b)[2] && (a)[3]==(b)[3] && (a)[4]==(b)[4] && (a)[5]==(b)[5]) ? 1:0 )
|
||||
#define cpMacAddr(des,src) ((des)[0]=(src)[0],(des)[1]=(src)[1],(des)[2]=(src)[2],(des)[3]=(src)[3],(des)[4]=(src)[4],(des)[5]=(src)[5])
|
||||
#define cpIpAddr(des,src) ((des)[0]=(src)[0],(des)[1]=(src)[1],(des)[2]=(src)[2],(des)[3]=(src)[3])
|
||||
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
|
||||
//
|
||||
// ARP packet
|
||||
//
|
||||
// LLC Header
|
||||
#define GET_ARP_PKT_LLC_TYPE(__pHeader) ReadLE2Byte(((u8 *)(__pHeader)) + 6)
|
||||
|
||||
//ARP element
|
||||
#define GET_ARP_PKT_OPERATION(__pHeader) ReadLE2Byte(((u8 *)(__pHeader)) + 6)
|
||||
#define GET_ARP_PKT_SENDER_MAC_ADDR(__pHeader, _val) cpMacAddr((u8*)(_val), ((u8*)(__pHeader))+8)
|
||||
#define GET_ARP_PKT_SENDER_IP_ADDR(__pHeader, _val) cpIpAddr((u8*)(_val), ((u8*)(__pHeader))+14)
|
||||
#define GET_ARP_PKT_TARGET_MAC_ADDR(__pHeader, _val) cpMacAddr((u8*)(_val), ((u8*)(__pHeader))+18)
|
||||
#define GET_ARP_PKT_TARGET_IP_ADDR(__pHeader, _val) cpIpAddr((u8*)(_val), ((u8*)(__pHeader))+24)
|
||||
|
||||
#define SET_ARP_PKT_HW(__pHeader, __Value) WriteLE2Byte(((u8 *)(__pHeader)) + 0, __Value)
|
||||
#define SET_ARP_PKT_PROTOCOL(__pHeader, __Value) WriteLE2Byte(((u8 *)(__pHeader)) + 2, __Value)
|
||||
#define SET_ARP_PKT_HW_ADDR_LEN(__pHeader, __Value) WriteLE1Byte(((u8 *)(__pHeader)) + 4, __Value)
|
||||
#define SET_ARP_PKT_PROTOCOL_ADDR_LEN(__pHeader, __Value) WriteLE1Byte(((u8 *)(__pHeader)) + 5, __Value)
|
||||
#define SET_ARP_PKT_OPERATION(__pHeader, __Value) WriteLE2Byte(((u8 *)(__pHeader)) + 6, __Value)
|
||||
#define SET_ARP_PKT_SENDER_MAC_ADDR(__pHeader, _val) cpMacAddr(((u8*)(__pHeader))+8, (u8*)(_val))
|
||||
#define SET_ARP_PKT_SENDER_IP_ADDR(__pHeader, _val) cpIpAddr(((u8*)(__pHeader))+14, (u8*)(_val))
|
||||
#define SET_ARP_PKT_TARGET_MAC_ADDR(__pHeader, _val) cpMacAddr(((u8*)(__pHeader))+18, (u8*)(_val))
|
||||
#define SET_ARP_PKT_TARGET_IP_ADDR(__pHeader, _val) cpIpAddr(((u8*)(__pHeader))+24, (u8*)(_val))
|
||||
|
||||
#define FW_WOWLAN_FUN_EN BIT(0)
|
||||
#define FW_WOWLAN_PATTERN_MATCH BIT(1)
|
||||
#define FW_WOWLAN_MAGIC_PKT BIT(2)
|
||||
#define FW_WOWLAN_UNICAST BIT(3)
|
||||
#define FW_WOWLAN_ALL_PKT_DROP BIT(4)
|
||||
#define FW_WOWLAN_GPIO_ACTIVE BIT(5)
|
||||
#define FW_WOWLAN_REKEY_WAKEUP BIT(6)
|
||||
#define FW_WOWLAN_DEAUTH_WAKEUP BIT(7)
|
||||
|
||||
#define FW_WOWLAN_GPIO_WAKEUP_EN BIT(0)
|
||||
#define FW_FW_PARSE_MAGIC_PKT BIT(1)
|
||||
|
||||
#define FW_REMOTE_WAKE_CTRL_EN BIT(0)
|
||||
#define FW_REALWOWLAN_EN BIT(5)
|
||||
|
||||
#define FW_WOWLAN_KEEP_ALIVE_EN BIT(0)
|
||||
#define FW_ADOPT_USER BIT(1)
|
||||
#define FW_WOWLAN_KEEP_ALIVE_PKT_TYPE BIT(2)
|
||||
|
||||
#define FW_REMOTE_WAKE_CTRL_EN BIT(0)
|
||||
#define FW_ARP_EN BIT(1)
|
||||
#define FW_REALWOWLAN_EN BIT(5)
|
||||
#define FW_WOW_FW_UNICAST_EN BIT(7)
|
||||
|
||||
#endif //CONFIG_WOWLAN
|
||||
|
||||
//_RSVDPAGE_LOC_CMD_0x00
|
||||
#define SET_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
|
||||
#define SET_H2CCMD_RSVDPAGE_LOC_PSPOLL(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value)
|
||||
#define SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value)
|
||||
#define SET_H2CCMD_RSVDPAGE_LOC_QOS_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value)
|
||||
#define SET_H2CCMD_RSVDPAGE_LOC_BT_QOS_NULL_DATA(__pH2CCmd, __Value)SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 0, 8, __Value)
|
||||
|
||||
//_MEDIA_STATUS_RPT_PARM_CMD_0x01
|
||||
#define SET_H2CCMD_MSRRPT_PARM_OPMODE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(((u8 *)(__pH2CCmd)), 0, 1, (__Value))
|
||||
#define SET_H2CCMD_MSRRPT_PARM_MACID_IND(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(((u8 *)(__pH2CCmd)), 1, 1, (__Value))
|
||||
#define SET_H2CCMD_MSRRPT_PARM_MIRACAST(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(((u8 *)(__pH2CCmd)), 2, 1, (__Value))
|
||||
#define SET_H2CCMD_MSRRPT_PARM_MIRACAST_SINK(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(((u8 *)(__pH2CCmd)), 3, 1, (__Value))
|
||||
#define SET_H2CCMD_MSRRPT_PARM_ROLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(((u8 *)(__pH2CCmd)), 4, 4, (__Value))
|
||||
#define SET_H2CCMD_MSRRPT_PARM_MACID(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(((u8 *)(__pH2CCmd)) + 1, 0, 8, (__Value))
|
||||
#define SET_H2CCMD_MSRRPT_PARM_MACID_END(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(((u8 *)(__pH2CCmd)) + 2, 0, 8, (__Value))
|
||||
|
||||
#define GET_H2CCMD_MSRRPT_PARM_OPMODE(__pH2CCmd) LE_BITS_TO_1BYTE(((u8 *)(__pH2CCmd)), 0, 1)
|
||||
#define GET_H2CCMD_MSRRPT_PARM_MIRACAST(__pH2CCmd) LE_BITS_TO_1BYTE(((u8 *)(__pH2CCmd)), 2, 1)
|
||||
#define GET_H2CCMD_MSRRPT_PARM_MIRACAST_SINK(__pH2CCmd) LE_BITS_TO_1BYTE(((u8 *)(__pH2CCmd)), 3, 1)
|
||||
#define GET_H2CCMD_MSRRPT_PARM_ROLE(__pH2CCmd) LE_BITS_TO_1BYTE(((u8 *)(__pH2CCmd)), 4, 4)
|
||||
|
||||
#define H2C_MSR_ROLE_RSVD 0
|
||||
#define H2C_MSR_ROLE_STA 1
|
||||
#define H2C_MSR_ROLE_AP 2
|
||||
#define H2C_MSR_ROLE_GC 3
|
||||
#define H2C_MSR_ROLE_GO 4
|
||||
#define H2C_MSR_ROLE_TDLS 5
|
||||
#define H2C_MSR_ROLE_MAX 6
|
||||
|
||||
extern const char * const _h2c_msr_role_str[];
|
||||
#define h2c_msr_role_str(role) (((role) >= H2C_MSR_ROLE_MAX) ? _h2c_msr_role_str[H2C_MSR_ROLE_MAX] : _h2c_msr_role_str[(role)])
|
||||
|
||||
#define H2C_MSR_FMT "%s %s%s"
|
||||
#define H2C_MSR_ARG(h2c_msr) \
|
||||
GET_H2CCMD_MSRRPT_PARM_OPMODE((h2c_msr)) ? " C" : "", \
|
||||
h2c_msr_role_str(GET_H2CCMD_MSRRPT_PARM_ROLE((h2c_msr))), \
|
||||
GET_H2CCMD_MSRRPT_PARM_MIRACAST((h2c_msr)) ? (GET_H2CCMD_MSRRPT_PARM_MIRACAST_SINK((h2c_msr)) ? " MSINK" : " MSRC") : ""
|
||||
|
||||
s32 rtw_hal_set_FwMediaStatusRpt_cmd(_adapter *adapter, bool opmode, bool miracast, bool miracast_sink, u8 role, u8 macid, bool macid_ind, u8 macid_end);
|
||||
s32 rtw_hal_set_FwMediaStatusRpt_single_cmd(_adapter *adapter, bool opmode, bool miracast, bool miracast_sink, u8 role, u8 macid);
|
||||
s32 rtw_hal_set_FwMediaStatusRpt_range_cmd(_adapter *adapter, bool opmode, bool miracast, bool miracast_sink, u8 role, u8 macid, u8 macid_end);
|
||||
|
||||
//_KEEP_ALIVE_CMD_0x03
|
||||
#define SET_H2CCMD_KEEPALIVE_PARM_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value)
|
||||
#define SET_H2CCMD_KEEPALIVE_PARM_ADOPT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value)
|
||||
#define SET_H2CCMD_KEEPALIVE_PARM_PKT_TYPE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value)
|
||||
#define SET_H2CCMD_KEEPALIVE_PARM_CHECK_PERIOD(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 0, 8, __Value)
|
||||
|
||||
//_DISCONNECT_DECISION_CMD_0x04
|
||||
#define SET_H2CCMD_DISCONDECISION_PARM_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value)
|
||||
#define SET_H2CCMD_DISCONDECISION_PARM_ADOPT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value)
|
||||
#define SET_H2CCMD_DISCONDECISION_PARM_CHECK_PERIOD(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 0, 8, __Value)
|
||||
#define SET_H2CCMD_DISCONDECISION_PARM_TRY_PKT_NUM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 0, 8, __Value)
|
||||
|
||||
//_AP_Offload 0x08
|
||||
#define SET_H2CCMD_AP_WOWLAN_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
|
||||
//_BCN_RsvdPage 0x09
|
||||
#define SET_H2CCMD_AP_WOWLAN_RSVDPAGE_LOC_BCN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
|
||||
//_Probersp_RsvdPage 0x0a
|
||||
#define SET_H2CCMD_AP_WOWLAN_RSVDPAGE_LOC_ProbeRsp(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
|
||||
//_Probersp_RsvdPage 0x13
|
||||
#define SET_H2CCMD_AP_WOW_GPIO_CTRL_INDEX(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 4, __Value)
|
||||
#define SET_H2CCMD_AP_WOW_GPIO_CTRL_C2H_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 4, 1, __Value)
|
||||
#define SET_H2CCMD_AP_WOW_GPIO_CTRL_PLUS(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 5, 1, __Value)
|
||||
#define SET_H2CCMD_AP_WOW_GPIO_CTRL_HIGH_ACTIVE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 6, 1, __Value)
|
||||
#define SET_H2CCMD_AP_WOW_GPIO_CTRL_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 7, 1, __Value)
|
||||
#define SET_H2CCMD_AP_WOW_GPIO_CTRL_DURATION(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value)
|
||||
#define SET_H2CCMD_AP_WOW_GPIO_CTRL_C2H_DURATION(__pH2CCmd, __Value)SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value)
|
||||
//_AP_PS 0x26
|
||||
#define SET_H2CCMD_AP_WOW_PS_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value)
|
||||
#define SET_H2CCMD_AP_WOW_PS_32K_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value)
|
||||
#define SET_H2CCMD_AP_WOW_PS_RF(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value)
|
||||
#define SET_H2CCMD_AP_WOW_PS_DURATION(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value)
|
||||
|
||||
// _WoWLAN PARAM_CMD_0x80
|
||||
#define SET_H2CCMD_WOWLAN_FUNC_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_PATTERN_MATCH_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_MAGIC_PKT_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_UNICAST_PKT_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 3, 1, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_ALL_PKT_DROP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 4, 1, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_GPIO_ACTIVE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 5, 1, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_REKEY_WAKE_UP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 6, 1, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_DISCONNECT_WAKE_UP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 7, 1, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_GPIONUM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 7, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_DATAPIN_WAKE_UP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 7, 1, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_GPIO_DURATION(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_GPIO_PULSE_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 1, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_GPIO_PULSE_COUNT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 1, 7, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_LOWPR_RX(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 0, 1, __Value)
|
||||
#define SET_H2CCMD_WOWLAN_CHANGE_UNIT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 2, 1, __Value)
|
||||
// _REMOTE_WAKEUP_CMD_0x81
|
||||
#define SET_H2CCMD_REMOTE_WAKECTRL_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value)
|
||||
#define SET_H2CCMD_REMOTE_WAKE_CTRL_ARP_OFFLOAD_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value)
|
||||
#define SET_H2CCMD_REMOTE_WAKE_CTRL_NDP_OFFLOAD_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value)
|
||||
#define SET_H2CCMD_REMOTE_WAKE_CTRL_GTK_OFFLOAD_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 3, 1, __Value)
|
||||
#define SET_H2CCMD_REMOTE_WAKE_CTRL_NLO_OFFLOAD_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 4, 1, __Value)
|
||||
#define SET_H2CCMD_REMOTE_WAKE_CTRL_FW_UNICAST_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 7, 1, __Value)
|
||||
#define SET_H2CCMD_REMOTE_WAKE_CTRL_P2P_OFFLAD_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 1, __Value)
|
||||
#define SET_H2CCMD_REMOTE_WAKE_CTRL_NBNS_FILTER_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 2, 1, __Value)
|
||||
#define SET_H2CCMD_REMOTE_WAKE_CTRL_ARP_ACTION(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 1, __Value)
|
||||
#define SET_H2CCMD_REMOTE_WAKE_CTRL_FW_PARSING_UNTIL_WAKEUP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 4, 1, __Value)
|
||||
|
||||
// AOAC_GLOBAL_INFO_0x82
|
||||
#define SET_H2CCMD_AOAC_GLOBAL_INFO_PAIRWISE_ENC_ALG(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
|
||||
#define SET_H2CCMD_AOAC_GLOBAL_INFO_GROUP_ENC_ALG(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value)
|
||||
|
||||
// AOAC_RSVDPAGE_LOC_0x83
|
||||
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_REMOTE_WAKE_CTRL_INFO(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 8, __Value)
|
||||
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_ARP_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value)
|
||||
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_NEIGHBOR_ADV(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value)
|
||||
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value)
|
||||
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_INFO(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 0, 8, __Value)
|
||||
#ifdef CONFIG_GTK_OL
|
||||
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_EXT_MEM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+5, 0, 8, __Value)
|
||||
#endif //CONFIG_GTK_OL
|
||||
#ifdef CONFIG_PNO_SUPPORT
|
||||
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_NLO_INFO(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 8, __Value)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PNO_SUPPORT
|
||||
// D0_Scan_Offload_Info_0x86
|
||||
#define SET_H2CCMD_AOAC_NLO_FUN_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 3, 1, __Value)
|
||||
#define SET_H2CCMD_AOAC_NLO_IPS_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 4, 1, __Value)
|
||||
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_PROBE_PACKET(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value)
|
||||
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_SCAN_INFO(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value)
|
||||
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_SSID_INFO(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value)
|
||||
#endif //CONFIG_PNO_SUPPORT
|
||||
|
||||
#ifdef CONFIG_P2P_WOWLAN
|
||||
//P2P_RsvdPage_0x8a
|
||||
#define SET_H2CCMD_RSVDPAGE_LOC_P2P_BCN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
|
||||
#define SET_H2CCMD_RSVDPAGE_LOC_P2P_PROBE_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value)
|
||||
#define SET_H2CCMD_RSVDPAGE_LOC_P2P_NEGO_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value)
|
||||
#define SET_H2CCMD_RSVDPAGE_LOC_P2P_INVITE_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value)
|
||||
#define SET_H2CCMD_RSVDPAGE_LOC_P2P_PD_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 0, 8, __Value)
|
||||
#endif //CONFIG_P2P_WOWLAN
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
//------------------------------------------- Structure --------------------------------------------------//
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
typedef struct _RSVDPAGE_LOC {
|
||||
u8 LocProbeRsp;
|
||||
u8 LocPsPoll;
|
||||
u8 LocNullData;
|
||||
u8 LocQosNull;
|
||||
u8 LocBTQosNull;
|
||||
#ifdef CONFIG_WOWLAN
|
||||
u8 LocRemoteCtrlInfo;
|
||||
u8 LocArpRsp;
|
||||
u8 LocNbrAdv;
|
||||
u8 LocGTKRsp;
|
||||
u8 LocGTKInfo;
|
||||
u8 LocProbeReq;
|
||||
u8 LocNetList;
|
||||
#ifdef CONFIG_GTK_OL
|
||||
u8 LocGTKEXTMEM;
|
||||
#endif //CONFIG_GTK_OL
|
||||
#ifdef CONFIG_PNO_SUPPORT
|
||||
u8 LocPNOInfo;
|
||||
u8 LocScanInfo;
|
||||
u8 LocSSIDInfo;
|
||||
u8 LocProbePacket;
|
||||
#endif //CONFIG_PNO_SUPPORT
|
||||
#endif //CONFIG_WOWLAN
|
||||
u8 LocApOffloadBCN;
|
||||
#ifdef CONFIG_P2P_WOWLAN
|
||||
u8 LocP2PBeacon;
|
||||
u8 LocP2PProbeRsp;
|
||||
u8 LocNegoRsp;
|
||||
u8 LocInviteRsp;
|
||||
u8 LocPDRsp;
|
||||
#endif //CONFIG_P2P_WOWLAN
|
||||
} RSVDPAGE_LOC, *PRSVDPAGE_LOC;
|
||||
|
||||
#endif
|
||||
void dump_TX_FIFO(PADAPTER padapter, u8 page_num, u16 page_size);
|
||||
u8 rtw_hal_set_fw_media_status_cmd(_adapter* adapter, u8 mstatus, u8 macid);
|
||||
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
|
||||
//WOW command function
|
||||
void rtw_hal_set_fw_wow_related_cmd(_adapter* padapter, u8 enable);
|
||||
#ifdef CONFIG_P2P_WOWLAN
|
||||
//H2C 0x8A
|
||||
u8 rtw_hal_set_FwP2PRsvdPage_cmd(_adapter* adapter, PRSVDPAGE_LOC rsvdpageloc);
|
||||
//H2C 0x8B
|
||||
u8 rtw_hal_set_p2p_wowlan_offload_cmd(_adapter* adapter);
|
||||
#endif //CONFIG_P2P_WOWLAN
|
||||
#endif
|
||||
398
include/hal_com_led.h
Normal file
398
include/hal_com_led.h
Normal file
|
|
@ -0,0 +1,398 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_COMMON_LED_H_
|
||||
#define __HAL_COMMON_LED_H_
|
||||
|
||||
|
||||
#define MSECS(t) (HZ * ((t) / 1000) + (HZ * ((t) % 1000)) / 1000)
|
||||
|
||||
//================================================================================
|
||||
// LED Behavior Constant.
|
||||
//================================================================================
|
||||
// Default LED behavior.
|
||||
//
|
||||
#define LED_BLINK_NORMAL_INTERVAL 100
|
||||
#define LED_BLINK_SLOWLY_INTERVAL 200
|
||||
#define LED_BLINK_LONG_INTERVAL 400
|
||||
#define LED_INITIAL_INTERVAL 1800
|
||||
|
||||
// LED Customerization
|
||||
|
||||
//NETTRONIX
|
||||
#define LED_BLINK_NORMAL_INTERVAL_NETTRONIX 100
|
||||
#define LED_BLINK_SLOWLY_INTERVAL_NETTRONIX 2000
|
||||
|
||||
//PORNET
|
||||
#define LED_BLINK_SLOWLY_INTERVAL_PORNET 1000
|
||||
#define LED_BLINK_NORMAL_INTERVAL_PORNET 100
|
||||
#define LED_BLINK_FAST_INTERVAL_BITLAND 30
|
||||
|
||||
//AzWave.
|
||||
#define LED_CM2_BLINK_ON_INTERVAL 250
|
||||
#define LED_CM2_BLINK_OFF_INTERVAL 4750
|
||||
#define LED_CM8_BLINK_OFF_INTERVAL 3750 //for QMI
|
||||
|
||||
//RunTop
|
||||
#define LED_RunTop_BLINK_INTERVAL 300
|
||||
|
||||
//ALPHA
|
||||
#define LED_BLINK_NO_LINK_INTERVAL_ALPHA 1000
|
||||
#define LED_BLINK_NO_LINK_INTERVAL_ALPHA_500MS 500 //add by ylb 20121012 for customer led for alpha
|
||||
#define LED_BLINK_LINK_INTERVAL_ALPHA 500 //500
|
||||
#define LED_BLINK_SCAN_INTERVAL_ALPHA 180 //150
|
||||
#define LED_BLINK_FASTER_INTERVAL_ALPHA 50
|
||||
#define LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA 5000
|
||||
|
||||
// 111122 by hpfan: Customized for Xavi
|
||||
#define LED_CM11_BLINK_INTERVAL 300
|
||||
#define LED_CM11_LINK_ON_INTERVEL 3000
|
||||
|
||||
//Netgear
|
||||
#define LED_BLINK_LINK_INTERVAL_NETGEAR 500
|
||||
#define LED_BLINK_LINK_SLOWLY_INTERVAL_NETGEAR 1000
|
||||
|
||||
#define LED_WPS_BLINK_OFF_INTERVAL_NETGEAR 100
|
||||
#define LED_WPS_BLINK_ON_INTERVAL_NETGEAR 500
|
||||
|
||||
//Belkin AC950
|
||||
#define LED_BLINK_LINK_INTERVAL_ON_BELKIN 200
|
||||
#define LED_BLINK_LINK_INTERVAL_OFF_BELKIN 100
|
||||
#define LED_BLINK_ERROR_INTERVAL_BELKIN 100
|
||||
|
||||
//by chiyokolin for Azurewave
|
||||
#define LED_CM12_BLINK_INTERVAL_5Mbps 160
|
||||
#define LED_CM12_BLINK_INTERVAL_10Mbps 80
|
||||
#define LED_CM12_BLINK_INTERVAL_20Mbps 50
|
||||
#define LED_CM12_BLINK_INTERVAL_40Mbps 40
|
||||
#define LED_CM12_BLINK_INTERVAL_80Mbps 30
|
||||
#define LED_CM12_BLINK_INTERVAL_MAXMbps 25
|
||||
|
||||
//Dlink
|
||||
#define LED_BLINK_NO_LINK_INTERVAL 1000
|
||||
#define LED_BLINK_LINK_IDEL_INTERVAL 100
|
||||
|
||||
#define LED_BLINK_SCAN_ON_INTERVAL 30
|
||||
#define LED_BLINK_SCAN_OFF_INTERVAL 300
|
||||
|
||||
#define LED_WPS_BLINK_ON_INTERVAL_DLINK 30
|
||||
#define LED_WPS_BLINK_OFF_INTERVAL_DLINK 300
|
||||
#define LED_WPS_BLINK_LINKED_ON_INTERVAL_DLINK 5000
|
||||
|
||||
//================================================================================
|
||||
// LED object.
|
||||
//================================================================================
|
||||
|
||||
typedef enum _LED_CTL_MODE{
|
||||
LED_CTL_POWER_ON = 1,
|
||||
LED_CTL_LINK = 2,
|
||||
LED_CTL_NO_LINK = 3,
|
||||
LED_CTL_TX = 4,
|
||||
LED_CTL_RX = 5,
|
||||
LED_CTL_SITE_SURVEY = 6,
|
||||
LED_CTL_POWER_OFF = 7,
|
||||
LED_CTL_START_TO_LINK = 8,
|
||||
LED_CTL_START_WPS = 9,
|
||||
LED_CTL_STOP_WPS = 10,
|
||||
LED_CTL_START_WPS_BOTTON = 11, //added for runtop
|
||||
LED_CTL_STOP_WPS_FAIL = 12, //added for ALPHA
|
||||
LED_CTL_STOP_WPS_FAIL_OVERLAP = 13, //added for BELKIN
|
||||
LED_CTL_CONNECTION_NO_TRANSFER = 14,
|
||||
}LED_CTL_MODE;
|
||||
|
||||
typedef enum _LED_STATE{
|
||||
LED_UNKNOWN = 0,
|
||||
RTW_LED_ON = 1,
|
||||
RTW_LED_OFF = 2,
|
||||
LED_BLINK_NORMAL = 3,
|
||||
LED_BLINK_SLOWLY = 4,
|
||||
LED_BLINK_POWER_ON = 5,
|
||||
LED_BLINK_SCAN = 6, // LED is blinking during scanning period, the # of times to blink is depend on time for scanning.
|
||||
LED_BLINK_NO_LINK = 7, // LED is blinking during no link state.
|
||||
LED_BLINK_StartToBlink = 8, // Customzied for Sercomm Printer Server case
|
||||
LED_BLINK_TXRX = 9,
|
||||
LED_BLINK_WPS = 10, // LED is blinkg during WPS communication
|
||||
LED_BLINK_WPS_STOP = 11, //for ALPHA
|
||||
LED_BLINK_WPS_STOP_OVERLAP = 12, //for BELKIN
|
||||
LED_BLINK_RUNTOP = 13, // Customized for RunTop
|
||||
LED_BLINK_CAMEO = 14,
|
||||
LED_BLINK_XAVI = 15,
|
||||
LED_BLINK_ALWAYS_ON = 16,
|
||||
LED_BLINK_LINK_IN_PROCESS = 17, //Customized for Belkin AC950
|
||||
LED_BLINK_AUTH_ERROR = 18, //Customized for Belkin AC950
|
||||
LED_BLINK_Azurewave_5Mbps = 19,
|
||||
LED_BLINK_Azurewave_10Mbps = 20,
|
||||
LED_BLINK_Azurewave_20Mbps = 21,
|
||||
LED_BLINK_Azurewave_40Mbps = 22,
|
||||
LED_BLINK_Azurewave_80Mbps = 23,
|
||||
LED_BLINK_Azurewave_MAXMbps = 24,
|
||||
LED_BLINK_LINK_IDEL = 25,
|
||||
LED_BLINK_WPS_LINKED = 26,
|
||||
}LED_STATE;
|
||||
|
||||
typedef enum _LED_PIN{
|
||||
LED_PIN_GPIO0,
|
||||
LED_PIN_LED0,
|
||||
LED_PIN_LED1,
|
||||
LED_PIN_LED2
|
||||
}LED_PIN;
|
||||
|
||||
|
||||
//================================================================================
|
||||
// PCIE LED Definition.
|
||||
//================================================================================
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
typedef enum _LED_STRATEGY_PCIE{
|
||||
SW_LED_MODE0, // SW control 1 LED via GPIO0. It is default option.
|
||||
SW_LED_MODE1, // SW control for PCI Express
|
||||
SW_LED_MODE2, // SW control for Cameo.
|
||||
SW_LED_MODE3, // SW contorl for RunTop.
|
||||
SW_LED_MODE4, // SW control for Netcore
|
||||
SW_LED_MODE5, //added by vivi, for led new mode, DLINK
|
||||
SW_LED_MODE6, //added by vivi, for led new mode, PRONET
|
||||
SW_LED_MODE7, //added by chiyokolin, for Lenovo, PCI Express Minicard Spec Rev.1.2 spec
|
||||
SW_LED_MODE8, //added by chiyokolin, for QMI
|
||||
SW_LED_MODE9, //added by chiyokolin, for BITLAND-LENOVO, PCI Express Minicard Spec Rev.1.1
|
||||
SW_LED_MODE10, //added by chiyokolin, for Edimax-ASUS
|
||||
SW_LED_MODE11, //added by hpfan, for Xavi
|
||||
SW_LED_MODE12, //added by chiyokolin, for Azurewave
|
||||
HW_LED, // HW control 2 LEDs, LED0 and LED1 (there are 4 different control modes)
|
||||
}LED_STRATEGY_PCIE, *PLED_STRATEGY_PCIE;
|
||||
|
||||
typedef struct _LED_PCIE{
|
||||
PADAPTER padapter;
|
||||
|
||||
LED_PIN LedPin; // Identify how to implement this SW led.
|
||||
|
||||
LED_STATE CurrLedState; // Current LED state.
|
||||
BOOLEAN bLedOn; // TRUE if LED is ON, FALSE if LED is OFF.
|
||||
|
||||
BOOLEAN bLedBlinkInProgress; // TRUE if it is blinking, FALSE o.w..
|
||||
BOOLEAN bLedWPSBlinkInProgress; // TRUE if it is blinking, FALSE o.w..
|
||||
|
||||
BOOLEAN bLedSlowBlinkInProgress;//added by vivi, for led new mode
|
||||
u32 BlinkTimes; // Number of times to toggle led state for blinking.
|
||||
LED_STATE BlinkingLedState; // Next state for blinking, either LED_ON or LED_OFF are.
|
||||
|
||||
_timer BlinkTimer; // Timer object for led blinking.
|
||||
} LED_PCIE, *PLED_PCIE;
|
||||
|
||||
typedef struct _LED_PCIE LED_DATA, *PLED_DATA;
|
||||
typedef enum _LED_STRATEGY_PCIE LED_STRATEGY, *PLED_STRATEGY;
|
||||
|
||||
VOID
|
||||
LedControlPCIE(
|
||||
IN PADAPTER Adapter,
|
||||
IN LED_CTL_MODE LedAction
|
||||
);
|
||||
|
||||
VOID
|
||||
gen_RefreshLedState(
|
||||
IN PADAPTER Adapter);
|
||||
|
||||
//================================================================================
|
||||
// USB LED Definition.
|
||||
//================================================================================
|
||||
#elif defined(CONFIG_USB_HCI)
|
||||
|
||||
#define IS_LED_WPS_BLINKING(_LED_USB) (((PLED_USB)_LED_USB)->CurrLedState==LED_BLINK_WPS \
|
||||
|| ((PLED_USB)_LED_USB)->CurrLedState==LED_BLINK_WPS_STOP \
|
||||
|| ((PLED_USB)_LED_USB)->bLedWPSBlinkInProgress)
|
||||
|
||||
#define IS_LED_BLINKING(_LED_USB) (((PLED_USB)_LED_USB)->bLedWPSBlinkInProgress \
|
||||
||((PLED_USB)_LED_USB)->bLedScanBlinkInProgress)
|
||||
|
||||
|
||||
typedef enum _LED_STRATEGY_USB{
|
||||
SW_LED_MODE0, // SW control 1 LED via GPIO0. It is default option.
|
||||
SW_LED_MODE1, // 2 LEDs, through LED0 and LED1. For ALPHA.
|
||||
SW_LED_MODE2, // SW control 1 LED via GPIO0, customized for AzWave 8187 minicard.
|
||||
SW_LED_MODE3, // SW control 1 LED via GPIO0, customized for Sercomm Printer Server case.
|
||||
SW_LED_MODE4, //for Edimax / Belkin
|
||||
SW_LED_MODE5, //for Sercomm / Belkin
|
||||
SW_LED_MODE6, //for 88CU minicard, porting from ce SW_LED_MODE7
|
||||
SW_LED_MODE7, //for Netgear special requirement
|
||||
SW_LED_MODE8, //for LC
|
||||
SW_LED_MODE9, //for Belkin AC950
|
||||
SW_LED_MODE10, //for Netgear A6200V2
|
||||
SW_LED_MODE11, //for Edimax / ASUS
|
||||
SW_LED_MODE12, //for WNC/NEC
|
||||
SW_LED_MODE13, //for Netgear A6100, 8811Au
|
||||
SW_LED_MODE14, //for Buffalo, DNI, 8811Au
|
||||
SW_LED_MODE15, //for DLINK, 8811Au/8812AU
|
||||
HW_LED, // HW control 2 LEDs, LED0 and LED1 (there are 4 different control modes, see MAC.CONFIG1 for details.)
|
||||
}LED_STRATEGY_USB, *PLED_STRATEGY_USB;
|
||||
|
||||
|
||||
typedef struct _LED_USB{
|
||||
PADAPTER padapter;
|
||||
|
||||
LED_PIN LedPin; // Identify how to implement this SW led.
|
||||
|
||||
LED_STATE CurrLedState; // Current LED state.
|
||||
BOOLEAN bLedOn; // TRUE if LED is ON, FALSE if LED is OFF.
|
||||
|
||||
BOOLEAN bSWLedCtrl;
|
||||
|
||||
BOOLEAN bLedBlinkInProgress; // TRUE if it is blinking, FALSE o.w..
|
||||
// ALPHA, added by chiyoko, 20090106
|
||||
BOOLEAN bLedNoLinkBlinkInProgress;
|
||||
BOOLEAN bLedLinkBlinkInProgress;
|
||||
BOOLEAN bLedStartToLinkBlinkInProgress;
|
||||
BOOLEAN bLedScanBlinkInProgress;
|
||||
BOOLEAN bLedWPSBlinkInProgress;
|
||||
|
||||
u32 BlinkTimes; // Number of times to toggle led state for blinking.
|
||||
u8 BlinkCounter; //Added for turn off overlap led after blinking a while, by page, 20120821
|
||||
LED_STATE BlinkingLedState; // Next state for blinking, either LED_ON or LED_OFF are.
|
||||
|
||||
_timer BlinkTimer; // Timer object for led blinking.
|
||||
|
||||
_workitem BlinkWorkItem; // Workitem used by BlinkTimer to manipulate H/W to blink LED.'
|
||||
ATOMIC_T bCancelWorkItem; //check if WorkItem is cancelled
|
||||
} LED_USB, *PLED_USB;
|
||||
|
||||
typedef struct _LED_USB LED_DATA, *PLED_DATA;
|
||||
typedef enum _LED_STRATEGY_USB LED_STRATEGY, *PLED_STRATEGY;
|
||||
|
||||
VOID
|
||||
LedControlUSB(
|
||||
IN PADAPTER Adapter,
|
||||
IN LED_CTL_MODE LedAction
|
||||
);
|
||||
|
||||
|
||||
//================================================================================
|
||||
// SDIO LED Definition.
|
||||
//================================================================================
|
||||
#elif defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
|
||||
|
||||
#define IS_LED_WPS_BLINKING(_LED_SDIO) (((PLED_SDIO)_LED_SDIO)->CurrLedState==LED_BLINK_WPS \
|
||||
|| ((PLED_SDIO)_LED_SDIO)->CurrLedState==LED_BLINK_WPS_STOP \
|
||||
|| ((PLED_SDIO)_LED_SDIO)->bLedWPSBlinkInProgress)
|
||||
|
||||
#define IS_LED_BLINKING(_LED_SDIO) (((PLED_SDIO)_LED_SDIO)->bLedWPSBlinkInProgress \
|
||||
||((PLED_SDIO)_LED_SDIO)->bLedScanBlinkInProgress)
|
||||
|
||||
|
||||
typedef enum _LED_STRATEGY_SDIO{
|
||||
SW_LED_MODE0, // SW control 1 LED via GPIO0. It is default option.
|
||||
SW_LED_MODE1, // 2 LEDs, through LED0 and LED1. For ALPHA.
|
||||
SW_LED_MODE2, // SW control 1 LED via GPIO0, customized for AzWave 8187 minicard.
|
||||
SW_LED_MODE3, // SW control 1 LED via GPIO0, customized for Sercomm Printer Server case.
|
||||
SW_LED_MODE4, //for Edimax / Belkin
|
||||
SW_LED_MODE5, //for Sercomm / Belkin
|
||||
SW_LED_MODE6, //for 88CU minicard, porting from ce SW_LED_MODE7
|
||||
HW_LED, // HW control 2 LEDs, LED0 and LED1 (there are 4 different control modes, see MAC.CONFIG1 for details.)
|
||||
}LED_STRATEGY_SDIO, *PLED_STRATEGY_SDIO;
|
||||
|
||||
typedef struct _LED_SDIO{
|
||||
PADAPTER padapter;
|
||||
|
||||
LED_PIN LedPin; // Identify how to implement this SW led.
|
||||
|
||||
LED_STATE CurrLedState; // Current LED state.
|
||||
BOOLEAN bLedOn; // TRUE if LED is ON, FALSE if LED is OFF.
|
||||
|
||||
BOOLEAN bSWLedCtrl;
|
||||
|
||||
BOOLEAN bLedBlinkInProgress; // TRUE if it is blinking, FALSE o.w..
|
||||
// ALPHA, added by chiyoko, 20090106
|
||||
BOOLEAN bLedNoLinkBlinkInProgress;
|
||||
BOOLEAN bLedLinkBlinkInProgress;
|
||||
BOOLEAN bLedStartToLinkBlinkInProgress;
|
||||
BOOLEAN bLedScanBlinkInProgress;
|
||||
BOOLEAN bLedWPSBlinkInProgress;
|
||||
|
||||
u32 BlinkTimes; // Number of times to toggle led state for blinking.
|
||||
LED_STATE BlinkingLedState; // Next state for blinking, either LED_ON or LED_OFF are.
|
||||
|
||||
_timer BlinkTimer; // Timer object for led blinking.
|
||||
|
||||
_workitem BlinkWorkItem; // Workitem used by BlinkTimer to manipulate H/W to blink LED.
|
||||
} LED_SDIO, *PLED_SDIO;
|
||||
|
||||
typedef struct _LED_SDIO LED_DATA, *PLED_DATA;
|
||||
typedef enum _LED_STRATEGY_SDIO LED_STRATEGY, *PLED_STRATEGY;
|
||||
|
||||
VOID
|
||||
LedControlSDIO(
|
||||
IN PADAPTER Adapter,
|
||||
IN LED_CTL_MODE LedAction
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
struct led_priv{
|
||||
/* add for led controll */
|
||||
LED_DATA SwLed0;
|
||||
LED_DATA SwLed1;
|
||||
LED_DATA SwLed2;
|
||||
LED_STRATEGY LedStrategy;
|
||||
u8 bRegUseLed;
|
||||
void (*LedControlHandler)(_adapter *padapter, LED_CTL_MODE LedAction);
|
||||
void (*SwLedOn)(_adapter *padapter, PLED_DATA pLed);
|
||||
void (*SwLedOff)(_adapter *padapter, PLED_DATA pLed);
|
||||
/* add for led controll */
|
||||
};
|
||||
|
||||
#ifdef CONFIG_SW_LED
|
||||
#define rtw_led_control(adapter, LedAction) \
|
||||
do { \
|
||||
if((adapter)->ledpriv.LedControlHandler) \
|
||||
(adapter)->ledpriv.LedControlHandler((adapter), (LedAction)); \
|
||||
} while(0)
|
||||
#else //CONFIG_SW_LED
|
||||
#define rtw_led_control(adapter, LedAction)
|
||||
#endif //CONFIG_SW_LED
|
||||
|
||||
#define SwLedOn(adapter, pLed) \
|
||||
do { \
|
||||
if((adapter)->ledpriv.SwLedOn) \
|
||||
(adapter)->ledpriv.SwLedOn((adapter), (pLed)); \
|
||||
} while(0)
|
||||
|
||||
#define SwLedOff(adapter, pLed) \
|
||||
do { \
|
||||
if((adapter)->ledpriv.SwLedOff) \
|
||||
(adapter)->ledpriv.SwLedOff((adapter), (pLed)); \
|
||||
} while(0)
|
||||
|
||||
void BlinkTimerCallback(void *data);
|
||||
void BlinkWorkItemCallback(_workitem *work);
|
||||
|
||||
void ResetLedStatus(PLED_DATA pLed);
|
||||
|
||||
void
|
||||
InitLed(
|
||||
_adapter *padapter,
|
||||
PLED_DATA pLed,
|
||||
LED_PIN LedPin
|
||||
);
|
||||
|
||||
void
|
||||
DeInitLed(
|
||||
PLED_DATA pLed
|
||||
);
|
||||
|
||||
//hal...
|
||||
extern void BlinkHandler(PLED_DATA pLed);
|
||||
|
||||
#endif //__RTW_LED_H_
|
||||
|
||||
285
include/hal_com_phycfg.h
Normal file
285
include/hal_com_phycfg.h
Normal file
|
|
@ -0,0 +1,285 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_COM_PHYCFG_H__
|
||||
#define __HAL_COM_PHYCFG_H__
|
||||
|
||||
#define PathA 0x0 // Useless
|
||||
#define PathB 0x1
|
||||
#define PathC 0x2
|
||||
#define PathD 0x3
|
||||
|
||||
typedef enum _RF_TX_NUM {
|
||||
RF_1TX = 0,
|
||||
RF_2TX,
|
||||
RF_3TX,
|
||||
RF_4TX,
|
||||
RF_MAX_TX_NUM,
|
||||
RF_TX_NUM_NONIMPLEMENT,
|
||||
} RF_TX_NUM;
|
||||
|
||||
#define MAX_POWER_INDEX 0x3F
|
||||
|
||||
typedef enum _REGULATION_TXPWR_LMT {
|
||||
TXPWR_LMT_FCC = 0,
|
||||
TXPWR_LMT_MKK = 1,
|
||||
TXPWR_LMT_ETSI = 2,
|
||||
TXPWR_LMT_WW = 3,
|
||||
|
||||
TXPWR_LMT_MAX_REGULATION_NUM = 4
|
||||
} REGULATION_TXPWR_LMT;
|
||||
|
||||
#define TX_PWR_LMT_REF_VHT_FROM_HT BIT0
|
||||
#define TX_PWR_LMT_REF_HT_FROM_VHT BIT1
|
||||
|
||||
/*------------------------------Define structure----------------------------*/
|
||||
typedef struct _BB_REGISTER_DEFINITION{
|
||||
u32 rfintfs; // set software control:
|
||||
// 0x870~0x877[8 bytes]
|
||||
|
||||
u32 rfintfo; // output data:
|
||||
// 0x860~0x86f [16 bytes]
|
||||
|
||||
u32 rfintfe; // output enable:
|
||||
// 0x860~0x86f [16 bytes]
|
||||
|
||||
u32 rf3wireOffset; // LSSI data:
|
||||
// 0x840~0x84f [16 bytes]
|
||||
|
||||
u32 rfHSSIPara2; // wire parameter control2 :
|
||||
// 0x824~0x827,0x82c~0x82f, 0x834~0x837, 0x83c~0x83f [16 bytes]
|
||||
|
||||
u32 rfLSSIReadBack; //LSSI RF readback data SI mode
|
||||
// 0x8a0~0x8af [16 bytes]
|
||||
|
||||
u32 rfLSSIReadBackPi; //LSSI RF readback data PI mode 0x8b8-8bc for Path A and B
|
||||
|
||||
}BB_REGISTER_DEFINITION_T, *PBB_REGISTER_DEFINITION_T;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
u8
|
||||
PHY_GetTxPowerByRateBase(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 Band,
|
||||
IN u8 RfPath,
|
||||
IN u8 TxNum,
|
||||
IN RATE_SECTION RateSection
|
||||
);
|
||||
|
||||
#ifdef TX_POWER_BY_RATE_OLD
|
||||
u8
|
||||
PHY_GetRateSectionIndexOfTxPowerByRate(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask
|
||||
);
|
||||
#endif /* TX_POWER_BY_RATE_OLD */
|
||||
|
||||
VOID
|
||||
PHY_GetRateValuesOfTxPowerByRate(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Value,
|
||||
OUT u8 *Rate,
|
||||
OUT s8 *PwrByRateVal,
|
||||
OUT u8 *RateNum
|
||||
);
|
||||
|
||||
u8
|
||||
PHY_GetRateIndexOfTxPowerByRate(
|
||||
IN u8 Rate
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerIndexByRateSection(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 RFPath,
|
||||
IN u8 Channel,
|
||||
IN u8 RateSection
|
||||
);
|
||||
|
||||
s8
|
||||
_PHY_GetTxPowerByRate(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 Band,
|
||||
IN u8 RFPath,
|
||||
IN u8 TxNum,
|
||||
IN u8 RateIndex
|
||||
);
|
||||
|
||||
s8
|
||||
PHY_GetTxPowerByRate(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 Band,
|
||||
IN u8 RFPath,
|
||||
IN u8 TxNum,
|
||||
IN u8 RateIndex
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerByRate(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 Band,
|
||||
IN u8 RFPath,
|
||||
IN u8 TxNum,
|
||||
IN u8 Rate,
|
||||
IN s8 Value
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerLevelByPath(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 channel,
|
||||
IN u8 path
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerIndexByRateArray(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 RFPath,
|
||||
IN CHANNEL_WIDTH BandWidth,
|
||||
IN u8 Channel,
|
||||
IN u8* Rates,
|
||||
IN u8 RateArraySize
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_InitTxPowerByRate(
|
||||
IN PADAPTER pAdapter
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_StoreTxPowerByRate(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u32 Band,
|
||||
IN u32 RfPath,
|
||||
IN u32 TxNum,
|
||||
IN u32 RegAddr,
|
||||
IN u32 BitMask,
|
||||
IN u32 Data
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_TxPowerByRateConfiguration(
|
||||
IN PADAPTER pAdapter
|
||||
);
|
||||
|
||||
u8
|
||||
PHY_GetTxPowerIndexBase(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate,
|
||||
IN CHANNEL_WIDTH BandWidth,
|
||||
IN u8 Channel,
|
||||
OUT PBOOLEAN bIn24G
|
||||
);
|
||||
|
||||
s8
|
||||
PHY_GetTxPowerLimit(
|
||||
IN PADAPTER Adapter,
|
||||
IN u32 RegPwrTblSel,
|
||||
IN BAND_TYPE Band,
|
||||
IN CHANNEL_WIDTH Bandwidth,
|
||||
IN u8 RfPath,
|
||||
IN u8 DataRate,
|
||||
IN u8 Channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_ConvertTxPowerLimitToPowerIndex(
|
||||
IN PADAPTER Adapter
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_InitTxPowerLimit(
|
||||
IN PADAPTER Adapter
|
||||
);
|
||||
|
||||
s8
|
||||
PHY_GetTxPowerTrackingOffset(
|
||||
PADAPTER pAdapter,
|
||||
u8 Rate,
|
||||
u8 RFPath
|
||||
);
|
||||
|
||||
u8
|
||||
PHY_GetTxPowerIndex(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate,
|
||||
IN CHANNEL_WIDTH BandWidth,
|
||||
IN u8 Channel
|
||||
);
|
||||
|
||||
VOID
|
||||
PHY_SetTxPowerIndex(
|
||||
IN PADAPTER pAdapter,
|
||||
IN u32 PowerIndex,
|
||||
IN u8 RFPath,
|
||||
IN u8 Rate
|
||||
);
|
||||
|
||||
bool phy_is_tx_power_limit_needed(_adapter *adapter);
|
||||
bool phy_is_tx_power_by_rate_needed(_adapter *adapter);
|
||||
int phy_load_tx_power_by_rate(_adapter *adapter, const char *hal_file_name, u8 force);
|
||||
int phy_load_tx_power_limit(_adapter *adapter, const char *hal_file_name, u8 force);
|
||||
void phy_load_tx_power_ext_info(_adapter *adapter, u8 chk_file, u8 force);
|
||||
void phy_reload_tx_power_ext_info(_adapter *adapter);
|
||||
void phy_reload_default_tx_power_ext_info(_adapter *adapter);
|
||||
|
||||
void dump_tx_power_ext_info(void *sel, _adapter *adapter);
|
||||
void dump_target_tx_power(void *sel, _adapter *adapter);
|
||||
void dump_tx_power_by_rate(void *sel, _adapter *adapter);
|
||||
void dump_tx_power_limit(void *sel, _adapter *adapter);
|
||||
|
||||
int rtw_is_phy_file_readable(const char *hal_file_name);
|
||||
|
||||
#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE
|
||||
#define MAX_PARA_FILE_BUF_LEN 25600
|
||||
|
||||
#define LOAD_MAC_PARA_FILE BIT0
|
||||
#define LOAD_BB_PARA_FILE BIT1
|
||||
#define LOAD_BB_PG_PARA_FILE BIT2
|
||||
#define LOAD_BB_MP_PARA_FILE BIT3
|
||||
#define LOAD_RF_PARA_FILE BIT4
|
||||
#define LOAD_RF_TXPWR_TRACK_PARA_FILE BIT5
|
||||
#define LOAD_RF_TXPWR_LMT_PARA_FILE BIT6
|
||||
|
||||
int phy_ConfigMACWithParaFile(IN PADAPTER Adapter, IN char* pFileName);
|
||||
|
||||
int phy_ConfigBBWithParaFile(IN PADAPTER Adapter, IN char* pFileName, IN u32 ConfigType);
|
||||
|
||||
int phy_ConfigBBWithPgParaFile(IN PADAPTER Adapter, IN const char *pFileName);
|
||||
|
||||
int phy_ConfigBBWithMpParaFile(IN PADAPTER Adapter, IN char* pFileName);
|
||||
|
||||
int PHY_ConfigRFWithParaFile(IN PADAPTER Adapter, IN char* pFileName, IN u8 eRFPath);
|
||||
|
||||
int PHY_ConfigRFWithTxPwrTrackParaFile(IN PADAPTER Adapter, IN char* pFileName);
|
||||
|
||||
int PHY_ConfigRFWithPowerLimitTableParaFile(IN PADAPTER Adapter, IN const char *pFileName);
|
||||
|
||||
void phy_free_filebuf_mask(_adapter *padapter, u8 mask);
|
||||
void phy_free_filebuf(_adapter *padapter);
|
||||
#endif /* CONFIG_LOAD_PHY_PARA_FROM_FILE */
|
||||
|
||||
#endif /* __HAL_COMMON_H__ */
|
||||
|
||||
1780
include/hal_com_reg.h
Normal file
1780
include/hal_com_reg.h
Normal file
File diff suppressed because it is too large
Load diff
653
include/hal_data.h
Normal file
653
include/hal_data.h
Normal file
|
|
@ -0,0 +1,653 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_DATA_H__
|
||||
#define __HAL_DATA_H__
|
||||
|
||||
#if 1//def CONFIG_SINGLE_IMG
|
||||
|
||||
#include "../hal/phydm/phydm_precomp.h"
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
#include <hal_btcoex.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SDIO_HCI
|
||||
#include <hal_sdio.h>
|
||||
#endif
|
||||
#ifdef CONFIG_GSPI_HCI
|
||||
#include <hal_gspi.h>
|
||||
#endif
|
||||
//
|
||||
// <Roger_Notes> For RTL8723 WiFi/BT/GPS multi-function configuration. 2010.10.06.
|
||||
//
|
||||
typedef enum _RT_MULTI_FUNC{
|
||||
RT_MULTI_FUNC_NONE = 0x00,
|
||||
RT_MULTI_FUNC_WIFI = 0x01,
|
||||
RT_MULTI_FUNC_BT = 0x02,
|
||||
RT_MULTI_FUNC_GPS = 0x04,
|
||||
}RT_MULTI_FUNC,*PRT_MULTI_FUNC;
|
||||
//
|
||||
// <Roger_Notes> For RTL8723 WiFi PDn/GPIO polarity control configuration. 2010.10.08.
|
||||
//
|
||||
typedef enum _RT_POLARITY_CTL {
|
||||
RT_POLARITY_LOW_ACT = 0,
|
||||
RT_POLARITY_HIGH_ACT = 1,
|
||||
} RT_POLARITY_CTL, *PRT_POLARITY_CTL;
|
||||
|
||||
// For RTL8723 regulator mode. by tynli. 2011.01.14.
|
||||
typedef enum _RT_REGULATOR_MODE {
|
||||
RT_SWITCHING_REGULATOR = 0,
|
||||
RT_LDO_REGULATOR = 1,
|
||||
} RT_REGULATOR_MODE, *PRT_REGULATOR_MODE;
|
||||
|
||||
//
|
||||
// Interface type.
|
||||
//
|
||||
typedef enum _INTERFACE_SELECT_PCIE{
|
||||
INTF_SEL0_SOLO_MINICARD = 0, // WiFi solo-mCard
|
||||
INTF_SEL1_BT_COMBO_MINICARD = 1, // WiFi+BT combo-mCard
|
||||
INTF_SEL2_PCIe = 2, // PCIe Card
|
||||
} INTERFACE_SELECT_PCIE, *PINTERFACE_SELECT_PCIE;
|
||||
|
||||
|
||||
typedef enum _INTERFACE_SELECT_USB{
|
||||
INTF_SEL0_USB = 0, // USB
|
||||
INTF_SEL1_USB_High_Power = 1, // USB with high power PA
|
||||
INTF_SEL2_MINICARD = 2, // Minicard
|
||||
INTF_SEL3_USB_Solo = 3, // USB solo-Slim module
|
||||
INTF_SEL4_USB_Combo = 4, // USB Combo-Slim module
|
||||
INTF_SEL5_USB_Combo_MF = 5, // USB WiFi+BT Multi-Function Combo, i.e., Proprietary layout(AS-VAU) which is the same as SDIO card
|
||||
} INTERFACE_SELECT_USB, *PINTERFACE_SELECT_USB;
|
||||
|
||||
typedef enum _RT_AMPDU_BRUST_MODE{
|
||||
RT_AMPDU_BRUST_NONE = 0,
|
||||
RT_AMPDU_BRUST_92D = 1,
|
||||
RT_AMPDU_BRUST_88E = 2,
|
||||
RT_AMPDU_BRUST_8812_4 = 3,
|
||||
RT_AMPDU_BRUST_8812_8 = 4,
|
||||
RT_AMPDU_BRUST_8812_12 = 5,
|
||||
RT_AMPDU_BRUST_8812_15 = 6,
|
||||
RT_AMPDU_BRUST_8723B = 7,
|
||||
}RT_AMPDU_BRUST,*PRT_AMPDU_BRUST_MODE;
|
||||
|
||||
/*
|
||||
#define CHANNEL_MAX_NUMBER 14+24+21 // 14 is the max channel number
|
||||
*/
|
||||
#define CHANNEL_GROUP_MAX (3 + 9) /* ch1~3, ch4~9, ch10~14 total three groups */
|
||||
#define MAX_PG_GROUP 13
|
||||
|
||||
// Tx Power Limit Table Size
|
||||
#define MAX_REGULATION_NUM 4
|
||||
#define MAX_RF_PATH_NUM_IN_POWER_LIMIT_TABLE 4
|
||||
#define MAX_2_4G_BANDWIDTH_NUM 2
|
||||
#define MAX_RATE_SECTION_NUM 10
|
||||
#define MAX_5G_BANDWIDTH_NUM 4
|
||||
|
||||
#define MAX_BASE_NUM_IN_PHY_REG_PG_2_4G 10 // CCK:1,OFDM:1, HT:4, VHT:4
|
||||
#define MAX_BASE_NUM_IN_PHY_REG_PG_5G 9 // OFDM:1, HT:4, VHT:4
|
||||
|
||||
|
||||
//###### duplicate code,will move to ODM #########
|
||||
//#define IQK_MAC_REG_NUM 4
|
||||
//#define IQK_ADDA_REG_NUM 16
|
||||
|
||||
//#define IQK_BB_REG_NUM 10
|
||||
#define IQK_BB_REG_NUM_92C 9
|
||||
#define IQK_BB_REG_NUM_92D 10
|
||||
#define IQK_BB_REG_NUM_test 6
|
||||
|
||||
#define IQK_Matrix_Settings_NUM_92D 1+24+21
|
||||
|
||||
//#define HP_THERMAL_NUM 8
|
||||
//###### duplicate code,will move to ODM #########
|
||||
|
||||
#ifdef CONFIG_USB_RX_AGGREGATION
|
||||
typedef enum _USB_RX_AGG_MODE{
|
||||
USB_RX_AGG_DISABLE,
|
||||
USB_RX_AGG_DMA,
|
||||
USB_RX_AGG_USB,
|
||||
USB_RX_AGG_MIX
|
||||
}USB_RX_AGG_MODE;
|
||||
|
||||
//#define MAX_RX_DMA_BUFFER_SIZE 10240 // 10K for 8192C RX DMA buffer
|
||||
|
||||
#endif
|
||||
|
||||
/* For store initial value of BB register */
|
||||
typedef struct _BB_INIT_REGISTER {
|
||||
u16 offset;
|
||||
u32 value;
|
||||
|
||||
} BB_INIT_REGISTER, *PBB_INIT_REGISTER;
|
||||
|
||||
#define PAGE_SIZE_128 128
|
||||
#define PAGE_SIZE_256 256
|
||||
#define PAGE_SIZE_512 512
|
||||
|
||||
#define HCI_SUS_ENTER 0
|
||||
#define HCI_SUS_LEAVING 1
|
||||
#define HCI_SUS_LEAVE 2
|
||||
#define HCI_SUS_ENTERING 3
|
||||
#define HCI_SUS_ERR 4
|
||||
|
||||
#ifdef CONFIG_AUTO_CHNL_SEL_NHM
|
||||
typedef enum _ACS_OP {
|
||||
ACS_INIT, /*ACS - Variable init*/
|
||||
ACS_RESET, /*ACS - NHM Counter reset*/
|
||||
ACS_SELECT, /*ACS - NHM Counter Statistics */
|
||||
} ACS_OP;
|
||||
|
||||
typedef enum _ACS_STATE {
|
||||
ACS_DISABLE,
|
||||
ACS_ENABLE,
|
||||
} ACS_STATE;
|
||||
|
||||
struct auto_chan_sel {
|
||||
ATOMIC_T state;
|
||||
u8 ch; /* previous channel*/
|
||||
};
|
||||
#endif /*CONFIG_AUTO_CHNL_SEL_NHM*/
|
||||
|
||||
#define EFUSE_FILE_UNUSED 0
|
||||
#define EFUSE_FILE_FAILED 1
|
||||
#define EFUSE_FILE_LOADED 2
|
||||
|
||||
#define MACADDR_FILE_UNUSED 0
|
||||
#define MACADDR_FILE_FAILED 1
|
||||
#define MACADDR_FILE_LOADED 2
|
||||
|
||||
#define KFREE_FLAG_ON BIT0
|
||||
#define KFREE_FLAG_THERMAL_K_ON BIT1
|
||||
|
||||
struct kfree_data_t {
|
||||
u8 flag;
|
||||
s8 bb_gain[BB_GAIN_NUM][RF_PATH_MAX];
|
||||
|
||||
#ifdef CONFIG_IEEE80211_BAND_5GHZ
|
||||
s8 pa_bias_5g[RF_PATH_MAX];
|
||||
s8 pad_bias_5g[RF_PATH_MAX];
|
||||
#endif
|
||||
s8 thermal;
|
||||
};
|
||||
|
||||
bool kfree_data_is_bb_gain_empty(struct kfree_data_t *data);
|
||||
|
||||
struct hal_spec_t {
|
||||
u8 macid_num;
|
||||
|
||||
u8 sec_cam_ent_num;
|
||||
u8 sec_cap;
|
||||
|
||||
u8 nss_num;
|
||||
u8 band_cap; /* value of BAND_CAP_XXX */
|
||||
u8 bw_cap; /* value of BW_CAP_XXX */
|
||||
u8 proto_cap; /* value of PROTO_CAP_XXX */
|
||||
|
||||
u8 wl_func; /* value of WL_FUNC_XXX */
|
||||
};
|
||||
|
||||
typedef struct hal_com_data
|
||||
{
|
||||
HAL_VERSION VersionID;
|
||||
RT_MULTI_FUNC MultiFunc; // For multi-function consideration.
|
||||
RT_POLARITY_CTL PolarityCtl; // For Wifi PDn Polarity control.
|
||||
RT_REGULATOR_MODE RegulatorMode; // switching regulator or LDO
|
||||
u8 hw_init_completed;
|
||||
/****** FW related ******/
|
||||
u16 FirmwareVersion;
|
||||
u16 FirmwareVersionRev;
|
||||
u16 FirmwareSubVersion;
|
||||
u16 FirmwareSignature;
|
||||
u8 RegFWOffload;
|
||||
u8 fw_ractrl;
|
||||
u8 FwRsvdPageStartOffset; /* 2010.06.23. Added by tynli. Reserve page start offset except beacon in TxQ.*/
|
||||
u8 LastHMEBoxNum; /* H2C - for host message to fw */
|
||||
|
||||
/****** current WIFI_PHY values ******/
|
||||
WIRELESS_MODE CurrentWirelessMode;
|
||||
CHANNEL_WIDTH CurrentChannelBW;
|
||||
BAND_TYPE CurrentBandType; /* 0:2.4G, 1:5G */
|
||||
BAND_TYPE BandSet;
|
||||
u8 CurrentChannel;
|
||||
u8 CurrentCenterFrequencyIndex1;
|
||||
u8 nCur40MhzPrimeSC; /* Control channel sub-carrier */
|
||||
u8 nCur80MhzPrimeSC; /* used for primary 40MHz of 80MHz mode */
|
||||
BOOLEAN bSwChnlAndSetBWInProgress;
|
||||
u8 bDisableSWChannelPlan; /* flag of disable software change channel plan */
|
||||
u16 BasicRateSet;
|
||||
u32 ReceiveConfig;
|
||||
BOOLEAN bSwChnl;
|
||||
BOOLEAN bSetChnlBW;
|
||||
BOOLEAN bChnlBWInitialized;
|
||||
#ifdef CONFIG_AUTO_CHNL_SEL_NHM
|
||||
struct auto_chan_sel acs;
|
||||
#endif
|
||||
/****** rf_ctrl *****/
|
||||
u8 rf_chip;
|
||||
u8 rf_type;
|
||||
u8 PackageType;
|
||||
u8 NumTotalRFPath;
|
||||
|
||||
/****** Debug ******/
|
||||
u16 ForcedDataRate; /* Force Data Rate. 0: Auto, 0x02: 1M ~ 0x6C: 54M. */
|
||||
u8 u1ForcedIgiLb; /* forced IGI lower bound */
|
||||
u8 bDumpRxPkt;
|
||||
u8 bDumpTxPkt;
|
||||
u8 bDisableTXPowerTraining;
|
||||
|
||||
|
||||
/****** EEPROM setting.******/
|
||||
u8 bautoload_fail_flag;
|
||||
u8 efuse_file_status;
|
||||
u8 macaddr_file_status;
|
||||
u8 EepromOrEfuse;
|
||||
u8 efuse_eeprom_data[EEPROM_MAX_SIZE]; /*92C:256bytes, 88E:512bytes, we use union set (512bytes)*/
|
||||
u8 InterfaceSel; /* board type kept in eFuse */
|
||||
u16 CustomerID;
|
||||
|
||||
u16 EEPROMVID;
|
||||
u16 EEPROMSVID;
|
||||
#ifdef CONFIG_USB_HCI
|
||||
u16 EEPROMPID;
|
||||
u16 EEPROMSDID;
|
||||
#endif
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
u16 EEPROMDID;
|
||||
u16 EEPROMSMID;
|
||||
#endif
|
||||
|
||||
u8 EEPROMCustomerID;
|
||||
u8 EEPROMSubCustomerID;
|
||||
u8 EEPROMVersion;
|
||||
u8 EEPROMRegulatory;
|
||||
u8 EEPROMThermalMeter;
|
||||
u8 EEPROMBluetoothCoexist;
|
||||
u8 EEPROMBluetoothType;
|
||||
u8 EEPROMBluetoothAntNum;
|
||||
u8 EEPROMBluetoothAntIsolation;
|
||||
u8 EEPROMBluetoothRadioShared;
|
||||
u8 bTXPowerDataReadFromEEPORM;
|
||||
u8 EEPROMMACAddr[ETH_ALEN];
|
||||
|
||||
#ifdef CONFIG_RF_GAIN_OFFSET
|
||||
u8 EEPROMRFGainOffset;
|
||||
u8 EEPROMRFGainVal;
|
||||
struct kfree_data_t kfree_data;
|
||||
#endif /*CONFIG_RF_GAIN_OFFSET*/
|
||||
|
||||
#if defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8703B)
|
||||
u8 adjuseVoltageVal;
|
||||
#endif
|
||||
u8 EfuseUsedPercentage;
|
||||
u16 EfuseUsedBytes;
|
||||
/*u8 EfuseMap[2][HWSET_MAX_SIZE_JAGUAR];*/
|
||||
EFUSE_HAL EfuseHal;
|
||||
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
//3 [2.4G]
|
||||
u8 Index24G_CCK_Base[MAX_RF_PATH][CENTER_CH_2G_NUM];
|
||||
u8 Index24G_BW40_Base[MAX_RF_PATH][CENTER_CH_2G_NUM];
|
||||
//If only one tx, only BW20 and OFDM are used.
|
||||
s8 CCK_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 OFDM_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 BW20_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 BW40_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
//3 [5G]
|
||||
u8 Index5G_BW40_Base[MAX_RF_PATH][CENTER_CH_5G_ALL_NUM];
|
||||
u8 Index5G_BW80_Base[MAX_RF_PATH][CENTER_CH_5G_80M_NUM];
|
||||
s8 OFDM_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 BW20_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 BW40_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 BW80_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
|
||||
u8 Regulation2_4G;
|
||||
u8 Regulation5G;
|
||||
|
||||
u8 TxPwrInPercentage;
|
||||
|
||||
/********************************
|
||||
* TX power by rate table at most 4RF path.
|
||||
* The register is
|
||||
*
|
||||
* VHT TX power by rate off setArray =
|
||||
* Band:-2G&5G = 0 / 1
|
||||
* RF: at most 4*4 = ABCD=0/1/2/3
|
||||
* CCK=0 OFDM=1/2 HT-MCS 0-15=3/4/56 VHT=7/8/9/10/11
|
||||
**********************************/
|
||||
u8 TxPwrByRateTable;
|
||||
u8 TxPwrByRateBand;
|
||||
s8 TxPwrByRateOffset[TX_PWR_BY_RATE_NUM_BAND]
|
||||
[TX_PWR_BY_RATE_NUM_RF]
|
||||
[TX_PWR_BY_RATE_NUM_RF]
|
||||
[TX_PWR_BY_RATE_NUM_RATE];
|
||||
//---------------------------------------------------------------------------------//
|
||||
|
||||
/*
|
||||
//2 Power Limit Table
|
||||
u8 TxPwrLevelCck[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER];
|
||||
u8 TxPwrLevelHT40_1S[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr
|
||||
u8 TxPwrLevelHT40_2S[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr
|
||||
s8 TxPwrHt20Diff[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER];// HT 20<->40 Pwr diff
|
||||
u8 TxPwrLegacyHtDiff[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER];// For HT<->legacy pwr diff
|
||||
*/
|
||||
|
||||
u8 tx_pwr_lmt_5g_20_40_ref;
|
||||
|
||||
// Power Limit Table for 2.4G
|
||||
s8 TxPwrLimit_2_4G[MAX_REGULATION_NUM]
|
||||
[MAX_2_4G_BANDWIDTH_NUM]
|
||||
[MAX_RATE_SECTION_NUM]
|
||||
[CENTER_CH_2G_NUM]
|
||||
[MAX_RF_PATH];
|
||||
|
||||
// Power Limit Table for 5G
|
||||
s8 TxPwrLimit_5G[MAX_REGULATION_NUM]
|
||||
[MAX_5G_BANDWIDTH_NUM]
|
||||
[MAX_RATE_SECTION_NUM]
|
||||
[CENTER_CH_5G_ALL_NUM]
|
||||
[MAX_RF_PATH];
|
||||
|
||||
|
||||
// Store the original power by rate value of the base of each rate section of rf path A & B
|
||||
u8 TxPwrByRateBase2_4G[TX_PWR_BY_RATE_NUM_RF]
|
||||
[TX_PWR_BY_RATE_NUM_RF]
|
||||
[MAX_BASE_NUM_IN_PHY_REG_PG_2_4G];
|
||||
u8 TxPwrByRateBase5G[TX_PWR_BY_RATE_NUM_RF]
|
||||
[TX_PWR_BY_RATE_NUM_RF]
|
||||
[MAX_BASE_NUM_IN_PHY_REG_PG_5G];
|
||||
|
||||
u8 txpwr_by_rate_loaded:1;
|
||||
u8 txpwr_by_rate_from_file:1;
|
||||
u8 txpwr_limit_loaded:1;
|
||||
u8 txpwr_limit_from_file:1;
|
||||
|
||||
// For power group
|
||||
/*
|
||||
u8 PwrGroupHT20[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER];
|
||||
u8 PwrGroupHT40[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER];
|
||||
*/
|
||||
u8 PGMaxGroup;
|
||||
|
||||
// The current Tx Power Level
|
||||
u8 CurrentCckTxPwrIdx;
|
||||
u8 CurrentOfdm24GTxPwrIdx;
|
||||
u8 CurrentBW2024GTxPwrIdx;
|
||||
u8 CurrentBW4024GTxPwrIdx;
|
||||
|
||||
// Read/write are allow for following hardware information variables
|
||||
u8 pwrGroupCnt;
|
||||
u32 MCSTxPowerLevelOriginalOffset[MAX_PG_GROUP][16];
|
||||
u32 CCKTxPowerLevelOriginalOffset;
|
||||
|
||||
u8 CrystalCap;
|
||||
|
||||
u8 PAType_2G;
|
||||
u8 PAType_5G;
|
||||
u8 LNAType_2G;
|
||||
u8 LNAType_5G;
|
||||
u8 ExternalPA_2G;
|
||||
u8 ExternalLNA_2G;
|
||||
u8 ExternalPA_5G;
|
||||
u8 ExternalLNA_5G;
|
||||
u16 TypeGLNA;
|
||||
u16 TypeGPA;
|
||||
u16 TypeALNA;
|
||||
u16 TypeAPA;
|
||||
u16 RFEType;
|
||||
|
||||
u8 bLedOpenDrain; /* Support Open-drain arrangement for controlling the LED. Added by Roger, 2009.10.16. */
|
||||
u32 AcParam_BE; /* Original parameter for BE, use for EDCA turbo. */
|
||||
|
||||
BB_REGISTER_DEFINITION_T PHYRegDef[MAX_RF_PATH]; //Radio A/B/C/D
|
||||
|
||||
u32 RfRegChnlVal[MAX_RF_PATH];
|
||||
|
||||
//RDG enable
|
||||
BOOLEAN bRDGEnable;
|
||||
|
||||
u8 RegTxPause;
|
||||
// Beacon function related global variable.
|
||||
u8 RegBcnCtrlVal;
|
||||
u8 RegFwHwTxQCtrl;
|
||||
u8 RegReg542;
|
||||
u8 RegCR_1;
|
||||
u8 Reg837;
|
||||
u16 RegRRSR;
|
||||
|
||||
/****** antenna diversity ******/
|
||||
u8 CurAntenna;
|
||||
u8 AntDivCfg;
|
||||
u8 AntDetection;
|
||||
u8 TRxAntDivType;
|
||||
u8 ant_path; //for 8723B s0/s1 selection
|
||||
u32 AntennaTxPath; /* Antenna path Tx */
|
||||
u32 AntennaRxPath; /* Antenna path Rx */
|
||||
|
||||
/******** PHY DM & DM Section **********/
|
||||
u8 DM_Type;
|
||||
_lock IQKSpinLock;
|
||||
u8 INIDATA_RATE[MACID_NUM_SW_LIMIT];
|
||||
/* Upper and Lower Signal threshold for Rate Adaptive*/
|
||||
int EntryMinUndecoratedSmoothedPWDB;
|
||||
int EntryMaxUndecoratedSmoothedPWDB;
|
||||
int MinUndecoratedPWDBForDM;
|
||||
DM_ODM_T odmpriv;
|
||||
u8 bIQKInitialized;
|
||||
u8 bNeedIQK;
|
||||
/******** PHY DM & DM Section **********/
|
||||
|
||||
|
||||
|
||||
// 2010/08/09 MH Add CU power down mode.
|
||||
BOOLEAN pwrdown;
|
||||
|
||||
// Add for dual MAC 0--Mac0 1--Mac1
|
||||
u32 interfaceIndex;
|
||||
|
||||
#ifdef CONFIG_P2P
|
||||
u8 p2p_ps_offload;
|
||||
#endif
|
||||
/* Auto FSM to Turn On, include clock, isolation, power control for MAC only */
|
||||
u8 bMacPwrCtrlOn;
|
||||
u8 hci_sus_state;
|
||||
|
||||
u8 RegIQKFWOffload;
|
||||
struct submit_ctx iqk_sctx;
|
||||
|
||||
RT_AMPDU_BRUST AMPDUBurstMode; //92C maybe not use, but for compile successfully
|
||||
|
||||
u8 OutEpQueueSel;
|
||||
u8 OutEpNumber;
|
||||
|
||||
#if defined (CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
|
||||
//
|
||||
// For SDIO Interface HAL related
|
||||
//
|
||||
|
||||
//
|
||||
// SDIO ISR Related
|
||||
//
|
||||
// u32 IntrMask[1];
|
||||
// u32 IntrMaskToSet[1];
|
||||
// LOG_INTERRUPT InterruptLog;
|
||||
u32 sdio_himr;
|
||||
u32 sdio_hisr;
|
||||
|
||||
//
|
||||
// SDIO Tx FIFO related.
|
||||
//
|
||||
// HIQ, MID, LOW, PUB free pages; padapter->xmitpriv.free_txpg
|
||||
u8 SdioTxFIFOFreePage[SDIO_TX_FREE_PG_QUEUE];
|
||||
_lock SdioTxFIFOFreePageLock;
|
||||
u8 SdioTxOQTMaxFreeSpace;
|
||||
u8 SdioTxOQTFreeSpace;
|
||||
|
||||
//
|
||||
// SDIO Rx FIFO related.
|
||||
//
|
||||
u8 SdioRxFIFOCnt;
|
||||
u16 SdioRxFIFOSize;
|
||||
|
||||
u32 sdio_tx_max_len[SDIO_MAX_TX_QUEUE];// H, N, L, used for sdio tx aggregation max length per queue
|
||||
#endif //CONFIG_SDIO_HCI
|
||||
|
||||
#ifdef CONFIG_USB_HCI
|
||||
|
||||
// 2010/12/10 MH Add for USB aggreation mode dynamic shceme.
|
||||
BOOLEAN UsbRxHighSpeedMode;
|
||||
BOOLEAN UsbTxVeryHighSpeedMode;
|
||||
u32 UsbBulkOutSize;
|
||||
BOOLEAN bSupportUSB3;
|
||||
|
||||
// Interrupt relatd register information.
|
||||
u32 IntArray[3];//HISR0,HISR1,HSISR
|
||||
u32 IntrMask[3];
|
||||
u8 C2hArray[16];
|
||||
#ifdef CONFIG_USB_TX_AGGREGATION
|
||||
u8 UsbTxAggMode;
|
||||
u8 UsbTxAggDescNum;
|
||||
#endif // CONFIG_USB_TX_AGGREGATION
|
||||
|
||||
#ifdef CONFIG_USB_RX_AGGREGATION
|
||||
u16 HwRxPageSize; // Hardware setting
|
||||
u32 MaxUsbRxAggBlock;
|
||||
|
||||
USB_RX_AGG_MODE UsbRxAggMode;
|
||||
u8 UsbRxAggBlockCount; /* FOR USB Mode, USB Block count. Block size is 512-byte in hight speed and 64-byte in full speed */
|
||||
u8 UsbRxAggBlockTimeout;
|
||||
u8 UsbRxAggPageCount; /* FOR DMA Mode, 8192C DMA page count*/
|
||||
u8 UsbRxAggPageTimeout;
|
||||
|
||||
u8 RegAcUsbDmaSize;
|
||||
u8 RegAcUsbDmaTime;
|
||||
#endif//CONFIG_USB_RX_AGGREGATION
|
||||
#endif //CONFIG_USB_HCI
|
||||
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
//
|
||||
// EEPROM setting.
|
||||
//
|
||||
u32 TransmitConfig;
|
||||
u32 IntrMaskToSet[2];
|
||||
u32 IntArray[2];
|
||||
u32 IntrMask[2];
|
||||
u32 SysIntArray[1];
|
||||
u32 SysIntrMask[1];
|
||||
u32 IntrMaskReg[2];
|
||||
u32 IntrMaskDefault[2];
|
||||
|
||||
BOOLEAN bL1OffSupport;
|
||||
BOOLEAN bSupportBackDoor;
|
||||
|
||||
u8 bDefaultAntenna;
|
||||
|
||||
u8 bInterruptMigration;
|
||||
u8 bDisableTxInt;
|
||||
|
||||
u16 RxTag;
|
||||
#endif //CONFIG_PCI_HCI
|
||||
|
||||
|
||||
#ifdef DBG_CONFIG_ERROR_DETECT
|
||||
struct sreset_priv srestpriv;
|
||||
#endif //#ifdef DBG_CONFIG_ERROR_DETECT
|
||||
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
// For bluetooth co-existance
|
||||
BT_COEXIST bt_coexist;
|
||||
#endif // CONFIG_BT_COEXIST
|
||||
|
||||
#if defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8703B) || defined(CONFIG_RTL8188F)
|
||||
#ifndef CONFIG_PCI_HCI // mutual exclusive with PCI -- so they're SDIO and GSPI
|
||||
// Interrupt relatd register information.
|
||||
u32 SysIntrStatus;
|
||||
u32 SysIntrMask;
|
||||
#endif
|
||||
#endif /*endif CONFIG_RTL8723B */
|
||||
|
||||
#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE
|
||||
char para_file_buf[MAX_PARA_FILE_BUF_LEN];
|
||||
char *mac_reg;
|
||||
u32 mac_reg_len;
|
||||
char *bb_phy_reg;
|
||||
u32 bb_phy_reg_len;
|
||||
char *bb_agc_tab;
|
||||
u32 bb_agc_tab_len;
|
||||
char *bb_phy_reg_pg;
|
||||
u32 bb_phy_reg_pg_len;
|
||||
char *bb_phy_reg_mp;
|
||||
u32 bb_phy_reg_mp_len;
|
||||
char *rf_radio_a;
|
||||
u32 rf_radio_a_len;
|
||||
char *rf_radio_b;
|
||||
u32 rf_radio_b_len;
|
||||
char *rf_tx_pwr_track;
|
||||
u32 rf_tx_pwr_track_len;
|
||||
char *rf_tx_pwr_lmt;
|
||||
u32 rf_tx_pwr_lmt_len;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BACKGROUND_NOISE_MONITOR
|
||||
s16 noise[ODM_MAX_CHANNEL_NUM];
|
||||
#endif
|
||||
|
||||
struct hal_spec_t hal_spec;
|
||||
|
||||
u8 RfKFreeEnable;
|
||||
u8 RfKFree_ch_group;
|
||||
BOOLEAN bCCKinCH14;
|
||||
BB_INIT_REGISTER RegForRecover[5];
|
||||
|
||||
#if defined(CONFIG_PCI_HCI) && defined(RTL8814AE_SW_BCN)
|
||||
BOOLEAN bCorrectBCN;
|
||||
#endif
|
||||
|
||||
} HAL_DATA_COMMON, *PHAL_DATA_COMMON;
|
||||
|
||||
|
||||
|
||||
typedef struct hal_com_data HAL_DATA_TYPE, *PHAL_DATA_TYPE;
|
||||
#define GET_HAL_DATA(__pAdapter) ((HAL_DATA_TYPE *)((__pAdapter)->HalData))
|
||||
#define GET_HAL_SPEC(__pAdapter) (&(GET_HAL_DATA((__pAdapter))->hal_spec))
|
||||
|
||||
#define GET_HAL_RFPATH_NUM(__pAdapter) (((HAL_DATA_TYPE *)((__pAdapter)->HalData))->NumTotalRFPath )
|
||||
#define RT_GetInterfaceSelection(_Adapter) (GET_HAL_DATA(_Adapter)->InterfaceSel)
|
||||
#define GET_RF_TYPE(__pAdapter) (GET_HAL_DATA(__pAdapter)->rf_type)
|
||||
#define GET_KFREE_DATA(_adapter) (&(GET_HAL_DATA((_adapter))->kfree_data))
|
||||
|
||||
#define SUPPORT_HW_RADIO_DETECT(Adapter) ( RT_GetInterfaceSelection(Adapter) == INTF_SEL2_MINICARD ||\
|
||||
RT_GetInterfaceSelection(Adapter) == INTF_SEL3_USB_Solo ||\
|
||||
RT_GetInterfaceSelection(Adapter) == INTF_SEL4_USB_Combo)
|
||||
|
||||
#define get_hal_mac_addr(adapter) (GET_HAL_DATA(adapter)->EEPROMMACAddr)
|
||||
#define is_boot_from_eeprom(adapter) (GET_HAL_DATA(adapter)->EepromOrEfuse)
|
||||
#define rtw_get_hw_init_completed(adapter) (GET_HAL_DATA(adapter)->hw_init_completed)
|
||||
#define rtw_is_hw_init_completed(adapter) (GET_HAL_DATA(adapter)->hw_init_completed == _TRUE)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_AUTO_CHNL_SEL_NHM
|
||||
#define GET_ACS_STATE(padapter) (ATOMIC_READ(&GET_HAL_DATA(padapter)->acs.state))
|
||||
#define SET_ACS_STATE(padapter, set_state) (ATOMIC_SET(&GET_HAL_DATA(padapter)->acs.state, set_state))
|
||||
#define rtw_get_acs_channel(padapter) (GET_HAL_DATA(padapter)->acs.ch)
|
||||
#define rtw_set_acs_channel(padapter, survey_ch) (GET_HAL_DATA(padapter)->acs.ch = survey_ch)
|
||||
#endif /*CONFIG_AUTO_CHNL_SEL_NHM*/
|
||||
|
||||
#endif //__HAL_DATA_H__
|
||||
|
||||
32
include/hal_gspi.h
Normal file
32
include/hal_gspi.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_GSPI_H_
|
||||
#define __HAL_GSPI_H_
|
||||
|
||||
#define ffaddr2deviceId(pdvobj, addr) (pdvobj->Queue2Pipe[addr])
|
||||
|
||||
u8 rtw_hal_gspi_max_txoqt_free_space(_adapter *padapter);
|
||||
u8 rtw_hal_gspi_query_tx_freepage(_adapter *padapter, u8 PageIdx, u8 RequiredPageNum);
|
||||
void rtw_hal_gspi_update_tx_freepage(_adapter *padapter, u8 PageIdx, u8 RequiredPageNum);
|
||||
void rtw_hal_set_gspi_tx_max_length(PADAPTER padapter, u8 numHQ, u8 numNQ, u8 numLQ, u8 numPubQ);
|
||||
u32 rtw_hal_get_gspi_tx_max_length(PADAPTER padapter, u8 queue_idx);
|
||||
|
||||
#endif
|
||||
|
||||
93
include/hal_ic_cfg.h
Normal file
93
include/hal_ic_cfg.h
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_IC_CFG_H__
|
||||
#define __HAL_IC_CFG_H__
|
||||
|
||||
#define RTL8188E_SUPPORT 0
|
||||
#define RTL8812A_SUPPORT 0
|
||||
#define RTL8821A_SUPPORT 0
|
||||
#define RTL8723B_SUPPORT 0
|
||||
#define RTL8192E_SUPPORT 0
|
||||
#define RTL8814A_SUPPORT 0
|
||||
#define RTL8195A_SUPPORT 0
|
||||
#define RTL8703B_SUPPORT 0
|
||||
#define RTL8188F_SUPPORT 0
|
||||
#define RTL8822B_SUPPORT 0
|
||||
#define RTL8821B_SUPPORT 0
|
||||
|
||||
/*#if (RTL8188E_SUPPORT==1)*/
|
||||
#define RATE_ADAPTIVE_SUPPORT 0
|
||||
#define POWER_TRAINING_ACTIVE 0
|
||||
|
||||
#ifdef CONFIG_MULTIDRV
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8188E
|
||||
#undef RTL8188E_SUPPORT
|
||||
#undef RATE_ADAPTIVE_SUPPORT
|
||||
#undef POWER_TRAINING_ACTIVE
|
||||
|
||||
#define RTL8188E_SUPPORT 1
|
||||
#define RATE_ADAPTIVE_SUPPORT 1
|
||||
#define POWER_TRAINING_ACTIVE 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8812A
|
||||
#undef RTL8812A_SUPPORT
|
||||
#define RTL8812A_SUPPORT 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8821A
|
||||
#undef RTL8821A_SUPPORT
|
||||
#define RTL8821A_SUPPORT 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8192E
|
||||
#undef RTL8192E_SUPPORT
|
||||
#define RTL8192E_SUPPORT 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8723B
|
||||
#undef RTL8723B_SUPPORT
|
||||
#define RTL8723B_SUPPORT 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8814A
|
||||
#undef RTL8814A_SUPPORT
|
||||
#define RTL8814A_SUPPORT 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8703B
|
||||
#undef RTL8703B_SUPPORT
|
||||
#define RTL8703B_SUPPORT 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8188F
|
||||
#undef RTL8188F_SUPPORT
|
||||
#define RTL8188F_SUPPORT 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8822B
|
||||
#undef RTL8822B_SUPPORT
|
||||
#define RTL8822B_SUPPORT 1
|
||||
#endif
|
||||
|
||||
#endif /*__HAL_IC_CFG_H__*/
|
||||
|
||||
688
include/hal_intf.h
Executable file
688
include/hal_intf.h
Executable file
|
|
@ -0,0 +1,688 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_INTF_H__
|
||||
#define __HAL_INTF_H__
|
||||
|
||||
|
||||
enum RTL871X_HCI_TYPE {
|
||||
RTW_PCIE = BIT0,
|
||||
RTW_USB = BIT1,
|
||||
RTW_SDIO = BIT2,
|
||||
RTW_GSPI = BIT3,
|
||||
};
|
||||
|
||||
enum _CHIP_TYPE {
|
||||
|
||||
NULL_CHIP_TYPE,
|
||||
RTL8188E,
|
||||
RTL8192E,
|
||||
RTL8812,
|
||||
RTL8821, //RTL8811
|
||||
RTL8723B,
|
||||
RTL8814A,
|
||||
RTL8703B,
|
||||
RTL8188F,
|
||||
MAX_CHIP_TYPE
|
||||
};
|
||||
|
||||
extern const u32 _chip_type_to_odm_ic_type[];
|
||||
#define chip_type_to_odm_ic_type(chip_type) (((chip_type) >= MAX_CHIP_TYPE) ? _chip_type_to_odm_ic_type[MAX_CHIP_TYPE] : _chip_type_to_odm_ic_type[(chip_type)])
|
||||
|
||||
typedef enum _HAL_HW_TIMER_TYPE {
|
||||
HAL_TIMER_NONE = 0,
|
||||
HAL_TIMER_TXBF = 1,
|
||||
HAL_TIMER_EARLYMODE = 2,
|
||||
} HAL_HW_TIMER_TYPE, *PHAL_HW_TIMER_TYPE;
|
||||
|
||||
|
||||
typedef enum _HW_VARIABLES{
|
||||
HW_VAR_MEDIA_STATUS,
|
||||
HW_VAR_MEDIA_STATUS1,
|
||||
HW_VAR_SET_OPMODE,
|
||||
HW_VAR_MAC_ADDR,
|
||||
HW_VAR_BSSID,
|
||||
HW_VAR_INIT_RTS_RATE,
|
||||
HW_VAR_BASIC_RATE,
|
||||
HW_VAR_TXPAUSE,
|
||||
HW_VAR_BCN_FUNC,
|
||||
HW_VAR_CORRECT_TSF,
|
||||
HW_VAR_CHECK_BSSID,
|
||||
HW_VAR_MLME_DISCONNECT,
|
||||
HW_VAR_MLME_SITESURVEY,
|
||||
HW_VAR_MLME_JOIN,
|
||||
HW_VAR_ON_RCR_AM,
|
||||
HW_VAR_OFF_RCR_AM,
|
||||
HW_VAR_BEACON_INTERVAL,
|
||||
HW_VAR_SLOT_TIME,
|
||||
HW_VAR_RESP_SIFS,
|
||||
HW_VAR_ACK_PREAMBLE,
|
||||
HW_VAR_SEC_CFG,
|
||||
HW_VAR_SEC_DK_CFG,
|
||||
HW_VAR_BCN_VALID,
|
||||
HW_VAR_RF_TYPE,
|
||||
/* PHYDM odm->SupportAbility */
|
||||
HW_VAR_CAM_EMPTY_ENTRY,
|
||||
HW_VAR_CAM_INVALID_ALL,
|
||||
HW_VAR_AC_PARAM_VO,
|
||||
HW_VAR_AC_PARAM_VI,
|
||||
HW_VAR_AC_PARAM_BE,
|
||||
HW_VAR_AC_PARAM_BK,
|
||||
HW_VAR_ACM_CTRL,
|
||||
HW_VAR_AMPDU_MIN_SPACE,
|
||||
HW_VAR_AMPDU_FACTOR,
|
||||
HW_VAR_RXDMA_AGG_PG_TH,
|
||||
HW_VAR_SET_RPWM,
|
||||
HW_VAR_CPWM,
|
||||
HW_VAR_H2C_FW_PWRMODE,
|
||||
HW_VAR_H2C_PS_TUNE_PARAM,
|
||||
HW_VAR_H2C_FW_JOINBSSRPT,
|
||||
HW_VAR_FWLPS_RF_ON,
|
||||
HW_VAR_H2C_FW_P2P_PS_OFFLOAD,
|
||||
HW_VAR_TDLS_WRCR,
|
||||
HW_VAR_TDLS_RS_RCR,
|
||||
HW_VAR_TRIGGER_GPIO_0,
|
||||
HW_VAR_BT_SET_COEXIST,
|
||||
HW_VAR_BT_ISSUE_DELBA,
|
||||
HW_VAR_CURRENT_ANTENNA,
|
||||
HW_VAR_ANTENNA_DIVERSITY_SELECT,
|
||||
HW_VAR_SWITCH_EPHY_WoWLAN,
|
||||
HW_VAR_EFUSE_USAGE,
|
||||
HW_VAR_EFUSE_BYTES,
|
||||
HW_VAR_EFUSE_BT_USAGE,
|
||||
HW_VAR_EFUSE_BT_BYTES,
|
||||
HW_VAR_FIFO_CLEARN_UP,
|
||||
HW_VAR_RESTORE_HW_SEQ,
|
||||
HW_VAR_CHECK_TXBUF,
|
||||
HW_VAR_PCIE_STOP_TX_DMA,
|
||||
HW_VAR_APFM_ON_MAC, //Auto FSM to Turn On, include clock, isolation, power control for MAC only
|
||||
HW_VAR_HCI_SUS_STATE,
|
||||
// The valid upper nav range for the HW updating, if the true value is larger than the upper range, the HW won't update it.
|
||||
// Unit in microsecond. 0 means disable this function.
|
||||
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
|
||||
HW_VAR_WOWLAN,
|
||||
HW_VAR_WAKEUP_REASON,
|
||||
HW_VAR_RPWM_TOG,
|
||||
#endif
|
||||
#ifdef CONFIG_GPIO_WAKEUP
|
||||
HW_SET_GPIO_WL_CTRL,
|
||||
#endif
|
||||
HW_VAR_SYS_CLKR,
|
||||
HW_VAR_NAV_UPPER,
|
||||
HW_VAR_C2H_HANDLE,
|
||||
HW_VAR_RPT_TIMER_SETTING,
|
||||
HW_VAR_TX_RPT_MAX_MACID,
|
||||
HW_VAR_CHK_HI_QUEUE_EMPTY,
|
||||
HW_VAR_DL_BCN_SEL,
|
||||
HW_VAR_AMPDU_MAX_TIME,
|
||||
HW_VAR_WIRELESS_MODE,
|
||||
HW_VAR_USB_MODE,
|
||||
HW_VAR_PORT_SWITCH,
|
||||
HW_VAR_DO_IQK,
|
||||
HW_VAR_DM_IN_LPS,
|
||||
HW_VAR_SET_REQ_FW_PS,
|
||||
HW_VAR_FW_PS_STATE,
|
||||
HW_VAR_SOUNDING_ENTER,
|
||||
HW_VAR_SOUNDING_LEAVE,
|
||||
HW_VAR_SOUNDING_RATE,
|
||||
HW_VAR_SOUNDING_STATUS,
|
||||
HW_VAR_SOUNDING_FW_NDPA,
|
||||
HW_VAR_SOUNDING_CLK,
|
||||
/*Add by YuChen for TXBF HW timer*/
|
||||
HW_VAR_HW_REG_TIMER_INIT,
|
||||
HW_VAR_HW_REG_TIMER_RESTART,
|
||||
HW_VAR_HW_REG_TIMER_START,
|
||||
HW_VAR_HW_REG_TIMER_STOP,
|
||||
/*Add by YuChen for TXBF HW timer*/
|
||||
HW_VAR_DL_RSVD_PAGE,
|
||||
HW_VAR_MACID_LINK,
|
||||
HW_VAR_MACID_NOLINK,
|
||||
HW_VAR_MACID_SLEEP,
|
||||
HW_VAR_MACID_WAKEUP,
|
||||
HW_VAR_DUMP_MAC_QUEUE_INFO,
|
||||
HW_VAR_ASIX_IOT,
|
||||
}HW_VARIABLES;
|
||||
|
||||
typedef enum _HAL_DEF_VARIABLE{
|
||||
HAL_DEF_UNDERCORATEDSMOOTHEDPWDB,
|
||||
HAL_DEF_IS_SUPPORT_ANT_DIV,
|
||||
HAL_DEF_CURRENT_ANTENNA,
|
||||
HAL_DEF_DRVINFO_SZ,
|
||||
HAL_DEF_MAX_RECVBUF_SZ,
|
||||
HAL_DEF_RX_PACKET_OFFSET,
|
||||
HAL_DEF_RX_DMA_SZ_WOW,
|
||||
HAL_DEF_RX_DMA_SZ,
|
||||
HAL_DEF_RX_PAGE_SIZE,
|
||||
HAL_DEF_DBG_DUMP_RXPKT,//for dbg
|
||||
HAL_DEF_RA_DECISION_RATE,
|
||||
HAL_DEF_RA_SGI,
|
||||
HAL_DEF_PT_PWR_STATUS,
|
||||
HAL_DEF_TX_LDPC, // LDPC support
|
||||
HAL_DEF_RX_LDPC, // LDPC support
|
||||
HAL_DEF_TX_STBC, // TX STBC support
|
||||
HAL_DEF_RX_STBC, // RX STBC support
|
||||
HAL_DEF_EXPLICIT_BEAMFORMER,// Explicit Compressed Steering Capable
|
||||
HAL_DEF_EXPLICIT_BEAMFORMEE,// Explicit Compressed Beamforming Feedback Capable
|
||||
HAL_DEF_BEAMFORMER_CAP,
|
||||
HAL_DEF_BEAMFORMEE_CAP,
|
||||
HW_VAR_MAX_RX_AMPDU_FACTOR,
|
||||
HW_DEF_RA_INFO_DUMP,
|
||||
HAL_DEF_DBG_DUMP_TXPKT,
|
||||
|
||||
HAL_DEF_TX_PAGE_SIZE,
|
||||
HAL_DEF_TX_PAGE_BOUNDARY,
|
||||
HAL_DEF_TX_PAGE_BOUNDARY_WOWLAN,
|
||||
HAL_DEF_ANT_DETECT,//to do for 8723a
|
||||
HAL_DEF_PCI_SUUPORT_L1_BACKDOOR, // Determine if the L1 Backdoor setting is turned on.
|
||||
HAL_DEF_PCI_AMD_L1_SUPPORT,
|
||||
HAL_DEF_PCI_ASPM_OSC, // Support for ASPM OSC, added by Roger, 2013.03.27.
|
||||
HAL_DEF_MACID_SLEEP, // Support for MACID sleep
|
||||
HAL_DEF_DBG_DIS_PWT, //disable Tx power training or not.
|
||||
HAL_DEF_EFUSE_USAGE, /* Get current EFUSE utilization. 2008.12.19. Added by Roger. */
|
||||
HAL_DEF_EFUSE_BYTES,
|
||||
HW_VAR_BEST_AMPDU_DENSITY,
|
||||
}HAL_DEF_VARIABLE;
|
||||
|
||||
typedef enum _HAL_ODM_VARIABLE{
|
||||
HAL_ODM_STA_INFO,
|
||||
HAL_ODM_P2P_STATE,
|
||||
HAL_ODM_WIFI_DISPLAY_STATE,
|
||||
HAL_ODM_NOISE_MONITOR,
|
||||
HAL_ODM_REGULATION,
|
||||
HAL_ODM_INITIAL_GAIN,
|
||||
HAL_ODM_FA_CNT_DUMP,
|
||||
HAL_ODM_DBG_FLAG,
|
||||
HAL_ODM_DBG_LEVEL,
|
||||
HAL_ODM_RX_INFO_DUMP,
|
||||
|
||||
#ifdef CONFIG_AUTO_CHNL_SEL_NHM
|
||||
HAL_ODM_AUTO_CHNL_SEL,
|
||||
#endif
|
||||
}HAL_ODM_VARIABLE;
|
||||
|
||||
typedef enum _HAL_INTF_PS_FUNC{
|
||||
HAL_USB_SELECT_SUSPEND,
|
||||
HAL_MAX_ID,
|
||||
}HAL_INTF_PS_FUNC;
|
||||
|
||||
typedef s32 (*c2h_id_filter)(u8 *c2h_evt);
|
||||
|
||||
struct hal_ops {
|
||||
/*** initialize section ***/
|
||||
void (*read_chip_version)(_adapter *padapter);
|
||||
void (*init_default_value)(_adapter *padapter);
|
||||
void (*intf_chip_configure)(_adapter *padapter);
|
||||
void (*read_adapter_info)(_adapter *padapter);
|
||||
u32 (*hal_power_on)(_adapter *padapter);
|
||||
void (*hal_power_off)(_adapter *padapter);
|
||||
u32 (*hal_init)(_adapter *padapter);
|
||||
u32 (*hal_deinit)(_adapter *padapter);
|
||||
void (*dm_init)(_adapter *padapter);
|
||||
void (*dm_deinit)(_adapter *padapter);
|
||||
|
||||
/*** xmit section ***/
|
||||
s32 (*init_xmit_priv)(_adapter *padapter);
|
||||
void (*free_xmit_priv)(_adapter *padapter);
|
||||
s32 (*hal_xmit)(_adapter *padapter, struct xmit_frame *pxmitframe);
|
||||
/*
|
||||
* mgnt_xmit should be implemented to run in interrupt context
|
||||
*/
|
||||
s32 (*mgnt_xmit)(_adapter *padapter, struct xmit_frame *pmgntframe);
|
||||
s32 (*hal_xmitframe_enqueue)(_adapter *padapter, struct xmit_frame *pxmitframe);
|
||||
#ifdef CONFIG_XMIT_THREAD_MODE
|
||||
s32 (*xmit_thread_handler)(_adapter *padapter);
|
||||
#endif
|
||||
void (*run_thread)(_adapter *padapter);
|
||||
void (*cancel_thread)(_adapter *padapter);
|
||||
|
||||
/*** recv section ***/
|
||||
s32 (*init_recv_priv)(_adapter *padapter);
|
||||
void (*free_recv_priv)(_adapter *padapter);
|
||||
#if defined(CONFIG_USB_HCI)||defined(CONFIG_PCI_HCI)
|
||||
u32 (*inirp_init)(_adapter *padapter);
|
||||
u32 (*inirp_deinit)(_adapter *padapter);
|
||||
#endif
|
||||
/*** interrupt hdl section ***/
|
||||
void (*enable_interrupt)(_adapter *padapter);
|
||||
void (*disable_interrupt)(_adapter *padapter);
|
||||
u8 (*check_ips_status)(_adapter *padapter);
|
||||
#if defined(CONFIG_PCI_HCI)
|
||||
s32 (*interrupt_handler)(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_USB_HCI) && defined(CONFIG_SUPPORT_USB_INT)
|
||||
void (*interrupt_handler)(_adapter *padapter, u16 pkt_len, u8 *pbuf);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PCI_HCI)
|
||||
void (*irp_reset)(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
/*** DM section ***/
|
||||
|
||||
void (*InitSwLeds)(_adapter *padapter);
|
||||
void (*DeInitSwLeds)(_adapter *padapter);
|
||||
|
||||
|
||||
void (*set_bwmode_handler)(_adapter *padapter, CHANNEL_WIDTH Bandwidth, u8 Offset);
|
||||
void (*set_channel_handler)(_adapter *padapter, u8 channel);
|
||||
void (*set_chnl_bw_handler)(_adapter *padapter, u8 channel, CHANNEL_WIDTH Bandwidth, u8 Offset40, u8 Offset80);
|
||||
|
||||
void (*set_tx_power_level_handler)(_adapter *padapter, u8 channel);
|
||||
void (*get_tx_power_level_handler)(_adapter *padapter, s32 *powerlevel);
|
||||
|
||||
void (*hal_dm_watchdog)(_adapter *padapter);
|
||||
#ifdef CONFIG_LPS_LCLK_WD_TIMER
|
||||
void (*hal_dm_watchdog_in_lps)(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
void (*SetHwRegHandler)(_adapter *padapter, u8 variable,u8* val);
|
||||
void (*GetHwRegHandler)(_adapter *padapter, u8 variable,u8* val);
|
||||
|
||||
#ifdef CONFIG_C2H_PACKET_EN
|
||||
void (*SetHwRegHandlerWithBuf)(_adapter *padapter, u8 variable, u8 * pbuf, int len);
|
||||
#endif
|
||||
|
||||
u8 (*GetHalDefVarHandler)(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue);
|
||||
u8 (*SetHalDefVarHandler)(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue);
|
||||
|
||||
void (*GetHalODMVarHandler)(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1,PVOID pValue2);
|
||||
void (*SetHalODMVarHandler)(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1,BOOLEAN bSet);
|
||||
|
||||
void (*UpdateRAMaskHandler)(_adapter *padapter, u32 mac_id, u8 rssi_level);
|
||||
void (*SetBeaconRelatedRegistersHandler)(_adapter *padapter);
|
||||
|
||||
void (*Add_RateATid)(_adapter *padapter, u64 bitmap, u8 *arg, u8 rssi_level);
|
||||
|
||||
|
||||
#ifdef CONFIG_ANTENNA_DIVERSITY
|
||||
u8 (*AntDivBeforeLinkHandler)(_adapter *padapter);
|
||||
void (*AntDivCompareHandler)(_adapter *padapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src);
|
||||
#endif
|
||||
u8 (*interface_ps_func)(_adapter *padapter,HAL_INTF_PS_FUNC efunc_id, u8* val);
|
||||
|
||||
|
||||
u32 (*read_bbreg)(_adapter *padapter, u32 RegAddr, u32 BitMask);
|
||||
void (*write_bbreg)(_adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data);
|
||||
u32 (*read_rfreg)(_adapter *padapter, u8 eRFPath, u32 RegAddr, u32 BitMask);
|
||||
void (*write_rfreg)(_adapter *padapter, u8 eRFPath, u32 RegAddr, u32 BitMask, u32 Data);
|
||||
|
||||
#ifdef CONFIG_HOSTAPD_MLME
|
||||
s32 (*hostap_mgnt_xmit_entry)(_adapter *padapter, _pkt *pkt);
|
||||
#endif
|
||||
|
||||
void (*EfusePowerSwitch)(_adapter *padapter, u8 bWrite, u8 PwrState);
|
||||
void (*BTEfusePowerSwitch)(_adapter *padapter, u8 bWrite, u8 PwrState);
|
||||
void (*ReadEFuse)(_adapter *padapter, u8 efuseType, u16 _offset, u16 _size_byte, u8 *pbuf, BOOLEAN bPseudoTest);
|
||||
void (*EFUSEGetEfuseDefinition)(_adapter *padapter, u8 efuseType, u8 type, void *pOut, BOOLEAN bPseudoTest);
|
||||
u16 (*EfuseGetCurrentSize)(_adapter *padapter, u8 efuseType, BOOLEAN bPseudoTest);
|
||||
int (*Efuse_PgPacketRead)(_adapter *padapter, u8 offset, u8 *data, BOOLEAN bPseudoTest);
|
||||
int (*Efuse_PgPacketWrite)(_adapter *padapter, u8 offset, u8 word_en, u8 *data, BOOLEAN bPseudoTest);
|
||||
u8 (*Efuse_WordEnableDataWrite)(_adapter *padapter, u16 efuse_addr, u8 word_en, u8 *data, BOOLEAN bPseudoTest);
|
||||
BOOLEAN (*Efuse_PgPacketWrite_BT)(_adapter *padapter, u8 offset, u8 word_en, u8 *data, BOOLEAN bPseudoTest);
|
||||
|
||||
#ifdef DBG_CONFIG_ERROR_DETECT
|
||||
void (*sreset_init_value)(_adapter *padapter);
|
||||
void (*sreset_reset_value)(_adapter *padapter);
|
||||
void (*silentreset)(_adapter *padapter);
|
||||
void (*sreset_xmit_status_check)(_adapter *padapter);
|
||||
void (*sreset_linked_status_check) (_adapter *padapter);
|
||||
u8 (*sreset_get_wifi_status)(_adapter *padapter);
|
||||
bool (*sreset_inprogress)(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IOL
|
||||
int (*IOL_exec_cmds_sync)(_adapter *padapter, struct xmit_frame *xmit_frame, u32 max_wating_ms, u32 bndy_cnt);
|
||||
#endif
|
||||
|
||||
void (*hal_notch_filter)(_adapter * adapter, bool enable);
|
||||
s32 (*c2h_handler)(_adapter *padapter, u8 *c2h_evt);
|
||||
c2h_id_filter c2h_id_filter_ccx;
|
||||
s32 (*fill_h2c_cmd)(PADAPTER, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
|
||||
void (*fill_fake_txdesc)(PADAPTER, u8 *pDesc, u32 BufferLen,
|
||||
u8 IsPsPoll, u8 IsBTQosNull, u8 bDataFrame);
|
||||
s32 (*fw_dl)(_adapter *adapter, u8 wowlan);
|
||||
|
||||
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
|
||||
void (*clear_interrupt)(_adapter *padapter);
|
||||
#endif
|
||||
u8 (*hal_get_tx_buff_rsvd_page_num)(_adapter *adapter, bool wowlan);
|
||||
#ifdef CONFIG_GPIO_API
|
||||
void (*update_hisr_hsisr_ind)(PADAPTER padapter, u32 flag);
|
||||
#endif
|
||||
void (*fw_correct_bcn)(PADAPTER padapter);
|
||||
};
|
||||
|
||||
typedef enum _RT_EEPROM_TYPE{
|
||||
EEPROM_93C46,
|
||||
EEPROM_93C56,
|
||||
EEPROM_BOOT_EFUSE,
|
||||
}RT_EEPROM_TYPE,*PRT_EEPROM_TYPE;
|
||||
|
||||
|
||||
|
||||
#define RF_CHANGE_BY_INIT 0
|
||||
#define RF_CHANGE_BY_IPS BIT28
|
||||
#define RF_CHANGE_BY_PS BIT29
|
||||
#define RF_CHANGE_BY_HW BIT30
|
||||
#define RF_CHANGE_BY_SW BIT31
|
||||
|
||||
typedef enum _HARDWARE_TYPE{
|
||||
HARDWARE_TYPE_RTL8188EE,
|
||||
HARDWARE_TYPE_RTL8188EU,
|
||||
HARDWARE_TYPE_RTL8188ES,
|
||||
// NEW_GENERATION_IC
|
||||
HARDWARE_TYPE_RTL8192EE,
|
||||
HARDWARE_TYPE_RTL8192EU,
|
||||
HARDWARE_TYPE_RTL8192ES,
|
||||
HARDWARE_TYPE_RTL8812E,
|
||||
HARDWARE_TYPE_RTL8812AU,
|
||||
HARDWARE_TYPE_RTL8811AU,
|
||||
HARDWARE_TYPE_RTL8821E,
|
||||
HARDWARE_TYPE_RTL8821U,
|
||||
HARDWARE_TYPE_RTL8821S,
|
||||
HARDWARE_TYPE_RTL8723BE,
|
||||
HARDWARE_TYPE_RTL8723BU,
|
||||
HARDWARE_TYPE_RTL8723BS,
|
||||
HARDWARE_TYPE_RTL8814AE,
|
||||
HARDWARE_TYPE_RTL8814AU,
|
||||
HARDWARE_TYPE_RTL8814AS,
|
||||
HARDWARE_TYPE_RTL8821BE,
|
||||
HARDWARE_TYPE_RTL8821BU,
|
||||
HARDWARE_TYPE_RTL8821BS,
|
||||
HARDWARE_TYPE_RTL8822BE,
|
||||
HARDWARE_TYPE_RTL8822BU,
|
||||
HARDWARE_TYPE_RTL8822BS,
|
||||
HARDWARE_TYPE_RTL8703BE,
|
||||
HARDWARE_TYPE_RTL8703BU,
|
||||
HARDWARE_TYPE_RTL8703BS,
|
||||
HARDWARE_TYPE_RTL8188FE,
|
||||
HARDWARE_TYPE_RTL8188FU,
|
||||
HARDWARE_TYPE_RTL8188FS,
|
||||
HARDWARE_TYPE_MAX,
|
||||
}HARDWARE_TYPE;
|
||||
|
||||
#define IS_NEW_GENERATION_IC(_Adapter) (rtw_get_hw_type(_Adapter) >= HARDWARE_TYPE_RTL8192EE)
|
||||
//
|
||||
// RTL8188E Series
|
||||
//
|
||||
#define IS_HARDWARE_TYPE_8188EE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188EE)
|
||||
#define IS_HARDWARE_TYPE_8188EU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188EU)
|
||||
#define IS_HARDWARE_TYPE_8188ES(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188ES)
|
||||
#define IS_HARDWARE_TYPE_8188E(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8188EE(_Adapter) || IS_HARDWARE_TYPE_8188EU(_Adapter) || IS_HARDWARE_TYPE_8188ES(_Adapter))
|
||||
|
||||
// RTL8812 Series
|
||||
#define IS_HARDWARE_TYPE_8812E(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8812E)
|
||||
#define IS_HARDWARE_TYPE_8812AU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8812AU)
|
||||
#define IS_HARDWARE_TYPE_8812(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8812E(_Adapter) || IS_HARDWARE_TYPE_8812AU(_Adapter))
|
||||
|
||||
// RTL8821 Series
|
||||
#define IS_HARDWARE_TYPE_8821E(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821E)
|
||||
#define IS_HARDWARE_TYPE_8811AU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8811AU)
|
||||
#define IS_HARDWARE_TYPE_8821U(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821U || \
|
||||
rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8811AU)
|
||||
#define IS_HARDWARE_TYPE_8821S(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821S)
|
||||
#define IS_HARDWARE_TYPE_8821(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8821E(_Adapter) || IS_HARDWARE_TYPE_8821U(_Adapter)|| IS_HARDWARE_TYPE_8821S(_Adapter))
|
||||
|
||||
#define IS_HARDWARE_TYPE_JAGUAR(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8812(_Adapter) || IS_HARDWARE_TYPE_8821(_Adapter))
|
||||
|
||||
//RTL8192E Series
|
||||
#define IS_HARDWARE_TYPE_8192EE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8192EE)
|
||||
#define IS_HARDWARE_TYPE_8192EU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8192EU)
|
||||
#define IS_HARDWARE_TYPE_8192ES(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8192ES)
|
||||
|
||||
#define IS_HARDWARE_TYPE_8192E(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8192EE(_Adapter) || IS_HARDWARE_TYPE_8192EU(_Adapter) ||IS_HARDWARE_TYPE_8192ES(_Adapter))
|
||||
|
||||
#define IS_HARDWARE_TYPE_8723BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723BE)
|
||||
#define IS_HARDWARE_TYPE_8723BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723BU)
|
||||
#define IS_HARDWARE_TYPE_8723BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723BS)
|
||||
|
||||
#define IS_HARDWARE_TYPE_8723B(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8723BE(_Adapter) || IS_HARDWARE_TYPE_8723BU(_Adapter) ||IS_HARDWARE_TYPE_8723BS(_Adapter))
|
||||
|
||||
/* RTL8814A Series */
|
||||
#define IS_HARDWARE_TYPE_8814AE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8814AE)
|
||||
#define IS_HARDWARE_TYPE_8814AU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8814AU)
|
||||
#define IS_HARDWARE_TYPE_8814AS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8814AS)
|
||||
|
||||
#define IS_HARDWARE_TYPE_8814A(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8814AE(_Adapter) || IS_HARDWARE_TYPE_8814AU(_Adapter) || IS_HARDWARE_TYPE_8814AS(_Adapter))
|
||||
|
||||
#define IS_HARDWARE_TYPE_JAGUAR2(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8814A(_Adapter) || IS_HARDWARE_TYPE_8821B(_Adapter) || IS_HARDWARE_TYPE_8822B(_Adapter))
|
||||
|
||||
#define IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_JAGUAR(_Adapter) || IS_HARDWARE_TYPE_JAGUAR2(_Adapter))
|
||||
|
||||
/* RTL8703B Series */
|
||||
#define IS_HARDWARE_TYPE_8703BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8703BE)
|
||||
#define IS_HARDWARE_TYPE_8703BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8703BS)
|
||||
#define IS_HARDWARE_TYPE_8703BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8703BU)
|
||||
#define IS_HARDWARE_TYPE_8703B(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8703BE(_Adapter) || IS_HARDWARE_TYPE_8703BU(_Adapter) || IS_HARDWARE_TYPE_8703BS(_Adapter))
|
||||
|
||||
/* RTL8188F Series */
|
||||
#define IS_HARDWARE_TYPE_8188FE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188FE)
|
||||
#define IS_HARDWARE_TYPE_8188FS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188FS)
|
||||
#define IS_HARDWARE_TYPE_8188FU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188FU)
|
||||
#define IS_HARDWARE_TYPE_8188F(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8188FE(_Adapter) || IS_HARDWARE_TYPE_8188FU(_Adapter) || IS_HARDWARE_TYPE_8188FS(_Adapter))
|
||||
|
||||
#define IS_HARDWARE_TYPE_8821BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821BE)
|
||||
#define IS_HARDWARE_TYPE_8821BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821BU)
|
||||
#define IS_HARDWARE_TYPE_8821BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821BS)
|
||||
|
||||
#define IS_HARDWARE_TYPE_8821B(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8821BE(_Adapter) || IS_HARDWARE_TYPE_8821BU(_Adapter) || IS_HARDWARE_TYPE_8821BS(_Adapter))
|
||||
|
||||
#define IS_HARDWARE_TYPE_8822BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822BE)
|
||||
#define IS_HARDWARE_TYPE_8822BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822BU)
|
||||
#define IS_HARDWARE_TYPE_8822BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822BS)
|
||||
#define IS_HARDWARE_TYPE_8822B(_Adapter) \
|
||||
(IS_HARDWARE_TYPE_8822BE(_Adapter) || IS_HARDWARE_TYPE_8822BU(_Adapter) || IS_HARDWARE_TYPE_8822BS(_Adapter))
|
||||
|
||||
|
||||
|
||||
typedef enum _wowlan_subcode {
|
||||
WOWLAN_ENABLE = 0,
|
||||
WOWLAN_DISABLE = 1,
|
||||
WOWLAN_AP_ENABLE = 2,
|
||||
WOWLAN_AP_DISABLE = 3,
|
||||
WOWLAN_PATTERN_CLEAN = 4
|
||||
} wowlan_subcode;
|
||||
|
||||
struct wowlan_ioctl_param{
|
||||
unsigned int subcode;
|
||||
unsigned int subcode_value;
|
||||
unsigned int wakeup_reason;
|
||||
};
|
||||
|
||||
#define Rx_Pairwisekey 0x01
|
||||
#define Rx_GTK 0x02
|
||||
#define Rx_DisAssoc 0x04
|
||||
#define Rx_DeAuth 0x08
|
||||
#define Rx_ARPReq 0x09
|
||||
#define FWDecisionDisconnect 0x10
|
||||
#define Rx_MagicPkt 0x21
|
||||
#define Rx_UnicastPkt 0x22
|
||||
#define Rx_PatternPkt 0x23
|
||||
#define RX_PNOWakeUp 0x55
|
||||
#define AP_WakeUp 0x66
|
||||
|
||||
u8 rtw_hal_data_init(_adapter *padapter);
|
||||
void rtw_hal_data_deinit(_adapter *padapter);
|
||||
|
||||
void rtw_hal_def_value_init(_adapter *padapter);
|
||||
|
||||
void rtw_hal_free_data(_adapter *padapter);
|
||||
|
||||
void rtw_hal_dm_init(_adapter *padapter);
|
||||
void rtw_hal_dm_deinit(_adapter *padapter);
|
||||
void rtw_hal_sw_led_init(_adapter *padapter);
|
||||
void rtw_hal_sw_led_deinit(_adapter *padapter);
|
||||
|
||||
u32 rtw_hal_power_on(_adapter *padapter);
|
||||
void rtw_hal_power_off(_adapter *padapter);
|
||||
|
||||
uint rtw_hal_init(_adapter *padapter);
|
||||
uint rtw_hal_deinit(_adapter *padapter);
|
||||
void rtw_hal_stop(_adapter *padapter);
|
||||
void rtw_hal_set_hwreg(PADAPTER padapter, u8 variable, u8 *val);
|
||||
void rtw_hal_get_hwreg(PADAPTER padapter, u8 variable, u8 *val);
|
||||
|
||||
#ifdef CONFIG_C2H_PACKET_EN
|
||||
void rtw_hal_set_hwreg_with_buf(_adapter *padapter, u8 variable, u8 *pbuf, int len);
|
||||
#endif
|
||||
|
||||
void rtw_hal_chip_configure(_adapter *padapter);
|
||||
void rtw_hal_read_chip_info(_adapter *padapter);
|
||||
void rtw_hal_read_chip_version(_adapter *padapter);
|
||||
|
||||
u8 rtw_hal_set_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue);
|
||||
u8 rtw_hal_get_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue);
|
||||
|
||||
void rtw_hal_set_odm_var(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1,BOOLEAN bSet);
|
||||
void rtw_hal_get_odm_var(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1,PVOID pValue2);
|
||||
|
||||
void rtw_hal_enable_interrupt(_adapter *padapter);
|
||||
void rtw_hal_disable_interrupt(_adapter *padapter);
|
||||
|
||||
u8 rtw_hal_check_ips_status(_adapter *padapter);
|
||||
|
||||
#if defined(CONFIG_USB_HCI)||defined(CONFIG_PCI_HCI)
|
||||
u32 rtw_hal_inirp_init(_adapter *padapter);
|
||||
u32 rtw_hal_inirp_deinit(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PCI_HCI)
|
||||
void rtw_hal_irp_reset(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
u8 rtw_hal_intf_ps_func(_adapter *padapter,HAL_INTF_PS_FUNC efunc_id, u8* val);
|
||||
|
||||
s32 rtw_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
|
||||
s32 rtw_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe);
|
||||
s32 rtw_hal_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe);
|
||||
|
||||
s32 rtw_hal_init_xmit_priv(_adapter *padapter);
|
||||
void rtw_hal_free_xmit_priv(_adapter *padapter);
|
||||
|
||||
s32 rtw_hal_init_recv_priv(_adapter *padapter);
|
||||
void rtw_hal_free_recv_priv(_adapter *padapter);
|
||||
|
||||
void rtw_hal_update_ra_mask(struct sta_info *psta, u8 rssi_level);
|
||||
void rtw_hal_add_ra_tid(_adapter *padapter, u64 bitmap, u8 *arg, u8 rssi_level);
|
||||
|
||||
void rtw_hal_start_thread(_adapter *padapter);
|
||||
void rtw_hal_stop_thread(_adapter *padapter);
|
||||
|
||||
void rtw_hal_bcn_related_reg_setting(_adapter *padapter);
|
||||
|
||||
u32 rtw_hal_read_bbreg(_adapter *padapter, u32 RegAddr, u32 BitMask);
|
||||
void rtw_hal_write_bbreg(_adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data);
|
||||
u32 rtw_hal_read_rfreg(_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask);
|
||||
void rtw_hal_write_rfreg(_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask, u32 Data);
|
||||
|
||||
#define PHY_QueryBBReg(Adapter, RegAddr, BitMask) rtw_hal_read_bbreg((Adapter), (RegAddr), (BitMask))
|
||||
#define PHY_SetBBReg(Adapter, RegAddr, BitMask, Data) rtw_hal_write_bbreg((Adapter), (RegAddr), (BitMask), (Data))
|
||||
#define PHY_QueryRFReg(Adapter, eRFPath, RegAddr, BitMask) rtw_hal_read_rfreg((Adapter), (eRFPath), (RegAddr), (BitMask))
|
||||
#define PHY_SetRFReg(Adapter, eRFPath, RegAddr, BitMask, Data) rtw_hal_write_rfreg((Adapter), (eRFPath), (RegAddr), (BitMask), (Data))
|
||||
|
||||
#define PHY_SetMacReg PHY_SetBBReg
|
||||
#define PHY_QueryMacReg PHY_QueryBBReg
|
||||
|
||||
#if defined(CONFIG_PCI_HCI)
|
||||
s32 rtw_hal_interrupt_handler(_adapter *padapter);
|
||||
#endif
|
||||
#if defined(CONFIG_USB_HCI) && defined(CONFIG_SUPPORT_USB_INT)
|
||||
void rtw_hal_interrupt_handler(_adapter *padapter, u16 pkt_len, u8 *pbuf);
|
||||
#endif
|
||||
|
||||
void rtw_hal_set_bwmode(_adapter *padapter, CHANNEL_WIDTH Bandwidth, u8 Offset);
|
||||
void rtw_hal_set_chan(_adapter *padapter, u8 channel);
|
||||
void rtw_hal_set_chnl_bw(_adapter *padapter, u8 channel, CHANNEL_WIDTH Bandwidth, u8 Offset40, u8 Offset80);
|
||||
void rtw_hal_dm_watchdog(_adapter *padapter);
|
||||
void rtw_hal_dm_watchdog_in_lps(_adapter *padapter);
|
||||
|
||||
void rtw_hal_set_tx_power_level(_adapter *padapter, u8 channel);
|
||||
void rtw_hal_get_tx_power_level(_adapter *padapter, s32 *powerlevel);
|
||||
|
||||
#ifdef CONFIG_ANTENNA_DIVERSITY
|
||||
u8 rtw_hal_antdiv_before_linked(_adapter *padapter);
|
||||
void rtw_hal_antdiv_rssi_compared(_adapter *padapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HOSTAPD_MLME
|
||||
s32 rtw_hal_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt);
|
||||
#endif
|
||||
|
||||
#ifdef DBG_CONFIG_ERROR_DETECT
|
||||
void rtw_hal_sreset_init(_adapter *padapter);
|
||||
void rtw_hal_sreset_reset(_adapter *padapter);
|
||||
void rtw_hal_sreset_reset_value(_adapter *padapter);
|
||||
void rtw_hal_sreset_xmit_status_check(_adapter *padapter);
|
||||
void rtw_hal_sreset_linked_status_check (_adapter *padapter);
|
||||
u8 rtw_hal_sreset_get_wifi_status(_adapter *padapter);
|
||||
bool rtw_hal_sreset_inprogress(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IOL
|
||||
int rtw_hal_iol_cmd(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms, u32 bndy_cnt);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_XMIT_THREAD_MODE
|
||||
s32 rtw_hal_xmit_thread_handler(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
void rtw_hal_notch_filter(_adapter * adapter, bool enable);
|
||||
|
||||
bool rtw_hal_c2h_valid(_adapter *adapter, u8 *buf);
|
||||
s32 rtw_hal_c2h_evt_read(_adapter *adapter, u8 *buf);
|
||||
s32 rtw_hal_c2h_handler(_adapter *adapter, u8 *c2h_evt);
|
||||
c2h_id_filter rtw_hal_c2h_id_filter_ccx(_adapter *adapter);
|
||||
|
||||
s32 rtw_hal_is_disable_sw_channel_plan(PADAPTER padapter);
|
||||
|
||||
s32 rtw_hal_macid_sleep(PADAPTER padapter, u8 macid);
|
||||
s32 rtw_hal_macid_wakeup(PADAPTER padapter, u8 macid);
|
||||
|
||||
s32 rtw_hal_fill_h2c_cmd(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
|
||||
void rtw_hal_fill_fake_txdesc(_adapter *padapter, u8 *pDesc, u32 BufferLen,
|
||||
u8 IsPsPoll, u8 IsBTQosNull, u8 bDataFrame);
|
||||
u8 rtw_hal_get_txbuff_rsvd_page_num(_adapter *adapter, bool wowlan);
|
||||
|
||||
#ifdef CONFIG_GPIO_API
|
||||
void rtw_hal_update_hisr_hsisr_ind(_adapter *padapter, u32 flag);
|
||||
#endif
|
||||
|
||||
void rtw_hal_fw_correct_bcn(_adapter *padapter);
|
||||
s32 rtw_hal_fw_dl(_adapter *padapter, u8 wowlan);
|
||||
|
||||
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
|
||||
void rtw_hal_clear_interrupt(_adapter *padapter);
|
||||
#endif
|
||||
u8 rtw_hal_ops_check(_adapter *padapter);
|
||||
|
||||
#endif //__HAL_INTF_H__
|
||||
|
||||
629
include/hal_pg.h
Normal file
629
include/hal_pg.h
Normal file
|
|
@ -0,0 +1,629 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __HAL_PG_H__
|
||||
#define __HAL_PG_H__
|
||||
|
||||
#define PPG_BB_GAIN_2G_TX_OFFSET_MASK 0x0F
|
||||
#define PPG_BB_GAIN_2G_TXB_OFFSET_MASK 0xF0
|
||||
|
||||
#define PPG_BB_GAIN_5G_TX_OFFSET_MASK 0x1F
|
||||
#define PPG_THERMAL_OFFSET_MASK 0x1F
|
||||
#define KFREE_BB_GAIN_2G_TX_OFFSET(_ppg_v) (((_ppg_v) == PPG_BB_GAIN_2G_TX_OFFSET_MASK) ? 0 : (((_ppg_v) & 0x01) ? ((_ppg_v) >> 1) : (-((_ppg_v) >> 1))))
|
||||
#define KFREE_BB_GAIN_5G_TX_OFFSET(_ppg_v) (((_ppg_v) == PPG_BB_GAIN_5G_TX_OFFSET_MASK) ? 0 : (((_ppg_v) & 0x01) ? ((_ppg_v) >> 1) : (-((_ppg_v) >> 1))))
|
||||
#define KFREE_THERMAL_OFFSET(_ppg_v) (((_ppg_v) == PPG_THERMAL_OFFSET_MASK) ? 0 : (((_ppg_v) & 0x01) ? ((_ppg_v) >> 1) : (-((_ppg_v) >> 1))))
|
||||
|
||||
//====================================================
|
||||
// EEPROM/Efuse PG Offset for 88EE/88EU/88ES
|
||||
//====================================================
|
||||
#define EEPROM_TX_PWR_INX_88E 0x10
|
||||
|
||||
#define EEPROM_ChannelPlan_88E 0xB8
|
||||
#define EEPROM_XTAL_88E 0xB9
|
||||
#define EEPROM_THERMAL_METER_88E 0xBA
|
||||
#define EEPROM_IQK_LCK_88E 0xBB
|
||||
|
||||
#define EEPROM_RF_BOARD_OPTION_88E 0xC1
|
||||
#define EEPROM_RF_FEATURE_OPTION_88E 0xC2
|
||||
#define EEPROM_RF_BT_SETTING_88E 0xC3
|
||||
#define EEPROM_VERSION_88E 0xC4
|
||||
#define EEPROM_CustomID_88E 0xC5
|
||||
#define EEPROM_RF_ANTENNA_OPT_88E 0xC9
|
||||
|
||||
// RTL88EE
|
||||
#define EEPROM_MAC_ADDR_88EE 0xD0
|
||||
#define EEPROM_VID_88EE 0xD6
|
||||
#define EEPROM_DID_88EE 0xD8
|
||||
#define EEPROM_SVID_88EE 0xDA
|
||||
#define EEPROM_SMID_88EE 0xDC
|
||||
|
||||
//RTL88EU
|
||||
#define EEPROM_MAC_ADDR_88EU 0xD7
|
||||
#define EEPROM_VID_88EU 0xD0
|
||||
#define EEPROM_PID_88EU 0xD2
|
||||
#define EEPROM_USB_OPTIONAL_FUNCTION0 0xD4 //8188EU,8192EU, 8812AU is the same
|
||||
#define EEPROM_USB_OPTIONAL_FUNCTION0_8811AU 0x104
|
||||
|
||||
// RTL88ES
|
||||
#define EEPROM_MAC_ADDR_88ES 0x11A
|
||||
//====================================================
|
||||
// EEPROM/Efuse PG Offset for 8192EE/8192EU/8192ES
|
||||
//====================================================
|
||||
#define GET_PG_KFREE_ON_8192E(_pg_m) LE_BITS_TO_1BYTE(((u8 *)(_pg_m)) + 0xC1, 4, 1)
|
||||
#define GET_PG_KFREE_THERMAL_K_ON_8192E(_pg_m) LE_BITS_TO_1BYTE(((u8 *)(_pg_m)) + 0xC8, 5, 1)
|
||||
|
||||
#define PPG_BB_GAIN_2G_TXA_OFFSET_8192E 0x1F6
|
||||
#define PPG_THERMAL_OFFSET_8192E 0x1F5
|
||||
|
||||
// 0x10 ~ 0x63 = TX power area.
|
||||
#define EEPROM_TX_PWR_INX_8192E 0x10
|
||||
|
||||
#define EEPROM_ChannelPlan_8192E 0xB8
|
||||
#define EEPROM_XTAL_8192E 0xB9
|
||||
#define EEPROM_THERMAL_METER_8192E 0xBA
|
||||
#define EEPROM_IQK_LCK_8192E 0xBB
|
||||
#define EEPROM_2G_5G_PA_TYPE_8192E 0xBC
|
||||
#define EEPROM_2G_LNA_TYPE_GAIN_SEL_8192E 0xBD
|
||||
#define EEPROM_5G_LNA_TYPE_GAIN_SEL_8192E 0xBF
|
||||
|
||||
#define EEPROM_RF_BOARD_OPTION_8192E 0xC1
|
||||
#define EEPROM_RF_FEATURE_OPTION_8192E 0xC2
|
||||
#define EEPROM_RF_BT_SETTING_8192E 0xC3
|
||||
#define EEPROM_VERSION_8192E 0xC4
|
||||
#define EEPROM_CustomID_8192E 0xC5
|
||||
#define EEPROM_TX_BBSWING_2G_8192E 0xC6
|
||||
#define EEPROM_TX_BBSWING_5G_8192E 0xC7
|
||||
#define EEPROM_TX_PWR_CALIBRATE_RATE_8192E 0xC8
|
||||
#define EEPROM_RF_ANTENNA_OPT_8192E 0xC9
|
||||
#define EEPROM_RFE_OPTION_8192E 0xCA
|
||||
|
||||
// RTL8192EE
|
||||
#define EEPROM_MAC_ADDR_8192EE 0xD0
|
||||
#define EEPROM_VID_8192EE 0xD6
|
||||
#define EEPROM_DID_8192EE 0xD8
|
||||
#define EEPROM_SVID_8192EE 0xDA
|
||||
#define EEPROM_SMID_8192EE 0xDC
|
||||
|
||||
//RTL8192EU
|
||||
#define EEPROM_MAC_ADDR_8192EU 0xD7
|
||||
#define EEPROM_VID_8192EU 0xD0
|
||||
#define EEPROM_PID_8192EU 0xD2
|
||||
#define EEPROM_PA_TYPE_8192EU 0xBC
|
||||
#define EEPROM_LNA_TYPE_2G_8192EU 0xBD
|
||||
#define EEPROM_LNA_TYPE_5G_8192EU 0xBF
|
||||
|
||||
// RTL8192ES
|
||||
#define EEPROM_MAC_ADDR_8192ES 0x11A
|
||||
//====================================================
|
||||
// EEPROM/Efuse PG Offset for 8812AE/8812AU/8812AS
|
||||
//====================================================
|
||||
// 0x10 ~ 0x63 = TX power area.
|
||||
#define EEPROM_USB_MODE_8812 0x08
|
||||
#define EEPROM_TX_PWR_INX_8812 0x10
|
||||
|
||||
#define EEPROM_ChannelPlan_8812 0xB8
|
||||
#define EEPROM_XTAL_8812 0xB9
|
||||
#define EEPROM_THERMAL_METER_8812 0xBA
|
||||
#define EEPROM_IQK_LCK_8812 0xBB
|
||||
#define EEPROM_2G_5G_PA_TYPE_8812 0xBC
|
||||
#define EEPROM_2G_LNA_TYPE_GAIN_SEL_8812 0xBD
|
||||
#define EEPROM_5G_LNA_TYPE_GAIN_SEL_8812 0xBF
|
||||
|
||||
#define EEPROM_RF_BOARD_OPTION_8812 0xC1
|
||||
#define EEPROM_RF_FEATURE_OPTION_8812 0xC2
|
||||
#define EEPROM_RF_BT_SETTING_8812 0xC3
|
||||
#define EEPROM_VERSION_8812 0xC4
|
||||
#define EEPROM_CustomID_8812 0xC5
|
||||
#define EEPROM_TX_BBSWING_2G_8812 0xC6
|
||||
#define EEPROM_TX_BBSWING_5G_8812 0xC7
|
||||
#define EEPROM_TX_PWR_CALIBRATE_RATE_8812 0xC8
|
||||
#define EEPROM_RF_ANTENNA_OPT_8812 0xC9
|
||||
#define EEPROM_RFE_OPTION_8812 0xCA
|
||||
|
||||
// RTL8812AE
|
||||
#define EEPROM_MAC_ADDR_8812AE 0xD0
|
||||
#define EEPROM_VID_8812AE 0xD6
|
||||
#define EEPROM_DID_8812AE 0xD8
|
||||
#define EEPROM_SVID_8812AE 0xDA
|
||||
#define EEPROM_SMID_8812AE 0xDC
|
||||
|
||||
//RTL8812AU
|
||||
#define EEPROM_MAC_ADDR_8812AU 0xD7
|
||||
#define EEPROM_VID_8812AU 0xD0
|
||||
#define EEPROM_PID_8812AU 0xD2
|
||||
#define EEPROM_PA_TYPE_8812AU 0xBC
|
||||
#define EEPROM_LNA_TYPE_2G_8812AU 0xBD
|
||||
#define EEPROM_LNA_TYPE_5G_8812AU 0xBF
|
||||
|
||||
//RTL8814AU
|
||||
#define EEPROM_MAC_ADDR_8814AU 0xD8
|
||||
#define EEPROM_VID_8814AU 0xD0
|
||||
#define EEPROM_PID_8814AU 0xD2
|
||||
#define EEPROM_PA_TYPE_8814AU 0xBC
|
||||
#define EEPROM_LNA_TYPE_2G_8814AU 0xBD
|
||||
#define EEPROM_LNA_TYPE_5G_8814AU 0xBF
|
||||
|
||||
/* RTL8814AE */
|
||||
#define EEPROM_MAC_ADDR_8814AE 0xD0
|
||||
#define EEPROM_VID_8814AE 0xD6
|
||||
#define EEPROM_DID_8814AE 0xD8
|
||||
#define EEPROM_SVID_8814AE 0xDA
|
||||
#define EEPROM_SMID_8814AE 0xDC
|
||||
|
||||
//====================================================
|
||||
// EEPROM/Efuse PG Offset for 8814AU
|
||||
//====================================================
|
||||
#define GET_PG_KFREE_ON_8814A(_pg_m) LE_BITS_TO_1BYTE(((u8 *)(_pg_m)) + 0xC8, 4, 1)
|
||||
#define GET_PG_KFREE_THERMAL_K_ON_8814A(_pg_m) LE_BITS_TO_1BYTE(((u8 *)(_pg_m)) + 0xC8, 5, 1)
|
||||
|
||||
#define KFREE_GAIN_DATA_LENGTH_8814A 22
|
||||
|
||||
#define PPG_BB_GAIN_2G_TXBA_OFFSET_8814A 0x3EE
|
||||
|
||||
#define PPG_THERMAL_OFFSET_8814A 0x3EF
|
||||
|
||||
#define EEPROM_TX_PWR_INX_8814 0x10
|
||||
#define EEPROM_ChannelPlan_8814 0xB8
|
||||
#define EEPROM_XTAL_8814 0xB9
|
||||
#define EEPROM_THERMAL_METER_8814 0xBA
|
||||
#define EEPROM_IQK_LCK_8814 0xBB
|
||||
|
||||
|
||||
#define EEPROM_PA_TYPE_8814 0xBC
|
||||
#define EEPROM_LNA_TYPE_AB_2G_8814 0xBD
|
||||
#define EEPROM_LNA_TYPE_CD_2G_8814 0xBE
|
||||
#define EEPROM_LNA_TYPE_AB_5G_8814 0xBF
|
||||
#define EEPROM_LNA_TYPE_CD_5G_8814 0xC0
|
||||
#define EEPROM_RF_BOARD_OPTION_8814 0xC1
|
||||
#define EEPROM_RF_BT_SETTING_8814 0xC3
|
||||
#define EEPROM_VERSION_8814 0xC4
|
||||
#define EEPROM_CustomID_8814 0xC5
|
||||
#define EEPROM_TX_BBSWING_2G_8814 0xC6
|
||||
#define EEPROM_TX_BBSWING_5G_8814 0xC7
|
||||
#define EEPROM_TRX_ANTENNA_OPTION_8814 0xC9
|
||||
#define EEPROM_RFE_OPTION_8814 0xCA
|
||||
|
||||
//====================================================
|
||||
// EEPROM/Efuse PG Offset for 8821AE/8821AU/8821AS
|
||||
//====================================================
|
||||
|
||||
#define GET_PG_KFREE_ON_8821A(_pg_m) LE_BITS_TO_1BYTE(((u8 *)(_pg_m)) + 0xC8, 4, 1)
|
||||
#define GET_PG_KFREE_THERMAL_K_ON_8821A(_pg_m) LE_BITS_TO_1BYTE(((u8 *)(_pg_m)) + 0xC8, 5, 1)
|
||||
|
||||
#define PPG_BB_GAIN_2G_TXA_OFFSET_8821A 0x1F6
|
||||
#define PPG_THERMAL_OFFSET_8821A 0x1F5
|
||||
#define PPG_BB_GAIN_5GLB1_TXA_OFFSET_8821A 0x1F4
|
||||
#define PPG_BB_GAIN_5GLB2_TXA_OFFSET_8821A 0x1F3
|
||||
#define PPG_BB_GAIN_5GMB1_TXA_OFFSET_8821A 0x1F2
|
||||
#define PPG_BB_GAIN_5GMB2_TXA_OFFSET_8821A 0x1F1
|
||||
#define PPG_BB_GAIN_5GHB_TXA_OFFSET_8821A 0x1F0
|
||||
|
||||
#define EEPROM_TX_PWR_INX_8821 0x10
|
||||
|
||||
#define EEPROM_ChannelPlan_8821 0xB8
|
||||
#define EEPROM_XTAL_8821 0xB9
|
||||
#define EEPROM_THERMAL_METER_8821 0xBA
|
||||
#define EEPROM_IQK_LCK_8821 0xBB
|
||||
|
||||
|
||||
#define EEPROM_RF_BOARD_OPTION_8821 0xC1
|
||||
#define EEPROM_RF_FEATURE_OPTION_8821 0xC2
|
||||
#define EEPROM_RF_BT_SETTING_8821 0xC3
|
||||
#define EEPROM_VERSION_8821 0xC4
|
||||
#define EEPROM_CustomID_8821 0xC5
|
||||
#define EEPROM_RF_ANTENNA_OPT_8821 0xC9
|
||||
|
||||
// RTL8821AE
|
||||
#define EEPROM_MAC_ADDR_8821AE 0xD0
|
||||
#define EEPROM_VID_8821AE 0xD6
|
||||
#define EEPROM_DID_8821AE 0xD8
|
||||
#define EEPROM_SVID_8821AE 0xDA
|
||||
#define EEPROM_SMID_8821AE 0xDC
|
||||
|
||||
//RTL8821AU
|
||||
#define EEPROM_PA_TYPE_8821AU 0xBC
|
||||
#define EEPROM_LNA_TYPE_8821AU 0xBF
|
||||
|
||||
// RTL8821AS
|
||||
#define EEPROM_MAC_ADDR_8821AS 0x11A
|
||||
|
||||
//RTL8821AU
|
||||
#define EEPROM_MAC_ADDR_8821AU 0x107
|
||||
#define EEPROM_VID_8821AU 0x100
|
||||
#define EEPROM_PID_8821AU 0x102
|
||||
|
||||
|
||||
//====================================================
|
||||
// EEPROM/Efuse PG Offset for 8192 SE/SU
|
||||
//====================================================
|
||||
#define EEPROM_VID_92SE 0x0A
|
||||
#define EEPROM_DID_92SE 0x0C
|
||||
#define EEPROM_SVID_92SE 0x0E
|
||||
#define EEPROM_SMID_92SE 0x10
|
||||
|
||||
#define EEPROM_MAC_ADDR_92S 0x12
|
||||
|
||||
#define EEPROM_TSSI_A_92SE 0x74
|
||||
#define EEPROM_TSSI_B_92SE 0x75
|
||||
|
||||
#define EEPROM_Version_92SE 0x7C
|
||||
|
||||
|
||||
#define EEPROM_VID_92SU 0x08
|
||||
#define EEPROM_PID_92SU 0x0A
|
||||
|
||||
#define EEPROM_Version_92SU 0x50
|
||||
#define EEPROM_TSSI_A_92SU 0x6b
|
||||
#define EEPROM_TSSI_B_92SU 0x6c
|
||||
|
||||
/* ====================================================
|
||||
EEPROM/Efuse PG Offset for 8188FE/8188FU/8188FS
|
||||
====================================================
|
||||
*/
|
||||
|
||||
#define GET_PG_KFREE_ON_8188F(_pg_m) LE_BITS_TO_1BYTE(((u8 *)(_pg_m)) + 0xC1, 4, 1)
|
||||
#define GET_PG_KFREE_THERMAL_K_ON_8188F(_pg_m) LE_BITS_TO_1BYTE(((u8 *)(_pg_m)) + 0xC8, 5, 1)
|
||||
|
||||
#define PPG_BB_GAIN_2G_TXA_OFFSET_8188F 0xEE
|
||||
#define PPG_THERMAL_OFFSET_8188F 0xEF
|
||||
|
||||
/* 0x10 ~ 0x63 = TX power area. */
|
||||
#define EEPROM_TX_PWR_INX_8188F 0x10
|
||||
|
||||
#define EEPROM_ChannelPlan_8188F 0xB8
|
||||
#define EEPROM_XTAL_8188F 0xB9
|
||||
#define EEPROM_THERMAL_METER_8188F 0xBA
|
||||
#define EEPROM_IQK_LCK_8188F 0xBB
|
||||
#define EEPROM_2G_5G_PA_TYPE_8188F 0xBC
|
||||
#define EEPROM_2G_LNA_TYPE_GAIN_SEL_8188F 0xBD
|
||||
#define EEPROM_5G_LNA_TYPE_GAIN_SEL_8188F 0xBF
|
||||
|
||||
#define EEPROM_RF_BOARD_OPTION_8188F 0xC1
|
||||
#define EEPROM_FEATURE_OPTION_8188F 0xC2
|
||||
#define EEPROM_RF_BT_SETTING_8188F 0xC3
|
||||
#define EEPROM_VERSION_8188F 0xC4
|
||||
#define EEPROM_CustomID_8188F 0xC5
|
||||
#define EEPROM_TX_BBSWING_2G_8188F 0xC6
|
||||
#define EEPROM_TX_PWR_CALIBRATE_RATE_8188F 0xC8
|
||||
#define EEPROM_RF_ANTENNA_OPT_8188F 0xC9
|
||||
#define EEPROM_RFE_OPTION_8188F 0xCA
|
||||
#define EEPROM_CUSTOMER_ID_8188F 0x7F
|
||||
#define EEPROM_SUBCUSTOMER_ID_8188F 0x59
|
||||
|
||||
/* RTL8188FU */
|
||||
#define EEPROM_MAC_ADDR_8188FU 0xD7
|
||||
#define EEPROM_VID_8188FU 0xD0
|
||||
#define EEPROM_PID_8188FU 0xD2
|
||||
#define EEPROM_PA_TYPE_8188FU 0xBC
|
||||
#define EEPROM_LNA_TYPE_2G_8188FU 0xBD
|
||||
#define EEPROM_USB_OPTIONAL_FUNCTION0_8188FU 0xD4
|
||||
|
||||
/* RTL8188FS */
|
||||
#define EEPROM_MAC_ADDR_8188FS 0x11A
|
||||
#define EEPROM_Voltage_ADDR_8188F 0x8
|
||||
|
||||
//====================================================
|
||||
// EEPROM/Efuse PG Offset for 8723BE/8723BU/8723BS
|
||||
//====================================================
|
||||
// 0x10 ~ 0x63 = TX power area.
|
||||
#define EEPROM_TX_PWR_INX_8723B 0x10
|
||||
|
||||
#define EEPROM_ChannelPlan_8723B 0xB8
|
||||
#define EEPROM_XTAL_8723B 0xB9
|
||||
#define EEPROM_THERMAL_METER_8723B 0xBA
|
||||
#define EEPROM_IQK_LCK_8723B 0xBB
|
||||
#define EEPROM_2G_5G_PA_TYPE_8723B 0xBC
|
||||
#define EEPROM_2G_LNA_TYPE_GAIN_SEL_8723B 0xBD
|
||||
#define EEPROM_5G_LNA_TYPE_GAIN_SEL_8723B 0xBF
|
||||
|
||||
#define EEPROM_RF_BOARD_OPTION_8723B 0xC1
|
||||
#define EEPROM_FEATURE_OPTION_8723B 0xC2
|
||||
#define EEPROM_RF_BT_SETTING_8723B 0xC3
|
||||
#define EEPROM_VERSION_8723B 0xC4
|
||||
#define EEPROM_CustomID_8723B 0xC5
|
||||
#define EEPROM_TX_BBSWING_2G_8723B 0xC6
|
||||
#define EEPROM_TX_PWR_CALIBRATE_RATE_8723B 0xC8
|
||||
#define EEPROM_RF_ANTENNA_OPT_8723B 0xC9
|
||||
#define EEPROM_RFE_OPTION_8723B 0xCA
|
||||
|
||||
// RTL8723BE
|
||||
#define EEPROM_MAC_ADDR_8723BE 0xD0
|
||||
#define EEPROM_VID_8723BE 0xD6
|
||||
#define EEPROM_DID_8723BE 0xD8
|
||||
#define EEPROM_SVID_8723BE 0xDA
|
||||
#define EEPROM_SMID_8723BE 0xDC
|
||||
|
||||
//RTL8723BU
|
||||
#define EEPROM_MAC_ADDR_8723BU 0x107
|
||||
#define EEPROM_VID_8723BU 0x100
|
||||
#define EEPROM_PID_8723BU 0x102
|
||||
#define EEPROM_PA_TYPE_8723BU 0xBC
|
||||
#define EEPROM_LNA_TYPE_2G_8723BU 0xBD
|
||||
|
||||
|
||||
//RTL8723BS
|
||||
#define EEPROM_MAC_ADDR_8723BS 0x11A
|
||||
#define EEPROM_Voltage_ADDR_8723B 0x8
|
||||
|
||||
//====================================================
|
||||
/* EEPROM/Efuse PG Offset for 8703B */
|
||||
//====================================================
|
||||
#define GET_PG_KFREE_ON_8703B(_pg_m) LE_BITS_TO_1BYTE(((u8 *)(_pg_m)) + 0xC1, 4, 1)
|
||||
#define GET_PG_KFREE_THERMAL_K_ON_8703B(_pg_m) LE_BITS_TO_1BYTE(((u8 *)(_pg_m)) + 0xC8, 5, 1)
|
||||
|
||||
#define PPG_BB_GAIN_2G_TXA_OFFSET_8703B 0xEE
|
||||
#define PPG_THERMAL_OFFSET_8703B 0xEF
|
||||
|
||||
#define EEPROM_TX_PWR_INX_8703B 0x10
|
||||
|
||||
#define EEPROM_ChannelPlan_8703B 0xB8
|
||||
#define EEPROM_XTAL_8703B 0xB9
|
||||
#define EEPROM_THERMAL_METER_8703B 0xBA
|
||||
#define EEPROM_IQK_LCK_8703B 0xBB
|
||||
#define EEPROM_2G_5G_PA_TYPE_8703B 0xBC
|
||||
#define EEPROM_2G_LNA_TYPE_GAIN_SEL_8703B 0xBD
|
||||
#define EEPROM_5G_LNA_TYPE_GAIN_SEL_8703B 0xBF
|
||||
|
||||
#define EEPROM_RF_BOARD_OPTION_8703B 0xC1
|
||||
#define EEPROM_FEATURE_OPTION_8703B 0xC2
|
||||
#define EEPROM_RF_BT_SETTING_8703B 0xC3
|
||||
#define EEPROM_VERSION_8703B 0xC4
|
||||
#define EEPROM_CustomID_8703B 0xC5
|
||||
#define EEPROM_TX_BBSWING_2G_8703B 0xC6
|
||||
#define EEPROM_TX_PWR_CALIBRATE_RATE_8703B 0xC8
|
||||
#define EEPROM_RF_ANTENNA_OPT_8703B 0xC9
|
||||
#define EEPROM_RFE_OPTION_8703B 0xCA
|
||||
|
||||
/* RTL8703BU */
|
||||
#define EEPROM_MAC_ADDR_8703BU 0x107
|
||||
#define EEPROM_VID_8703BU 0x100
|
||||
#define EEPROM_PID_8703BU 0x102
|
||||
#define EEPROM_USB_OPTIONAL_FUNCTION0_8703BU 0x104
|
||||
#define EEPROM_PA_TYPE_8703BU 0xBC
|
||||
#define EEPROM_LNA_TYPE_2G_8703BU 0xBD
|
||||
|
||||
//RTL8703BS
|
||||
#define EEPROM_MAC_ADDR_8703BS 0x11A
|
||||
#define EEPROM_Voltage_ADDR_8703B 0x8
|
||||
|
||||
//====================================================
|
||||
// EEPROM/Efuse Value Type
|
||||
//====================================================
|
||||
#define EETYPE_TX_PWR 0x0
|
||||
//====================================================
|
||||
// EEPROM/Efuse Default Value
|
||||
//====================================================
|
||||
#define EEPROM_CID_DEFAULT 0x0
|
||||
#define EEPROM_CID_DEFAULT_EXT 0xFF // Reserved for Realtek
|
||||
#define EEPROM_CID_TOSHIBA 0x4
|
||||
#define EEPROM_CID_CCX 0x10
|
||||
#define EEPROM_CID_QMI 0x0D
|
||||
#define EEPROM_CID_WHQL 0xFE
|
||||
|
||||
#define EEPROM_CHANNEL_PLAN_FCC 0x0
|
||||
#define EEPROM_CHANNEL_PLAN_IC 0x1
|
||||
#define EEPROM_CHANNEL_PLAN_ETSI 0x2
|
||||
#define EEPROM_CHANNEL_PLAN_SPAIN 0x3
|
||||
#define EEPROM_CHANNEL_PLAN_FRANCE 0x4
|
||||
#define EEPROM_CHANNEL_PLAN_MKK 0x5
|
||||
#define EEPROM_CHANNEL_PLAN_MKK1 0x6
|
||||
#define EEPROM_CHANNEL_PLAN_ISRAEL 0x7
|
||||
#define EEPROM_CHANNEL_PLAN_TELEC 0x8
|
||||
#define EEPROM_CHANNEL_PLAN_GLOBAL_DOMAIN 0x9
|
||||
#define EEPROM_CHANNEL_PLAN_WORLD_WIDE_13 0xA
|
||||
#define EEPROM_CHANNEL_PLAN_NCC_TAIWAN 0xB
|
||||
#define EEPROM_CHANNEL_PLAN_CHIAN 0XC
|
||||
#define EEPROM_CHANNEL_PLAN_SINGAPORE_INDIA_MEXICO 0XD
|
||||
#define EEPROM_CHANNEL_PLAN_KOREA 0xE
|
||||
#define EEPROM_CHANNEL_PLAN_TURKEY 0xF
|
||||
#define EEPROM_CHANNEL_PLAN_JAPAN 0x10
|
||||
#define EEPROM_CHANNEL_PLAN_FCC_NO_DFS 0x11
|
||||
#define EEPROM_CHANNEL_PLAN_JAPAN_NO_DFS 0x12
|
||||
#define EEPROM_CHANNEL_PLAN_WORLD_WIDE_5G 0x13
|
||||
#define EEPROM_CHANNEL_PLAN_TAIWAN_NO_DFS 0x14
|
||||
|
||||
#define EEPROM_USB_OPTIONAL1 0xE
|
||||
#define EEPROM_CHANNEL_PLAN_BY_HW_MASK 0x80
|
||||
|
||||
#define RTL_EEPROM_ID 0x8129
|
||||
#define EEPROM_Default_TSSI 0x0
|
||||
#define EEPROM_Default_BoardType 0x02
|
||||
#define EEPROM_Default_ThermalMeter 0x12
|
||||
#define EEPROM_Default_ThermalMeter_92SU 0x7
|
||||
#define EEPROM_Default_ThermalMeter_88E 0x18
|
||||
#define EEPROM_Default_ThermalMeter_8812 0x18
|
||||
#define EEPROM_Default_ThermalMeter_8192E 0x1A
|
||||
#define EEPROM_Default_ThermalMeter_8723B 0x18
|
||||
#define EEPROM_Default_ThermalMeter_8703B 0x18
|
||||
#define EEPROM_Default_ThermalMeter_8188F 0x18
|
||||
#define EEPROM_Default_ThermalMeter_8814A 0x18
|
||||
|
||||
|
||||
#define EEPROM_Default_CrystalCap 0x0
|
||||
#define EEPROM_Default_CrystalCap_8723A 0x20
|
||||
#define EEPROM_Default_CrystalCap_88E 0x20
|
||||
#define EEPROM_Default_CrystalCap_8812 0x20
|
||||
#define EEPROM_Default_CrystalCap_8814 0x20
|
||||
#define EEPROM_Default_CrystalCap_8192E 0x20
|
||||
#define EEPROM_Default_CrystalCap_8723B 0x20
|
||||
#define EEPROM_Default_CrystalCap_8703B 0x20
|
||||
#define EEPROM_Default_CrystalCap_8188F 0x20
|
||||
#define EEPROM_Default_CrystalFreq 0x0
|
||||
#define EEPROM_Default_TxPowerLevel_92C 0x22
|
||||
#define EEPROM_Default_TxPowerLevel_2G 0x2C
|
||||
#define EEPROM_Default_TxPowerLevel_5G 0x22
|
||||
#define EEPROM_Default_TxPowerLevel 0x22
|
||||
#define EEPROM_Default_HT40_2SDiff 0x0
|
||||
#define EEPROM_Default_HT20_Diff 2
|
||||
#define EEPROM_Default_LegacyHTTxPowerDiff 0x3
|
||||
#define EEPROM_Default_LegacyHTTxPowerDiff_92C 0x3
|
||||
#define EEPROM_Default_LegacyHTTxPowerDiff_92D 0x4
|
||||
#define EEPROM_Default_HT40_PwrMaxOffset 0
|
||||
#define EEPROM_Default_HT20_PwrMaxOffset 0
|
||||
|
||||
#define EEPROM_Default_PID 0x1234
|
||||
#define EEPROM_Default_VID 0x5678
|
||||
#define EEPROM_Default_CustomerID 0xAB
|
||||
#define EEPROM_Default_CustomerID_8188E 0x00
|
||||
#define EEPROM_Default_SubCustomerID 0xCD
|
||||
#define EEPROM_Default_Version 0
|
||||
|
||||
#define EEPROM_Default_externalPA_C9 0x00
|
||||
#define EEPROM_Default_externalPA_CC 0xFF
|
||||
#define EEPROM_Default_internalPA_SP3T_C9 0xAA
|
||||
#define EEPROM_Default_internalPA_SP3T_CC 0xAF
|
||||
#define EEPROM_Default_internalPA_SPDT_C9 0xAA
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
#define EEPROM_Default_internalPA_SPDT_CC 0xA0
|
||||
#else
|
||||
#define EEPROM_Default_internalPA_SPDT_CC 0xFA
|
||||
#endif
|
||||
#define EEPROM_Default_PAType 0
|
||||
#define EEPROM_Default_LNAType 0
|
||||
|
||||
//New EFUSE deafult value
|
||||
#define EEPROM_DEFAULT_24G_INDEX 0x2D
|
||||
#define EEPROM_DEFAULT_24G_HT20_DIFF 0X02
|
||||
#define EEPROM_DEFAULT_24G_OFDM_DIFF 0X04
|
||||
|
||||
#define EEPROM_DEFAULT_5G_INDEX 0X2A
|
||||
#define EEPROM_DEFAULT_5G_HT20_DIFF 0X00
|
||||
#define EEPROM_DEFAULT_5G_OFDM_DIFF 0X04
|
||||
|
||||
#define EEPROM_DEFAULT_DIFF 0XFE
|
||||
#define EEPROM_DEFAULT_CHANNEL_PLAN 0x7F
|
||||
#define EEPROM_DEFAULT_BOARD_OPTION 0x00
|
||||
#define EEPROM_DEFAULT_RFE_OPTION_8192E 0xFF
|
||||
#define EEPROM_DEFAULT_RFE_OPTION 0x04
|
||||
#define EEPROM_DEFAULT_FEATURE_OPTION 0x00
|
||||
#define EEPROM_DEFAULT_BT_OPTION 0x10
|
||||
|
||||
|
||||
#define EEPROM_DEFAULT_TX_CALIBRATE_RATE 0x00
|
||||
|
||||
// PCIe related
|
||||
#define EEPROM_PCIE_DEV_CAP_01 0xE0 // Express device capability in PCIe configuration space, i.e., map to offset 0x74
|
||||
#define EEPROM_PCIE_DEV_CAP_02 0xE1 // Express device capability in PCIe configuration space, i.e., map to offset 0x75
|
||||
|
||||
|
||||
//
|
||||
// For VHT series TX power by rate table.
|
||||
// VHT TX power by rate off setArray =
|
||||
// Band:-2G&5G = 0 / 1
|
||||
// RF: at most 4*4 = ABCD=0/1/2/3
|
||||
// CCK=0 OFDM=1/2 HT-MCS 0-15=3/4/56 VHT=7/8/9/10/11
|
||||
//
|
||||
#define TX_PWR_BY_RATE_NUM_BAND 2
|
||||
#define TX_PWR_BY_RATE_NUM_RF 4
|
||||
#define TX_PWR_BY_RATE_NUM_RATE 84
|
||||
|
||||
#define TXPWR_LMT_MAX_RF 4
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// EEPROM/EFUSE data structure definition.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//For 88E new structure
|
||||
|
||||
/*
|
||||
2.4G:
|
||||
{
|
||||
{1,2},
|
||||
{3,4,5},
|
||||
{6,7,8},
|
||||
{9,10,11},
|
||||
{12,13},
|
||||
{14}
|
||||
}
|
||||
|
||||
5G:
|
||||
{
|
||||
{36,38,40},
|
||||
{44,46,48},
|
||||
{52,54,56},
|
||||
{60,62,64},
|
||||
{100,102,104},
|
||||
{108,110,112},
|
||||
{116,118,120},
|
||||
{124,126,128},
|
||||
{132,134,136},
|
||||
{140,142,144},
|
||||
{149,151,153},
|
||||
{157,159,161},
|
||||
{173,175,177},
|
||||
}
|
||||
*/
|
||||
#define MAX_RF_PATH 4
|
||||
#define RF_PATH_MAX MAX_RF_PATH
|
||||
#define MAX_CHNL_GROUP_24G 6
|
||||
#define MAX_CHNL_GROUP_5G 14
|
||||
|
||||
//It must always set to 4, otherwise read efuse table secquence will be wrong.
|
||||
#define MAX_TX_COUNT 4
|
||||
|
||||
typedef struct _TxPowerInfo24G{
|
||||
u8 IndexCCK_Base[MAX_RF_PATH][MAX_CHNL_GROUP_24G];
|
||||
u8 IndexBW40_Base[MAX_RF_PATH][MAX_CHNL_GROUP_24G];
|
||||
//If only one tx, only BW20 and OFDM are used.
|
||||
s8 CCK_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 OFDM_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 BW20_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 BW40_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
}TxPowerInfo24G, *PTxPowerInfo24G;
|
||||
|
||||
typedef struct _TxPowerInfo5G{
|
||||
u8 IndexBW40_Base[MAX_RF_PATH][MAX_CHNL_GROUP_5G];
|
||||
//If only one tx, only BW20, OFDM, BW80 and BW160 are used.
|
||||
s8 OFDM_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 BW20_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 BW40_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 BW80_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
s8 BW160_Diff[MAX_RF_PATH][MAX_TX_COUNT];
|
||||
}TxPowerInfo5G, *PTxPowerInfo5G;
|
||||
|
||||
|
||||
typedef enum _BT_Ant_NUM{
|
||||
Ant_x2 = 0,
|
||||
Ant_x1 = 1
|
||||
} BT_Ant_NUM, *PBT_Ant_NUM;
|
||||
|
||||
typedef enum _BT_CoType{
|
||||
BT_2WIRE = 0,
|
||||
BT_ISSC_3WIRE = 1,
|
||||
BT_ACCEL = 2,
|
||||
BT_CSR_BC4 = 3,
|
||||
BT_CSR_BC8 = 4,
|
||||
BT_RTL8756 = 5,
|
||||
BT_RTL8723A = 6,
|
||||
BT_RTL8821 = 7,
|
||||
BT_RTL8723B = 8,
|
||||
BT_RTL8192E = 9,
|
||||
BT_RTL8814A = 10,
|
||||
BT_RTL8812A = 11,
|
||||
BT_RTL8703B = 12
|
||||
} BT_CoType, *PBT_CoType;
|
||||
|
||||
typedef enum _BT_RadioShared{
|
||||
BT_Radio_Shared = 0,
|
||||
BT_Radio_Individual = 1,
|
||||
} BT_RadioShared, *PBT_RadioShared;
|
||||
|
||||
|
||||
#endif
|
||||
247
include/hal_phy.h
Normal file
247
include/hal_phy.h
Normal file
|
|
@ -0,0 +1,247 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_PHY_H__
|
||||
#define __HAL_PHY_H__
|
||||
|
||||
|
||||
#if DISABLE_BB_RF
|
||||
#define HAL_FW_ENABLE 0
|
||||
#define HAL_MAC_ENABLE 0
|
||||
#define HAL_BB_ENABLE 0
|
||||
#define HAL_RF_ENABLE 0
|
||||
#else // FPGA_PHY and ASIC
|
||||
#define HAL_FW_ENABLE 1
|
||||
#define HAL_MAC_ENABLE 1
|
||||
#define HAL_BB_ENABLE 1
|
||||
#define HAL_RF_ENABLE 1
|
||||
#endif
|
||||
|
||||
#define RF6052_MAX_TX_PWR 0x3F
|
||||
#define RF6052_MAX_REG_88E 0xFF
|
||||
#define RF6052_MAX_REG_92C 0x7F
|
||||
|
||||
#define RF6052_MAX_REG \
|
||||
(RF6052_MAX_REG_88E > RF6052_MAX_REG_92C) ? RF6052_MAX_REG_88E: RF6052_MAX_REG_92C
|
||||
|
||||
#define GET_RF6052_REAL_MAX_REG(_Adapter) \
|
||||
IS_HARDWARE_TYPE_8188E(_Adapter) ? RF6052_MAX_REG_88E : RF6052_MAX_REG_92C
|
||||
|
||||
#define RF6052_MAX_PATH 2
|
||||
|
||||
//
|
||||
// Antenna detection method, i.e., using single tone detection or RSSI reported from each antenna detected.
|
||||
// Added by Roger, 2013.05.22.
|
||||
//
|
||||
#define ANT_DETECT_BY_SINGLE_TONE BIT0
|
||||
#define ANT_DETECT_BY_RSSI BIT1
|
||||
#define IS_ANT_DETECT_SUPPORT_SINGLE_TONE(__Adapter) ((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_SINGLE_TONE)
|
||||
#define IS_ANT_DETECT_SUPPORT_RSSI(__Adapter) ((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_RSSI)
|
||||
|
||||
|
||||
/*--------------------------Define Parameters-------------------------------*/
|
||||
typedef enum _RF_TYPE{
|
||||
RF_TYPE_MIN = 0, // 0
|
||||
RF_8225=1, // 1 11b/g RF for verification only
|
||||
RF_8256=2, // 2 11b/g/n
|
||||
RF_8258=3, // 3 11a/b/g/n RF
|
||||
RF_6052=4, // 4 11b/g/n RF
|
||||
RF_PSEUDO_11N=5, // 5, It is a temporality RF.
|
||||
RF_TYPE_MAX
|
||||
}RF_TYPE_E,*PRF_TYPE_E;
|
||||
|
||||
#define TX_1S 0
|
||||
#define TX_2S 1
|
||||
#define TX_3S 2
|
||||
#define TX_4S 3
|
||||
|
||||
#define RF_PATH_MAX_92C_88E 2
|
||||
#define RF_PATH_MAX_90_8812 4 //Max RF number 90 support
|
||||
|
||||
typedef enum _ANTENNA_PATH{
|
||||
ANTENNA_NONE = 0,
|
||||
ANTENNA_D = 1,
|
||||
ANTENNA_C = 2,
|
||||
ANTENNA_CD = 3,
|
||||
ANTENNA_B = 4,
|
||||
ANTENNA_BD = 5,
|
||||
ANTENNA_BC = 6,
|
||||
ANTENNA_BCD = 7,
|
||||
ANTENNA_A = 8,
|
||||
ANTENNA_AD = 9,
|
||||
ANTENNA_AC = 10,
|
||||
ANTENNA_ACD = 11,
|
||||
ANTENNA_AB = 12,
|
||||
ANTENNA_ABD = 13,
|
||||
ANTENNA_ABC = 14,
|
||||
ANTENNA_ABCD = 15
|
||||
} ANTENNA_PATH;
|
||||
|
||||
typedef enum _RF_CONTENT{
|
||||
radioa_txt = 0x1000,
|
||||
radiob_txt = 0x1001,
|
||||
radioc_txt = 0x1002,
|
||||
radiod_txt = 0x1003
|
||||
} RF_CONTENT;
|
||||
|
||||
typedef enum _BaseBand_Config_Type{
|
||||
BaseBand_Config_PHY_REG = 0, //Radio Path A
|
||||
BaseBand_Config_AGC_TAB = 1, //Radio Path B
|
||||
BaseBand_Config_AGC_TAB_2G = 2,
|
||||
BaseBand_Config_AGC_TAB_5G = 3,
|
||||
BaseBand_Config_PHY_REG_PG
|
||||
}BaseBand_Config_Type, *PBaseBand_Config_Type;
|
||||
|
||||
typedef enum _HW_BLOCK{
|
||||
HW_BLOCK_MAC = 0,
|
||||
HW_BLOCK_PHY0 = 1,
|
||||
HW_BLOCK_PHY1 = 2,
|
||||
HW_BLOCK_RF = 3,
|
||||
HW_BLOCK_MAXIMUM = 4, // Never use this
|
||||
}HW_BLOCK_E, *PHW_BLOCK_E;
|
||||
|
||||
typedef enum _WIRELESS_MODE {
|
||||
WIRELESS_MODE_UNKNOWN = 0x00,
|
||||
WIRELESS_MODE_A = 0x01,
|
||||
WIRELESS_MODE_B = 0x02,
|
||||
WIRELESS_MODE_G = 0x04,
|
||||
WIRELESS_MODE_AUTO = 0x08,
|
||||
WIRELESS_MODE_N_24G = 0x10,
|
||||
WIRELESS_MODE_N_5G = 0x20,
|
||||
WIRELESS_MODE_AC_5G = 0x40,
|
||||
WIRELESS_MODE_AC_24G = 0x80,
|
||||
WIRELESS_MODE_AC_ONLY = 0x100,
|
||||
} WIRELESS_MODE;
|
||||
|
||||
typedef enum _SwChnlCmdID{
|
||||
CmdID_End,
|
||||
CmdID_SetTxPowerLevel,
|
||||
CmdID_BBRegWrite10,
|
||||
CmdID_WritePortUlong,
|
||||
CmdID_WritePortUshort,
|
||||
CmdID_WritePortUchar,
|
||||
CmdID_RF_WriteReg,
|
||||
}SwChnlCmdID;
|
||||
|
||||
typedef struct _SwChnlCmd{
|
||||
SwChnlCmdID CmdID;
|
||||
u32 Para1;
|
||||
u32 Para2;
|
||||
u32 msDelay;
|
||||
}SwChnlCmd;
|
||||
|
||||
typedef struct _R_ANTENNA_SELECT_OFDM{
|
||||
u32 r_tx_antenna:4;
|
||||
u32 r_ant_l:4;
|
||||
u32 r_ant_non_ht:4;
|
||||
u32 r_ant_ht1:4;
|
||||
u32 r_ant_ht2:4;
|
||||
u32 r_ant_ht_s1:4;
|
||||
u32 r_ant_non_ht_s1:4;
|
||||
u32 OFDM_TXSC:2;
|
||||
u32 Reserved:2;
|
||||
}R_ANTENNA_SELECT_OFDM;
|
||||
|
||||
typedef struct _R_ANTENNA_SELECT_CCK{
|
||||
u8 r_cckrx_enable_2:2;
|
||||
u8 r_cckrx_enable:2;
|
||||
u8 r_ccktx_enable:4;
|
||||
}R_ANTENNA_SELECT_CCK;
|
||||
|
||||
typedef struct RF_Shadow_Compare_Map {
|
||||
// Shadow register value
|
||||
u32 Value;
|
||||
// Compare or not flag
|
||||
u8 Compare;
|
||||
// Record If it had ever modified unpredicted
|
||||
u8 ErrorOrNot;
|
||||
// Recorver Flag
|
||||
u8 Recorver;
|
||||
//
|
||||
u8 Driver_Write;
|
||||
}RF_SHADOW_T;
|
||||
|
||||
/*--------------------------Exported Function prototype---------------------*/
|
||||
|
||||
u32
|
||||
PHY_CalculateBitShift(
|
||||
u32 BitMask
|
||||
);
|
||||
|
||||
u32
|
||||
PHY_RFShadowRead(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 Offset);
|
||||
|
||||
VOID
|
||||
PHY_RFShadowWrite(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 Offset,
|
||||
IN u32 Data);
|
||||
|
||||
BOOLEAN
|
||||
PHY_RFShadowCompare(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 Offset);
|
||||
|
||||
VOID
|
||||
PHY_RFShadowRecorver(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 Offset);
|
||||
|
||||
VOID
|
||||
PHY_RFShadowCompareAll(
|
||||
IN PADAPTER Adapter);
|
||||
|
||||
VOID
|
||||
PHY_RFShadowRecorverAll(
|
||||
IN PADAPTER Adapter);
|
||||
|
||||
VOID
|
||||
PHY_RFShadowCompareFlagSet(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 Offset,
|
||||
IN u8 Type);
|
||||
|
||||
VOID
|
||||
PHY_RFShadowRecorverFlagSet(
|
||||
IN PADAPTER Adapter,
|
||||
IN u8 eRFPath,
|
||||
IN u32 Offset,
|
||||
IN u8 Type);
|
||||
|
||||
VOID
|
||||
PHY_RFShadowCompareFlagSetAll(
|
||||
IN PADAPTER Adapter);
|
||||
|
||||
VOID
|
||||
PHY_RFShadowRecorverFlagSetAll(
|
||||
IN PADAPTER Adapter);
|
||||
|
||||
VOID
|
||||
PHY_RFShadowRefresh(
|
||||
IN PADAPTER Adapter);
|
||||
|
||||
#endif //__HAL_COMMON_H__
|
||||
|
||||
31
include/hal_phy_reg.h
Normal file
31
include/hal_phy_reg.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_PHY_REG_H__
|
||||
#define __HAL_PHY_REG_H__
|
||||
|
||||
//for PutRFRegsetting & GetRFRegSetting BitMask
|
||||
//#if (RTL92SE_FPGA_VERIFY == 1)
|
||||
//#define bRFRegOffsetMask 0xfff
|
||||
//#else
|
||||
#define bRFRegOffsetMask 0xfffff
|
||||
//#endif
|
||||
|
||||
#endif //__HAL_PHY_REG_H__
|
||||
|
||||
32
include/hal_sdio.h
Normal file
32
include/hal_sdio.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __HAL_SDIO_H_
|
||||
#define __HAL_SDIO_H_
|
||||
|
||||
#define ffaddr2deviceId(pdvobj, addr) (pdvobj->Queue2Pipe[addr])
|
||||
|
||||
u8 rtw_hal_sdio_max_txoqt_free_space(_adapter *padapter);
|
||||
u8 rtw_hal_sdio_query_tx_freepage(_adapter *padapter, u8 PageIdx, u8 RequiredPageNum);
|
||||
void rtw_hal_sdio_update_tx_freepage(_adapter *padapter, u8 PageIdx, u8 RequiredPageNum);
|
||||
void rtw_hal_set_sdio_tx_max_length(PADAPTER padapter, u8 numHQ, u8 numNQ, u8 numLQ, u8 numPubQ);
|
||||
u32 rtw_hal_get_sdio_tx_max_length(PADAPTER padapter, u8 queue_idx);
|
||||
|
||||
#endif //__RTW_LED_H_
|
||||
|
||||
1832
include/ieee80211.h
Normal file
1832
include/ieee80211.h
Normal file
File diff suppressed because it is too large
Load diff
477
include/ieee80211_ext.h
Normal file
477
include/ieee80211_ext.h
Normal file
|
|
@ -0,0 +1,477 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __IEEE80211_EXT_H
|
||||
#define __IEEE80211_EXT_H
|
||||
|
||||
#include <drv_conf.h>
|
||||
#include <osdep_service.h>
|
||||
#include <drv_types.h>
|
||||
|
||||
#define WMM_OUI_TYPE 2
|
||||
#define WMM_OUI_SUBTYPE_INFORMATION_ELEMENT 0
|
||||
#define WMM_OUI_SUBTYPE_PARAMETER_ELEMENT 1
|
||||
#define WMM_OUI_SUBTYPE_TSPEC_ELEMENT 2
|
||||
#define WMM_VERSION 1
|
||||
|
||||
#define WPA_PROTO_WPA BIT(0)
|
||||
#define WPA_PROTO_RSN BIT(1)
|
||||
|
||||
#define WPA_KEY_MGMT_IEEE8021X BIT(0)
|
||||
#define WPA_KEY_MGMT_PSK BIT(1)
|
||||
#define WPA_KEY_MGMT_NONE BIT(2)
|
||||
#define WPA_KEY_MGMT_IEEE8021X_NO_WPA BIT(3)
|
||||
#define WPA_KEY_MGMT_WPA_NONE BIT(4)
|
||||
|
||||
|
||||
#define WPA_CAPABILITY_PREAUTH BIT(0)
|
||||
#define WPA_CAPABILITY_MGMT_FRAME_PROTECTION BIT(6)
|
||||
#define WPA_CAPABILITY_PEERKEY_ENABLED BIT(9)
|
||||
|
||||
|
||||
#define PMKID_LEN 16
|
||||
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
struct wpa_ie_hdr {
|
||||
u8 elem_id;
|
||||
u8 len;
|
||||
u8 oui[4]; /* 24-bit OUI followed by 8-bit OUI type */
|
||||
u8 version[2]; /* little endian */
|
||||
}__attribute__ ((packed));
|
||||
|
||||
struct rsn_ie_hdr {
|
||||
u8 elem_id; /* WLAN_EID_RSN */
|
||||
u8 len;
|
||||
u8 version[2]; /* little endian */
|
||||
}__attribute__ ((packed));
|
||||
|
||||
struct wme_ac_parameter {
|
||||
#if defined(CONFIG_LITTLE_ENDIAN)
|
||||
/* byte 1 */
|
||||
u8 aifsn:4,
|
||||
acm:1,
|
||||
aci:2,
|
||||
reserved:1;
|
||||
|
||||
/* byte 2 */
|
||||
u8 eCWmin:4,
|
||||
eCWmax:4;
|
||||
#elif defined(CONFIG_BIG_ENDIAN)
|
||||
/* byte 1 */
|
||||
u8 reserved:1,
|
||||
aci:2,
|
||||
acm:1,
|
||||
aifsn:4;
|
||||
|
||||
/* byte 2 */
|
||||
u8 eCWmax:4,
|
||||
eCWmin:4;
|
||||
#else
|
||||
#error "Please fix <endian.h>"
|
||||
#endif
|
||||
|
||||
/* bytes 3 & 4 */
|
||||
u16 txopLimit;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct wme_parameter_element {
|
||||
/* required fields for WME version 1 */
|
||||
u8 oui[3];
|
||||
u8 oui_type;
|
||||
u8 oui_subtype;
|
||||
u8 version;
|
||||
u8 acInfo;
|
||||
u8 reserved;
|
||||
struct wme_ac_parameter ac[4];
|
||||
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
struct wpa_ie_hdr {
|
||||
u8 elem_id;
|
||||
u8 len;
|
||||
u8 oui[4]; /* 24-bit OUI followed by 8-bit OUI type */
|
||||
u8 version[2]; /* little endian */
|
||||
};
|
||||
|
||||
struct rsn_ie_hdr {
|
||||
u8 elem_id; /* WLAN_EID_RSN */
|
||||
u8 len;
|
||||
u8 version[2]; /* little endian */
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
||||
|
||||
#define WPA_PUT_LE16(a, val) \
|
||||
do { \
|
||||
(a)[1] = ((u16) (val)) >> 8; \
|
||||
(a)[0] = ((u16) (val)) & 0xff; \
|
||||
} while (0)
|
||||
|
||||
#define WPA_PUT_BE32(a, val) \
|
||||
do { \
|
||||
(a)[0] = (u8) ((((u32) (val)) >> 24) & 0xff); \
|
||||
(a)[1] = (u8) ((((u32) (val)) >> 16) & 0xff); \
|
||||
(a)[2] = (u8) ((((u32) (val)) >> 8) & 0xff); \
|
||||
(a)[3] = (u8) (((u32) (val)) & 0xff); \
|
||||
} while (0)
|
||||
|
||||
#define WPA_PUT_LE32(a, val) \
|
||||
do { \
|
||||
(a)[3] = (u8) ((((u32) (val)) >> 24) & 0xff); \
|
||||
(a)[2] = (u8) ((((u32) (val)) >> 16) & 0xff); \
|
||||
(a)[1] = (u8) ((((u32) (val)) >> 8) & 0xff); \
|
||||
(a)[0] = (u8) (((u32) (val)) & 0xff); \
|
||||
} while (0)
|
||||
|
||||
#define RSN_SELECTOR_PUT(a, val) WPA_PUT_BE32((u8 *) (a), (val))
|
||||
//#define RSN_SELECTOR_PUT(a, val) WPA_PUT_LE32((u8 *) (a), (val))
|
||||
|
||||
|
||||
|
||||
/* Action category code */
|
||||
enum ieee80211_category {
|
||||
WLAN_CATEGORY_SPECTRUM_MGMT = 0,
|
||||
WLAN_CATEGORY_QOS = 1,
|
||||
WLAN_CATEGORY_DLS = 2,
|
||||
WLAN_CATEGORY_BACK = 3,
|
||||
WLAN_CATEGORY_HT = 7,
|
||||
WLAN_CATEGORY_WMM = 17,
|
||||
};
|
||||
|
||||
/* SPECTRUM_MGMT action code */
|
||||
enum ieee80211_spectrum_mgmt_actioncode {
|
||||
WLAN_ACTION_SPCT_MSR_REQ = 0,
|
||||
WLAN_ACTION_SPCT_MSR_RPRT = 1,
|
||||
WLAN_ACTION_SPCT_TPC_REQ = 2,
|
||||
WLAN_ACTION_SPCT_TPC_RPRT = 3,
|
||||
WLAN_ACTION_SPCT_CHL_SWITCH = 4,
|
||||
WLAN_ACTION_SPCT_EXT_CHL_SWITCH = 5,
|
||||
};
|
||||
|
||||
/* BACK action code */
|
||||
enum ieee80211_back_actioncode {
|
||||
WLAN_ACTION_ADDBA_REQ = 0,
|
||||
WLAN_ACTION_ADDBA_RESP = 1,
|
||||
WLAN_ACTION_DELBA = 2,
|
||||
};
|
||||
|
||||
/* HT features action code */
|
||||
enum ieee80211_ht_actioncode {
|
||||
WLAN_ACTION_NOTIFY_CH_WIDTH = 0,
|
||||
WLAN_ACTION_SM_PS = 1,
|
||||
WLAN_ACTION_PSPM = 2,
|
||||
WLAN_ACTION_PCO_PHASE = 3,
|
||||
WLAN_ACTION_MIMO_CSI_MX = 4,
|
||||
WLAN_ACTION_MIMO_NONCP_BF = 5,
|
||||
WLAN_ACTION_MIMP_CP_BF = 6,
|
||||
WLAN_ACTION_ASEL_INDICATES_FB = 7,
|
||||
WLAN_ACTION_HI_INFO_EXCHG = 8,
|
||||
};
|
||||
|
||||
/* BACK (block-ack) parties */
|
||||
enum ieee80211_back_parties {
|
||||
WLAN_BACK_RECIPIENT = 0,
|
||||
WLAN_BACK_INITIATOR = 1,
|
||||
WLAN_BACK_TIMER = 2,
|
||||
};
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
|
||||
struct ieee80211_mgmt {
|
||||
u16 frame_control;
|
||||
u16 duration;
|
||||
u8 da[6];
|
||||
u8 sa[6];
|
||||
u8 bssid[6];
|
||||
u16 seq_ctrl;
|
||||
union {
|
||||
struct {
|
||||
u16 auth_alg;
|
||||
u16 auth_transaction;
|
||||
u16 status_code;
|
||||
/* possibly followed by Challenge text */
|
||||
u8 variable[0];
|
||||
} __attribute__ ((packed)) auth;
|
||||
struct {
|
||||
u16 reason_code;
|
||||
} __attribute__ ((packed)) deauth;
|
||||
struct {
|
||||
u16 capab_info;
|
||||
u16 listen_interval;
|
||||
/* followed by SSID and Supported rates */
|
||||
u8 variable[0];
|
||||
} __attribute__ ((packed)) assoc_req;
|
||||
struct {
|
||||
u16 capab_info;
|
||||
u16 status_code;
|
||||
u16 aid;
|
||||
/* followed by Supported rates */
|
||||
u8 variable[0];
|
||||
} __attribute__ ((packed)) assoc_resp, reassoc_resp;
|
||||
struct {
|
||||
u16 capab_info;
|
||||
u16 listen_interval;
|
||||
u8 current_ap[6];
|
||||
/* followed by SSID and Supported rates */
|
||||
u8 variable[0];
|
||||
} __attribute__ ((packed)) reassoc_req;
|
||||
struct {
|
||||
u16 reason_code;
|
||||
} __attribute__ ((packed)) disassoc;
|
||||
struct {
|
||||
__le64 timestamp;
|
||||
u16 beacon_int;
|
||||
u16 capab_info;
|
||||
/* followed by some of SSID, Supported rates,
|
||||
* FH Params, DS Params, CF Params, IBSS Params, TIM */
|
||||
u8 variable[0];
|
||||
} __attribute__ ((packed)) beacon;
|
||||
struct {
|
||||
/* only variable items: SSID, Supported rates */
|
||||
u8 variable[0];
|
||||
} __attribute__ ((packed)) probe_req;
|
||||
struct {
|
||||
__le64 timestamp;
|
||||
u16 beacon_int;
|
||||
u16 capab_info;
|
||||
/* followed by some of SSID, Supported rates,
|
||||
* FH Params, DS Params, CF Params, IBSS Params */
|
||||
u8 variable[0];
|
||||
} __attribute__ ((packed)) probe_resp;
|
||||
struct {
|
||||
u8 category;
|
||||
union {
|
||||
struct {
|
||||
u8 action_code;
|
||||
u8 dialog_token;
|
||||
u8 status_code;
|
||||
u8 variable[0];
|
||||
} __attribute__ ((packed)) wme_action;
|
||||
#if 0
|
||||
struct{
|
||||
u8 action_code;
|
||||
u8 element_id;
|
||||
u8 length;
|
||||
struct ieee80211_channel_sw_ie sw_elem;
|
||||
} __attribute__ ((packed)) chan_switch;
|
||||
struct{
|
||||
u8 action_code;
|
||||
u8 dialog_token;
|
||||
u8 element_id;
|
||||
u8 length;
|
||||
struct ieee80211_msrment_ie msr_elem;
|
||||
} __attribute__ ((packed)) measurement;
|
||||
#endif
|
||||
struct{
|
||||
u8 action_code;
|
||||
u8 dialog_token;
|
||||
u16 capab;
|
||||
u16 timeout;
|
||||
u16 start_seq_num;
|
||||
} __attribute__ ((packed)) addba_req;
|
||||
struct{
|
||||
u8 action_code;
|
||||
u8 dialog_token;
|
||||
u16 status;
|
||||
u16 capab;
|
||||
u16 timeout;
|
||||
} __attribute__ ((packed)) addba_resp;
|
||||
struct{
|
||||
u8 action_code;
|
||||
u16 params;
|
||||
u16 reason_code;
|
||||
} __attribute__ ((packed)) delba;
|
||||
struct{
|
||||
u8 action_code;
|
||||
/* capab_info for open and confirm,
|
||||
* reason for close
|
||||
*/
|
||||
u16 aux;
|
||||
/* Followed in plink_confirm by status
|
||||
* code, AID and supported rates,
|
||||
* and directly by supported rates in
|
||||
* plink_open and plink_close
|
||||
*/
|
||||
u8 variable[0];
|
||||
} __attribute__ ((packed)) plink_action;
|
||||
struct{
|
||||
u8 action_code;
|
||||
u8 variable[0];
|
||||
} __attribute__ ((packed)) mesh_action;
|
||||
} __attribute__ ((packed)) u;
|
||||
} __attribute__ ((packed)) action;
|
||||
} __attribute__ ((packed)) u;
|
||||
}__attribute__ ((packed));
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
struct ieee80211_mgmt {
|
||||
u16 frame_control;
|
||||
u16 duration;
|
||||
u8 da[6];
|
||||
u8 sa[6];
|
||||
u8 bssid[6];
|
||||
u16 seq_ctrl;
|
||||
union {
|
||||
struct {
|
||||
u16 auth_alg;
|
||||
u16 auth_transaction;
|
||||
u16 status_code;
|
||||
/* possibly followed by Challenge text */
|
||||
u8 variable[0];
|
||||
} auth;
|
||||
struct {
|
||||
u16 reason_code;
|
||||
} deauth;
|
||||
struct {
|
||||
u16 capab_info;
|
||||
u16 listen_interval;
|
||||
/* followed by SSID and Supported rates */
|
||||
u8 variable[0];
|
||||
} assoc_req;
|
||||
struct {
|
||||
u16 capab_info;
|
||||
u16 status_code;
|
||||
u16 aid;
|
||||
/* followed by Supported rates */
|
||||
u8 variable[0];
|
||||
} assoc_resp, reassoc_resp;
|
||||
struct {
|
||||
u16 capab_info;
|
||||
u16 listen_interval;
|
||||
u8 current_ap[6];
|
||||
/* followed by SSID and Supported rates */
|
||||
u8 variable[0];
|
||||
} reassoc_req;
|
||||
struct {
|
||||
u16 reason_code;
|
||||
} disassoc;
|
||||
#if 0
|
||||
struct {
|
||||
__le64 timestamp;
|
||||
u16 beacon_int;
|
||||
u16 capab_info;
|
||||
/* followed by some of SSID, Supported rates,
|
||||
* FH Params, DS Params, CF Params, IBSS Params, TIM */
|
||||
u8 variable[0];
|
||||
} beacon;
|
||||
struct {
|
||||
/* only variable items: SSID, Supported rates */
|
||||
u8 variable[0];
|
||||
} probe_req;
|
||||
|
||||
struct {
|
||||
__le64 timestamp;
|
||||
u16 beacon_int;
|
||||
u16 capab_info;
|
||||
/* followed by some of SSID, Supported rates,
|
||||
* FH Params, DS Params, CF Params, IBSS Params */
|
||||
u8 variable[0];
|
||||
} probe_resp;
|
||||
#endif
|
||||
struct {
|
||||
u8 category;
|
||||
union {
|
||||
struct {
|
||||
u8 action_code;
|
||||
u8 dialog_token;
|
||||
u8 status_code;
|
||||
u8 variable[0];
|
||||
} wme_action;
|
||||
/*
|
||||
struct{
|
||||
u8 action_code;
|
||||
u8 element_id;
|
||||
u8 length;
|
||||
struct ieee80211_channel_sw_ie sw_elem;
|
||||
} chan_switch;
|
||||
struct{
|
||||
u8 action_code;
|
||||
u8 dialog_token;
|
||||
u8 element_id;
|
||||
u8 length;
|
||||
struct ieee80211_msrment_ie msr_elem;
|
||||
} measurement;
|
||||
*/
|
||||
struct{
|
||||
u8 action_code;
|
||||
u8 dialog_token;
|
||||
u16 capab;
|
||||
u16 timeout;
|
||||
u16 start_seq_num;
|
||||
} addba_req;
|
||||
struct{
|
||||
u8 action_code;
|
||||
u8 dialog_token;
|
||||
u16 status;
|
||||
u16 capab;
|
||||
u16 timeout;
|
||||
} addba_resp;
|
||||
struct{
|
||||
u8 action_code;
|
||||
u16 params;
|
||||
u16 reason_code;
|
||||
} delba;
|
||||
struct{
|
||||
u8 action_code;
|
||||
/* capab_info for open and confirm,
|
||||
* reason for close
|
||||
*/
|
||||
u16 aux;
|
||||
/* Followed in plink_confirm by status
|
||||
* code, AID and supported rates,
|
||||
* and directly by supported rates in
|
||||
* plink_open and plink_close
|
||||
*/
|
||||
u8 variable[0];
|
||||
} plink_action;
|
||||
struct{
|
||||
u8 action_code;
|
||||
u8 variable[0];
|
||||
} mesh_action;
|
||||
} u;
|
||||
} action;
|
||||
} u;
|
||||
} ;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
||||
|
||||
/* mgmt header + 1 byte category code */
|
||||
#define IEEE80211_MIN_ACTION_SIZE FIELD_OFFSET(struct ieee80211_mgmt, u.action.u)
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
113
include/if_ether.h
Normal file
113
include/if_ether.h
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef _LINUX_IF_ETHER_H
|
||||
#define _LINUX_IF_ETHER_H
|
||||
|
||||
/*
|
||||
* IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble
|
||||
* and FCS/CRC (frame check sequence).
|
||||
*/
|
||||
|
||||
#define ETH_ALEN 6 /* Octets in one ethernet addr */
|
||||
#define ETH_HLEN 14 /* Total octets in header. */
|
||||
#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */
|
||||
#define ETH_DATA_LEN 1500 /* Max. octets in payload */
|
||||
#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */
|
||||
|
||||
/*
|
||||
* These are the defined Ethernet Protocol ID's.
|
||||
*/
|
||||
|
||||
#define ETH_P_LOOP 0x0060 /* Ethernet Loopback packet */
|
||||
#define ETH_P_PUP 0x0200 /* Xerox PUP packet */
|
||||
#define ETH_P_PUPAT 0x0201 /* Xerox PUP Addr Trans packet */
|
||||
#define ETH_P_IP 0x0800 /* Internet Protocol packet */
|
||||
#define ETH_P_X25 0x0805 /* CCITT X.25 */
|
||||
#define ETH_P_ARP 0x0806 /* Address Resolution packet */
|
||||
#define ETH_P_BPQ 0x08FF /* G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] */
|
||||
#define ETH_P_IEEEPUP 0x0a00 /* Xerox IEEE802.3 PUP packet */
|
||||
#define ETH_P_IEEEPUPAT 0x0a01 /* Xerox IEEE802.3 PUP Addr Trans packet */
|
||||
#define ETH_P_DEC 0x6000 /* DEC Assigned proto */
|
||||
#define ETH_P_DNA_DL 0x6001 /* DEC DNA Dump/Load */
|
||||
#define ETH_P_DNA_RC 0x6002 /* DEC DNA Remote Console */
|
||||
#define ETH_P_DNA_RT 0x6003 /* DEC DNA Routing */
|
||||
#define ETH_P_LAT 0x6004 /* DEC LAT */
|
||||
#define ETH_P_DIAG 0x6005 /* DEC Diagnostics */
|
||||
#define ETH_P_CUST 0x6006 /* DEC Customer use */
|
||||
#define ETH_P_SCA 0x6007 /* DEC Systems Comms Arch */
|
||||
#define ETH_P_RARP 0x8035 /* Reverse Addr Res packet */
|
||||
#define ETH_P_ATALK 0x809B /* Appletalk DDP */
|
||||
#define ETH_P_AARP 0x80F3 /* Appletalk AARP */
|
||||
#define ETH_P_8021Q 0x8100 /* 802.1Q VLAN Extended Header */
|
||||
#define ETH_P_IPX 0x8137 /* IPX over DIX */
|
||||
#define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */
|
||||
#define ETH_P_PPP_DISC 0x8863 /* PPPoE discovery messages */
|
||||
#define ETH_P_PPP_SES 0x8864 /* PPPoE session messages */
|
||||
#define ETH_P_ATMMPOA 0x884c /* MultiProtocol Over ATM */
|
||||
#define ETH_P_ATMFATE 0x8884 /* Frame-based ATM Transport
|
||||
* over Ethernet
|
||||
*/
|
||||
|
||||
/*
|
||||
* Non DIX types. Won't clash for 1500 types.
|
||||
*/
|
||||
|
||||
#define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */
|
||||
#define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */
|
||||
#define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */
|
||||
#define ETH_P_802_2 0x0004 /* 802.2 frames */
|
||||
#define ETH_P_SNAP 0x0005 /* Internal only */
|
||||
#define ETH_P_DDCMP 0x0006 /* DEC DDCMP: Internal only */
|
||||
#define ETH_P_WAN_PPP 0x0007 /* Dummy type for WAN PPP frames*/
|
||||
#define ETH_P_PPP_MP 0x0008 /* Dummy type for PPP MP frames */
|
||||
#define ETH_P_LOCALTALK 0x0009 /* Localtalk pseudo type */
|
||||
#define ETH_P_PPPTALK 0x0010 /* Dummy type for Atalk over PPP*/
|
||||
#define ETH_P_TR_802_2 0x0011 /* 802.2 frames */
|
||||
#define ETH_P_MOBITEX 0x0015 /* Mobitex (kaz@cafe.net) */
|
||||
#define ETH_P_CONTROL 0x0016 /* Card specific control frames */
|
||||
#define ETH_P_IRDA 0x0017 /* Linux-IrDA */
|
||||
#define ETH_P_ECONET 0x0018 /* Acorn Econet */
|
||||
|
||||
/*
|
||||
* This is an Ethernet frame header.
|
||||
*/
|
||||
|
||||
struct ethhdr
|
||||
{
|
||||
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
|
||||
unsigned char h_source[ETH_ALEN]; /* source ether addr */
|
||||
unsigned short h_proto; /* packet type ID field */
|
||||
};
|
||||
|
||||
struct _vlan {
|
||||
unsigned short h_vlan_TCI; // Encapsulates priority and VLAN ID
|
||||
unsigned short h_vlan_encapsulated_proto;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#define get_vlan_id(pvlan) ((ntohs((unsigned short )pvlan->h_vlan_TCI)) & 0xfff)
|
||||
#define get_vlan_priority(pvlan) ((ntohs((unsigned short )pvlan->h_vlan_TCI))>>13)
|
||||
#define get_vlan_encap_proto(pvlan) (ntohs((unsigned short )pvlan->h_vlan_encapsulated_proto))
|
||||
|
||||
|
||||
#endif /* _LINUX_IF_ETHER_H */
|
||||
|
||||
141
include/ip.h
Normal file
141
include/ip.h
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _LINUX_IP_H
|
||||
#define _LINUX_IP_H
|
||||
|
||||
/* SOL_IP socket options */
|
||||
|
||||
#define IPTOS_TOS_MASK 0x1E
|
||||
#define IPTOS_TOS(tos) ((tos)&IPTOS_TOS_MASK)
|
||||
#define IPTOS_LOWDELAY 0x10
|
||||
#define IPTOS_THROUGHPUT 0x08
|
||||
#define IPTOS_RELIABILITY 0x04
|
||||
#define IPTOS_MINCOST 0x02
|
||||
|
||||
#define IPTOS_PREC_MASK 0xE0
|
||||
#define IPTOS_PREC(tos) ((tos)&IPTOS_PREC_MASK)
|
||||
#define IPTOS_PREC_NETCONTROL 0xe0
|
||||
#define IPTOS_PREC_INTERNETCONTROL 0xc0
|
||||
#define IPTOS_PREC_CRITIC_ECP 0xa0
|
||||
#define IPTOS_PREC_FLASHOVERRIDE 0x80
|
||||
#define IPTOS_PREC_FLASH 0x60
|
||||
#define IPTOS_PREC_IMMEDIATE 0x40
|
||||
#define IPTOS_PREC_PRIORITY 0x20
|
||||
#define IPTOS_PREC_ROUTINE 0x00
|
||||
|
||||
|
||||
/* IP options */
|
||||
#define IPOPT_COPY 0x80
|
||||
#define IPOPT_CLASS_MASK 0x60
|
||||
#define IPOPT_NUMBER_MASK 0x1f
|
||||
|
||||
#define IPOPT_COPIED(o) ((o)&IPOPT_COPY)
|
||||
#define IPOPT_CLASS(o) ((o)&IPOPT_CLASS_MASK)
|
||||
#define IPOPT_NUMBER(o) ((o)&IPOPT_NUMBER_MASK)
|
||||
|
||||
#define IPOPT_CONTROL 0x00
|
||||
#define IPOPT_RESERVED1 0x20
|
||||
#define IPOPT_MEASUREMENT 0x40
|
||||
#define IPOPT_RESERVED2 0x60
|
||||
|
||||
#define IPOPT_END (0 |IPOPT_CONTROL)
|
||||
#define IPOPT_NOOP (1 |IPOPT_CONTROL)
|
||||
#define IPOPT_SEC (2 |IPOPT_CONTROL|IPOPT_COPY)
|
||||
#define IPOPT_LSRR (3 |IPOPT_CONTROL|IPOPT_COPY)
|
||||
#define IPOPT_TIMESTAMP (4 |IPOPT_MEASUREMENT)
|
||||
#define IPOPT_RR (7 |IPOPT_CONTROL)
|
||||
#define IPOPT_SID (8 |IPOPT_CONTROL|IPOPT_COPY)
|
||||
#define IPOPT_SSRR (9 |IPOPT_CONTROL|IPOPT_COPY)
|
||||
#define IPOPT_RA (20|IPOPT_CONTROL|IPOPT_COPY)
|
||||
|
||||
#define IPVERSION 4
|
||||
#define MAXTTL 255
|
||||
#define IPDEFTTL 64
|
||||
|
||||
/* struct timestamp, struct route and MAX_ROUTES are removed.
|
||||
|
||||
REASONS: it is clear that nobody used them because:
|
||||
- MAX_ROUTES value was wrong.
|
||||
- "struct route" was wrong.
|
||||
- "struct timestamp" had fatally misaligned bitfields and was completely unusable.
|
||||
*/
|
||||
|
||||
#define IPOPT_OPTVAL 0
|
||||
#define IPOPT_OLEN 1
|
||||
#define IPOPT_OFFSET 2
|
||||
#define IPOPT_MINOFF 4
|
||||
#define MAX_IPOPTLEN 40
|
||||
#define IPOPT_NOP IPOPT_NOOP
|
||||
#define IPOPT_EOL IPOPT_END
|
||||
#define IPOPT_TS IPOPT_TIMESTAMP
|
||||
|
||||
#define IPOPT_TS_TSONLY 0 /* timestamps only */
|
||||
#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */
|
||||
#define IPOPT_TS_PRESPEC 3 /* specified modules only */
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
|
||||
struct ip_options {
|
||||
__u32 faddr; /* Saved first hop address */
|
||||
unsigned char optlen;
|
||||
unsigned char srr;
|
||||
unsigned char rr;
|
||||
unsigned char ts;
|
||||
unsigned char is_setbyuser:1, /* Set by setsockopt? */
|
||||
is_data:1, /* Options in __data, rather than skb */
|
||||
is_strictroute:1, /* Strict source route */
|
||||
srr_is_hit:1, /* Packet destination addr was our one */
|
||||
is_changed:1, /* IP checksum more not valid */
|
||||
rr_needaddr:1, /* Need to record addr of outgoing dev */
|
||||
ts_needtime:1, /* Need to record timestamp */
|
||||
ts_needaddr:1; /* Need to record addr of outgoing dev */
|
||||
unsigned char router_alert;
|
||||
unsigned char __pad1;
|
||||
unsigned char __pad2;
|
||||
unsigned char __data[0];
|
||||
};
|
||||
|
||||
#define optlength(opt) (sizeof(struct ip_options) + opt->optlen)
|
||||
#endif
|
||||
|
||||
struct iphdr {
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 ihl:4,
|
||||
version:4;
|
||||
#elif defined (__BIG_ENDIAN_BITFIELD)
|
||||
__u8 version:4,
|
||||
ihl:4;
|
||||
#else
|
||||
#error "Please fix <asm/byteorder.h>"
|
||||
#endif
|
||||
__u8 tos;
|
||||
__u16 tot_len;
|
||||
__u16 id;
|
||||
__u16 frag_off;
|
||||
__u8 ttl;
|
||||
__u8 protocol;
|
||||
__u16 check;
|
||||
__u32 saddr;
|
||||
__u32 daddr;
|
||||
/*The options start here. */
|
||||
};
|
||||
|
||||
#endif /* _LINUX_IP_H */
|
||||
|
||||
97
include/linux/wireless.h
Normal file
97
include/linux/wireless.h
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef _LINUX_WIRELESS_H
|
||||
#define _LINUX_WIRELESS_H
|
||||
|
||||
/***************************** INCLUDES *****************************/
|
||||
|
||||
#if 0
|
||||
#include <linux/types.h> /* for __u* and __s* typedefs */
|
||||
#include <linux/socket.h> /* for "struct sockaddr" et al */
|
||||
#include <linux/if.h> /* for IFNAMSIZ and co... */
|
||||
#else
|
||||
#define __user
|
||||
//typedef uint16_t __u16;
|
||||
#include <sys/socket.h> /* for "struct sockaddr" et al */
|
||||
#include <net/if.h> /* for IFNAMSIZ and co... */
|
||||
#endif
|
||||
|
||||
/****************************** TYPES ******************************/
|
||||
#ifdef CONFIG_COMPAT
|
||||
struct compat_iw_point {
|
||||
compat_caddr_t pointer;
|
||||
__u16 length;
|
||||
__u16 flags;
|
||||
};
|
||||
#endif
|
||||
/* --------------------------- SUBTYPES --------------------------- */
|
||||
/*
|
||||
* For all data larger than 16 octets, we need to use a
|
||||
* pointer to memory allocated in user space.
|
||||
*/
|
||||
struct iw_point
|
||||
{
|
||||
void __user *pointer; /* Pointer to the data (in user space) */
|
||||
__u16 length; /* number of fields or size in bytes */
|
||||
__u16 flags; /* Optional params */
|
||||
};
|
||||
|
||||
|
||||
/* ------------------------ IOCTL REQUEST ------------------------ */
|
||||
/*
|
||||
* This structure defines the payload of an ioctl, and is used
|
||||
* below.
|
||||
*
|
||||
* Note that this structure should fit on the memory footprint
|
||||
* of iwreq (which is the same as ifreq), which mean a max size of
|
||||
* 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
|
||||
* You should check this when increasing the structures defined
|
||||
* above in this file...
|
||||
*/
|
||||
union iwreq_data
|
||||
{
|
||||
/* Config - generic */
|
||||
char name[IFNAMSIZ];
|
||||
/* Name : used to verify the presence of wireless extensions.
|
||||
* Name of the protocol/provider... */
|
||||
|
||||
struct iw_point data; /* Other large parameters */
|
||||
};
|
||||
|
||||
/*
|
||||
* The structure to exchange data for ioctl.
|
||||
* This structure is the same as 'struct ifreq', but (re)defined for
|
||||
* convenience...
|
||||
* Do I need to remind you about structure size (32 octets) ?
|
||||
*/
|
||||
struct iwreq
|
||||
{
|
||||
union
|
||||
{
|
||||
char ifrn_name[IFNAMSIZ]; /* if name, e.g. "eth0" */
|
||||
} ifr_ifrn;
|
||||
|
||||
/* Data part (defined just above) */
|
||||
union iwreq_data u;
|
||||
};
|
||||
|
||||
#endif /* _LINUX_WIRELESS_H */
|
||||
|
||||
37
include/mlme_osdep.h
Normal file
37
include/mlme_osdep.h
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __MLME_OSDEP_H_
|
||||
#define __MLME_OSDEP_H_
|
||||
|
||||
|
||||
#if defined(PLATFORM_WINDOWS) || defined(PLATFORM_MPIXEL)
|
||||
extern int time_after(u32 now, u32 old);
|
||||
#endif
|
||||
|
||||
extern void rtw_init_mlme_timer(_adapter *padapter);
|
||||
extern void rtw_os_indicate_disconnect( _adapter *adapter );
|
||||
extern void rtw_os_indicate_connect( _adapter *adapter );
|
||||
void rtw_os_indicate_scan_done( _adapter *padapter, bool aborted);
|
||||
extern void rtw_report_sec_ie(_adapter *adapter,u8 authmode,u8 *sec_ie);
|
||||
|
||||
void rtw_reset_securitypriv( _adapter *adapter );
|
||||
|
||||
#endif //_MLME_OSDEP_H_
|
||||
|
||||
354
include/mp_custom_oid.h
Normal file
354
include/mp_custom_oid.h
Normal file
|
|
@ -0,0 +1,354 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __CUSTOM_OID_H
|
||||
#define __CUSTOM_OID_H
|
||||
|
||||
// by Owen
|
||||
// 0xFF818000 - 0xFF81802F RTL8180 Mass Production Kit
|
||||
// 0xFF818500 - 0xFF81850F RTL8185 Setup Utility
|
||||
// 0xFF818580 - 0xFF81858F RTL8185 Phy Status Utility
|
||||
|
||||
//
|
||||
|
||||
// by Owen for Production Kit
|
||||
// For Production Kit with Agilent Equipments
|
||||
// in order to make our custom oids hopefully somewhat unique
|
||||
// we will use 0xFF (indicating implementation specific OID)
|
||||
// 81(first byte of non zero Realtek unique identifier)
|
||||
// 80 (second byte of non zero Realtek unique identifier)
|
||||
// XX (the custom OID number - providing 255 possible custom oids)
|
||||
|
||||
#define OID_RT_PRO_RESET_DUT 0xFF818000
|
||||
#define OID_RT_PRO_SET_DATA_RATE 0xFF818001
|
||||
#define OID_RT_PRO_START_TEST 0xFF818002
|
||||
#define OID_RT_PRO_STOP_TEST 0xFF818003
|
||||
#define OID_RT_PRO_SET_PREAMBLE 0xFF818004
|
||||
#define OID_RT_PRO_SET_SCRAMBLER 0xFF818005
|
||||
#define OID_RT_PRO_SET_FILTER_BB 0xFF818006
|
||||
#define OID_RT_PRO_SET_MANUAL_DIVERSITY_BB 0xFF818007
|
||||
#define OID_RT_PRO_SET_CHANNEL_DIRECT_CALL 0xFF818008
|
||||
#define OID_RT_PRO_SET_SLEEP_MODE_DIRECT_CALL 0xFF818009
|
||||
#define OID_RT_PRO_SET_WAKE_MODE_DIRECT_CALL 0xFF81800A
|
||||
|
||||
#define OID_RT_PRO_SET_TX_ANTENNA_BB 0xFF81800D
|
||||
#define OID_RT_PRO_SET_ANTENNA_BB 0xFF81800E
|
||||
#define OID_RT_PRO_SET_CR_SCRAMBLER 0xFF81800F
|
||||
#define OID_RT_PRO_SET_CR_NEW_FILTER 0xFF818010
|
||||
#define OID_RT_PRO_SET_TX_POWER_CONTROL 0xFF818011
|
||||
#define OID_RT_PRO_SET_CR_TX_CONFIG 0xFF818012
|
||||
#define OID_RT_PRO_GET_TX_POWER_CONTROL 0xFF818013
|
||||
#define OID_RT_PRO_GET_CR_SIGNAL_QUALITY 0xFF818014
|
||||
#define OID_RT_PRO_SET_CR_SETPOINT 0xFF818015
|
||||
#define OID_RT_PRO_SET_INTEGRATOR 0xFF818016
|
||||
#define OID_RT_PRO_SET_SIGNAL_QUALITY 0xFF818017
|
||||
#define OID_RT_PRO_GET_INTEGRATOR 0xFF818018
|
||||
#define OID_RT_PRO_GET_SIGNAL_QUALITY 0xFF818019
|
||||
#define OID_RT_PRO_QUERY_EEPROM_TYPE 0xFF81801A
|
||||
#define OID_RT_PRO_WRITE_MAC_ADDRESS 0xFF81801B
|
||||
#define OID_RT_PRO_READ_MAC_ADDRESS 0xFF81801C
|
||||
#define OID_RT_PRO_WRITE_CIS_DATA 0xFF81801D
|
||||
#define OID_RT_PRO_READ_CIS_DATA 0xFF81801E
|
||||
#define OID_RT_PRO_WRITE_POWER_CONTROL 0xFF81801F
|
||||
#define OID_RT_PRO_READ_POWER_CONTROL 0xFF818020
|
||||
#define OID_RT_PRO_WRITE_EEPROM 0xFF818021
|
||||
#define OID_RT_PRO_READ_EEPROM 0xFF818022
|
||||
#define OID_RT_PRO_RESET_TX_PACKET_SENT 0xFF818023
|
||||
#define OID_RT_PRO_QUERY_TX_PACKET_SENT 0xFF818024
|
||||
#define OID_RT_PRO_RESET_RX_PACKET_RECEIVED 0xFF818025
|
||||
#define OID_RT_PRO_QUERY_RX_PACKET_RECEIVED 0xFF818026
|
||||
#define OID_RT_PRO_QUERY_RX_PACKET_CRC32_ERROR 0xFF818027
|
||||
#define OID_RT_PRO_QUERY_CURRENT_ADDRESS 0xFF818028
|
||||
#define OID_RT_PRO_QUERY_PERMANENT_ADDRESS 0xFF818029
|
||||
#define OID_RT_PRO_SET_PHILIPS_RF_PARAMETERS 0xFF81802A
|
||||
#define OID_RT_PRO_RECEIVE_PACKET 0xFF81802C
|
||||
// added by Owen on 04/08/03 for Cameo's request
|
||||
#define OID_RT_PRO_WRITE_EEPROM_BYTE 0xFF81802D
|
||||
#define OID_RT_PRO_READ_EEPROM_BYTE 0xFF81802E
|
||||
#define OID_RT_PRO_SET_MODULATION 0xFF81802F
|
||||
//
|
||||
|
||||
//Sean
|
||||
#define OID_RT_DRIVER_OPTION 0xFF818080
|
||||
#define OID_RT_RF_OFF 0xFF818081
|
||||
#define OID_RT_AUTH_STATUS 0xFF818082
|
||||
|
||||
//========================================================================
|
||||
#define OID_RT_PRO_SET_CONTINUOUS_TX 0xFF81800B
|
||||
#define OID_RT_PRO_SET_SINGLE_CARRIER_TX 0xFF81800C
|
||||
#define OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX 0xFF81802B
|
||||
#define OID_RT_PRO_SET_SINGLE_TONE_TX 0xFF818043
|
||||
//========================================================================
|
||||
|
||||
|
||||
// by Owen for RTL8185 Phy Status Report Utility
|
||||
#define OID_RT_UTILITY_FALSE_ALARM_COUNTERS 0xFF818580
|
||||
#define OID_RT_UTILITY_SELECT_DEBUG_MODE 0xFF818581
|
||||
#define OID_RT_UTILITY_SELECT_SUBCARRIER_NUMBER 0xFF818582
|
||||
#define OID_RT_UTILITY_GET_RSSI_STATUS 0xFF818583
|
||||
#define OID_RT_UTILITY_GET_FRAME_DETECTION_STATUS 0xFF818584
|
||||
#define OID_RT_UTILITY_GET_AGC_AND_FREQUENCY_OFFSET_ESTIMATION_STATUS 0xFF818585
|
||||
#define OID_RT_UTILITY_GET_CHANNEL_ESTIMATION_STATUS 0xFF818586
|
||||
//
|
||||
|
||||
// by Owen on 03/09/19-03/09/22 for RTL8185
|
||||
#define OID_RT_WIRELESS_MODE 0xFF818500
|
||||
#define OID_RT_SUPPORTED_RATES 0xFF818501
|
||||
#define OID_RT_DESIRED_RATES 0xFF818502
|
||||
#define OID_RT_WIRELESS_MODE_STARTING_ADHOC 0xFF818503
|
||||
//
|
||||
|
||||
#define OID_RT_GET_CONNECT_STATE 0xFF030001
|
||||
#define OID_RT_RESCAN 0xFF030002
|
||||
#define OID_RT_SET_KEY_LENGTH 0xFF030003
|
||||
#define OID_RT_SET_DEFAULT_KEY_ID 0xFF030004
|
||||
|
||||
#define OID_RT_SET_CHANNEL 0xFF010182
|
||||
#define OID_RT_SET_SNIFFER_MODE 0xFF010183
|
||||
#define OID_RT_GET_SIGNAL_QUALITY 0xFF010184
|
||||
#define OID_RT_GET_SMALL_PACKET_CRC 0xFF010185
|
||||
#define OID_RT_GET_MIDDLE_PACKET_CRC 0xFF010186
|
||||
#define OID_RT_GET_LARGE_PACKET_CRC 0xFF010187
|
||||
#define OID_RT_GET_TX_RETRY 0xFF010188
|
||||
#define OID_RT_GET_RX_RETRY 0xFF010189
|
||||
#define OID_RT_PRO_SET_FW_DIG_STATE 0xFF01018A//S
|
||||
#define OID_RT_PRO_SET_FW_RA_STATE 0xFF01018B//S
|
||||
|
||||
#define OID_RT_GET_RX_TOTAL_PACKET 0xFF010190
|
||||
#define OID_RT_GET_TX_BEACON_OK 0xFF010191
|
||||
#define OID_RT_GET_TX_BEACON_ERR 0xFF010192
|
||||
#define OID_RT_GET_RX_ICV_ERR 0xFF010193
|
||||
#define OID_RT_SET_ENCRYPTION_ALGORITHM 0xFF010194
|
||||
#define OID_RT_SET_NO_AUTO_RESCAN 0xFF010195
|
||||
#define OID_RT_GET_PREAMBLE_MODE 0xFF010196
|
||||
#define OID_RT_GET_DRIVER_UP_DELTA_TIME 0xFF010197
|
||||
#define OID_RT_GET_AP_IP 0xFF010198
|
||||
#define OID_RT_GET_CHANNELPLAN 0xFF010199
|
||||
#define OID_RT_SET_PREAMBLE_MODE 0xFF01019A
|
||||
#define OID_RT_SET_BCN_INTVL 0xFF01019B
|
||||
#define OID_RT_GET_RF_VENDER 0xFF01019C
|
||||
#define OID_RT_DEDICATE_PROBE 0xFF01019D
|
||||
#define OID_RT_PRO_RX_FILTER_PATTERN 0xFF01019E
|
||||
|
||||
#define OID_RT_GET_DCST_CURRENT_THRESHOLD 0xFF01019F
|
||||
|
||||
#define OID_RT_GET_CCA_ERR 0xFF0101A0
|
||||
#define OID_RT_GET_CCA_UPGRADE_THRESHOLD 0xFF0101A1
|
||||
#define OID_RT_GET_CCA_FALLBACK_THRESHOLD 0xFF0101A2
|
||||
|
||||
#define OID_RT_GET_CCA_UPGRADE_EVALUATE_TIMES 0xFF0101A3
|
||||
#define OID_RT_GET_CCA_FALLBACK_EVALUATE_TIMES 0xFF0101A4
|
||||
|
||||
// by Owen on 03/31/03 for Cameo's request
|
||||
#define OID_RT_SET_RATE_ADAPTIVE 0xFF0101A5
|
||||
//
|
||||
#define OID_RT_GET_DCST_EVALUATE_PERIOD 0xFF0101A5
|
||||
#define OID_RT_GET_DCST_TIME_UNIT_INDEX 0xFF0101A6
|
||||
#define OID_RT_GET_TOTAL_TX_BYTES 0xFF0101A7
|
||||
#define OID_RT_GET_TOTAL_RX_BYTES 0xFF0101A8
|
||||
#define OID_RT_CURRENT_TX_POWER_LEVEL 0xFF0101A9
|
||||
#define OID_RT_GET_ENC_KEY_MISMATCH_COUNT 0xFF0101AA
|
||||
#define OID_RT_GET_ENC_KEY_MATCH_COUNT 0xFF0101AB
|
||||
#define OID_RT_GET_CHANNEL 0xFF0101AC
|
||||
|
||||
#define OID_RT_SET_CHANNELPLAN 0xFF0101AD
|
||||
#define OID_RT_GET_HARDWARE_RADIO_OFF 0xFF0101AE
|
||||
#define OID_RT_CHANNELPLAN_BY_COUNTRY 0xFF0101AF
|
||||
#define OID_RT_SCAN_AVAILABLE_BSSID 0xFF0101B0
|
||||
#define OID_RT_GET_HARDWARE_VERSION 0xFF0101B1
|
||||
#define OID_RT_GET_IS_ROAMING 0xFF0101B2
|
||||
#define OID_RT_GET_IS_PRIVACY 0xFF0101B3
|
||||
#define OID_RT_GET_KEY_MISMATCH 0xFF0101B4
|
||||
#define OID_RT_SET_RSSI_ROAM_TRAFFIC_TH 0xFF0101B5
|
||||
#define OID_RT_SET_RSSI_ROAM_SIGNAL_TH 0xFF0101B6
|
||||
#define OID_RT_RESET_LOG 0xFF0101B7
|
||||
#define OID_RT_GET_LOG 0xFF0101B8
|
||||
#define OID_RT_SET_INDICATE_HIDDEN_AP 0xFF0101B9
|
||||
#define OID_RT_GET_HEADER_FAIL 0xFF0101BA
|
||||
#define OID_RT_SUPPORTED_WIRELESS_MODE 0xFF0101BB
|
||||
#define OID_RT_GET_CHANNEL_LIST 0xFF0101BC
|
||||
#define OID_RT_GET_SCAN_IN_PROGRESS 0xFF0101BD
|
||||
#define OID_RT_GET_TX_INFO 0xFF0101BE
|
||||
#define OID_RT_RF_READ_WRITE_OFFSET 0xFF0101BF
|
||||
#define OID_RT_RF_READ_WRITE 0xFF0101C0
|
||||
|
||||
// For Netgear request. 2005.01.13, by rcnjko.
|
||||
#define OID_RT_FORCED_DATA_RATE 0xFF0101C1
|
||||
#define OID_RT_WIRELESS_MODE_FOR_SCAN_LIST 0xFF0101C2
|
||||
// For Netgear request. 2005.02.17, by rcnjko.
|
||||
#define OID_RT_GET_BSS_WIRELESS_MODE 0xFF0101C3
|
||||
// For AZ project. 2005.06.27, by rcnjko.
|
||||
#define OID_RT_SCAN_WITH_MAGIC_PACKET 0xFF0101C4
|
||||
|
||||
// Vincent 8185MP
|
||||
#define OID_RT_PRO_RX_FILTER 0xFF0111C0
|
||||
|
||||
//Andy TEST
|
||||
//#define OID_RT_PRO_WRITE_REGISTRY 0xFF0111C1
|
||||
//#define OID_RT_PRO_READ_REGISTRY 0xFF0111C2
|
||||
#define OID_CE_USB_WRITE_REGISTRY 0xFF0111C1
|
||||
#define OID_CE_USB_READ_REGISTRY 0xFF0111C2
|
||||
|
||||
|
||||
#define OID_RT_PRO_SET_INITIAL_GAIN 0xFF0111C3
|
||||
#define OID_RT_PRO_SET_BB_RF_STANDBY_MODE 0xFF0111C4
|
||||
#define OID_RT_PRO_SET_BB_RF_SHUTDOWN_MODE 0xFF0111C5
|
||||
#define OID_RT_PRO_SET_TX_CHARGE_PUMP 0xFF0111C6
|
||||
#define OID_RT_PRO_SET_RX_CHARGE_PUMP 0xFF0111C7
|
||||
#define OID_RT_PRO_RF_WRITE_REGISTRY 0xFF0111C8
|
||||
#define OID_RT_PRO_RF_READ_REGISTRY 0xFF0111C9
|
||||
#define OID_RT_PRO_QUERY_RF_TYPE 0xFF0111CA
|
||||
|
||||
// AP OID
|
||||
#define OID_RT_AP_GET_ASSOCIATED_STATION_LIST 0xFF010300
|
||||
#define OID_RT_AP_GET_CURRENT_TIME_STAMP 0xFF010301
|
||||
#define OID_RT_AP_SWITCH_INTO_AP_MODE 0xFF010302
|
||||
#define OID_RT_AP_SET_DTIM_PERIOD 0xFF010303
|
||||
#define OID_RT_AP_SUPPORTED 0xFF010304 // Determine if driver supports AP mode. 2004.08.27, by rcnjko.
|
||||
#define OID_RT_AP_SET_PASSPHRASE 0xFF010305 // Set WPA-PSK passphrase into authenticator. 2005.07.08, byrcnjko.
|
||||
|
||||
// 8187MP. 2004.09.06, by rcnjko.
|
||||
#define OID_RT_PRO8187_WI_POLL 0xFF818780
|
||||
#define OID_RT_PRO_WRITE_BB_REG 0xFF818781
|
||||
#define OID_RT_PRO_READ_BB_REG 0xFF818782
|
||||
#define OID_RT_PRO_WRITE_RF_REG 0xFF818783
|
||||
#define OID_RT_PRO_READ_RF_REG 0xFF818784
|
||||
|
||||
// Meeting House. added by Annie, 2005-07-20.
|
||||
#define OID_RT_MH_VENDER_ID 0xFFEDC100
|
||||
|
||||
//8711 MP OID added 20051230.
|
||||
#define OID_RT_PRO8711_JOIN_BSS 0xFF871100//S
|
||||
|
||||
#define OID_RT_PRO_READ_REGISTER 0xFF871101 //Q
|
||||
#define OID_RT_PRO_WRITE_REGISTER 0xFF871102 //S
|
||||
|
||||
#define OID_RT_PRO_BURST_READ_REGISTER 0xFF871103 //Q
|
||||
#define OID_RT_PRO_BURST_WRITE_REGISTER 0xFF871104 //S
|
||||
|
||||
#define OID_RT_PRO_WRITE_TXCMD 0xFF871105 //S
|
||||
|
||||
#define OID_RT_PRO_READ16_EEPROM 0xFF871106 //Q
|
||||
#define OID_RT_PRO_WRITE16_EEPROM 0xFF871107 //S
|
||||
|
||||
#define OID_RT_PRO_H2C_SET_COMMAND 0xFF871108 //S
|
||||
#define OID_RT_PRO_H2C_QUERY_RESULT 0xFF871109 //Q
|
||||
|
||||
#define OID_RT_PRO8711_WI_POLL 0xFF87110A //Q
|
||||
#define OID_RT_PRO8711_PKT_LOSS 0xFF87110B //Q
|
||||
#define OID_RT_RD_ATTRIB_MEM 0xFF87110C//Q
|
||||
#define OID_RT_WR_ATTRIB_MEM 0xFF87110D//S
|
||||
|
||||
|
||||
//Method 2 for H2C/C2H
|
||||
#define OID_RT_PRO_H2C_CMD_MODE 0xFF871110 //S
|
||||
#define OID_RT_PRO_H2C_CMD_RSP_MODE 0xFF871111 //Q
|
||||
#define OID_RT_PRO_H2C_CMD_EVENT_MODE 0xFF871112 //S
|
||||
#define OID_RT_PRO_WAIT_C2H_EVENT 0xFF871113 //Q
|
||||
#define OID_RT_PRO_RW_ACCESS_PROTOCOL_TEST 0xFF871114//Q
|
||||
|
||||
#define OID_RT_PRO_SCSI_ACCESS_TEST 0xFF871115 //Q, S
|
||||
|
||||
#define OID_RT_PRO_SCSI_TCPIPOFFLOAD_OUT 0xFF871116 //S
|
||||
#define OID_RT_PRO_SCSI_TCPIPOFFLOAD_IN 0xFF871117 //Q,S
|
||||
#define OID_RT_RRO_RX_PKT_VIA_IOCTRL 0xFF871118 //Q
|
||||
#define OID_RT_RRO_RX_PKTARRAY_VIA_IOCTRL 0xFF871119 //Q
|
||||
|
||||
#define OID_RT_RPO_SET_PWRMGT_TEST 0xFF87111A //S
|
||||
#define OID_RT_PRO_QRY_PWRMGT_TEST 0XFF87111B //Q
|
||||
#define OID_RT_RPO_ASYNC_RWIO_TEST 0xFF87111C //S
|
||||
#define OID_RT_RPO_ASYNC_RWIO_POLL 0xFF87111D //Q
|
||||
#define OID_RT_PRO_SET_RF_INTFS 0xFF87111E //S
|
||||
#define OID_RT_POLL_RX_STATUS 0xFF87111F //Q
|
||||
|
||||
#define OID_RT_PRO_CFG_DEBUG_MESSAGE 0xFF871120 //Q,S
|
||||
#define OID_RT_PRO_SET_DATA_RATE_EX 0xFF871121//S
|
||||
#define OID_RT_PRO_SET_BASIC_RATE 0xFF871122//S
|
||||
#define OID_RT_PRO_READ_TSSI 0xFF871123//S
|
||||
#define OID_RT_PRO_SET_POWER_TRACKING 0xFF871124//S
|
||||
|
||||
|
||||
#define OID_RT_PRO_QRY_PWRSTATE 0xFF871150 //Q
|
||||
#define OID_RT_PRO_SET_PWRSTATE 0xFF871151 //S
|
||||
|
||||
//Method 2 , using workitem
|
||||
#define OID_RT_SET_READ_REG 0xFF871181 //S
|
||||
#define OID_RT_SET_WRITE_REG 0xFF871182 //S
|
||||
#define OID_RT_SET_BURST_READ_REG 0xFF871183 //S
|
||||
#define OID_RT_SET_BURST_WRITE_REG 0xFF871184 //S
|
||||
#define OID_RT_SET_WRITE_TXCMD 0xFF871185 //S
|
||||
#define OID_RT_SET_READ16_EEPROM 0xFF871186 //S
|
||||
#define OID_RT_SET_WRITE16_EEPROM 0xFF871187 //S
|
||||
#define OID_RT_QRY_POLL_WKITEM 0xFF871188 //Q
|
||||
|
||||
//For SDIO INTERFACE only
|
||||
#define OID_RT_PRO_SYNCPAGERW_SRAM 0xFF8711A0 //Q, S
|
||||
#define OID_RT_PRO_871X_DRV_EXT 0xFF8711A1
|
||||
|
||||
//For USB INTERFACE only
|
||||
#define OID_RT_PRO_USB_VENDOR_REQ 0xFF8711B0 //Q, S
|
||||
#define OID_RT_PRO_SCSI_AUTO_TEST 0xFF8711B1 //S
|
||||
#define OID_RT_PRO_USB_MAC_AC_FIFO_WRITE 0xFF8711B2 //S
|
||||
#define OID_RT_PRO_USB_MAC_RX_FIFO_READ 0xFF8711B3 //Q
|
||||
#define OID_RT_PRO_USB_MAC_RX_FIFO_POLLING 0xFF8711B4 //Q
|
||||
|
||||
#define OID_RT_PRO_H2C_SET_RATE_TABLE 0xFF8711FB //S
|
||||
#define OID_RT_PRO_H2C_GET_RATE_TABLE 0xFF8711FC //S
|
||||
#define OID_RT_PRO_H2C_C2H_LBK_TEST 0xFF8711FE
|
||||
|
||||
#define OID_RT_PRO_ENCRYPTION_CTRL 0xFF871200 //Q, S
|
||||
#define OID_RT_PRO_ADD_STA_INFO 0xFF871201 //S
|
||||
#define OID_RT_PRO_DELE_STA_INFO 0xFF871202 //S
|
||||
#define OID_RT_PRO_QUERY_DR_VARIABLE 0xFF871203 //Q
|
||||
|
||||
#define OID_RT_PRO_RX_PACKET_TYPE 0xFF871204 //Q, S
|
||||
|
||||
#define OID_RT_PRO_READ_EFUSE 0xFF871205 //Q
|
||||
#define OID_RT_PRO_WRITE_EFUSE 0xFF871206 //S
|
||||
#define OID_RT_PRO_RW_EFUSE_PGPKT 0xFF871207 //Q, S
|
||||
#define OID_RT_GET_EFUSE_CURRENT_SIZE 0xFF871208 //Q
|
||||
|
||||
#define OID_RT_SET_BANDWIDTH 0xFF871209 //S
|
||||
#define OID_RT_SET_CRYSTAL_CAP 0xFF87120A //S
|
||||
|
||||
#define OID_RT_SET_RX_PACKET_TYPE 0xFF87120B //S
|
||||
|
||||
#define OID_RT_GET_EFUSE_MAX_SIZE 0xFF87120C //Q
|
||||
|
||||
#define OID_RT_PRO_SET_TX_AGC_OFFSET 0xFF87120D //S
|
||||
|
||||
#define OID_RT_PRO_SET_PKT_TEST_MODE 0xFF87120E //S
|
||||
|
||||
#define OID_RT_PRO_FOR_EVM_TEST_SETTING 0xFF87120F //S
|
||||
|
||||
#define OID_RT_PRO_GET_THERMAL_METER 0xFF871210 //Q
|
||||
|
||||
#define OID_RT_RESET_PHY_RX_PACKET_COUNT 0xFF871211 //S
|
||||
#define OID_RT_GET_PHY_RX_PACKET_RECEIVED 0xFF871212 //Q
|
||||
#define OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR 0xFF871213 //Q
|
||||
|
||||
#define OID_RT_SET_POWER_DOWN 0xFF871214 //S
|
||||
|
||||
#define OID_RT_GET_POWER_MODE 0xFF871215 //Q
|
||||
|
||||
#define OID_RT_PRO_EFUSE 0xFF871216 //Q, S
|
||||
#define OID_RT_PRO_EFUSE_MAP 0xFF871217 //Q, S
|
||||
|
||||
#endif //#ifndef __CUSTOM_OID_H
|
||||
|
||||
47
include/nic_spec.h
Normal file
47
include/nic_spec.h
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef __NIC_SPEC_H__
|
||||
#define __NIC_SPEC_H__
|
||||
|
||||
#include <drv_conf.h>
|
||||
|
||||
#define RTL8711_MCTRL_ (0x20000)
|
||||
#define RTL8711_UART_ (0x30000)
|
||||
#define RTL8711_TIMER_ (0x40000)
|
||||
#define RTL8711_FINT_ (0x50000)
|
||||
#define RTL8711_HINT_ (0x50000)
|
||||
#define RTL8711_GPIO_ (0x60000)
|
||||
#define RTL8711_WLANCTRL_ (0x200000)
|
||||
#define RTL8711_WLANFF_ (0xe00000)
|
||||
#define RTL8711_HCICTRL_ (0x600000)
|
||||
#define RTL8711_SYSCFG_ (0x620000)
|
||||
#define RTL8711_SYSCTRL_ (0x620000)
|
||||
#define RTL8711_MCCTRL_ (0x020000)
|
||||
|
||||
|
||||
#include <rtl8711_regdef.h>
|
||||
|
||||
#include <rtl8711_bitdef.h>
|
||||
|
||||
|
||||
#endif // __RTL8711_SPEC_H__
|
||||
|
||||
173
include/osdep_intf.h
Normal file
173
include/osdep_intf.h
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __OSDEP_INTF_H_
|
||||
#define __OSDEP_INTF_H_
|
||||
|
||||
|
||||
struct intf_priv {
|
||||
|
||||
u8 *intf_dev;
|
||||
u32 max_iosz; //USB2.0: 128, USB1.1: 64, SDIO:64
|
||||
u32 max_xmitsz; //USB2.0: unlimited, SDIO:512
|
||||
u32 max_recvsz; //USB2.0: unlimited, SDIO:512
|
||||
|
||||
volatile u8 *io_rwmem;
|
||||
volatile u8 *allocated_io_rwmem;
|
||||
u32 io_wsz; //unit: 4bytes
|
||||
u32 io_rsz;//unit: 4bytes
|
||||
u8 intf_status;
|
||||
|
||||
void (*_bus_io)(u8 *priv);
|
||||
|
||||
/*
|
||||
Under Sync. IRP (SDIO/USB)
|
||||
A protection mechanism is necessary for the io_rwmem(read/write protocol)
|
||||
|
||||
Under Async. IRP (SDIO/USB)
|
||||
The protection mechanism is through the pending queue.
|
||||
*/
|
||||
|
||||
_mutex ioctl_mutex;
|
||||
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
#ifdef CONFIG_USB_HCI
|
||||
// when in USB, IO is through interrupt in/out endpoints
|
||||
struct usb_device *udev;
|
||||
PURB piorw_urb;
|
||||
u8 io_irp_cnt;
|
||||
u8 bio_irp_pending;
|
||||
_sema io_retevt;
|
||||
_timer io_timer;
|
||||
u8 bio_irp_timeout;
|
||||
u8 bio_timer_cancel;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_OS_XP
|
||||
#ifdef CONFIG_SDIO_HCI
|
||||
// below is for io_rwmem...
|
||||
PMDL pmdl;
|
||||
PSDBUS_REQUEST_PACKET sdrp;
|
||||
PSDBUS_REQUEST_PACKET recv_sdrp;
|
||||
PSDBUS_REQUEST_PACKET xmit_sdrp;
|
||||
|
||||
PIRP piorw_irp;
|
||||
|
||||
#endif
|
||||
#ifdef CONFIG_USB_HCI
|
||||
PURB piorw_urb;
|
||||
PIRP piorw_irp;
|
||||
u8 io_irp_cnt;
|
||||
u8 bio_irp_pending;
|
||||
_sema io_retevt;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
#ifdef CONFIG_R871X_TEST
|
||||
int rtw_start_pseudo_adhoc(_adapter *padapter);
|
||||
int rtw_stop_pseudo_adhoc(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
struct dvobj_priv *devobj_init(void);
|
||||
void devobj_deinit(struct dvobj_priv *pdvobj);
|
||||
|
||||
u8 rtw_init_drv_sw(_adapter *padapter);
|
||||
u8 rtw_free_drv_sw(_adapter *padapter);
|
||||
u8 rtw_reset_drv_sw(_adapter *padapter);
|
||||
void rtw_dev_unload(PADAPTER padapter);
|
||||
|
||||
u32 rtw_start_drv_threads(_adapter *padapter);
|
||||
void rtw_stop_drv_threads (_adapter *padapter);
|
||||
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
|
||||
void rtw_cancel_dynamic_chk_timer(_adapter *padapter);
|
||||
#endif
|
||||
void rtw_cancel_all_timer(_adapter *padapter);
|
||||
|
||||
uint loadparam(_adapter *adapter);
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
int rtw_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
|
||||
|
||||
int rtw_init_netdev_name(struct net_device *pnetdev, const char *ifname);
|
||||
struct net_device *rtw_init_netdev(_adapter *padapter);
|
||||
|
||||
void rtw_os_ndev_free(_adapter *adapter);
|
||||
int rtw_os_ndev_init(_adapter *adapter, char *name);
|
||||
void rtw_os_ndev_deinit(_adapter *adapter);
|
||||
void rtw_os_ndevs_unregister(struct dvobj_priv *dvobj);
|
||||
int rtw_os_ndevs_init(struct dvobj_priv *dvobj);
|
||||
void rtw_os_ndevs_deinit(struct dvobj_priv *dvobj);
|
||||
|
||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35))
|
||||
u16 rtw_recv_select_queue(struct sk_buff *skb);
|
||||
#endif //LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)
|
||||
|
||||
int rtw_ndev_notifier_register(void);
|
||||
void rtw_ndev_notifier_unregister(void);
|
||||
|
||||
#include "../os_dep/linux/rtw_proc.h"
|
||||
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
#include "../os_dep/linux/ioctl_cfg80211.h"
|
||||
#endif //CONFIG_IOCTL_CFG80211
|
||||
|
||||
#endif //PLATFORM_LINUX
|
||||
|
||||
|
||||
#ifdef PLATFORM_FREEBSD
|
||||
extern int rtw_ioctl(struct ifnet * ifp, u_long cmd, caddr_t data);
|
||||
#endif
|
||||
|
||||
void rtw_ips_dev_unload(_adapter *padapter);
|
||||
|
||||
#ifdef CONFIG_IPS
|
||||
int rtw_ips_pwr_up(_adapter *padapter);
|
||||
void rtw_ips_pwr_down(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
struct _io_ops;
|
||||
_adapter *rtw_drv_if2_init(_adapter *primary_padapter, void (*set_intf_ops)(_adapter *primary_padapter,struct _io_ops *pops));
|
||||
void rtw_drv_if2_free(_adapter *if2);
|
||||
void rtw_drv_if2_stop(_adapter *if2);
|
||||
#ifdef CONFIG_MULTI_VIR_IFACES
|
||||
struct dvobj_priv;
|
||||
_adapter *rtw_drv_add_vir_if(_adapter *primary_padapter, void (*set_intf_ops)(_adapter *primary_padapter,struct _io_ops *pops));
|
||||
void rtw_drv_stop_vir_ifaces(struct dvobj_priv *dvobj);
|
||||
void rtw_drv_free_vir_ifaces(struct dvobj_priv *dvobj);
|
||||
#endif //CONFIG_MULTI_VIR_IFACES
|
||||
#endif
|
||||
|
||||
void rtw_ndev_destructor(_nic_hdl ndev);
|
||||
|
||||
#ifdef CONFIG_ARP_KEEP_ALIVE
|
||||
int rtw_gw_addr_query(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
int rtw_suspend_common(_adapter *padapter);
|
||||
int rtw_resume_common(_adapter *padapter);
|
||||
|
||||
#endif //_OSDEP_INTF_H_
|
||||
|
||||
629
include/osdep_service.h
Normal file
629
include/osdep_service.h
Normal file
|
|
@ -0,0 +1,629 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2013 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __OSDEP_SERVICE_H_
|
||||
#define __OSDEP_SERVICE_H_
|
||||
|
||||
|
||||
#define _FAIL 0
|
||||
#define _SUCCESS 1
|
||||
#define RTW_RX_HANDLED 2
|
||||
//#define RTW_STATUS_TIMEDOUT -110
|
||||
|
||||
#undef _TRUE
|
||||
#define _TRUE 1
|
||||
|
||||
#undef _FALSE
|
||||
#define _FALSE 0
|
||||
|
||||
|
||||
#ifdef PLATFORM_FREEBSD
|
||||
#include <osdep_service_bsd.h>
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
#include <osdep_service_linux.h>
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_OS_XP
|
||||
#include <osdep_service_xp.h>
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_OS_CE
|
||||
#include <osdep_service_ce.h>
|
||||
#endif
|
||||
|
||||
#define RTW_TIMER_HDL_NAME(name) rtw_##name##_timer_hdl
|
||||
#define RTW_DECLARE_TIMER_HDL(name) void RTW_TIMER_HDL_NAME(name)(RTW_TIMER_HDL_ARGS)
|
||||
|
||||
//#include <rtw_byteorder.h>
|
||||
|
||||
#ifndef BIT
|
||||
#define BIT(x) ( 1 << (x))
|
||||
#endif
|
||||
|
||||
#define BIT0 0x00000001
|
||||
#define BIT1 0x00000002
|
||||
#define BIT2 0x00000004
|
||||
#define BIT3 0x00000008
|
||||
#define BIT4 0x00000010
|
||||
#define BIT5 0x00000020
|
||||
#define BIT6 0x00000040
|
||||
#define BIT7 0x00000080
|
||||
#define BIT8 0x00000100
|
||||
#define BIT9 0x00000200
|
||||
#define BIT10 0x00000400
|
||||
#define BIT11 0x00000800
|
||||
#define BIT12 0x00001000
|
||||
#define BIT13 0x00002000
|
||||
#define BIT14 0x00004000
|
||||
#define BIT15 0x00008000
|
||||
#define BIT16 0x00010000
|
||||
#define BIT17 0x00020000
|
||||
#define BIT18 0x00040000
|
||||
#define BIT19 0x00080000
|
||||
#define BIT20 0x00100000
|
||||
#define BIT21 0x00200000
|
||||
#define BIT22 0x00400000
|
||||
#define BIT23 0x00800000
|
||||
#define BIT24 0x01000000
|
||||
#define BIT25 0x02000000
|
||||
#define BIT26 0x04000000
|
||||
#define BIT27 0x08000000
|
||||
#define BIT28 0x10000000
|
||||
#define BIT29 0x20000000
|
||||
#define BIT30 0x40000000
|
||||
#define BIT31 0x80000000
|
||||
#define BIT32 0x0100000000
|
||||
#define BIT33 0x0200000000
|
||||
#define BIT34 0x0400000000
|
||||
#define BIT35 0x0800000000
|
||||
#define BIT36 0x1000000000
|
||||
|
||||
extern int RTW_STATUS_CODE(int error_code);
|
||||
|
||||
#ifndef RTK_DMP_PLATFORM
|
||||
#define CONFIG_USE_VMALLOC
|
||||
#endif
|
||||
|
||||
/* flags used for rtw_mstat_update() */
|
||||
enum mstat_f {
|
||||
/* type: 0x00ff */
|
||||
MSTAT_TYPE_VIR = 0x00,
|
||||
MSTAT_TYPE_PHY= 0x01,
|
||||
MSTAT_TYPE_SKB = 0x02,
|
||||
MSTAT_TYPE_USB = 0x03,
|
||||
MSTAT_TYPE_MAX = 0x04,
|
||||
|
||||
/* func: 0xff00 */
|
||||
MSTAT_FUNC_UNSPECIFIED = 0x00<<8,
|
||||
MSTAT_FUNC_IO = 0x01<<8,
|
||||
MSTAT_FUNC_TX_IO = 0x02<<8,
|
||||
MSTAT_FUNC_RX_IO = 0x03<<8,
|
||||
MSTAT_FUNC_TX = 0x04<<8,
|
||||
MSTAT_FUNC_RX = 0x05<<8,
|
||||
MSTAT_FUNC_CFG_VENDOR = 0x06<<8,
|
||||
MSTAT_FUNC_MAX = 0x07<<8,
|
||||
};
|
||||
|
||||
#define mstat_tf_idx(flags) ((flags)&0xff)
|
||||
#define mstat_ff_idx(flags) (((flags)&0xff00) >> 8)
|
||||
|
||||
typedef enum mstat_status{
|
||||
MSTAT_ALLOC_SUCCESS = 0,
|
||||
MSTAT_ALLOC_FAIL,
|
||||
MSTAT_FREE
|
||||
} MSTAT_STATUS;
|
||||
|
||||
#ifdef DBG_MEM_ALLOC
|
||||
void rtw_mstat_update(const enum mstat_f flags, const MSTAT_STATUS status, u32 sz);
|
||||
void rtw_mstat_dump (void *sel);
|
||||
u8* dbg_rtw_vmalloc(u32 sz, const enum mstat_f flags, const char *func, const int line);
|
||||
u8* dbg_rtw_zvmalloc(u32 sz, const enum mstat_f flags, const char *func, const int line);
|
||||
void dbg_rtw_vmfree(u8 *pbuf, const enum mstat_f flags, u32 sz, const char *func, const int line);
|
||||
u8* dbg_rtw_malloc(u32 sz, const enum mstat_f flags, const char *func, const int line);
|
||||
u8* dbg_rtw_zmalloc(u32 sz, const enum mstat_f flags, const char *func, const int line);
|
||||
void dbg_rtw_mfree(u8 *pbuf, const enum mstat_f flags, u32 sz, const char *func, const int line);
|
||||
|
||||
struct sk_buff * dbg_rtw_skb_alloc(unsigned int size, const enum mstat_f flags, const char *func, const int line);
|
||||
void dbg_rtw_skb_free(struct sk_buff *skb, const enum mstat_f flags, const char *func, const int line);
|
||||
struct sk_buff *dbg_rtw_skb_copy(const struct sk_buff *skb, const enum mstat_f flags, const char *func, const int line);
|
||||
struct sk_buff *dbg_rtw_skb_clone(struct sk_buff *skb, const enum mstat_f flags, const char *func, const int line);
|
||||
int dbg_rtw_netif_rx(_nic_hdl ndev, struct sk_buff *skb, const enum mstat_f flags, const char *func, int line);
|
||||
void dbg_rtw_skb_queue_purge(struct sk_buff_head *list, enum mstat_f flags, const char *func, int line);
|
||||
#ifdef CONFIG_USB_HCI
|
||||
void *dbg_rtw_usb_buffer_alloc(struct usb_device *dev, size_t size, dma_addr_t *dma, const enum mstat_f flags, const char *func, const int line);
|
||||
void dbg_rtw_usb_buffer_free(struct usb_device *dev, size_t size, void *addr, dma_addr_t dma, const enum mstat_f flags, const char *func, const int line);
|
||||
#endif /* CONFIG_USB_HCI */
|
||||
|
||||
#ifdef CONFIG_USE_VMALLOC
|
||||
#define rtw_vmalloc(sz) dbg_rtw_vmalloc((sz), MSTAT_TYPE_VIR, __FUNCTION__, __LINE__)
|
||||
#define rtw_zvmalloc(sz) dbg_rtw_zvmalloc((sz), MSTAT_TYPE_VIR, __FUNCTION__, __LINE__)
|
||||
#define rtw_vmfree(pbuf, sz) dbg_rtw_vmfree((pbuf), (sz), MSTAT_TYPE_VIR, __FUNCTION__, __LINE__)
|
||||
#define rtw_vmalloc_f(sz, mstat_f) dbg_rtw_vmalloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_VIR, __FUNCTION__, __LINE__)
|
||||
#define rtw_zvmalloc_f(sz, mstat_f) dbg_rtw_zvmalloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_VIR, __FUNCTION__, __LINE__)
|
||||
#define rtw_vmfree_f(pbuf, sz, mstat_f) dbg_rtw_vmfree((pbuf), (sz), ((mstat_f)&0xff00)|MSTAT_TYPE_VIR, __FUNCTION__, __LINE__)
|
||||
#else /* CONFIG_USE_VMALLOC */
|
||||
#define rtw_vmalloc(sz) dbg_rtw_malloc((sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
#define rtw_zvmalloc(sz) dbg_rtw_zmalloc((sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
#define rtw_vmfree(pbuf, sz) dbg_rtw_mfree((pbuf), (sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
#define rtw_vmalloc_f(sz, mstat_f) dbg_rtw_malloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
#define rtw_zvmalloc_f(sz, mstat_f) dbg_rtw_zmalloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
#define rtw_vmfree_f(pbuf, sz, mstat_f) dbg_rtw_mfree((pbuf), (sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
#endif /* CONFIG_USE_VMALLOC */
|
||||
#define rtw_malloc(sz) dbg_rtw_malloc((sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
#define rtw_zmalloc(sz) dbg_rtw_zmalloc((sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
#define rtw_mfree(pbuf, sz) dbg_rtw_mfree((pbuf), (sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
#define rtw_malloc_f(sz, mstat_f) dbg_rtw_malloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
#define rtw_zmalloc_f(sz, mstat_f) dbg_rtw_zmalloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
#define rtw_mfree_f(pbuf, sz, mstat_f) dbg_rtw_mfree((pbuf), (sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__)
|
||||
|
||||
#define rtw_skb_alloc(size) dbg_rtw_skb_alloc((size), MSTAT_TYPE_SKB, __FUNCTION__, __LINE__)
|
||||
#define rtw_skb_free(skb) dbg_rtw_skb_free((skb), MSTAT_TYPE_SKB, __FUNCTION__, __LINE__)
|
||||
#define rtw_skb_alloc_f(size, mstat_f) dbg_rtw_skb_alloc((size), ((mstat_f)&0xff00)|MSTAT_TYPE_SKB, __FUNCTION__, __LINE__)
|
||||
#define rtw_skb_free_f(skb, mstat_f) dbg_rtw_skb_free((skb), ((mstat_f)&0xff00)|MSTAT_TYPE_SKB, __FUNCTION__, __LINE__)
|
||||
#define rtw_skb_copy(skb) dbg_rtw_skb_copy((skb), MSTAT_TYPE_SKB, __FUNCTION__, __LINE__)
|
||||
#define rtw_skb_clone(skb) dbg_rtw_skb_clone((skb), MSTAT_TYPE_SKB, __FUNCTION__, __LINE__)
|
||||
#define rtw_skb_copy_f(skb, mstat_f) dbg_rtw_skb_copy((skb), ((mstat_f)&0xff00)|MSTAT_TYPE_SKB, __FUNCTION__, __LINE__)
|
||||
#define rtw_skb_clone_f(skb, mstat_f) dbg_rtw_skb_clone((skb), ((mstat_f)&0xff00)|MSTAT_TYPE_SKB, __FUNCTION__, __LINE__)
|
||||
#define rtw_netif_rx(ndev, skb) dbg_rtw_netif_rx(ndev, skb, MSTAT_TYPE_SKB, __FUNCTION__, __LINE__)
|
||||
#define rtw_skb_queue_purge(sk_buff_head) dbg_rtw_skb_queue_purge(sk_buff_head, MSTAT_TYPE_SKB, __FUNCTION__, __LINE__)
|
||||
#ifdef CONFIG_USB_HCI
|
||||
#define rtw_usb_buffer_alloc(dev, size, dma) dbg_rtw_usb_buffer_alloc((dev), (size), (dma), MSTAT_TYPE_USB, __FUNCTION__, __LINE__)
|
||||
#define rtw_usb_buffer_free(dev, size, addr, dma) dbg_rtw_usb_buffer_free((dev), (size), (addr), (dma), MSTAT_TYPE_USB, __FUNCTION__, __LINE__)
|
||||
#define rtw_usb_buffer_alloc_f(dev, size, dma, mstat_f) dbg_rtw_usb_buffer_alloc((dev), (size), (dma), ((mstat_f)&0xff00)|MSTAT_TYPE_USB, __FUNCTION__, __LINE__)
|
||||
#define rtw_usb_buffer_free_f(dev, size, addr, dma, mstat_f) dbg_rtw_usb_buffer_free((dev), (size), (addr), (dma), ((mstat_f)&0xff00)|MSTAT_TYPE_USB, __FUNCTION__, __LINE__)
|
||||
#endif /* CONFIG_USB_HCI */
|
||||
|
||||
#else /* DBG_MEM_ALLOC */
|
||||
#define rtw_mstat_update(flag, status, sz) do {} while(0)
|
||||
#define rtw_mstat_dump(sel) do {} while(0)
|
||||
u8* _rtw_vmalloc(u32 sz);
|
||||
u8* _rtw_zvmalloc(u32 sz);
|
||||
void _rtw_vmfree(u8 *pbuf, u32 sz);
|
||||
u8* _rtw_zmalloc(u32 sz);
|
||||
u8* _rtw_malloc(u32 sz);
|
||||
void _rtw_mfree(u8 *pbuf, u32 sz);
|
||||
|
||||
struct sk_buff *_rtw_skb_alloc(u32 sz);
|
||||
void _rtw_skb_free(struct sk_buff *skb);
|
||||
struct sk_buff *_rtw_skb_copy(const struct sk_buff *skb);
|
||||
struct sk_buff *_rtw_skb_clone(struct sk_buff *skb);
|
||||
int _rtw_netif_rx(_nic_hdl ndev, struct sk_buff *skb);
|
||||
void _rtw_skb_queue_purge(struct sk_buff_head *list);
|
||||
|
||||
#ifdef CONFIG_USB_HCI
|
||||
void *_rtw_usb_buffer_alloc(struct usb_device *dev, size_t size, dma_addr_t *dma);
|
||||
void _rtw_usb_buffer_free(struct usb_device *dev, size_t size, void *addr, dma_addr_t dma);
|
||||
#endif /* CONFIG_USB_HCI */
|
||||
|
||||
#ifdef CONFIG_USE_VMALLOC
|
||||
#define rtw_vmalloc(sz) _rtw_vmalloc((sz))
|
||||
#define rtw_zvmalloc(sz) _rtw_zvmalloc((sz))
|
||||
#define rtw_vmfree(pbuf, sz) _rtw_vmfree((pbuf), (sz))
|
||||
#define rtw_vmalloc_f(sz, mstat_f) _rtw_vmalloc((sz))
|
||||
#define rtw_zvmalloc_f(sz, mstat_f) _rtw_zvmalloc((sz))
|
||||
#define rtw_vmfree_f(pbuf, sz, mstat_f) _rtw_vmfree((pbuf), (sz))
|
||||
#else /* CONFIG_USE_VMALLOC */
|
||||
#define rtw_vmalloc(sz) _rtw_malloc((sz))
|
||||
#define rtw_zvmalloc(sz) _rtw_zmalloc((sz))
|
||||
#define rtw_vmfree(pbuf, sz) _rtw_mfree((pbuf), (sz))
|
||||
#define rtw_vmalloc_f(sz, mstat_f) _rtw_malloc((sz))
|
||||
#define rtw_zvmalloc_f(sz, mstat_f) _rtw_zmalloc((sz))
|
||||
#define rtw_vmfree_f(pbuf, sz, mstat_f) _rtw_mfree((pbuf), (sz))
|
||||
#endif /* CONFIG_USE_VMALLOC */
|
||||
#define rtw_malloc(sz) _rtw_malloc((sz))
|
||||
#define rtw_zmalloc(sz) _rtw_zmalloc((sz))
|
||||
#define rtw_mfree(pbuf, sz) _rtw_mfree((pbuf), (sz))
|
||||
#define rtw_malloc_f(sz, mstat_f) _rtw_malloc((sz))
|
||||
#define rtw_zmalloc_f(sz, mstat_f) _rtw_zmalloc((sz))
|
||||
#define rtw_mfree_f(pbuf, sz, mstat_f) _rtw_mfree((pbuf), (sz))
|
||||
|
||||
#define rtw_skb_alloc(size) _rtw_skb_alloc((size))
|
||||
#define rtw_skb_free(skb) _rtw_skb_free((skb))
|
||||
#define rtw_skb_alloc_f(size, mstat_f) _rtw_skb_alloc((size))
|
||||
#define rtw_skb_free_f(skb, mstat_f) _rtw_skb_free((skb))
|
||||
#define rtw_skb_copy(skb) _rtw_skb_copy((skb))
|
||||
#define rtw_skb_clone(skb) _rtw_skb_clone((skb))
|
||||
#define rtw_skb_copy_f(skb, mstat_f) _rtw_skb_copy((skb))
|
||||
#define rtw_skb_clone_f(skb, mstat_f) _rtw_skb_clone((skb))
|
||||
#define rtw_netif_rx(ndev, skb) _rtw_netif_rx(ndev, skb)
|
||||
#define rtw_skb_queue_purge(sk_buff_head) _rtw_skb_queue_purge(sk_buff_head)
|
||||
#ifdef CONFIG_USB_HCI
|
||||
#define rtw_usb_buffer_alloc(dev, size, dma) _rtw_usb_buffer_alloc((dev), (size), (dma))
|
||||
#define rtw_usb_buffer_free(dev, size, addr, dma) _rtw_usb_buffer_free((dev), (size), (addr), (dma))
|
||||
#define rtw_usb_buffer_alloc_f(dev, size, dma, mstat_f) _rtw_usb_buffer_alloc((dev), (size), (dma))
|
||||
#define rtw_usb_buffer_free_f(dev, size, addr, dma, mstat_f) _rtw_usb_buffer_free((dev), (size), (addr), (dma))
|
||||
#endif /* CONFIG_USB_HCI */
|
||||
#endif /* DBG_MEM_ALLOC */
|
||||
|
||||
extern void* rtw_malloc2d(int h, int w, size_t size);
|
||||
extern void rtw_mfree2d(void *pbuf, int h, int w, int size);
|
||||
|
||||
extern void _rtw_memcpy(void *dec, const void *sour, u32 sz);
|
||||
extern void _rtw_memmove(void *dst, const void *src, u32 sz);
|
||||
extern int _rtw_memcmp(void *dst, void *src, u32 sz);
|
||||
extern void _rtw_memset(void *pbuf, int c, u32 sz);
|
||||
|
||||
extern void _rtw_init_listhead(_list *list);
|
||||
extern u32 rtw_is_list_empty(_list *phead);
|
||||
extern void rtw_list_insert_head(_list *plist, _list *phead);
|
||||
extern void rtw_list_insert_tail(_list *plist, _list *phead);
|
||||
#ifndef PLATFORM_FREEBSD
|
||||
extern void rtw_list_delete(_list *plist);
|
||||
#endif //PLATFORM_FREEBSD
|
||||
|
||||
extern void _rtw_init_sema(_sema *sema, int init_val);
|
||||
extern void _rtw_free_sema(_sema *sema);
|
||||
extern void _rtw_up_sema(_sema *sema);
|
||||
extern u32 _rtw_down_sema(_sema *sema);
|
||||
extern void _rtw_mutex_init(_mutex *pmutex);
|
||||
extern void _rtw_mutex_free(_mutex *pmutex);
|
||||
#ifndef PLATFORM_FREEBSD
|
||||
extern void _rtw_spinlock_init(_lock *plock);
|
||||
#endif //PLATFORM_FREEBSD
|
||||
extern void _rtw_spinlock_free(_lock *plock);
|
||||
extern void _rtw_spinlock(_lock *plock);
|
||||
extern void _rtw_spinunlock(_lock *plock);
|
||||
extern void _rtw_spinlock_ex(_lock *plock);
|
||||
extern void _rtw_spinunlock_ex(_lock *plock);
|
||||
|
||||
extern void _rtw_init_queue(_queue *pqueue);
|
||||
extern void _rtw_deinit_queue(_queue *pqueue);
|
||||
extern u32 _rtw_queue_empty(_queue *pqueue);
|
||||
extern u32 rtw_end_of_queue_search(_list *queue, _list *pelement);
|
||||
|
||||
extern u32 rtw_get_current_time(void);
|
||||
extern u32 rtw_systime_to_ms(u32 systime);
|
||||
extern u32 rtw_ms_to_systime(u32 ms);
|
||||
extern s32 rtw_get_passing_time_ms(u32 start);
|
||||
extern s32 rtw_get_time_interval_ms(u32 start, u32 end);
|
||||
|
||||
extern void rtw_sleep_schedulable(int ms);
|
||||
|
||||
extern void rtw_msleep_os(int ms);
|
||||
extern void rtw_usleep_os(int us);
|
||||
|
||||
extern u32 rtw_atoi(u8* s);
|
||||
|
||||
#ifdef DBG_DELAY_OS
|
||||
#define rtw_mdelay_os(ms) _rtw_mdelay_os((ms), __FUNCTION__, __LINE__)
|
||||
#define rtw_udelay_os(ms) _rtw_udelay_os((ms), __FUNCTION__, __LINE__)
|
||||
extern void _rtw_mdelay_os(int ms, const char *func, const int line);
|
||||
extern void _rtw_udelay_os(int us, const char *func, const int line);
|
||||
#else
|
||||
extern void rtw_mdelay_os(int ms);
|
||||
extern void rtw_udelay_os(int us);
|
||||
#endif
|
||||
|
||||
extern void rtw_yield_os(void);
|
||||
|
||||
|
||||
extern void rtw_init_timer(_timer *ptimer, void *padapter, void *pfunc);
|
||||
|
||||
|
||||
__inline static unsigned char _cancel_timer_ex(_timer *ptimer)
|
||||
{
|
||||
#ifdef PLATFORM_LINUX
|
||||
return del_timer_sync(ptimer);
|
||||
#endif
|
||||
#ifdef PLATFORM_FREEBSD
|
||||
_cancel_timer(ptimer,0);
|
||||
return 0;
|
||||
#endif
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
u8 bcancelled;
|
||||
|
||||
_cancel_timer(ptimer, &bcancelled);
|
||||
|
||||
return bcancelled;
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline void thread_enter(char *name)
|
||||
{
|
||||
#ifdef PLATFORM_LINUX
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0))
|
||||
daemonize("%s", name);
|
||||
#endif
|
||||
allow_signal(SIGTERM);
|
||||
#endif
|
||||
#ifdef PLATFORM_FREEBSD
|
||||
printf("%s", "RTKTHREAD_enter");
|
||||
#endif
|
||||
}
|
||||
|
||||
__inline static void flush_signals_thread(void)
|
||||
{
|
||||
#ifdef PLATFORM_LINUX
|
||||
if (signal_pending (current))
|
||||
{
|
||||
flush_signals(current);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
__inline static _OS_STATUS res_to_status(sint res)
|
||||
{
|
||||
|
||||
#if defined (PLATFORM_LINUX) || defined (PLATFORM_MPIXEL) || defined (PLATFORM_FREEBSD)
|
||||
return res;
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
|
||||
if (res == _SUCCESS)
|
||||
return NDIS_STATUS_SUCCESS;
|
||||
else
|
||||
return NDIS_STATUS_FAILURE;
|
||||
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
__inline static void rtw_dump_stack(void)
|
||||
{
|
||||
#ifdef PLATFORM_LINUX
|
||||
dump_stack();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef PLATFORM_LINUX
|
||||
#define rtw_warn_on(condition) WARN_ON(condition)
|
||||
#else
|
||||
#define rtw_warn_on(condition) do {} while (0)
|
||||
#endif
|
||||
|
||||
__inline static int rtw_bug_check(void *parg1, void *parg2, void *parg3, void *parg4)
|
||||
{
|
||||
int ret = _TRUE;
|
||||
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
if ( ((uint)parg1) <= 0x7fffffff ||
|
||||
((uint)parg2) <= 0x7fffffff ||
|
||||
((uint)parg3) <= 0x7fffffff ||
|
||||
((uint)parg4) <= 0x7fffffff)
|
||||
{
|
||||
ret = _FALSE;
|
||||
KeBugCheckEx(0x87110000, (ULONG_PTR)parg1, (ULONG_PTR)parg2, (ULONG_PTR)parg3, (ULONG_PTR)parg4);
|
||||
}
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
#define _RND(sz, r) ((((sz)+((r)-1))/(r))*(r))
|
||||
#define RND4(x) (((x >> 2) + (((x & 3) == 0) ? 0: 1)) << 2)
|
||||
|
||||
__inline static u32 _RND4(u32 sz)
|
||||
{
|
||||
|
||||
u32 val;
|
||||
|
||||
val = ((sz >> 2) + ((sz & 3) ? 1: 0)) << 2;
|
||||
|
||||
return val;
|
||||
|
||||
}
|
||||
|
||||
__inline static u32 _RND8(u32 sz)
|
||||
{
|
||||
|
||||
u32 val;
|
||||
|
||||
val = ((sz >> 3) + ((sz & 7) ? 1: 0)) << 3;
|
||||
|
||||
return val;
|
||||
|
||||
}
|
||||
|
||||
__inline static u32 _RND128(u32 sz)
|
||||
{
|
||||
|
||||
u32 val;
|
||||
|
||||
val = ((sz >> 7) + ((sz & 127) ? 1: 0)) << 7;
|
||||
|
||||
return val;
|
||||
|
||||
}
|
||||
|
||||
__inline static u32 _RND256(u32 sz)
|
||||
{
|
||||
|
||||
u32 val;
|
||||
|
||||
val = ((sz >> 8) + ((sz & 255) ? 1: 0)) << 8;
|
||||
|
||||
return val;
|
||||
|
||||
}
|
||||
|
||||
__inline static u32 _RND512(u32 sz)
|
||||
{
|
||||
|
||||
u32 val;
|
||||
|
||||
val = ((sz >> 9) + ((sz & 511) ? 1: 0)) << 9;
|
||||
|
||||
return val;
|
||||
|
||||
}
|
||||
|
||||
__inline static u32 bitshift(u32 bitmask)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i <= 31; i++)
|
||||
if (((bitmask>>i) & 0x1) == 1) break;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
#define rtw_min(a, b) ((a>b)?b:a)
|
||||
#define rtw_is_range_a_in_b(hi_a, lo_a, hi_b, lo_b) (((hi_a) <= (hi_b)) && ((lo_a) >= (lo_b)))
|
||||
#define rtw_is_range_overlap(hi_a, lo_a, hi_b, lo_b) (((hi_a) > (lo_b)) && ((lo_a) < (hi_b)))
|
||||
|
||||
#ifndef MAC_FMT
|
||||
#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
|
||||
#endif
|
||||
#ifndef MAC_ARG
|
||||
#define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5]
|
||||
#endif
|
||||
|
||||
|
||||
extern void rtw_suspend_lock_init(void);
|
||||
extern void rtw_suspend_lock_uninit(void);
|
||||
extern void rtw_lock_suspend(void);
|
||||
extern void rtw_unlock_suspend(void);
|
||||
extern void rtw_lock_suspend_timeout(u32 timeout_ms);
|
||||
extern void rtw_lock_ext_suspend_timeout(u32 timeout_ms);
|
||||
extern void rtw_lock_rx_suspend_timeout(u32 timeout_ms);
|
||||
extern void rtw_lock_traffic_suspend_timeout(u32 timeout_ms);
|
||||
extern void rtw_lock_resume_scan_timeout(u32 timeout_ms);
|
||||
extern void rtw_resume_lock_suspend(void);
|
||||
extern void rtw_resume_unlock_suspend(void);
|
||||
#ifdef CONFIG_AP_WOWLAN
|
||||
extern void rtw_softap_lock_suspend(void);
|
||||
extern void rtw_softap_unlock_suspend(void);
|
||||
#endif
|
||||
|
||||
extern void ATOMIC_SET(ATOMIC_T *v, int i);
|
||||
extern int ATOMIC_READ(ATOMIC_T *v);
|
||||
extern void ATOMIC_ADD(ATOMIC_T *v, int i);
|
||||
extern void ATOMIC_SUB(ATOMIC_T *v, int i);
|
||||
extern void ATOMIC_INC(ATOMIC_T *v);
|
||||
extern void ATOMIC_DEC(ATOMIC_T *v);
|
||||
extern int ATOMIC_ADD_RETURN(ATOMIC_T *v, int i);
|
||||
extern int ATOMIC_SUB_RETURN(ATOMIC_T *v, int i);
|
||||
extern int ATOMIC_INC_RETURN(ATOMIC_T *v);
|
||||
extern int ATOMIC_DEC_RETURN(ATOMIC_T *v);
|
||||
|
||||
//File operation APIs, just for linux now
|
||||
extern int rtw_is_file_readable(char *path);
|
||||
extern int rtw_retrieve_from_file(char *path, u8 *buf, u32 sz);
|
||||
extern int rtw_store_to_file(char *path, u8* buf, u32 sz);
|
||||
|
||||
|
||||
#ifndef PLATFORM_FREEBSD
|
||||
extern void rtw_free_netdev(struct net_device * netdev);
|
||||
#endif //PLATFORM_FREEBSD
|
||||
|
||||
|
||||
extern u64 rtw_modular64(u64 x, u64 y);
|
||||
extern u64 rtw_division64(u64 x, u64 y);
|
||||
extern u32 rtw_random32(void);
|
||||
|
||||
/* Macros for handling unaligned memory accesses */
|
||||
|
||||
#define RTW_GET_BE16(a) ((u16) (((a)[0] << 8) | (a)[1]))
|
||||
#define RTW_PUT_BE16(a, val) \
|
||||
do { \
|
||||
(a)[0] = ((u16) (val)) >> 8; \
|
||||
(a)[1] = ((u16) (val)) & 0xff; \
|
||||
} while (0)
|
||||
|
||||
#define RTW_GET_LE16(a) ((u16) (((a)[1] << 8) | (a)[0]))
|
||||
#define RTW_PUT_LE16(a, val) \
|
||||
do { \
|
||||
(a)[1] = ((u16) (val)) >> 8; \
|
||||
(a)[0] = ((u16) (val)) & 0xff; \
|
||||
} while (0)
|
||||
|
||||
#define RTW_GET_BE24(a) ((((u32) (a)[0]) << 16) | (((u32) (a)[1]) << 8) | \
|
||||
((u32) (a)[2]))
|
||||
#define RTW_PUT_BE24(a, val) \
|
||||
do { \
|
||||
(a)[0] = (u8) ((((u32) (val)) >> 16) & 0xff); \
|
||||
(a)[1] = (u8) ((((u32) (val)) >> 8) & 0xff); \
|
||||
(a)[2] = (u8) (((u32) (val)) & 0xff); \
|
||||
} while (0)
|
||||
|
||||
#define RTW_GET_BE32(a) ((((u32) (a)[0]) << 24) | (((u32) (a)[1]) << 16) | \
|
||||
(((u32) (a)[2]) << 8) | ((u32) (a)[3]))
|
||||
#define RTW_PUT_BE32(a, val) \
|
||||
do { \
|
||||
(a)[0] = (u8) ((((u32) (val)) >> 24) & 0xff); \
|
||||
(a)[1] = (u8) ((((u32) (val)) >> 16) & 0xff); \
|
||||
(a)[2] = (u8) ((((u32) (val)) >> 8) & 0xff); \
|
||||
(a)[3] = (u8) (((u32) (val)) & 0xff); \
|
||||
} while (0)
|
||||
|
||||
#define RTW_GET_LE32(a) ((((u32) (a)[3]) << 24) | (((u32) (a)[2]) << 16) | \
|
||||
(((u32) (a)[1]) << 8) | ((u32) (a)[0]))
|
||||
#define RTW_PUT_LE32(a, val) \
|
||||
do { \
|
||||
(a)[3] = (u8) ((((u32) (val)) >> 24) & 0xff); \
|
||||
(a)[2] = (u8) ((((u32) (val)) >> 16) & 0xff); \
|
||||
(a)[1] = (u8) ((((u32) (val)) >> 8) & 0xff); \
|
||||
(a)[0] = (u8) (((u32) (val)) & 0xff); \
|
||||
} while (0)
|
||||
|
||||
#define RTW_GET_BE64(a) ((((u64) (a)[0]) << 56) | (((u64) (a)[1]) << 48) | \
|
||||
(((u64) (a)[2]) << 40) | (((u64) (a)[3]) << 32) | \
|
||||
(((u64) (a)[4]) << 24) | (((u64) (a)[5]) << 16) | \
|
||||
(((u64) (a)[6]) << 8) | ((u64) (a)[7]))
|
||||
#define RTW_PUT_BE64(a, val) \
|
||||
do { \
|
||||
(a)[0] = (u8) (((u64) (val)) >> 56); \
|
||||
(a)[1] = (u8) (((u64) (val)) >> 48); \
|
||||
(a)[2] = (u8) (((u64) (val)) >> 40); \
|
||||
(a)[3] = (u8) (((u64) (val)) >> 32); \
|
||||
(a)[4] = (u8) (((u64) (val)) >> 24); \
|
||||
(a)[5] = (u8) (((u64) (val)) >> 16); \
|
||||
(a)[6] = (u8) (((u64) (val)) >> 8); \
|
||||
(a)[7] = (u8) (((u64) (val)) & 0xff); \
|
||||
} while (0)
|
||||
|
||||
#define RTW_GET_LE64(a) ((((u64) (a)[7]) << 56) | (((u64) (a)[6]) << 48) | \
|
||||
(((u64) (a)[5]) << 40) | (((u64) (a)[4]) << 32) | \
|
||||
(((u64) (a)[3]) << 24) | (((u64) (a)[2]) << 16) | \
|
||||
(((u64) (a)[1]) << 8) | ((u64) (a)[0]))
|
||||
|
||||
void rtw_buf_free(u8 **buf, u32 *buf_len);
|
||||
void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len);
|
||||
|
||||
struct rtw_cbuf {
|
||||
u32 write;
|
||||
u32 read;
|
||||
u32 size;
|
||||
void *bufs[0];
|
||||
};
|
||||
|
||||
bool rtw_cbuf_full(struct rtw_cbuf *cbuf);
|
||||
bool rtw_cbuf_empty(struct rtw_cbuf *cbuf);
|
||||
bool rtw_cbuf_push(struct rtw_cbuf *cbuf, void *buf);
|
||||
void *rtw_cbuf_pop(struct rtw_cbuf *cbuf);
|
||||
struct rtw_cbuf *rtw_cbuf_alloc(u32 size);
|
||||
void rtw_cbuf_free(struct rtw_cbuf *cbuf);
|
||||
|
||||
// String handler
|
||||
/*
|
||||
* Write formatted output to sized buffer
|
||||
*/
|
||||
#ifdef PLATFORM_LINUX
|
||||
#define rtw_sprintf(buf, size, format, arg...) snprintf(buf, size, format, ##arg)
|
||||
#else // !PLATFORM_LINUX
|
||||
#error "NOT DEFINE \"rtw_sprintf\"!!"
|
||||
#endif // !PLATFORM_LINUX
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
749
include/osdep_service_bsd.h
Normal file
749
include/osdep_service_bsd.h
Normal file
|
|
@ -0,0 +1,749 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2013 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __OSDEP_BSD_SERVICE_H_
|
||||
#define __OSDEP_BSD_SERVICE_H_
|
||||
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/sockio.h>
|
||||
#include <sys/sysctl.h>
|
||||
#include <sys/lock.h>
|
||||
#include <sys/mutex.h>
|
||||
#include <sys/mbuf.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/malloc.h>
|
||||
#include <sys/module.h>
|
||||
#include <sys/bus.h>
|
||||
#include <sys/endian.h>
|
||||
#include <sys/kdb.h>
|
||||
#include <sys/kthread.h>
|
||||
#include <sys/malloc.h>
|
||||
#include <sys/time.h>
|
||||
#include <machine/atomic.h>
|
||||
#include <machine/bus.h>
|
||||
#include <machine/resource.h>
|
||||
#include <sys/rman.h>
|
||||
|
||||
#include <net/bpf.h>
|
||||
#include <net/if.h>
|
||||
#include <net/if_arp.h>
|
||||
#include <net/ethernet.h>
|
||||
#include <net/if_dl.h>
|
||||
#include <net/if_media.h>
|
||||
#include <net/if_types.h>
|
||||
#include <net/route.h>
|
||||
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/in_systm.h>
|
||||
#include <netinet/in_var.h>
|
||||
#include <netinet/if_ether.h>
|
||||
#include <if_ether.h>
|
||||
|
||||
#include <net80211/ieee80211_var.h>
|
||||
#include <net80211/ieee80211_regdomain.h>
|
||||
#include <net80211/ieee80211_radiotap.h>
|
||||
#include <net80211/ieee80211_ratectl.h>
|
||||
|
||||
#include <dev/usb/usb.h>
|
||||
#include <dev/usb/usbdi.h>
|
||||
#include "usbdevs.h"
|
||||
|
||||
#define USB_DEBUG_VAR rum_debug
|
||||
#include <dev/usb/usb_debug.h>
|
||||
|
||||
#if 1 //Baron porting from linux, it's all temp solution, needs to check again
|
||||
#include <sys/sema.h>
|
||||
#include <sys/pcpu.h> /* XXX for PCPU_GET */
|
||||
// typedef struct semaphore _sema;
|
||||
typedef struct sema _sema;
|
||||
// typedef spinlock_t _lock;
|
||||
typedef struct mtx _lock;
|
||||
typedef struct mtx _mutex;
|
||||
typedef struct timer_list _timer;
|
||||
struct list_head {
|
||||
struct list_head *next, *prev;
|
||||
};
|
||||
struct __queue {
|
||||
struct list_head queue;
|
||||
_lock lock;
|
||||
};
|
||||
|
||||
//typedef struct sk_buff _pkt;
|
||||
typedef struct mbuf _pkt;
|
||||
typedef struct mbuf _buffer;
|
||||
|
||||
typedef struct __queue _queue;
|
||||
typedef struct list_head _list;
|
||||
typedef int _OS_STATUS;
|
||||
//typedef u32 _irqL;
|
||||
typedef unsigned long _irqL;
|
||||
typedef struct ifnet * _nic_hdl;
|
||||
|
||||
typedef pid_t _thread_hdl_;
|
||||
// typedef struct thread _thread_hdl_;
|
||||
typedef void thread_return;
|
||||
typedef void* thread_context;
|
||||
|
||||
//#define thread_exit() complete_and_exit(NULL, 0)
|
||||
|
||||
#define thread_exit() do{printf("%s", "RTKTHREAD_exit");}while(0)
|
||||
|
||||
typedef void timer_hdl_return;
|
||||
typedef void* timer_hdl_context;
|
||||
typedef struct work_struct _workitem;
|
||||
|
||||
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
|
||||
/* emulate a modern version */
|
||||
#define LINUX_VERSION_CODE KERNEL_VERSION(2, 6, 35)
|
||||
|
||||
#define WIRELESS_EXT -1
|
||||
#define HZ hz
|
||||
#define spin_lock_irqsave mtx_lock_irqsave
|
||||
#define spin_lock_bh mtx_lock_irqsave
|
||||
#define mtx_lock_irqsave(lock, x) mtx_lock(lock)//{local_irq_save((x)); mtx_lock_spin((lock));}
|
||||
//#define IFT_RTW 0xf9 //ifnet allocate type for RTW
|
||||
#define free_netdev if_free
|
||||
#define LIST_CONTAINOR(ptr, type, member) \
|
||||
((type *)((char *)(ptr)-(SIZE_T)(&((type *)0)->member)))
|
||||
#define container_of(p,t,n) (t*)((p)-&(((t*)0)->n))
|
||||
/*
|
||||
* Linux timers are emulated using FreeBSD callout functions
|
||||
* (and taskqueue functionality).
|
||||
*
|
||||
* Currently no timer stats functionality.
|
||||
*
|
||||
* See (linux_compat) processes.c
|
||||
*
|
||||
*/
|
||||
struct timer_list {
|
||||
|
||||
/* FreeBSD callout related fields */
|
||||
struct callout callout;
|
||||
|
||||
//timeout function
|
||||
void (*function)(void*);
|
||||
//argument
|
||||
void *arg;
|
||||
|
||||
};
|
||||
struct workqueue_struct;
|
||||
struct work_struct;
|
||||
typedef void (*work_func_t)(struct work_struct *work);
|
||||
/* Values for the state of an item of work (work_struct) */
|
||||
typedef enum work_state {
|
||||
WORK_STATE_UNSET = 0,
|
||||
WORK_STATE_CALLOUT_PENDING = 1,
|
||||
WORK_STATE_TASK_PENDING = 2,
|
||||
WORK_STATE_WORK_CANCELLED = 3
|
||||
} work_state_t;
|
||||
|
||||
struct work_struct {
|
||||
struct task task; /* FreeBSD task */
|
||||
work_state_t state; /* the pending or otherwise state of work. */
|
||||
work_func_t func;
|
||||
};
|
||||
#define spin_unlock_irqrestore mtx_unlock_irqrestore
|
||||
#define spin_unlock_bh mtx_unlock_irqrestore
|
||||
#define mtx_unlock_irqrestore(lock,x) mtx_unlock(lock);
|
||||
extern void _rtw_spinlock_init(_lock *plock);
|
||||
|
||||
//modify private structure to match freebsd
|
||||
#define BITS_PER_LONG 32
|
||||
union ktime {
|
||||
s64 tv64;
|
||||
#if BITS_PER_LONG != 64 && !defined(CONFIG_KTIME_SCALAR)
|
||||
struct {
|
||||
#ifdef __BIG_ENDIAN
|
||||
s32 sec, nsec;
|
||||
#else
|
||||
s32 nsec, sec;
|
||||
#endif
|
||||
} tv;
|
||||
#endif
|
||||
};
|
||||
#define kmemcheck_bitfield_begin(name)
|
||||
#define kmemcheck_bitfield_end(name)
|
||||
#define CHECKSUM_NONE 0
|
||||
typedef unsigned char *sk_buff_data_t;
|
||||
typedef union ktime ktime_t; /* Kill this */
|
||||
|
||||
void rtw_mtx_lock(_lock *plock);
|
||||
|
||||
void rtw_mtx_unlock(_lock *plock);
|
||||
|
||||
/**
|
||||
* struct sk_buff - socket buffer
|
||||
* @next: Next buffer in list
|
||||
* @prev: Previous buffer in list
|
||||
* @sk: Socket we are owned by
|
||||
* @tstamp: Time we arrived
|
||||
* @dev: Device we arrived on/are leaving by
|
||||
* @transport_header: Transport layer header
|
||||
* @network_header: Network layer header
|
||||
* @mac_header: Link layer header
|
||||
* @_skb_refdst: destination entry (with norefcount bit)
|
||||
* @sp: the security path, used for xfrm
|
||||
* @cb: Control buffer. Free for use by every layer. Put private vars here
|
||||
* @len: Length of actual data
|
||||
* @data_len: Data length
|
||||
* @mac_len: Length of link layer header
|
||||
* @hdr_len: writable header length of cloned skb
|
||||
* @csum: Checksum (must include start/offset pair)
|
||||
* @csum_start: Offset from skb->head where checksumming should start
|
||||
* @csum_offset: Offset from csum_start where checksum should be stored
|
||||
* @local_df: allow local fragmentation
|
||||
* @cloned: Head may be cloned (check refcnt to be sure)
|
||||
* @nohdr: Payload reference only, must not modify header
|
||||
* @pkt_type: Packet class
|
||||
* @fclone: skbuff clone status
|
||||
* @ip_summed: Driver fed us an IP checksum
|
||||
* @priority: Packet queueing priority
|
||||
* @users: User count - see {datagram,tcp}.c
|
||||
* @protocol: Packet protocol from driver
|
||||
* @truesize: Buffer size
|
||||
* @head: Head of buffer
|
||||
* @data: Data head pointer
|
||||
* @tail: Tail pointer
|
||||
* @end: End pointer
|
||||
* @destructor: Destruct function
|
||||
* @mark: Generic packet mark
|
||||
* @nfct: Associated connection, if any
|
||||
* @ipvs_property: skbuff is owned by ipvs
|
||||
* @peeked: this packet has been seen already, so stats have been
|
||||
* done for it, don't do them again
|
||||
* @nf_trace: netfilter packet trace flag
|
||||
* @nfctinfo: Relationship of this skb to the connection
|
||||
* @nfct_reasm: netfilter conntrack re-assembly pointer
|
||||
* @nf_bridge: Saved data about a bridged frame - see br_netfilter.c
|
||||
* @skb_iif: ifindex of device we arrived on
|
||||
* @rxhash: the packet hash computed on receive
|
||||
* @queue_mapping: Queue mapping for multiqueue devices
|
||||
* @tc_index: Traffic control index
|
||||
* @tc_verd: traffic control verdict
|
||||
* @ndisc_nodetype: router type (from link layer)
|
||||
* @dma_cookie: a cookie to one of several possible DMA operations
|
||||
* done by skb DMA functions
|
||||
* @secmark: security marking
|
||||
* @vlan_tci: vlan tag control information
|
||||
*/
|
||||
|
||||
struct sk_buff {
|
||||
/* These two members must be first. */
|
||||
struct sk_buff *next;
|
||||
struct sk_buff *prev;
|
||||
|
||||
ktime_t tstamp;
|
||||
|
||||
struct sock *sk;
|
||||
//struct net_device *dev;
|
||||
struct ifnet *dev;
|
||||
|
||||
/*
|
||||
* This is the control buffer. It is free to use for every
|
||||
* layer. Please put your private variables there. If you
|
||||
* want to keep them across layers you have to do a skb_clone()
|
||||
* first. This is owned by whoever has the skb queued ATM.
|
||||
*/
|
||||
char cb[48] __aligned(8);
|
||||
|
||||
unsigned long _skb_refdst;
|
||||
#ifdef CONFIG_XFRM
|
||||
struct sec_path *sp;
|
||||
#endif
|
||||
unsigned int len,
|
||||
data_len;
|
||||
u16 mac_len,
|
||||
hdr_len;
|
||||
union {
|
||||
u32 csum;
|
||||
struct {
|
||||
u16 csum_start;
|
||||
u16 csum_offset;
|
||||
}smbol2;
|
||||
}smbol1;
|
||||
u32 priority;
|
||||
kmemcheck_bitfield_begin(flags1);
|
||||
u8 local_df:1,
|
||||
cloned:1,
|
||||
ip_summed:2,
|
||||
nohdr:1,
|
||||
nfctinfo:3;
|
||||
u8 pkt_type:3,
|
||||
fclone:2,
|
||||
ipvs_property:1,
|
||||
peeked:1,
|
||||
nf_trace:1;
|
||||
kmemcheck_bitfield_end(flags1);
|
||||
u16 protocol;
|
||||
|
||||
void (*destructor)(struct sk_buff *skb);
|
||||
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
|
||||
struct nf_conntrack *nfct;
|
||||
struct sk_buff *nfct_reasm;
|
||||
#endif
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
struct nf_bridge_info *nf_bridge;
|
||||
#endif
|
||||
|
||||
int skb_iif;
|
||||
#ifdef CONFIG_NET_SCHED
|
||||
u16 tc_index; /* traffic control index */
|
||||
#ifdef CONFIG_NET_CLS_ACT
|
||||
u16 tc_verd; /* traffic control verdict */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
u32 rxhash;
|
||||
|
||||
kmemcheck_bitfield_begin(flags2);
|
||||
u16 queue_mapping:16;
|
||||
#ifdef CONFIG_IPV6_NDISC_NODETYPE
|
||||
u8 ndisc_nodetype:2,
|
||||
deliver_no_wcard:1;
|
||||
#else
|
||||
u8 deliver_no_wcard:1;
|
||||
#endif
|
||||
kmemcheck_bitfield_end(flags2);
|
||||
|
||||
/* 0/14 bit hole */
|
||||
|
||||
#ifdef CONFIG_NET_DMA
|
||||
dma_cookie_t dma_cookie;
|
||||
#endif
|
||||
#ifdef CONFIG_NETWORK_SECMARK
|
||||
u32 secmark;
|
||||
#endif
|
||||
union {
|
||||
u32 mark;
|
||||
u32 dropcount;
|
||||
}symbol3;
|
||||
|
||||
u16 vlan_tci;
|
||||
|
||||
sk_buff_data_t transport_header;
|
||||
sk_buff_data_t network_header;
|
||||
sk_buff_data_t mac_header;
|
||||
/* These elements must be at the end, see alloc_skb() for details. */
|
||||
sk_buff_data_t tail;
|
||||
sk_buff_data_t end;
|
||||
unsigned char *head,
|
||||
*data;
|
||||
unsigned int truesize;
|
||||
atomic_t users;
|
||||
};
|
||||
struct sk_buff_head {
|
||||
/* These two members must be first. */
|
||||
struct sk_buff *next;
|
||||
struct sk_buff *prev;
|
||||
|
||||
u32 qlen;
|
||||
_lock lock;
|
||||
};
|
||||
#define skb_tail_pointer(skb) skb->tail
|
||||
static inline unsigned char *skb_put(struct sk_buff *skb, unsigned int len)
|
||||
{
|
||||
unsigned char *tmp = skb_tail_pointer(skb);
|
||||
//SKB_LINEAR_ASSERT(skb);
|
||||
skb->tail += len;
|
||||
skb->len += len;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
static inline unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len)
|
||||
{
|
||||
skb->len -= len;
|
||||
if(skb->len < skb->data_len)
|
||||
printf("%s(),%d,error!\n",__FUNCTION__,__LINE__);
|
||||
return skb->data += len;
|
||||
}
|
||||
static inline unsigned char *skb_pull(struct sk_buff *skb, unsigned int len)
|
||||
{
|
||||
#ifdef PLATFORM_FREEBSD
|
||||
return __skb_pull(skb, len);
|
||||
#else
|
||||
return unlikely(len > skb->len) ? NULL : __skb_pull(skb, len);
|
||||
#endif //PLATFORM_FREEBSD
|
||||
}
|
||||
static inline u32 skb_queue_len(const struct sk_buff_head *list_)
|
||||
{
|
||||
return list_->qlen;
|
||||
}
|
||||
static inline void __skb_insert(struct sk_buff *newsk,
|
||||
struct sk_buff *prev, struct sk_buff *next,
|
||||
struct sk_buff_head *list)
|
||||
{
|
||||
newsk->next = next;
|
||||
newsk->prev = prev;
|
||||
next->prev = prev->next = newsk;
|
||||
list->qlen++;
|
||||
}
|
||||
static inline void __skb_queue_before(struct sk_buff_head *list,
|
||||
struct sk_buff *next,
|
||||
struct sk_buff *newsk)
|
||||
{
|
||||
__skb_insert(newsk, next->prev, next, list);
|
||||
}
|
||||
static inline void skb_queue_tail(struct sk_buff_head *list,
|
||||
struct sk_buff *newsk)
|
||||
{
|
||||
mtx_lock(&list->lock);
|
||||
__skb_queue_before(list, (struct sk_buff *)list, newsk);
|
||||
mtx_unlock(&list->lock);
|
||||
}
|
||||
static inline struct sk_buff *skb_peek(struct sk_buff_head *list_)
|
||||
{
|
||||
struct sk_buff *list = ((struct sk_buff *)list_)->next;
|
||||
if (list == (struct sk_buff *)list_)
|
||||
list = NULL;
|
||||
return list;
|
||||
}
|
||||
static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list)
|
||||
{
|
||||
struct sk_buff *next, *prev;
|
||||
|
||||
list->qlen--;
|
||||
next = skb->next;
|
||||
prev = skb->prev;
|
||||
skb->next = skb->prev = NULL;
|
||||
next->prev = prev;
|
||||
prev->next = next;
|
||||
}
|
||||
|
||||
static inline struct sk_buff *skb_dequeue(struct sk_buff_head *list)
|
||||
{
|
||||
mtx_lock(&list->lock);
|
||||
|
||||
struct sk_buff *skb = skb_peek(list);
|
||||
if (skb)
|
||||
__skb_unlink(skb, list);
|
||||
|
||||
mtx_unlock(&list->lock);
|
||||
|
||||
return skb;
|
||||
}
|
||||
static inline void skb_reserve(struct sk_buff *skb, int len)
|
||||
{
|
||||
skb->data += len;
|
||||
skb->tail += len;
|
||||
}
|
||||
static inline void __skb_queue_head_init(struct sk_buff_head *list)
|
||||
{
|
||||
list->prev = list->next = (struct sk_buff *)list;
|
||||
list->qlen = 0;
|
||||
}
|
||||
/*
|
||||
* This function creates a split out lock class for each invocation;
|
||||
* this is needed for now since a whole lot of users of the skb-queue
|
||||
* infrastructure in drivers have different locking usage (in hardirq)
|
||||
* than the networking core (in softirq only). In the long run either the
|
||||
* network layer or drivers should need annotation to consolidate the
|
||||
* main types of usage into 3 classes.
|
||||
*/
|
||||
static inline void skb_queue_head_init(struct sk_buff_head *list)
|
||||
{
|
||||
_rtw_spinlock_init(&list->lock);
|
||||
__skb_queue_head_init(list);
|
||||
}
|
||||
unsigned long copy_from_user(void *to, const void *from, unsigned long n);
|
||||
unsigned long copy_to_user(void *to, const void *from, unsigned long n);
|
||||
struct sk_buff * dev_alloc_skb(unsigned int size);
|
||||
struct sk_buff *skb_clone(const struct sk_buff *skb);
|
||||
void dev_kfree_skb_any(struct sk_buff *skb);
|
||||
#endif //Baron porting from linux, it's all temp solution, needs to check again
|
||||
|
||||
|
||||
#if 1 // kenny add Linux compatibility code for Linux USB driver
|
||||
#include <dev/usb/usb_compat_linux.h>
|
||||
|
||||
#define __init // __attribute ((constructor))
|
||||
#define __exit // __attribute ((destructor))
|
||||
|
||||
/*
|
||||
* Definitions for module_init and module_exit macros.
|
||||
*
|
||||
* These macros will use the SYSINIT framework to call a specified
|
||||
* function (with no arguments) on module loading or unloading.
|
||||
*
|
||||
*/
|
||||
|
||||
void module_init_exit_wrapper(void *arg);
|
||||
|
||||
#define module_init(initfn) \
|
||||
SYSINIT(mod_init_ ## initfn, \
|
||||
SI_SUB_KLD, SI_ORDER_FIRST, \
|
||||
module_init_exit_wrapper, initfn)
|
||||
|
||||
#define module_exit(exitfn) \
|
||||
SYSUNINIT(mod_exit_ ## exitfn, \
|
||||
SI_SUB_KLD, SI_ORDER_ANY, \
|
||||
module_init_exit_wrapper, exitfn)
|
||||
|
||||
/*
|
||||
* The usb_register and usb_deregister functions are used to register
|
||||
* usb drivers with the usb subsystem.
|
||||
*/
|
||||
int usb_register(struct usb_driver *driver);
|
||||
int usb_deregister(struct usb_driver *driver);
|
||||
|
||||
/*
|
||||
* usb_get_dev and usb_put_dev - increment/decrement the reference count
|
||||
* of the usb device structure.
|
||||
*
|
||||
* Original body of usb_get_dev:
|
||||
*
|
||||
* if (dev)
|
||||
* get_device(&dev->dev);
|
||||
* return dev;
|
||||
*
|
||||
* Reference counts are not currently used in this compatibility
|
||||
* layer. So these functions will do nothing.
|
||||
*/
|
||||
static inline struct usb_device *
|
||||
usb_get_dev(struct usb_device *dev)
|
||||
{
|
||||
return dev;
|
||||
}
|
||||
|
||||
static inline void
|
||||
usb_put_dev(struct usb_device *dev)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// rtw_usb_compat_linux
|
||||
int rtw_usb_submit_urb(struct urb *urb, uint16_t mem_flags);
|
||||
int rtw_usb_unlink_urb(struct urb *urb);
|
||||
int rtw_usb_clear_halt(struct usb_device *dev, struct usb_host_endpoint *uhe);
|
||||
int rtw_usb_control_msg(struct usb_device *dev, struct usb_host_endpoint *uhe,
|
||||
uint8_t request, uint8_t requesttype,
|
||||
uint16_t value, uint16_t index, void *data,
|
||||
uint16_t size, usb_timeout_t timeout);
|
||||
int rtw_usb_set_interface(struct usb_device *dev, uint8_t iface_no, uint8_t alt_index);
|
||||
int rtw_usb_setup_endpoint(struct usb_device *dev,
|
||||
struct usb_host_endpoint *uhe, usb_size_t bufsize);
|
||||
struct urb *rtw_usb_alloc_urb(uint16_t iso_packets, uint16_t mem_flags);
|
||||
struct usb_host_endpoint *rtw_usb_find_host_endpoint(struct usb_device *dev, uint8_t type, uint8_t ep);
|
||||
struct usb_host_interface *rtw_usb_altnum_to_altsetting(const struct usb_interface *intf, uint8_t alt_index);
|
||||
struct usb_interface *rtw_usb_ifnum_to_if(struct usb_device *dev, uint8_t iface_no);
|
||||
void *rtw_usbd_get_intfdata(struct usb_interface *intf);
|
||||
void rtw_usb_linux_register(void *arg);
|
||||
void rtw_usb_linux_deregister(void *arg);
|
||||
void rtw_usb_linux_free_device(struct usb_device *dev);
|
||||
void rtw_usb_free_urb(struct urb *urb);
|
||||
void rtw_usb_init_urb(struct urb *urb);
|
||||
void rtw_usb_kill_urb(struct urb *urb);
|
||||
void rtw_usb_set_intfdata(struct usb_interface *intf, void *data);
|
||||
void rtw_usb_fill_bulk_urb(struct urb *urb, struct usb_device *udev,
|
||||
struct usb_host_endpoint *uhe, void *buf,
|
||||
int length, usb_complete_t callback, void *arg);
|
||||
int rtw_usb_bulk_msg(struct usb_device *udev, struct usb_host_endpoint *uhe,
|
||||
void *data, int len, uint16_t *pactlen, usb_timeout_t timeout);
|
||||
void *usb_get_intfdata(struct usb_interface *intf);
|
||||
int usb_linux_init_endpoints(struct usb_device *udev);
|
||||
|
||||
|
||||
|
||||
typedef struct urb * PURB;
|
||||
|
||||
typedef unsigned gfp_t;
|
||||
#define __GFP_WAIT ((gfp_t)0x10u) /* Can wait and reschedule? */
|
||||
#define __GFP_HIGH ((gfp_t)0x20u) /* Should access emergency pools? */
|
||||
#define __GFP_IO ((gfp_t)0x40u) /* Can start physical IO? */
|
||||
#define __GFP_FS ((gfp_t)0x80u) /* Can call down to low-level FS? */
|
||||
#define __GFP_COLD ((gfp_t)0x100u) /* Cache-cold page required */
|
||||
#define __GFP_NOWARN ((gfp_t)0x200u) /* Suppress page allocation failure warning */
|
||||
#define __GFP_REPEAT ((gfp_t)0x400u) /* Retry the allocation. Might fail */
|
||||
#define __GFP_NOFAIL ((gfp_t)0x800u) /* Retry for ever. Cannot fail */
|
||||
#define __GFP_NORETRY ((gfp_t)0x1000u)/* Do not retry. Might fail */
|
||||
#define __GFP_NO_GROW ((gfp_t)0x2000u)/* Slab internal usage */
|
||||
#define __GFP_COMP ((gfp_t)0x4000u)/* Add compound page metadata */
|
||||
#define __GFP_ZERO ((gfp_t)0x8000u)/* Return zeroed page on success */
|
||||
#define __GFP_NOMEMALLOC ((gfp_t)0x10000u) /* Don't use emergency reserves */
|
||||
#define __GFP_HARDWALL ((gfp_t)0x20000u) /* Enforce hardwall cpuset memory allocs */
|
||||
|
||||
/* This equals 0, but use constants in case they ever change */
|
||||
#define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH)
|
||||
/* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */
|
||||
#define GFP_ATOMIC (__GFP_HIGH)
|
||||
#define GFP_NOIO (__GFP_WAIT)
|
||||
#define GFP_NOFS (__GFP_WAIT | __GFP_IO)
|
||||
#define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS)
|
||||
#define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
|
||||
#define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | \
|
||||
__GFP_HIGHMEM)
|
||||
|
||||
|
||||
#endif // kenny add Linux compatibility code for Linux USB
|
||||
|
||||
__inline static _list *get_next(_list *list)
|
||||
{
|
||||
return list->next;
|
||||
}
|
||||
|
||||
__inline static _list *get_list_head(_queue *queue)
|
||||
{
|
||||
return (&(queue->queue));
|
||||
}
|
||||
|
||||
|
||||
#define LIST_CONTAINOR(ptr, type, member) \
|
||||
((type *)((char *)(ptr)-(SIZE_T)(&((type *)0)->member)))
|
||||
|
||||
|
||||
__inline static void _enter_critical(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_lock_irqsave(plock, *pirqL);
|
||||
}
|
||||
|
||||
__inline static void _exit_critical(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_unlock_irqrestore(plock, *pirqL);
|
||||
}
|
||||
|
||||
__inline static void _enter_critical_ex(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_lock_irqsave(plock, *pirqL);
|
||||
}
|
||||
|
||||
__inline static void _exit_critical_ex(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_unlock_irqrestore(plock, *pirqL);
|
||||
}
|
||||
|
||||
__inline static void _enter_critical_bh(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_lock_bh(plock, *pirqL);
|
||||
}
|
||||
|
||||
__inline static void _exit_critical_bh(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_unlock_bh(plock, *pirqL);
|
||||
}
|
||||
|
||||
__inline static void _enter_critical_mutex(_mutex *pmutex, _irqL *pirqL)
|
||||
{
|
||||
|
||||
mtx_lock(pmutex);
|
||||
|
||||
}
|
||||
|
||||
|
||||
__inline static void _exit_critical_mutex(_mutex *pmutex, _irqL *pirqL)
|
||||
{
|
||||
|
||||
mtx_unlock(pmutex);
|
||||
|
||||
}
|
||||
static inline void __list_del(struct list_head * prev, struct list_head * next)
|
||||
{
|
||||
next->prev = prev;
|
||||
prev->next = next;
|
||||
}
|
||||
static inline void INIT_LIST_HEAD(struct list_head *list)
|
||||
{
|
||||
list->next = list;
|
||||
list->prev = list;
|
||||
}
|
||||
__inline static void rtw_list_delete(_list *plist)
|
||||
{
|
||||
__list_del(plist->prev, plist->next);
|
||||
INIT_LIST_HEAD(plist);
|
||||
}
|
||||
|
||||
__inline static void _init_timer(_timer *ptimer,_nic_hdl padapter,void *pfunc,void* cntx)
|
||||
{
|
||||
ptimer->function = pfunc;
|
||||
ptimer->arg = cntx;
|
||||
callout_init(&ptimer->callout, CALLOUT_MPSAFE);
|
||||
}
|
||||
|
||||
__inline static void _set_timer(_timer *ptimer,u32 delay_time)
|
||||
{
|
||||
// mod_timer(ptimer , (jiffies+(delay_time*HZ/1000)));
|
||||
if(ptimer->function && ptimer->arg){
|
||||
rtw_mtx_lock(NULL);
|
||||
callout_reset(&ptimer->callout, delay_time,ptimer->function, ptimer->arg);
|
||||
rtw_mtx_unlock(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
__inline static void _cancel_timer(_timer *ptimer,u8 *bcancelled)
|
||||
{
|
||||
// del_timer_sync(ptimer);
|
||||
// *bcancelled= _TRUE;//TRUE ==1; FALSE==0
|
||||
rtw_mtx_lock(NULL);
|
||||
callout_drain(&ptimer->callout);
|
||||
rtw_mtx_unlock(NULL);
|
||||
}
|
||||
|
||||
__inline static void _init_workitem(_workitem *pwork, void *pfunc, PVOID cntx)
|
||||
{
|
||||
printf("%s Not implement yet! \n",__FUNCTION__);
|
||||
}
|
||||
|
||||
__inline static void _set_workitem(_workitem *pwork)
|
||||
{
|
||||
printf("%s Not implement yet! \n",__FUNCTION__);
|
||||
// schedule_work(pwork);
|
||||
}
|
||||
|
||||
//
|
||||
// Global Mutex: can only be used at PASSIVE level.
|
||||
//
|
||||
|
||||
#define ACQUIRE_GLOBAL_MUTEX(_MutexCounter) \
|
||||
{ \
|
||||
}
|
||||
|
||||
#define RELEASE_GLOBAL_MUTEX(_MutexCounter) \
|
||||
{ \
|
||||
}
|
||||
|
||||
#define ATOMIC_INIT(i) { (i) }
|
||||
|
||||
static __inline void thread_enter(char *name);
|
||||
|
||||
//Atomic integer operations
|
||||
typedef uint32_t ATOMIC_T ;
|
||||
|
||||
#define rtw_netdev_priv(netdev) (((struct ifnet *)netdev)->if_softc)
|
||||
|
||||
#define rtw_free_netdev(netdev) if_free((netdev))
|
||||
|
||||
#define NDEV_FMT "%s"
|
||||
#define NDEV_ARG(ndev) ""
|
||||
#define ADPT_FMT "%s"
|
||||
#define ADPT_ARG(adapter) ""
|
||||
#define FUNC_NDEV_FMT "%s"
|
||||
#define FUNC_NDEV_ARG(ndev) __func__
|
||||
#define FUNC_ADPT_FMT "%s"
|
||||
#define FUNC_ADPT_ARG(adapter) __func__
|
||||
|
||||
#define STRUCT_PACKED
|
||||
|
||||
#endif
|
||||
|
||||
192
include/osdep_service_ce.h
Normal file
192
include/osdep_service_ce.h
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __OSDEP_CE_SERVICE_H_
|
||||
#define __OSDEP_CE_SERVICE_H_
|
||||
|
||||
|
||||
#include <ndis.h>
|
||||
#include <ntddndis.h>
|
||||
|
||||
#ifdef CONFIG_SDIO_HCI
|
||||
#include "SDCardDDK.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_HCI
|
||||
#include <usbdi.h>
|
||||
#endif
|
||||
|
||||
typedef HANDLE _sema;
|
||||
typedef LIST_ENTRY _list;
|
||||
typedef NDIS_STATUS _OS_STATUS;
|
||||
|
||||
typedef NDIS_SPIN_LOCK _lock;
|
||||
|
||||
typedef HANDLE _rwlock; //Mutex
|
||||
|
||||
typedef u32 _irqL;
|
||||
|
||||
typedef NDIS_HANDLE _nic_hdl;
|
||||
|
||||
|
||||
typedef NDIS_MINIPORT_TIMER _timer;
|
||||
|
||||
struct __queue {
|
||||
LIST_ENTRY queue;
|
||||
_lock lock;
|
||||
};
|
||||
|
||||
typedef NDIS_PACKET _pkt;
|
||||
typedef NDIS_BUFFER _buffer;
|
||||
typedef struct __queue _queue;
|
||||
|
||||
typedef HANDLE _thread_hdl_;
|
||||
typedef DWORD thread_return;
|
||||
typedef void* thread_context;
|
||||
typedef NDIS_WORK_ITEM _workitem;
|
||||
|
||||
#define thread_exit() ExitThread(STATUS_SUCCESS); return 0;
|
||||
|
||||
|
||||
#define SEMA_UPBND (0x7FFFFFFF) //8192
|
||||
|
||||
__inline static _list *get_prev(_list *list)
|
||||
{
|
||||
return list->Blink;
|
||||
}
|
||||
|
||||
__inline static _list *get_next(_list *list)
|
||||
{
|
||||
return list->Flink;
|
||||
}
|
||||
|
||||
__inline static _list *get_list_head(_queue *queue)
|
||||
{
|
||||
return (&(queue->queue));
|
||||
}
|
||||
|
||||
#define LIST_CONTAINOR(ptr, type, member) CONTAINING_RECORD(ptr, type, member)
|
||||
|
||||
__inline static void _enter_critical(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
NdisAcquireSpinLock(plock);
|
||||
}
|
||||
|
||||
__inline static void _exit_critical(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
NdisReleaseSpinLock(plock);
|
||||
}
|
||||
|
||||
__inline static _enter_critical_ex(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
NdisDprAcquireSpinLock(plock);
|
||||
}
|
||||
|
||||
__inline static _exit_critical_ex(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
NdisDprReleaseSpinLock(plock);
|
||||
}
|
||||
|
||||
|
||||
__inline static void _enter_hwio_critical(_rwlock *prwlock, _irqL *pirqL)
|
||||
{
|
||||
WaitForSingleObject(*prwlock, INFINITE );
|
||||
|
||||
}
|
||||
|
||||
__inline static void _exit_hwio_critical(_rwlock *prwlock, _irqL *pirqL)
|
||||
{
|
||||
ReleaseMutex(*prwlock);
|
||||
}
|
||||
|
||||
__inline static void rtw_list_delete(_list *plist)
|
||||
{
|
||||
RemoveEntryList(plist);
|
||||
InitializeListHead(plist);
|
||||
}
|
||||
|
||||
#define RTW_TIMER_HDL_ARGS IN PVOID SystemSpecific1, IN PVOID FunctionContext, IN PVOID SystemSpecific2, IN PVOID SystemSpecific3
|
||||
|
||||
__inline static void _init_timer(_timer *ptimer,_nic_hdl nic_hdl,void *pfunc,PVOID cntx)
|
||||
{
|
||||
NdisMInitializeTimer(ptimer, nic_hdl, pfunc, cntx);
|
||||
}
|
||||
|
||||
__inline static void _set_timer(_timer *ptimer,u32 delay_time)
|
||||
{
|
||||
NdisMSetTimer(ptimer,delay_time);
|
||||
}
|
||||
|
||||
__inline static void _cancel_timer(_timer *ptimer,u8 *bcancelled)
|
||||
{
|
||||
NdisMCancelTimer(ptimer,bcancelled);
|
||||
}
|
||||
|
||||
__inline static void _init_workitem(_workitem *pwork, void *pfunc, PVOID cntx)
|
||||
{
|
||||
|
||||
NdisInitializeWorkItem(pwork, pfunc, cntx);
|
||||
}
|
||||
|
||||
__inline static void _set_workitem(_workitem *pwork)
|
||||
{
|
||||
NdisScheduleWorkItem(pwork);
|
||||
}
|
||||
|
||||
#define ATOMIC_INIT(i) { (i) }
|
||||
|
||||
//
|
||||
// Global Mutex: can only be used at PASSIVE level.
|
||||
//
|
||||
|
||||
#define ACQUIRE_GLOBAL_MUTEX(_MutexCounter) \
|
||||
{ \
|
||||
while (NdisInterlockedIncrement((PULONG)&(_MutexCounter)) != 1)\
|
||||
{ \
|
||||
NdisInterlockedDecrement((PULONG)&(_MutexCounter)); \
|
||||
NdisMSleep(10000); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define RELEASE_GLOBAL_MUTEX(_MutexCounter) \
|
||||
{ \
|
||||
NdisInterlockedDecrement((PULONG)&(_MutexCounter)); \
|
||||
}
|
||||
|
||||
// limitation of path length
|
||||
#define PATH_LENGTH_MAX MAX_PATH
|
||||
|
||||
//Atomic integer operations
|
||||
#define ATOMIC_T LONG
|
||||
|
||||
#define NDEV_FMT "%s"
|
||||
#define NDEV_ARG(ndev) ""
|
||||
#define ADPT_FMT "%s"
|
||||
#define ADPT_ARG(adapter) ""
|
||||
#define FUNC_NDEV_FMT "%s"
|
||||
#define FUNC_NDEV_ARG(ndev) __func__
|
||||
#define FUNC_ADPT_FMT "%s"
|
||||
#define FUNC_ADPT_ARG(adapter) __func__
|
||||
|
||||
#define STRUCT_PACKED
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
425
include/osdep_service_linux.h
Normal file
425
include/osdep_service_linux.h
Normal file
|
|
@ -0,0 +1,425 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2013 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __OSDEP_LINUX_SERVICE_H_
|
||||
#define __OSDEP_LINUX_SERVICE_H_
|
||||
|
||||
#include <linux/version.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/module.h>
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,5))
|
||||
#include <linux/kref.h>
|
||||
#endif
|
||||
//#include <linux/smp_lock.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/circ_buf.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/io.h>
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26))
|
||||
#include <asm/semaphore.h>
|
||||
#else
|
||||
#include <linux/semaphore.h>
|
||||
#endif
|
||||
#include <linux/sem.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/wireless.h>
|
||||
#include <net/iw_handler.h>
|
||||
#include <linux/if_arp.h>
|
||||
#include <linux/rtnetlink.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/interrupt.h> // for struct tasklet_struct
|
||||
#include <linux/ip.h>
|
||||
#include <linux/kthread.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/vmalloc.h>
|
||||
|
||||
#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,5,41))
|
||||
#include <linux/tqueue.h>
|
||||
#endif
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 7, 0))
|
||||
#include <uapi/linux/limits.h>
|
||||
#else
|
||||
#include <linux/limits.h>
|
||||
#endif
|
||||
|
||||
#ifdef RTK_DMP_PLATFORM
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12))
|
||||
#include <linux/pageremap.h>
|
||||
#endif
|
||||
#include <asm/io.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NET_RADIO
|
||||
#define CONFIG_WIRELESS_EXT
|
||||
#endif
|
||||
|
||||
/* Monitor mode */
|
||||
#include <net/ieee80211_radiotap.h>
|
||||
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
/* #include <linux/ieee80211.h> */
|
||||
#include <net/cfg80211.h>
|
||||
#endif //CONFIG_IOCTL_CFG80211
|
||||
|
||||
#ifdef CONFIG_TCP_CSUM_OFFLOAD_TX
|
||||
#include <linux/in.h>
|
||||
#include <linux/udp.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HAS_EARLYSUSPEND
|
||||
#include <linux/earlysuspend.h>
|
||||
#endif //CONFIG_HAS_EARLYSUSPEND
|
||||
|
||||
#ifdef CONFIG_EFUSE_CONFIG_FILE
|
||||
#include <linux/fs.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_HCI
|
||||
#include <linux/usb.h>
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21))
|
||||
#include <linux/usb_ch9.h>
|
||||
#else
|
||||
#include <linux/usb/ch9.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BT_COEXIST_SOCKET_TRX
|
||||
#include <net/sock.h>
|
||||
#include <net/tcp.h>
|
||||
#include <linux/udp.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/netlink.h>
|
||||
#endif //CONFIG_BT_COEXIST_SOCKET_TRX
|
||||
|
||||
#ifdef CONFIG_USB_HCI
|
||||
typedef struct urb * PURB;
|
||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,22))
|
||||
#ifdef CONFIG_USB_SUSPEND
|
||||
#define CONFIG_AUTOSUSPEND 1
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef struct semaphore _sema;
|
||||
typedef spinlock_t _lock;
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
|
||||
typedef struct mutex _mutex;
|
||||
#else
|
||||
typedef struct semaphore _mutex;
|
||||
#endif
|
||||
typedef struct timer_list _timer;
|
||||
|
||||
struct __queue {
|
||||
struct list_head queue;
|
||||
_lock lock;
|
||||
};
|
||||
|
||||
typedef struct sk_buff _pkt;
|
||||
typedef unsigned char _buffer;
|
||||
|
||||
typedef struct __queue _queue;
|
||||
typedef struct list_head _list;
|
||||
typedef int _OS_STATUS;
|
||||
//typedef u32 _irqL;
|
||||
typedef unsigned long _irqL;
|
||||
typedef struct net_device * _nic_hdl;
|
||||
|
||||
typedef void* _thread_hdl_;
|
||||
typedef int thread_return;
|
||||
typedef void* thread_context;
|
||||
|
||||
#define thread_exit() complete_and_exit(NULL, 0)
|
||||
|
||||
typedef void timer_hdl_return;
|
||||
typedef void* timer_hdl_context;
|
||||
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,41))
|
||||
typedef struct work_struct _workitem;
|
||||
#else
|
||||
typedef struct tq_struct _workitem;
|
||||
#endif
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24))
|
||||
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
|
||||
#endif
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
|
||||
// Porting from linux kernel, for compatible with old kernel.
|
||||
static inline unsigned char *skb_tail_pointer(const struct sk_buff *skb)
|
||||
{
|
||||
return skb->tail;
|
||||
}
|
||||
|
||||
static inline void skb_reset_tail_pointer(struct sk_buff *skb)
|
||||
{
|
||||
skb->tail = skb->data;
|
||||
}
|
||||
|
||||
static inline void skb_set_tail_pointer(struct sk_buff *skb, const int offset)
|
||||
{
|
||||
skb->tail = skb->data + offset;
|
||||
}
|
||||
|
||||
static inline unsigned char *skb_end_pointer(const struct sk_buff *skb)
|
||||
{
|
||||
return skb->end;
|
||||
}
|
||||
#endif
|
||||
|
||||
__inline static _list *get_next(_list *list)
|
||||
{
|
||||
return list->next;
|
||||
}
|
||||
|
||||
__inline static _list *get_list_head(_queue *queue)
|
||||
{
|
||||
return (&(queue->queue));
|
||||
}
|
||||
|
||||
|
||||
#define LIST_CONTAINOR(ptr, type, member) \
|
||||
((type *)((char *)(ptr)-(SIZE_T)(&((type *)0)->member)))
|
||||
|
||||
|
||||
__inline static void _enter_critical(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_lock_irqsave(plock, *pirqL);
|
||||
}
|
||||
|
||||
__inline static void _exit_critical(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_unlock_irqrestore(plock, *pirqL);
|
||||
}
|
||||
|
||||
__inline static void _enter_critical_ex(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_lock_irqsave(plock, *pirqL);
|
||||
}
|
||||
|
||||
__inline static void _exit_critical_ex(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_unlock_irqrestore(plock, *pirqL);
|
||||
}
|
||||
|
||||
__inline static void _enter_critical_bh(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_lock_bh(plock);
|
||||
}
|
||||
|
||||
__inline static void _exit_critical_bh(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
spin_unlock_bh(plock);
|
||||
}
|
||||
|
||||
__inline static int _enter_critical_mutex(_mutex *pmutex, _irqL *pirqL)
|
||||
{
|
||||
int ret = 0;
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
|
||||
//mutex_lock(pmutex);
|
||||
ret = mutex_lock_interruptible(pmutex);
|
||||
#else
|
||||
ret = down_interruptible(pmutex);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
__inline static void _exit_critical_mutex(_mutex *pmutex, _irqL *pirqL)
|
||||
{
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
|
||||
mutex_unlock(pmutex);
|
||||
#else
|
||||
up(pmutex);
|
||||
#endif
|
||||
}
|
||||
|
||||
__inline static void rtw_list_delete(_list *plist)
|
||||
{
|
||||
list_del_init(plist);
|
||||
}
|
||||
|
||||
#define RTW_TIMER_HDL_ARGS void *FunctionContext
|
||||
|
||||
__inline static void _init_timer(_timer *ptimer,_nic_hdl nic_hdl,void *pfunc,void* cntx)
|
||||
{
|
||||
//setup_timer(ptimer, pfunc,(u32)cntx);
|
||||
ptimer->function = pfunc;
|
||||
ptimer->data = (unsigned long)cntx;
|
||||
init_timer(ptimer);
|
||||
}
|
||||
|
||||
__inline static void _set_timer(_timer *ptimer,u32 delay_time)
|
||||
{
|
||||
mod_timer(ptimer , (jiffies+(delay_time*HZ/1000)));
|
||||
}
|
||||
|
||||
__inline static void _cancel_timer(_timer *ptimer,u8 *bcancelled)
|
||||
{
|
||||
del_timer_sync(ptimer);
|
||||
*bcancelled= _TRUE;//TRUE ==1; FALSE==0
|
||||
}
|
||||
|
||||
|
||||
__inline static void _init_workitem(_workitem *pwork, void *pfunc, PVOID cntx)
|
||||
{
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20))
|
||||
INIT_WORK(pwork, pfunc);
|
||||
#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,41))
|
||||
INIT_WORK(pwork, pfunc,pwork);
|
||||
#else
|
||||
INIT_TQUEUE(pwork, pfunc,pwork);
|
||||
#endif
|
||||
}
|
||||
|
||||
__inline static void _set_workitem(_workitem *pwork)
|
||||
{
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,41))
|
||||
schedule_work(pwork);
|
||||
#else
|
||||
schedule_task(pwork);
|
||||
#endif
|
||||
}
|
||||
|
||||
__inline static void _cancel_workitem_sync(_workitem *pwork)
|
||||
{
|
||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,22))
|
||||
cancel_work_sync(pwork);
|
||||
#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,41))
|
||||
flush_scheduled_work();
|
||||
#else
|
||||
flush_scheduled_tasks();
|
||||
#endif
|
||||
}
|
||||
//
|
||||
// Global Mutex: can only be used at PASSIVE level.
|
||||
//
|
||||
|
||||
#define ACQUIRE_GLOBAL_MUTEX(_MutexCounter) \
|
||||
{ \
|
||||
while (atomic_inc_return((atomic_t *)&(_MutexCounter)) != 1)\
|
||||
{ \
|
||||
atomic_dec((atomic_t *)&(_MutexCounter)); \
|
||||
msleep(10); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define RELEASE_GLOBAL_MUTEX(_MutexCounter) \
|
||||
{ \
|
||||
atomic_dec((atomic_t *)&(_MutexCounter)); \
|
||||
}
|
||||
|
||||
static inline int rtw_netif_queue_stopped(struct net_device *pnetdev)
|
||||
{
|
||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35))
|
||||
return (netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 0)) &&
|
||||
netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 1)) &&
|
||||
netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 2)) &&
|
||||
netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 3)) );
|
||||
#else
|
||||
return netif_queue_stopped(pnetdev);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void rtw_netif_wake_queue(struct net_device *pnetdev)
|
||||
{
|
||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35))
|
||||
netif_tx_wake_all_queues(pnetdev);
|
||||
#else
|
||||
netif_wake_queue(pnetdev);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void rtw_netif_start_queue(struct net_device *pnetdev)
|
||||
{
|
||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35))
|
||||
netif_tx_start_all_queues(pnetdev);
|
||||
#else
|
||||
netif_start_queue(pnetdev);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void rtw_netif_stop_queue(struct net_device *pnetdev)
|
||||
{
|
||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35))
|
||||
netif_tx_stop_all_queues(pnetdev);
|
||||
#else
|
||||
netif_stop_queue(pnetdev);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void rtw_merge_string(char *dst, int dst_len, const char *src1, const char *src2)
|
||||
{
|
||||
int len = 0;
|
||||
len += snprintf(dst+len, dst_len - len, "%s", src1);
|
||||
len += snprintf(dst+len, dst_len - len, "%s", src2);
|
||||
}
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
|
||||
#define rtw_signal_process(pid, sig) kill_pid(find_vpid((pid)),(sig), 1)
|
||||
#else //(LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
|
||||
#define rtw_signal_process(pid, sig) kill_proc((pid), (sig), 1)
|
||||
#endif //(LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
|
||||
|
||||
|
||||
// Suspend lock prevent system from going suspend
|
||||
#ifdef CONFIG_WAKELOCK
|
||||
#include <linux/wakelock.h>
|
||||
#elif defined(CONFIG_ANDROID_POWER)
|
||||
#include <linux/android_power.h>
|
||||
#endif
|
||||
|
||||
// limitation of path length
|
||||
#define PATH_LENGTH_MAX PATH_MAX
|
||||
|
||||
//Atomic integer operations
|
||||
#define ATOMIC_T atomic_t
|
||||
|
||||
#define rtw_netdev_priv(netdev) ( ((struct rtw_netdev_priv_indicator *)netdev_priv(netdev))->priv )
|
||||
|
||||
#define NDEV_FMT "%s"
|
||||
#define NDEV_ARG(ndev) ndev->name
|
||||
#define ADPT_FMT "%s"
|
||||
#define ADPT_ARG(adapter) adapter->pnetdev->name
|
||||
#define FUNC_NDEV_FMT "%s(%s)"
|
||||
#define FUNC_NDEV_ARG(ndev) __func__, ndev->name
|
||||
#define FUNC_ADPT_FMT "%s(%s)"
|
||||
#define FUNC_ADPT_ARG(adapter) __func__, adapter->pnetdev->name
|
||||
|
||||
struct rtw_netdev_priv_indicator {
|
||||
void *priv;
|
||||
u32 sizeof_priv;
|
||||
};
|
||||
struct net_device *rtw_alloc_etherdev_with_old_priv(int sizeof_priv, void *old_priv);
|
||||
extern struct net_device * rtw_alloc_etherdev(int sizeof_priv);
|
||||
|
||||
#define STRUCT_PACKED __attribute__ ((packed))
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
202
include/osdep_service_xp.h
Normal file
202
include/osdep_service_xp.h
Normal file
|
|
@ -0,0 +1,202 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2013 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __OSDEP_LINUX_SERVICE_H_
|
||||
#define __OSDEP_LINUX_SERVICE_H_
|
||||
|
||||
#include <ndis.h>
|
||||
#include <ntddk.h>
|
||||
#include <ntddndis.h>
|
||||
#include <ntdef.h>
|
||||
|
||||
#ifdef CONFIG_USB_HCI
|
||||
#include <usb.h>
|
||||
#include <usbioctl.h>
|
||||
#include <usbdlib.h>
|
||||
#endif
|
||||
|
||||
typedef KSEMAPHORE _sema;
|
||||
typedef LIST_ENTRY _list;
|
||||
typedef NDIS_STATUS _OS_STATUS;
|
||||
|
||||
|
||||
typedef NDIS_SPIN_LOCK _lock;
|
||||
|
||||
typedef KMUTEX _mutex;
|
||||
|
||||
typedef KIRQL _irqL;
|
||||
|
||||
// USB_PIPE for WINCE , but handle can be use just integer under windows
|
||||
typedef NDIS_HANDLE _nic_hdl;
|
||||
|
||||
|
||||
typedef NDIS_MINIPORT_TIMER _timer;
|
||||
|
||||
struct __queue {
|
||||
LIST_ENTRY queue;
|
||||
_lock lock;
|
||||
};
|
||||
|
||||
typedef NDIS_PACKET _pkt;
|
||||
typedef NDIS_BUFFER _buffer;
|
||||
typedef struct __queue _queue;
|
||||
|
||||
typedef PKTHREAD _thread_hdl_;
|
||||
typedef void thread_return;
|
||||
typedef void* thread_context;
|
||||
|
||||
typedef NDIS_WORK_ITEM _workitem;
|
||||
|
||||
#define thread_exit() PsTerminateSystemThread(STATUS_SUCCESS);
|
||||
|
||||
#define HZ 10000000
|
||||
#define SEMA_UPBND (0x7FFFFFFF) //8192
|
||||
|
||||
__inline static _list *get_next(_list *list)
|
||||
{
|
||||
return list->Flink;
|
||||
}
|
||||
|
||||
__inline static _list *get_list_head(_queue *queue)
|
||||
{
|
||||
return (&(queue->queue));
|
||||
}
|
||||
|
||||
|
||||
#define LIST_CONTAINOR(ptr, type, member) CONTAINING_RECORD(ptr, type, member)
|
||||
|
||||
|
||||
__inline static _enter_critical(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
NdisAcquireSpinLock(plock);
|
||||
}
|
||||
|
||||
__inline static _exit_critical(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
NdisReleaseSpinLock(plock);
|
||||
}
|
||||
|
||||
|
||||
__inline static _enter_critical_ex(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
NdisDprAcquireSpinLock(plock);
|
||||
}
|
||||
|
||||
__inline static _exit_critical_ex(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
NdisDprReleaseSpinLock(plock);
|
||||
}
|
||||
|
||||
__inline static void _enter_critical_bh(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
NdisDprAcquireSpinLock(plock);
|
||||
}
|
||||
|
||||
__inline static void _exit_critical_bh(_lock *plock, _irqL *pirqL)
|
||||
{
|
||||
NdisDprReleaseSpinLock(plock);
|
||||
}
|
||||
|
||||
__inline static _enter_critical_mutex(_mutex *pmutex, _irqL *pirqL)
|
||||
{
|
||||
KeWaitForSingleObject(pmutex, Executive, KernelMode, FALSE, NULL);
|
||||
}
|
||||
|
||||
|
||||
__inline static _exit_critical_mutex(_mutex *pmutex, _irqL *pirqL)
|
||||
{
|
||||
KeReleaseMutex(pmutex, FALSE);
|
||||
}
|
||||
|
||||
|
||||
__inline static void rtw_list_delete(_list *plist)
|
||||
{
|
||||
RemoveEntryList(plist);
|
||||
InitializeListHead(plist);
|
||||
}
|
||||
|
||||
#define RTW_TIMER_HDL_ARGS IN PVOID SystemSpecific1, IN PVOID FunctionContext, IN PVOID SystemSpecific2, IN PVOID SystemSpecific3
|
||||
|
||||
__inline static void _init_timer(_timer *ptimer,_nic_hdl nic_hdl,void *pfunc,PVOID cntx)
|
||||
{
|
||||
NdisMInitializeTimer(ptimer, nic_hdl, pfunc, cntx);
|
||||
}
|
||||
|
||||
__inline static void _set_timer(_timer *ptimer,u32 delay_time)
|
||||
{
|
||||
NdisMSetTimer(ptimer,delay_time);
|
||||
}
|
||||
|
||||
__inline static void _cancel_timer(_timer *ptimer,u8 *bcancelled)
|
||||
{
|
||||
NdisMCancelTimer(ptimer,bcancelled);
|
||||
}
|
||||
|
||||
__inline static void _init_workitem(_workitem *pwork, void *pfunc, PVOID cntx)
|
||||
{
|
||||
|
||||
NdisInitializeWorkItem(pwork, pfunc, cntx);
|
||||
}
|
||||
|
||||
__inline static void _set_workitem(_workitem *pwork)
|
||||
{
|
||||
NdisScheduleWorkItem(pwork);
|
||||
}
|
||||
|
||||
|
||||
#define ATOMIC_INIT(i) { (i) }
|
||||
|
||||
//
|
||||
// Global Mutex: can only be used at PASSIVE level.
|
||||
//
|
||||
|
||||
#define ACQUIRE_GLOBAL_MUTEX(_MutexCounter) \
|
||||
{ \
|
||||
while (NdisInterlockedIncrement((PULONG)&(_MutexCounter)) != 1)\
|
||||
{ \
|
||||
NdisInterlockedDecrement((PULONG)&(_MutexCounter)); \
|
||||
NdisMSleep(10000); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define RELEASE_GLOBAL_MUTEX(_MutexCounter) \
|
||||
{ \
|
||||
NdisInterlockedDecrement((PULONG)&(_MutexCounter)); \
|
||||
}
|
||||
|
||||
// limitation of path length
|
||||
#define PATH_LENGTH_MAX MAX_PATH
|
||||
|
||||
//Atomic integer operations
|
||||
#define ATOMIC_T LONG
|
||||
|
||||
|
||||
#define NDEV_FMT "%s"
|
||||
#define NDEV_ARG(ndev) ""
|
||||
#define ADPT_FMT "%s"
|
||||
#define ADPT_ARG(adapter) ""
|
||||
#define FUNC_NDEV_FMT "%s"
|
||||
#define FUNC_NDEV_ARG(ndev) __func__
|
||||
#define FUNC_ADPT_FMT "%s"
|
||||
#define FUNC_ADPT_ARG(adapter) __func__
|
||||
|
||||
#define STRUCT_PACKED
|
||||
|
||||
#endif
|
||||
|
||||
46
include/pci_hal.h
Normal file
46
include/pci_hal.h
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __PCI_HAL_H__
|
||||
#define __PCI_HAL_H__
|
||||
|
||||
#ifdef CONFIG_RTL8188E
|
||||
void rtl8188ee_set_hal_ops(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A)
|
||||
void rtl8812ae_set_hal_ops(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_RTL8192E)
|
||||
void rtl8192ee_set_hal_ops(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8723B
|
||||
void rtl8723be_set_hal_ops(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8814A
|
||||
void rtl8814ae_set_hal_ops(_adapter *padapter);
|
||||
#endif
|
||||
|
||||
u8 rtw_set_hal_ops(_adapter *padapter);
|
||||
|
||||
#endif //__PCIE_HAL_H__
|
||||
|
||||
78
include/pci_ops.h
Normal file
78
include/pci_ops.h
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __PCI_OPS_H_
|
||||
#define __PCI_OPS_H_
|
||||
|
||||
|
||||
#ifdef CONFIG_RTL8188E
|
||||
u32 rtl8188ee_init_desc_ring(_adapter *padapter);
|
||||
u32 rtl8188ee_free_desc_ring(_adapter *padapter);
|
||||
void rtl8188ee_reset_desc_ring(_adapter *padapter);
|
||||
int rtl8188ee_interrupt(PADAPTER Adapter);
|
||||
void rtl8188ee_xmit_tasklet(void *priv);
|
||||
void rtl8188ee_recv_tasklet(void *priv);
|
||||
void rtl8188ee_prepare_bcn_tasklet(void *priv);
|
||||
void rtl8188ee_set_intf_ops(struct _io_ops *pops);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A)
|
||||
u32 rtl8812ae_init_desc_ring(_adapter *padapter);
|
||||
u32 rtl8812ae_free_desc_ring(_adapter *padapter);
|
||||
void rtl8812ae_reset_desc_ring(_adapter *padapter);
|
||||
int rtl8812ae_interrupt(PADAPTER Adapter);
|
||||
void rtl8812ae_xmit_tasklet(void *priv);
|
||||
void rtl8812ae_recv_tasklet(void *priv);
|
||||
void rtl8812ae_prepare_bcn_tasklet(void *priv);
|
||||
void rtl8812ae_set_intf_ops(struct _io_ops *pops);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8192E
|
||||
u32 rtl8192ee_init_desc_ring(_adapter *padapter);
|
||||
u32 rtl8192ee_free_desc_ring(_adapter *padapter);
|
||||
void rtl8192ee_reset_desc_ring(_adapter *padapter);
|
||||
void rtl8192ee_recv_tasklet(void *priv);
|
||||
void rtl8192ee_prepare_bcn_tasklet(void *priv);
|
||||
int rtl8192ee_interrupt(PADAPTER Adapter);
|
||||
void rtl8192ee_set_intf_ops(struct _io_ops *pops);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8723B
|
||||
u32 rtl8723be_init_desc_ring(_adapter *padapter);
|
||||
u32 rtl8723be_free_desc_ring(_adapter *padapter);
|
||||
void rtl8723be_reset_desc_ring(_adapter *padapter);
|
||||
int rtl8723be_interrupt(PADAPTER Adapter);
|
||||
void rtl8723be_recv_tasklet(void *priv);
|
||||
void rtl8723be_prepare_bcn_tasklet(void *priv);
|
||||
void rtl8723be_set_intf_ops(struct _io_ops *pops);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8814A
|
||||
u32 rtl8814ae_init_desc_ring(_adapter *padapter);
|
||||
u32 rtl8814ae_free_desc_ring(_adapter *padapter);
|
||||
void rtl8814ae_reset_desc_ring(_adapter *padapter);
|
||||
int rtl8814ae_interrupt(PADAPTER Adapter);
|
||||
void rtl8814ae_xmit_tasklet(void *priv);
|
||||
void rtl8814ae_recv_tasklet(void *priv);
|
||||
void rtl8814ae_prepare_bcn_tasklet(void *priv);
|
||||
void rtl8814ae_set_intf_ops(struct _io_ops *pops);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
32
include/pci_osintf.h
Normal file
32
include/pci_osintf.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __PCI_OSINTF_H
|
||||
#define __PCI_OSINTF_H
|
||||
|
||||
|
||||
void rtw_pci_disable_aspm(_adapter *padapter);
|
||||
void rtw_pci_enable_aspm(_adapter *padapter);
|
||||
void PlatformClearPciPMEStatus(PADAPTER Adapter);
|
||||
#ifdef CONFIG_64BIT_DMA
|
||||
u8 PlatformEnableDMA64(PADAPTER Adapter);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
65
include/recv_osdep.h
Normal file
65
include/recv_osdep.h
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RECV_OSDEP_H_
|
||||
#define __RECV_OSDEP_H_
|
||||
|
||||
|
||||
extern sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter);
|
||||
extern void _rtw_free_recv_priv (struct recv_priv *precvpriv);
|
||||
|
||||
|
||||
extern s32 rtw_recv_entry(union recv_frame *precv_frame);
|
||||
extern int rtw_recv_indicatepkt(_adapter *adapter, union recv_frame *precv_frame);
|
||||
extern void rtw_recv_returnpacket(IN _nic_hdl cnxt, IN _pkt *preturnedpkt);
|
||||
|
||||
extern int rtw_recv_monitor(_adapter *padapter, union recv_frame *precv_frame);
|
||||
|
||||
extern void rtw_hostapd_mlme_rx(_adapter *padapter, union recv_frame *precv_frame);
|
||||
|
||||
struct sta_info;
|
||||
extern void rtw_handle_tkip_mic_err(_adapter *padapter, struct sta_info *sta, u8 bgroup);
|
||||
|
||||
|
||||
int rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter);
|
||||
void rtw_free_recv_priv (struct recv_priv *precvpriv);
|
||||
|
||||
|
||||
int rtw_os_recv_resource_init(struct recv_priv *precvpriv, _adapter *padapter);
|
||||
int rtw_os_recv_resource_alloc(_adapter *padapter, union recv_frame *precvframe);
|
||||
void rtw_os_recv_resource_free(struct recv_priv *precvpriv);
|
||||
|
||||
|
||||
int rtw_os_alloc_recvframe(_adapter *padapter, union recv_frame *precvframe, u8 *pdata, _pkt *pskb);
|
||||
void rtw_os_free_recvframe(union recv_frame *precvframe);
|
||||
|
||||
|
||||
int rtw_os_recvbuf_resource_alloc(_adapter *padapter, struct recv_buf *precvbuf);
|
||||
int rtw_os_recvbuf_resource_free(_adapter *padapter, struct recv_buf *precvbuf);
|
||||
|
||||
_pkt *rtw_os_alloc_msdu_pkt(union recv_frame *prframe, u16 nSubframe_Length, u8 *pdata);
|
||||
void rtw_os_recv_indicate_pkt(_adapter *padapter, _pkt *pkt, struct rx_pkt_attrib *pattrib);
|
||||
|
||||
void rtw_os_read_port(_adapter *padapter, struct recv_buf *precvbuf);
|
||||
|
||||
void rtw_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl);
|
||||
|
||||
|
||||
#endif //
|
||||
|
||||
186
include/rtl8188e_cmd.h
Normal file
186
include/rtl8188e_cmd.h
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188E_CMD_H__
|
||||
#define __RTL8188E_CMD_H__
|
||||
|
||||
#if 0
|
||||
enum cmd_msg_element_id
|
||||
{
|
||||
NONE_CMDMSG_EID,
|
||||
AP_OFFLOAD_EID = 0,
|
||||
SET_PWRMODE_EID = 1,
|
||||
JOINBSS_RPT_EID = 2,
|
||||
RSVD_PAGE_EID = 3,
|
||||
RSSI_4_EID = 4,
|
||||
RSSI_SETTING_EID = 5,
|
||||
MACID_CONFIG_EID = 6,
|
||||
MACID_PS_MODE_EID = 7,
|
||||
P2P_PS_OFFLOAD_EID = 8,
|
||||
SELECTIVE_SUSPEND_ROF_CMD = 9,
|
||||
P2P_PS_CTW_CMD_EID = 32,
|
||||
MAX_CMDMSG_EID
|
||||
};
|
||||
#else
|
||||
typedef enum _RTL8188E_H2C_CMD_ID
|
||||
{
|
||||
//Class Common
|
||||
H2C_COM_RSVD_PAGE =0x00,
|
||||
H2C_COM_MEDIA_STATUS_RPT =0x01,
|
||||
H2C_COM_SCAN =0x02,
|
||||
H2C_COM_KEEP_ALIVE =0x03,
|
||||
H2C_COM_DISCNT_DECISION =0x04,
|
||||
#ifndef CONFIG_WOWLAN
|
||||
H2C_COM_WWLAN =0x05,
|
||||
#endif
|
||||
H2C_COM_INIT_OFFLOAD =0x06,
|
||||
H2C_COM_REMOTE_WAKE_CTL =0x07,
|
||||
H2C_COM_AP_OFFLOAD =0x08,
|
||||
H2C_COM_BCN_RSVD_PAGE =0x09,
|
||||
H2C_COM_PROB_RSP_RSVD_PAGE =0x0A,
|
||||
|
||||
//Class PS
|
||||
H2C_PS_PWR_MODE =0x20,
|
||||
H2C_PS_TUNE_PARA =0x21,
|
||||
H2C_PS_TUNE_PARA_2 =0x22,
|
||||
H2C_PS_LPS_PARA =0x23,
|
||||
H2C_PS_P2P_OFFLOAD =0x24,
|
||||
|
||||
//Class DM
|
||||
H2C_DM_MACID_CFG =0x40,
|
||||
H2C_DM_TXBF =0x41,
|
||||
H2C_RSSI_REPORT =0x42,
|
||||
//Class BT
|
||||
H2C_BT_COEX_MASK =0x60,
|
||||
H2C_BT_COEX_GPIO_MODE =0x61,
|
||||
H2C_BT_DAC_SWING_VAL =0x62,
|
||||
H2C_BT_PSD_RST =0x63,
|
||||
|
||||
//Class Remote WakeUp
|
||||
#ifdef CONFIG_WOWLAN
|
||||
H2C_COM_WWLAN =0x80,
|
||||
H2C_COM_REMOTE_WAKE_CTRL =0x81,
|
||||
H2C_COM_AOAC_GLOBAL_INFO =0x82,
|
||||
H2C_COM_AOAC_RSVD_PAGE =0x83,
|
||||
#endif
|
||||
|
||||
//Class
|
||||
//H2C_RESET_TSF =0xc0,
|
||||
}RTL8188E_H2C_CMD_ID;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
struct cmd_msg_parm {
|
||||
u8 eid; //element id
|
||||
u8 sz; // sz
|
||||
u8 buf[6];
|
||||
};
|
||||
|
||||
enum{
|
||||
PWRS
|
||||
};
|
||||
|
||||
typedef struct _SETPWRMODE_PARM {
|
||||
u8 Mode;//0:Active,1:LPS,2:WMMPS
|
||||
//u8 RLBM:4;//0:Min,1:Max,2: User define
|
||||
u8 SmartPS_RLBM;//LPS=0:PS_Poll,1:PS_Poll,2:NullData,WMM=0:PS_Poll,1:NullData
|
||||
u8 AwakeInterval; // unit: beacon interval
|
||||
u8 bAllQueueUAPSD;
|
||||
u8 PwrState;//AllON(0x0c),RFON(0x04),RFOFF(0x00)
|
||||
} SETPWRMODE_PARM, *PSETPWRMODE_PARM;
|
||||
|
||||
struct H2C_SS_RFOFF_PARAM{
|
||||
u8 ROFOn; // 1: on, 0:off
|
||||
u16 gpio_period; // unit: 1024 us
|
||||
}__attribute__ ((packed));
|
||||
|
||||
|
||||
typedef struct JOINBSSRPT_PARM_88E{
|
||||
u8 OpMode; // RT_MEDIA_STATUS
|
||||
#ifdef CONFIG_WOWLAN
|
||||
u8 MacID; // MACID
|
||||
#endif //CONFIG_WOWLAN
|
||||
}JOINBSSRPT_PARM_88E, *PJOINBSSRPT_PARM_88E;
|
||||
|
||||
/* move to hal_com_h2c.h
|
||||
typedef struct _RSVDPAGE_LOC_88E {
|
||||
u8 LocProbeRsp;
|
||||
u8 LocPsPoll;
|
||||
u8 LocNullData;
|
||||
u8 LocQosNull;
|
||||
u8 LocBTQosNull;
|
||||
#ifdef CONFIG_WOWLAN
|
||||
u8 LocRemoteCtrlInfo;
|
||||
u8 LocArpRsp;
|
||||
u8 LocNbrAdv;
|
||||
u8 LocGTKRsp;
|
||||
u8 LocGTKInfo;
|
||||
u8 LocProbeReq;
|
||||
u8 LocNetList;
|
||||
#endif //CONFIG_WOWLAN
|
||||
} RSVDPAGE_LOC_88E, *PRSVDPAGE_LOC_88E;
|
||||
*/
|
||||
|
||||
// host message to firmware cmd
|
||||
void rtl8188e_set_FwPwrMode_cmd(PADAPTER padapter, u8 Mode);
|
||||
void rtl8188e_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus);
|
||||
u8 rtl8188e_set_rssi_cmd(PADAPTER padapter, u8 *param);
|
||||
u8 rtl8188e_set_raid_cmd(_adapter *padapter, u32 bitmap, u8 *arg);
|
||||
void rtl8188e_Add_RateATid(PADAPTER padapter, u64 rate_bitmap, u8 *arg, u8 rssi_level);
|
||||
s32 FillH2CCmd_88E(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
|
||||
//u8 rtl8192c_set_FwSelectSuspend_cmd(PADAPTER padapter, u8 bfwpoll, u16 period);
|
||||
u8 GetTxBufferRsvdPageNum8188E(_adapter *padapter, bool wowlan);
|
||||
|
||||
|
||||
#ifdef CONFIG_P2P
|
||||
void rtl8188e_set_p2p_ps_offload_cmd(PADAPTER padapter, u8 p2p_ps_state);
|
||||
#endif //CONFIG_P2P
|
||||
|
||||
void CheckFwRsvdPageContent(PADAPTER padapter);
|
||||
|
||||
#ifdef CONFIG_TSF_RESET_OFFLOAD
|
||||
//u8 rtl8188e_reset_tsf(_adapter *padapter, u8 reset_port);
|
||||
int reset_tsf(PADAPTER Adapter, u8 reset_port );
|
||||
#endif // CONFIG_TSF_RESET_OFFLOAD
|
||||
|
||||
//#define H2C_8188E_RSVDPAGE_LOC_LEN 5
|
||||
//#define H2C_8188E_AOAC_RSVDPAGE_LOC_LEN 7
|
||||
|
||||
#ifdef CONFIG_WOWLAN
|
||||
void SetFwRelatedForWoWLAN8188ES(_adapter* padapter, u8 bHostIsGoingtoSleep);
|
||||
#endif//CONFIG_WOWLAN
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
//---------------------------------- H2C CMD CONTENT --------------------------------------------------//
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
//
|
||||
/* move to hal_com_h2c.h
|
||||
//_RSVDPAGE_LOC_CMD_0x00
|
||||
#define SET_8188E_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
|
||||
#define SET_8188E_H2CCMD_RSVDPAGE_LOC_PSPOLL(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value)
|
||||
#define SET_8188E_H2CCMD_RSVDPAGE_LOC_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value)
|
||||
#define SET_8188E_H2CCMD_RSVDPAGE_LOC_QOS_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value)
|
||||
// AOAC_RSVDPAGE_LOC_0x83
|
||||
#define SET_8188E_H2CCMD_AOAC_RSVDPAGE_LOC_REMOTE_WAKE_CTRL_INFO(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 8, __Value)
|
||||
#define SET_8188E_H2CCMD_AOAC_RSVDPAGE_LOC_ARP_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value)
|
||||
*/
|
||||
#endif//__RTL8188E_CMD_H__
|
||||
|
||||
|
||||
37
include/rtl8188e_dm.h
Normal file
37
include/rtl8188e_dm.h
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188E_DM_H__
|
||||
#define __RTL8188E_DM_H__
|
||||
|
||||
void rtl8188e_init_dm_priv(IN PADAPTER Adapter);
|
||||
void rtl8188e_deinit_dm_priv(IN PADAPTER Adapter);
|
||||
void rtl8188e_InitHalDm(IN PADAPTER Adapter);
|
||||
void rtl8188e_HalDmWatchDog(IN PADAPTER Adapter);
|
||||
|
||||
//VOID rtl8192c_dm_CheckTXPowerTracking(IN PADAPTER Adapter);
|
||||
|
||||
//void rtl8192c_dm_RF_Saving(IN PADAPTER pAdapter, IN u8 bForceInNormal);
|
||||
|
||||
#ifdef CONFIG_ANTENNA_DIVERSITY
|
||||
void AntDivCompare8188E(PADAPTER Adapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src);
|
||||
u8 AntDivBeforeLink8188E(PADAPTER Adapter );
|
||||
#endif
|
||||
#endif
|
||||
|
||||
321
include/rtl8188e_hal.h
Normal file
321
include/rtl8188e_hal.h
Normal file
|
|
@ -0,0 +1,321 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188E_HAL_H__
|
||||
#define __RTL8188E_HAL_H__
|
||||
|
||||
//#include "hal_com.h"
|
||||
#include "hal_data.h"
|
||||
|
||||
//include HAL Related header after HAL Related compiling flags
|
||||
#include "rtl8188e_spec.h"
|
||||
#include "Hal8188EPhyReg.h"
|
||||
#include "Hal8188EPhyCfg.h"
|
||||
#include "rtl8188e_rf.h"
|
||||
#include "rtl8188e_dm.h"
|
||||
#include "rtl8188e_recv.h"
|
||||
#include "rtl8188e_xmit.h"
|
||||
#include "rtl8188e_cmd.h"
|
||||
#include "rtl8188e_led.h"
|
||||
#include "Hal8188EPwrSeq.h"
|
||||
#ifdef DBG_CONFIG_ERROR_DETECT
|
||||
#include "rtl8188e_sreset.h"
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
// Fw Array
|
||||
#define Rtl8188E_FwImageArray Rtl8188EFwImgArray
|
||||
#define Rtl8188E_FWImgArrayLength Rtl8188EFWImgArrayLength
|
||||
#ifdef CONFIG_WOWLAN
|
||||
#define Rtl8188E_FwWoWImageArray Array_MP_8188E_FW_WoWLAN
|
||||
#define Rtl8188E_FwWoWImgArrayLength ArrayLength_MP_8188E_FW_WoWLAN
|
||||
#endif //CONFIG_WOWLAN
|
||||
#endif
|
||||
|
||||
|
||||
#define RTL8188E_FW_IMG "rtl8188e/FW_NIC.bin"
|
||||
#define RTL8188E_FW_WW_IMG "rtl8188e/FW_WoWLAN.bin"
|
||||
#define RTL8188E_PHY_REG "rtl8188e/PHY_REG.txt"
|
||||
#define RTL8188E_PHY_RADIO_A "rtl8188e/RadioA.txt"
|
||||
#define RTL8188E_PHY_RADIO_B "rtl8188e/RadioB.txt"
|
||||
#define RTL8188E_TXPWR_TRACK "rtl8188e/TxPowerTrack.txt"
|
||||
#define RTL8188E_AGC_TAB "rtl8188e/AGC_TAB.txt"
|
||||
#define RTL8188E_PHY_MACREG "rtl8188e/MAC_REG.txt"
|
||||
#define RTL8188E_PHY_REG_PG "rtl8188e/PHY_REG_PG.txt"
|
||||
#define RTL8188E_PHY_REG_MP "rtl8188e/PHY_REG_MP.txt"
|
||||
#define RTL8188E_TXPWR_LMT "rtl8188e/TXPWR_LMT.txt"
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// RTL8188E Power Configuration CMDs for USB/SDIO/PCIE interfaces
|
||||
//---------------------------------------------------------------------
|
||||
#define Rtl8188E_NIC_PWR_ON_FLOW rtl8188E_power_on_flow
|
||||
#define Rtl8188E_NIC_RF_OFF_FLOW rtl8188E_radio_off_flow
|
||||
#define Rtl8188E_NIC_DISABLE_FLOW rtl8188E_card_disable_flow
|
||||
#define Rtl8188E_NIC_ENABLE_FLOW rtl8188E_card_enable_flow
|
||||
#define Rtl8188E_NIC_SUSPEND_FLOW rtl8188E_suspend_flow
|
||||
#define Rtl8188E_NIC_RESUME_FLOW rtl8188E_resume_flow
|
||||
#define Rtl8188E_NIC_PDN_FLOW rtl8188E_hwpdn_flow
|
||||
#define Rtl8188E_NIC_LPS_ENTER_FLOW rtl8188E_enter_lps_flow
|
||||
#define Rtl8188E_NIC_LPS_LEAVE_FLOW rtl8188E_leave_lps_flow
|
||||
|
||||
|
||||
#if 1 // download firmware related data structure
|
||||
#define MAX_FW_8188E_SIZE 0x8000 //32768,32k / 16384,16k
|
||||
|
||||
#define FW_8188E_SIZE 0x4000 //16384,16k
|
||||
#define FW_8188E_SIZE_2 0x8000 //32768,32k
|
||||
|
||||
#define FW_8188E_START_ADDRESS 0x1000
|
||||
#define FW_8188E_END_ADDRESS 0x1FFF //0x5FFF
|
||||
|
||||
|
||||
#define IS_FW_HEADER_EXIST_88E(_pFwHdr) ((le16_to_cpu(_pFwHdr->Signature)&0xFFF0) == 0x88E0)
|
||||
|
||||
typedef struct _RT_FIRMWARE_8188E {
|
||||
FIRMWARE_SOURCE eFWSource;
|
||||
#ifdef CONFIG_EMBEDDED_FWIMG
|
||||
u8* szFwBuffer;
|
||||
#else
|
||||
u8 szFwBuffer[MAX_FW_8188E_SIZE];
|
||||
#endif
|
||||
u32 ulFwLength;
|
||||
} RT_FIRMWARE_8188E, *PRT_FIRMWARE_8188E;
|
||||
|
||||
//
|
||||
// This structure must be cared byte-ordering
|
||||
//
|
||||
|
||||
typedef struct _RT_8188E_FIRMWARE_HDR
|
||||
{
|
||||
// 8-byte alinment required
|
||||
|
||||
//--- LONG WORD 0 ----
|
||||
u16 Signature; // 92C0: test chip; 92C, 88C0: test chip; 88C1: MP A-cut; 92C1: MP A-cut
|
||||
u8 Category; // AP/NIC and USB/PCI
|
||||
u8 Function; // Reserved for different FW function indcation, for further use when driver needs to download different FW in different conditions
|
||||
u16 Version; // FW Version
|
||||
u8 Subversion; // FW Subversion, default 0x00
|
||||
u16 Rsvd1;
|
||||
|
||||
|
||||
//--- LONG WORD 1 ----
|
||||
u8 Month; // Release time Month field
|
||||
u8 Date; // Release time Date field
|
||||
u8 Hour; // Release time Hour field
|
||||
u8 Minute; // Release time Minute field
|
||||
u16 RamCodeSize; // The size of RAM code
|
||||
u8 Foundry;
|
||||
u8 Rsvd2;
|
||||
|
||||
//--- LONG WORD 2 ----
|
||||
u32 SvnIdx; // The SVN entry index
|
||||
u32 Rsvd3;
|
||||
|
||||
//--- LONG WORD 3 ----
|
||||
u32 Rsvd4;
|
||||
u32 Rsvd5;
|
||||
}RT_8188E_FIRMWARE_HDR, *PRT_8188E_FIRMWARE_HDR;
|
||||
#endif // download firmware related data structure
|
||||
|
||||
|
||||
#define DRIVER_EARLY_INT_TIME_8188E 0x05
|
||||
#define BCN_DMA_ATIME_INT_TIME_8188E 0x02
|
||||
|
||||
|
||||
//#define MAX_RX_DMA_BUFFER_SIZE_88E 0x2400 //9k for 88E nornal chip , //MaxRxBuff=10k-max(TxReportSize(64*8), WOLPattern(16*24))
|
||||
#define RX_DMA_SIZE_88E(__Adapter) ((!IS_VENDOR_8188E_I_CUT_SERIES(__Adapter))?0x2800:0x4000)
|
||||
|
||||
#ifdef CONFIG_WOWLAN
|
||||
#define RESV_FMWF WKFMCAM_SIZE*MAX_WKFM_NUM /* 16 entries, for each is 24 bytes*/
|
||||
#else
|
||||
#define RESV_FMWF 0
|
||||
#endif
|
||||
|
||||
#define RX_DMA_RESERVD_FW_FEATURE 0x200 /* for tx report (64*8) */
|
||||
|
||||
#define MAX_RX_DMA_BUFFER_SIZE_88E(__Adapter) RX_DMA_SIZE_88E(__Adapter)-RX_DMA_RESERVD_FW_FEATURE
|
||||
|
||||
#define MAX_TX_REPORT_BUFFER_SIZE 0x0400 /* 1k */
|
||||
|
||||
// Note: We will divide number of page equally for each queue other than public queue!
|
||||
// 22k = 22528 bytes = 176 pages (@page = 128 bytes)
|
||||
// must reserved about 7 pages for LPS => 176-7 = 169 (0xA9)
|
||||
// 2*BCN / 1*ps-poll / 1*null-data /1*prob_rsp /1*QOS null-data /1*BT QOS null-data
|
||||
|
||||
#define BCNQ_PAGE_NUM_88E 0x08
|
||||
|
||||
//For WoWLan , more reserved page
|
||||
#ifdef CONFIG_WOWLAN
|
||||
#define WOWLAN_PAGE_NUM_88E 0x00
|
||||
#else
|
||||
#define WOWLAN_PAGE_NUM_88E 0x00
|
||||
#endif
|
||||
|
||||
/* Note:
|
||||
Tx FIFO Size : previous CUT:22K /I_CUT after:32KB
|
||||
Tx page Size : 128B
|
||||
Total page numbers : 176(0xB0) / 256(0x100)
|
||||
*/
|
||||
#define TOTAL_PAGE_NUMBER_88E(_Adapter) ((IS_VENDOR_8188E_I_CUT_SERIES(_Adapter)?0x100:0xB0) - 1)/* must reserved 1 page for dma issue */
|
||||
#define TX_TOTAL_PAGE_NUMBER_88E(_Adapter) (TOTAL_PAGE_NUMBER_88E(_Adapter) - BCNQ_PAGE_NUM_88E - WOWLAN_PAGE_NUM_88E)
|
||||
#define TX_PAGE_BOUNDARY_88E(_Adapter) (TX_TOTAL_PAGE_NUMBER_88E(_Adapter) + 1) /* beacon header start address */
|
||||
|
||||
#define WMM_NORMAL_TX_TOTAL_PAGE_NUMBER_88E(_Adapter) TX_TOTAL_PAGE_NUMBER_88E(_Adapter)
|
||||
#define WMM_NORMAL_TX_PAGE_BOUNDARY_88E(_Adapter) (WMM_NORMAL_TX_TOTAL_PAGE_NUMBER_88E(_Adapter) + 1)
|
||||
|
||||
// For Normal Chip Setting
|
||||
// (HPQ + LPQ + NPQ + PUBQ) shall be TX_TOTAL_PAGE_NUMBER_8723B
|
||||
#define NORMAL_PAGE_NUM_HPQ_88E 0x0
|
||||
#define NORMAL_PAGE_NUM_LPQ_88E 0x09
|
||||
#define NORMAL_PAGE_NUM_NPQ_88E 0x0
|
||||
|
||||
// Note: For Normal Chip Setting, modify later
|
||||
#define WMM_NORMAL_PAGE_NUM_HPQ_88E 0x29
|
||||
#define WMM_NORMAL_PAGE_NUM_LPQ_88E 0x1C
|
||||
#define WMM_NORMAL_PAGE_NUM_NPQ_88E 0x1C
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Chip specific
|
||||
//-------------------------------------------------------------------------
|
||||
#define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3)
|
||||
#define CHIP_BONDING_92C_1T2R 0x1
|
||||
#define CHIP_BONDING_88C_USB_MCARD 0x2
|
||||
#define CHIP_BONDING_88C_USB_HP 0x1
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Channel Plan
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
|
||||
#define EFUSE_REAL_CONTENT_LEN 512
|
||||
#define EFUSE_MAP_LEN 128
|
||||
#define EFUSE_MAX_SECTION 16
|
||||
#define EFUSE_IC_ID_OFFSET 506 //For some inferiority IC purpose. added by Roger, 2009.09.02.
|
||||
#define AVAILABLE_EFUSE_ADDR(addr) (addr < EFUSE_REAL_CONTENT_LEN)
|
||||
//
|
||||
// <Roger_Notes>
|
||||
// To prevent out of boundary programming case,
|
||||
// leave 1byte and program full section
|
||||
// 9bytes + 1byt + 5bytes and pre 1byte.
|
||||
// For worst case:
|
||||
// | 1byte|----8bytes----|1byte|--5bytes--|
|
||||
// | | Reserved(14bytes) |
|
||||
//
|
||||
#define EFUSE_OOB_PROTECT_BYTES 15 // PG data exclude header, dummy 6 bytes frome CP test and reserved 1byte.
|
||||
|
||||
#define EFUSE_REAL_CONTENT_LEN_88E 256
|
||||
#define EFUSE_MAP_LEN_88E 512
|
||||
#define EFUSE_MAX_SECTION_88E 64
|
||||
#define EFUSE_MAX_WORD_UNIT_88E 4
|
||||
#define EFUSE_IC_ID_OFFSET_88E 506 //For some inferiority IC purpose. added by Roger, 2009.09.02.
|
||||
#define AVAILABLE_EFUSE_ADDR_88E(addr) (addr < EFUSE_REAL_CONTENT_LEN_88E)
|
||||
// <Roger_Notes> To prevent out of boundary programming case, leave 1byte and program full section
|
||||
// 9bytes + 1byt + 5bytes and pre 1byte.
|
||||
// For worst case:
|
||||
// | 2byte|----8bytes----|1byte|--7bytes--| //92D
|
||||
#define EFUSE_OOB_PROTECT_BYTES_88E 18 // PG data exclude header, dummy 7 bytes frome CP test and reserved 1byte.
|
||||
#define EFUSE_PROTECT_BYTES_BANK_88E 16
|
||||
|
||||
|
||||
//========================================================
|
||||
// EFUSE for BT definition
|
||||
//========================================================
|
||||
#define EFUSE_BT_REAL_CONTENT_LEN 1536 // 512*3
|
||||
#define EFUSE_BT_MAP_LEN 1024 // 1k bytes
|
||||
#define EFUSE_BT_MAX_SECTION 128 // 1024/8
|
||||
|
||||
#define EFUSE_PROTECT_BYTES_BANK 16
|
||||
|
||||
#define INCLUDE_MULTI_FUNC_BT(_Adapter) (GET_HAL_DATA(_Adapter)->MultiFunc & RT_MULTI_FUNC_BT)
|
||||
#define INCLUDE_MULTI_FUNC_GPS(_Adapter) (GET_HAL_DATA(_Adapter)->MultiFunc & RT_MULTI_FUNC_GPS)
|
||||
|
||||
//#define IS_MULTI_FUNC_CHIP(_Adapter) (((((PHAL_DATA_TYPE)(_Adapter->HalData))->MultiFunc) & (RT_MULTI_FUNC_BT|RT_MULTI_FUNC_GPS)) ? _TRUE : _FALSE)
|
||||
|
||||
//#define RT_IS_FUNC_DISABLED(__pAdapter, __FuncBits) ( (__pAdapter)->DisabledFunctions & (__FuncBits) )
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
void InterruptRecognized8188EE(PADAPTER Adapter, PRT_ISR_CONTENT pIsrContent);
|
||||
void UpdateInterruptMask8188EE(PADAPTER Adapter, u32 AddMSR, u32 AddMSR1, u32 RemoveMSR, u32 RemoveMSR1);
|
||||
#endif //CONFIG_PCI_HCI
|
||||
|
||||
// rtl8188e_hal_init.c
|
||||
|
||||
s32 rtl8188e_FirmwareDownload(PADAPTER padapter, BOOLEAN bUsedWoWLANFw);
|
||||
void _8051Reset88E(PADAPTER padapter);
|
||||
void rtl8188e_InitializeFirmwareVars(PADAPTER padapter);
|
||||
|
||||
|
||||
s32 InitLLTTable(PADAPTER padapter, u8 txpktbuf_bndy);
|
||||
|
||||
// EFuse
|
||||
u8 GetEEPROMSize8188E(PADAPTER padapter);
|
||||
void Hal_InitPGData88E(PADAPTER padapter);
|
||||
void Hal_EfuseParseIDCode88E(PADAPTER padapter, u8 *hwinfo);
|
||||
void Hal_ReadTxPowerInfo88E(PADAPTER padapter,u8* hwinfo,BOOLEAN AutoLoadFail);
|
||||
|
||||
void Hal_EfuseParseEEPROMVer88E(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail);
|
||||
void rtl8188e_EfuseParseChnlPlan(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail);
|
||||
void Hal_EfuseParseCustomerID88E(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail);
|
||||
void Hal_ReadAntennaDiversity88E (PADAPTER pAdapter,u8*PROMContent,BOOLEAN AutoLoadFail);
|
||||
void Hal_ReadThermalMeter_88E(PADAPTER Adapter,u8* PROMContent,BOOLEAN AutoloadFail);
|
||||
void Hal_EfuseParseXtal_8188E(PADAPTER pAdapter,u8* hwinfo,BOOLEAN AutoLoadFail);
|
||||
void Hal_EfuseParseBoardType88E(PADAPTER pAdapter,u8* hwinfo,BOOLEAN AutoLoadFail);
|
||||
void Hal_ReadPowerSavingMode88E(PADAPTER pAdapter,u8* hwinfo,BOOLEAN AutoLoadFail);
|
||||
|
||||
BOOLEAN HalDetectPwrDownMode88E(PADAPTER Adapter);
|
||||
|
||||
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
|
||||
void Hal_DetectWoWMode(PADAPTER pAdapter);
|
||||
#endif //CONFIG_WOWLAN
|
||||
|
||||
|
||||
#ifdef CONFIG_RF_GAIN_OFFSET
|
||||
void Hal_ReadRFGainOffset(PADAPTER pAdapter,u8* hwinfo,BOOLEAN AutoLoadFail);
|
||||
#endif //CONFIG_RF_GAIN_OFFSET
|
||||
|
||||
void rtl8188e_init_default_value(_adapter *adapter);
|
||||
|
||||
void rtl8188e_set_hal_ops(struct hal_ops *pHalFunc);
|
||||
void init_hal_spec_8188e(_adapter *adapter);
|
||||
|
||||
// register
|
||||
void SetBcnCtrlReg(PADAPTER padapter, u8 SetBits, u8 ClearBits);
|
||||
|
||||
void rtl8188e_start_thread(_adapter *padapter);
|
||||
void rtl8188e_stop_thread(_adapter *padapter);
|
||||
|
||||
void rtw_IOL_cmd_tx_pkt_buf_dump(ADAPTER *Adapter,int data_len);
|
||||
#ifdef CONFIG_IOL_EFUSE_PATCH
|
||||
s32 rtl8188e_iol_efuse_patch(PADAPTER padapter);
|
||||
#endif//CONFIG_IOL_EFUSE_PATCH
|
||||
void _InitTransferPageSize(PADAPTER padapter);
|
||||
|
||||
void SetHwReg8188E(PADAPTER padapter, u8 variable, u8 *val);
|
||||
void GetHwReg8188E(PADAPTER padapter, u8 variable, u8 *val);
|
||||
void ResumeTxBeacon(PADAPTER padapter);
|
||||
void StopTxBeacon(PADAPTER padapter);
|
||||
u8
|
||||
GetHalDefVar8188E(
|
||||
IN PADAPTER Adapter,
|
||||
IN HAL_DEF_VARIABLE eVariable,
|
||||
IN PVOID pValue
|
||||
);
|
||||
#endif //__RTL8188E_HAL_H__
|
||||
|
||||
41
include/rtl8188e_led.h
Normal file
41
include/rtl8188e_led.h
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188E_LED_H__
|
||||
#define __RTL8188E_LED_H__
|
||||
|
||||
|
||||
//================================================================================
|
||||
// Interface to manipulate LED objects.
|
||||
//================================================================================
|
||||
#ifdef CONFIG_USB_HCI
|
||||
void rtl8188eu_InitSwLeds(PADAPTER padapter);
|
||||
void rtl8188eu_DeInitSwLeds(PADAPTER padapter);
|
||||
#endif
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
void rtl8188ee_InitSwLeds(PADAPTER padapter);
|
||||
void rtl8188ee_DeInitSwLeds(PADAPTER padapter);
|
||||
#endif
|
||||
#if defined (CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
|
||||
void rtl8188es_InitSwLeds(PADAPTER padapter);
|
||||
void rtl8188es_DeInitSwLeds(PADAPTER padapter);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
175
include/rtl8188e_recv.h
Normal file
175
include/rtl8188e_recv.h
Normal file
|
|
@ -0,0 +1,175 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188E_RECV_H__
|
||||
#define __RTL8188E_RECV_H__
|
||||
|
||||
#define RECV_BLK_SZ 512
|
||||
#define RECV_BLK_CNT 16
|
||||
#define RECV_BLK_TH RECV_BLK_CNT
|
||||
|
||||
#if defined(CONFIG_USB_HCI)
|
||||
|
||||
#ifndef MAX_RECVBUF_SZ
|
||||
#ifdef PLATFORM_OS_CE
|
||||
#define MAX_RECVBUF_SZ (8192+1024) // 8K+1k
|
||||
#else
|
||||
#ifndef CONFIG_MINIMAL_MEMORY_USAGE
|
||||
//#define MAX_RECVBUF_SZ (32768) // 32k
|
||||
//#define MAX_RECVBUF_SZ (16384) //16K
|
||||
//#define MAX_RECVBUF_SZ (10240) //10K
|
||||
#ifdef CONFIG_PLATFORM_MSTAR
|
||||
#define MAX_RECVBUF_SZ (8192) // 8K
|
||||
#else
|
||||
#define MAX_RECVBUF_SZ (15360) // 15k < 16k
|
||||
#endif
|
||||
//#define MAX_RECVBUF_SZ (8192+1024) // 8K+1k
|
||||
#else
|
||||
#define MAX_RECVBUF_SZ (4000) // about 4K
|
||||
#endif
|
||||
#endif
|
||||
#endif //!MAX_RECVBUF_SZ
|
||||
|
||||
#elif defined(CONFIG_PCI_HCI)
|
||||
//#ifndef CONFIG_MINIMAL_MEMORY_USAGE
|
||||
// #define MAX_RECVBUF_SZ (9100)
|
||||
//#else
|
||||
#define MAX_RECVBUF_SZ (4000) // about 4K
|
||||
//#endif
|
||||
|
||||
|
||||
#elif defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
|
||||
|
||||
#define MAX_RECVBUF_SZ (10240)
|
||||
|
||||
#endif
|
||||
|
||||
// Rx smooth factor
|
||||
#define Rx_Smooth_Factor (20)
|
||||
|
||||
#define TX_RPT1_PKT_LEN 8
|
||||
|
||||
typedef struct rxreport_8188e
|
||||
{
|
||||
//Offset 0
|
||||
u32 pktlen:14;
|
||||
u32 crc32:1;
|
||||
u32 icverr:1;
|
||||
u32 drvinfosize:4;
|
||||
u32 security:3;
|
||||
u32 qos:1;
|
||||
u32 shift:2;
|
||||
u32 physt:1;
|
||||
u32 swdec:1;
|
||||
u32 ls:1;
|
||||
u32 fs:1;
|
||||
u32 eor:1;
|
||||
u32 own:1;
|
||||
|
||||
//Offset 4
|
||||
u32 macid:5;
|
||||
u32 tid:4;
|
||||
u32 hwrsvd:4;
|
||||
u32 amsdu:1;
|
||||
u32 paggr:1;
|
||||
u32 faggr:1;
|
||||
u32 a1fit:4;
|
||||
u32 a2fit:4;
|
||||
u32 pam:1;
|
||||
u32 pwr:1;
|
||||
u32 md:1;
|
||||
u32 mf:1;
|
||||
u32 type:2;
|
||||
u32 mc:1;
|
||||
u32 bc:1;
|
||||
|
||||
//Offset 8
|
||||
u32 seq:12;
|
||||
u32 frag:4;
|
||||
u32 nextpktlen:14;
|
||||
u32 nextind:1;
|
||||
u32 rsvd0831:1;
|
||||
|
||||
//Offset 12
|
||||
u32 rxmcs:6;
|
||||
u32 rxht:1;
|
||||
u32 gf:1;
|
||||
u32 splcp:1;
|
||||
u32 bw:1;
|
||||
u32 htc:1;
|
||||
u32 eosp:1;
|
||||
u32 bssidfit:2;
|
||||
u32 rpt_sel:2;
|
||||
u32 rsvd1216:13;
|
||||
u32 pattern_match:1;
|
||||
u32 unicastwake:1;
|
||||
u32 magicwake:1;
|
||||
|
||||
//Offset 16
|
||||
/*
|
||||
u32 pattern0match:1;
|
||||
u32 pattern1match:1;
|
||||
u32 pattern2match:1;
|
||||
u32 pattern3match:1;
|
||||
u32 pattern4match:1;
|
||||
u32 pattern5match:1;
|
||||
u32 pattern6match:1;
|
||||
u32 pattern7match:1;
|
||||
u32 pattern8match:1;
|
||||
u32 pattern9match:1;
|
||||
u32 patternamatch:1;
|
||||
u32 patternbmatch:1;
|
||||
u32 patterncmatch:1;
|
||||
u32 rsvd1613:19;
|
||||
*/
|
||||
u32 rsvd16;
|
||||
|
||||
//Offset 20
|
||||
u32 tsfl;
|
||||
|
||||
//Offset 24
|
||||
u32 bassn:12;
|
||||
u32 bavld:1;
|
||||
u32 rsvd2413:19;
|
||||
} RXREPORT, *PRXREPORT;
|
||||
|
||||
|
||||
#if defined (CONFIG_SDIO_HCI)||defined(CONFIG_GSPI_HCI)
|
||||
s32 rtl8188es_init_recv_priv(PADAPTER padapter);
|
||||
void rtl8188es_free_recv_priv(PADAPTER padapter);
|
||||
void rtl8188es_recv_hdl(PADAPTER padapter, struct recv_buf *precvbuf);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_HCI
|
||||
void rtl8188eu_init_recvbuf(_adapter *padapter, struct recv_buf *precvbuf);
|
||||
s32 rtl8188eu_init_recv_priv(PADAPTER padapter);
|
||||
void rtl8188eu_free_recv_priv(PADAPTER padapter);
|
||||
void rtl8188eu_recv_hdl(PADAPTER padapter, struct recv_buf *precvbuf);
|
||||
void rtl8188eu_recv_tasklet(void *priv);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
s32 rtl8188ee_init_recv_priv(PADAPTER padapter);
|
||||
void rtl8188ee_free_recv_priv(PADAPTER padapter);
|
||||
#endif
|
||||
|
||||
void rtl8188e_query_rx_desc_status(union recv_frame *precvframe, struct recv_stat *prxstat);
|
||||
|
||||
#endif /* __RTL8188E_RECV_H__ */
|
||||
|
||||
33
include/rtl8188e_rf.h
Normal file
33
include/rtl8188e_rf.h
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188E_RF_H__
|
||||
#define __RTL8188E_RF_H__
|
||||
|
||||
|
||||
|
||||
int PHY_RF6052_Config8188E( IN PADAPTER Adapter );
|
||||
void rtl8188e_RF_ChangeTxPath( IN PADAPTER Adapter,
|
||||
IN u16 DataRate);
|
||||
void rtl8188e_PHY_RF6052SetBandwidth(
|
||||
IN PADAPTER Adapter,
|
||||
IN CHANNEL_WIDTH Bandwidth);
|
||||
|
||||
#endif//__RTL8188E_RF_H__
|
||||
|
||||
164
include/rtl8188e_spec.h
Normal file
164
include/rtl8188e_spec.h
Normal file
|
|
@ -0,0 +1,164 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*******************************************************************************/
|
||||
#ifndef __RTL8188E_SPEC_H__
|
||||
#define __RTL8188E_SPEC_H__
|
||||
|
||||
|
||||
//============================================================
|
||||
// 8188E Regsiter offset definition
|
||||
//============================================================
|
||||
|
||||
|
||||
//============================================================
|
||||
//
|
||||
//============================================================
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0000h ~ 0x00FFh System Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
#define REG_BB_PAD_CTRL 0x0064
|
||||
#define REG_HMEBOX_E0 0x0088
|
||||
#define REG_HMEBOX_E1 0x008A
|
||||
#define REG_HMEBOX_E2 0x008C
|
||||
#define REG_HMEBOX_E3 0x008E
|
||||
#define REG_HMEBOX_EXT_0 0x01F0
|
||||
#define REG_HMEBOX_EXT_1 0x01F4
|
||||
#define REG_HMEBOX_EXT_2 0x01F8
|
||||
#define REG_HMEBOX_EXT_3 0x01FC
|
||||
#define REG_HIMR_88E 0x00B0 //RTL8188E
|
||||
#define REG_HISR_88E 0x00B4 //RTL8188E
|
||||
#define REG_HIMRE_88E 0x00B8 //RTL8188E
|
||||
#define REG_HISRE_88E 0x00BC //RTL8188E
|
||||
#define REG_MACID_NO_LINK_0 0x0484
|
||||
#define REG_MACID_NO_LINK_1 0x0488
|
||||
#define REG_MACID_PAUSE_0 0x048c
|
||||
#define REG_MACID_PAUSE_1 0x0490
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0100h ~ 0x01FFh MACTOP General Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
#define REG_PKTBUF_DBG_ADDR (REG_PKTBUF_DBG_CTRL)
|
||||
#define REG_RXPKTBUF_DBG (REG_PKTBUF_DBG_CTRL+2)
|
||||
#define REG_TXPKTBUF_DBG (REG_PKTBUF_DBG_CTRL+3)
|
||||
#define REG_WOWLAN_WAKE_REASON REG_MCUTST_WOWLAN
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0200h ~ 0x027Fh TXDMA Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0280h ~ 0x02FFh RXDMA Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0300h ~ 0x03FFh PCIe
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0400h ~ 0x047Fh Protocol Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
#ifdef CONFIG_WOWLAN
|
||||
#define REG_TXPKTBUF_IV_LOW 0x01a4
|
||||
#define REG_TXPKTBUF_IV_HIGH 0x01a8
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0500h ~ 0x05FFh EDCA Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0600h ~ 0x07FFh WMAC Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
#ifdef CONFIG_RF_GAIN_OFFSET
|
||||
#define EEPROM_RF_GAIN_OFFSET 0xC1
|
||||
#define EEPROM_RF_GAIN_VAL 0xF6
|
||||
#define EEPROM_THERMAL_OFFSET 0xF5
|
||||
#endif //CONFIG_RF_GAIN_OFFSET
|
||||
//----------------------------------------------------------------------------
|
||||
// 88E Driver Initialization Offload REG_FDHM0(Offset 0x88, 8 bits)
|
||||
//----------------------------------------------------------------------------
|
||||
//IOL config for REG_FDHM0(Reg0x88)
|
||||
#define CMD_INIT_LLT BIT0
|
||||
#define CMD_READ_EFUSE_MAP BIT1
|
||||
#define CMD_EFUSE_PATCH BIT2
|
||||
#define CMD_IOCONFIG BIT3
|
||||
#define CMD_INIT_LLT_ERR BIT4
|
||||
#define CMD_READ_EFUSE_MAP_ERR BIT5
|
||||
#define CMD_EFUSE_PATCH_ERR BIT6
|
||||
#define CMD_IOCONFIG_ERR BIT7
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// Redifine register definition for compatibility
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
// TODO: use these definition when using REG_xxx naming rule.
|
||||
// NOTE: DO NOT Remove these definition. Use later.
|
||||
#define ISR_88E REG_HISR_88E
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
//#define IMR_RX_MASK (IMR_ROK_88E|IMR_RDU_88E|IMR_RXFOVW_88E)
|
||||
#define IMR_TX_MASK (IMR_VODOK_88E|IMR_VIDOK_88E|IMR_BEDOK_88E|IMR_BKDOK_88E|IMR_MGNTDOK_88E|IMR_HIGHDOK_88E|IMR_BCNDERR0_88E)
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
#define RT_BCN_INT_MASKS (IMR_BCNDMAINT0_88E | IMR_TBDOK_88E | IMR_TBDER_88E | IMR_BCNDMAINT_E_88E)
|
||||
#else
|
||||
#define RT_BCN_INT_MASKS (IMR_BCNDMAINT0_88E | IMR_TBDOK_88E | IMR_TBDER_88E)
|
||||
#endif
|
||||
|
||||
#define RT_AC_INT_MASKS (IMR_VIDOK_88E | IMR_VODOK_88E | IMR_BEDOK_88E|IMR_BKDOK_88E)
|
||||
#endif
|
||||
|
||||
|
||||
//========================================================
|
||||
// General definitions
|
||||
//========================================================
|
||||
|
||||
#define MACID_NUM_88E 64
|
||||
#define SEC_CAM_ENT_NUM_88E 32
|
||||
#define NSS_NUM_88E 1
|
||||
#define BAND_CAP_88E (BAND_CAP_2G)
|
||||
#define BW_CAP_88E (BW_CAP_20M | BW_CAP_40M)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// 8192C EEPROM/EFUSE share register definition.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#define EFUSE_ACCESS_ON 0x69 // For RTL8723 only.
|
||||
#define EFUSE_ACCESS_OFF 0x00 // For RTL8723 only.
|
||||
|
||||
#endif /* __RTL8188E_SPEC_H__ */
|
||||
|
||||
30
include/rtl8188e_sreset.h
Normal file
30
include/rtl8188e_sreset.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _RTL8188E_SRESET_H_
|
||||
#define _RTL8188E_SRESET_H_
|
||||
|
||||
#include <rtw_sreset.h>
|
||||
|
||||
#ifdef DBG_CONFIG_ERROR_DETECT
|
||||
extern void rtl8188e_sreset_xmit_status_check(_adapter *padapter);
|
||||
extern void rtl8188e_sreset_linked_status_check(_adapter *padapter);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
299
include/rtl8188e_xmit.h
Normal file
299
include/rtl8188e_xmit.h
Normal file
|
|
@ -0,0 +1,299 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188E_XMIT_H__
|
||||
#define __RTL8188E_XMIT_H__
|
||||
|
||||
|
||||
|
||||
|
||||
//For 88e early mode
|
||||
#define SET_EARLYMODE_PKTNUM(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 0, 3, __Value)
|
||||
#define SET_EARLYMODE_LEN0(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 4, 12, __Value)
|
||||
#define SET_EARLYMODE_LEN1(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 16, 12, __Value)
|
||||
#define SET_EARLYMODE_LEN2_1(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 28, 4, __Value)
|
||||
#define SET_EARLYMODE_LEN2_2(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 0, 8, __Value)
|
||||
#define SET_EARLYMODE_LEN3(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 8, 12, __Value)
|
||||
#define SET_EARLYMODE_LEN4(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 20, 12, __Value)
|
||||
|
||||
//
|
||||
//defined for TX DESC Operation
|
||||
//
|
||||
|
||||
#define MAX_TID (15)
|
||||
|
||||
//OFFSET 0
|
||||
#define OFFSET_SZ 0
|
||||
#define OFFSET_SHT 16
|
||||
#define BMC BIT(24)
|
||||
#define LSG BIT(26)
|
||||
#define FSG BIT(27)
|
||||
#define OWN BIT(31)
|
||||
|
||||
|
||||
//OFFSET 4
|
||||
#define PKT_OFFSET_SZ 0
|
||||
#define QSEL_SHT 8
|
||||
#define RATE_ID_SHT 16
|
||||
#define NAVUSEHDR BIT(20)
|
||||
#define SEC_TYPE_SHT 22
|
||||
#define PKT_OFFSET_SHT 26
|
||||
|
||||
//OFFSET 8
|
||||
#define AGG_EN BIT(12)
|
||||
#define AGG_BK BIT(16)
|
||||
#define AMPDU_DENSITY_SHT 20
|
||||
#define ANTSEL_A BIT(24)
|
||||
#define ANTSEL_B BIT(25)
|
||||
#define TX_ANT_CCK_SHT 26
|
||||
#define TX_ANTL_SHT 28
|
||||
#define TX_ANT_HT_SHT 30
|
||||
|
||||
//OFFSET 12
|
||||
#define SEQ_SHT 16
|
||||
#define EN_HWSEQ BIT(31)
|
||||
|
||||
//OFFSET 16
|
||||
#define QOS BIT(6)
|
||||
#define HW_SSN BIT(7)
|
||||
#define USERATE BIT(8)
|
||||
#define DISDATAFB BIT(10)
|
||||
#define CTS_2_SELF BIT(11)
|
||||
#define RTS_EN BIT(12)
|
||||
#define HW_RTS_EN BIT(13)
|
||||
#define DATA_SHORT BIT(24)
|
||||
#define PWR_STATUS_SHT 15
|
||||
#define DATA_SC_SHT 20
|
||||
#define DATA_BW BIT(25)
|
||||
|
||||
//OFFSET 20
|
||||
#define RTY_LMT_EN BIT(17)
|
||||
|
||||
|
||||
//OFFSET 20
|
||||
#define SGI BIT(6)
|
||||
#define USB_TXAGG_NUM_SHT 24
|
||||
|
||||
typedef struct txdesc_88e
|
||||
{
|
||||
//Offset 0
|
||||
u32 pktlen:16;
|
||||
u32 offset:8;
|
||||
u32 bmc:1;
|
||||
u32 htc:1;
|
||||
u32 ls:1;
|
||||
u32 fs:1;
|
||||
u32 linip:1;
|
||||
u32 noacm:1;
|
||||
u32 gf:1;
|
||||
u32 own:1;
|
||||
|
||||
//Offset 4
|
||||
u32 macid:6;
|
||||
u32 rsvd0406:2;
|
||||
u32 qsel:5;
|
||||
u32 rd_nav_ext:1;
|
||||
u32 lsig_txop_en:1;
|
||||
u32 pifs:1;
|
||||
u32 rate_id:4;
|
||||
u32 navusehdr:1;
|
||||
u32 en_desc_id:1;
|
||||
u32 sectype:2;
|
||||
u32 rsvd0424:2;
|
||||
u32 pkt_offset:5; // unit: 8 bytes
|
||||
u32 rsvd0431:1;
|
||||
|
||||
//Offset 8
|
||||
u32 rts_rc:6;
|
||||
u32 data_rc:6;
|
||||
u32 agg_en:1;
|
||||
u32 rd_en:1;
|
||||
u32 bar_rty_th:2;
|
||||
u32 bk:1;
|
||||
u32 morefrag:1;
|
||||
u32 raw:1;
|
||||
u32 ccx:1;
|
||||
u32 ampdu_density:3;
|
||||
u32 bt_null:1;
|
||||
u32 ant_sel_a:1;
|
||||
u32 ant_sel_b:1;
|
||||
u32 tx_ant_cck:2;
|
||||
u32 tx_antl:2;
|
||||
u32 tx_ant_ht:2;
|
||||
|
||||
//Offset 12
|
||||
u32 nextheadpage:8;
|
||||
u32 tailpage:8;
|
||||
u32 seq:12;
|
||||
u32 cpu_handle:1;
|
||||
u32 tag1:1;
|
||||
u32 trigger_int:1;
|
||||
u32 hwseq_en:1;
|
||||
|
||||
//Offset 16
|
||||
u32 rtsrate:5;
|
||||
u32 ap_dcfe:1;
|
||||
u32 hwseq_sel:2;
|
||||
u32 userate:1;
|
||||
u32 disrtsfb:1;
|
||||
u32 disdatafb:1;
|
||||
u32 cts2self:1;
|
||||
u32 rtsen:1;
|
||||
u32 hw_rts_en:1;
|
||||
u32 port_id:1;
|
||||
u32 pwr_status:3;
|
||||
u32 wait_dcts:1;
|
||||
u32 cts2ap_en:1;
|
||||
u32 data_sc:2;
|
||||
u32 data_stbc:2;
|
||||
u32 data_short:1;
|
||||
u32 data_bw:1;
|
||||
u32 rts_short:1;
|
||||
u32 rts_bw:1;
|
||||
u32 rts_sc:2;
|
||||
u32 vcs_stbc:2;
|
||||
|
||||
//Offset 20
|
||||
u32 datarate:6;
|
||||
u32 sgi:1;
|
||||
u32 try_rate:1;
|
||||
u32 data_ratefb_lmt:5;
|
||||
u32 rts_ratefb_lmt:4;
|
||||
u32 rty_lmt_en:1;
|
||||
u32 data_rt_lmt:6;
|
||||
u32 usb_txagg_num:8;
|
||||
|
||||
//Offset 24
|
||||
u32 txagg_a:5;
|
||||
u32 txagg_b:5;
|
||||
u32 use_max_len:1;
|
||||
u32 max_agg_num:5;
|
||||
u32 mcsg1_max_len:4;
|
||||
u32 mcsg2_max_len:4;
|
||||
u32 mcsg3_max_len:4;
|
||||
u32 mcs7_sgi_max_len:4;
|
||||
|
||||
//Offset 28
|
||||
u32 checksum:16; // TxBuffSize(PCIe)/CheckSum(USB)
|
||||
u32 sw0:8; /* offset 30 */
|
||||
u32 sw1:4;
|
||||
u32 mcs15_sgi_max_len:4;
|
||||
}TXDESC_8188E, *PTXDESC_8188E;
|
||||
|
||||
#define txdesc_set_ccx_sw_88e(txdesc, value) \
|
||||
do { \
|
||||
((struct txdesc_88e *)(txdesc))->sw1 = (((value)>>8) & 0x0f); \
|
||||
((struct txdesc_88e *)(txdesc))->sw0 = ((value) & 0xff); \
|
||||
} while (0)
|
||||
|
||||
struct txrpt_ccx_88e {
|
||||
/* offset 0 */
|
||||
u8 tag1:1;
|
||||
u8 pkt_num:3;
|
||||
u8 txdma_underflow:1;
|
||||
u8 int_bt:1;
|
||||
u8 int_tri:1;
|
||||
u8 int_ccx:1;
|
||||
|
||||
/* offset 1 */
|
||||
u8 mac_id:6;
|
||||
u8 pkt_ok:1;
|
||||
u8 bmc:1;
|
||||
|
||||
/* offset 2 */
|
||||
u8 retry_cnt:6;
|
||||
u8 lifetime_over:1;
|
||||
u8 retry_over:1;
|
||||
|
||||
/* offset 3 */
|
||||
u8 ccx_qtime0;
|
||||
u8 ccx_qtime1;
|
||||
|
||||
/* offset 5 */
|
||||
u8 final_data_rate;
|
||||
|
||||
/* offset 6 */
|
||||
u8 sw1:4;
|
||||
u8 qsel:4;
|
||||
|
||||
/* offset 7 */
|
||||
u8 sw0;
|
||||
};
|
||||
|
||||
#define txrpt_ccx_sw_88e(txrpt_ccx) ((txrpt_ccx)->sw0 + ((txrpt_ccx)->sw1<<8))
|
||||
#define txrpt_ccx_qtime_88e(txrpt_ccx) ((txrpt_ccx)->ccx_qtime0+((txrpt_ccx)->ccx_qtime1<<8))
|
||||
|
||||
#define SET_TX_DESC_SEC_TYPE_8188E(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 22, 2, __Value)
|
||||
|
||||
void rtl8188e_fill_fake_txdesc(PADAPTER padapter,u8*pDesc,u32 BufferLen,
|
||||
u8 IsPsPoll,u8 IsBTQosNull, u8 bDataFrame);
|
||||
void rtl8188e_cal_txdesc_chksum(struct tx_desc *ptxdesc);
|
||||
|
||||
#if defined(CONFIG_SDIO_HCI)||defined (CONFIG_GSPI_HCI)
|
||||
s32 rtl8188es_init_xmit_priv(PADAPTER padapter);
|
||||
void rtl8188es_free_xmit_priv(PADAPTER padapter);
|
||||
s32 rtl8188es_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe);
|
||||
s32 rtl8188es_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe);
|
||||
s32 rtl8188es_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
|
||||
thread_return rtl8188es_xmit_thread(thread_context context);
|
||||
s32 rtl8188es_xmit_buf_handler(PADAPTER padapter);
|
||||
|
||||
#ifdef CONFIG_SDIO_TX_TASKLET
|
||||
void rtl8188es_xmit_tasklet(void *priv);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_HCI
|
||||
s32 rtl8188eu_init_xmit_priv(PADAPTER padapter);
|
||||
void rtl8188eu_free_xmit_priv(PADAPTER padapter);
|
||||
s32 rtl8188eu_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe);
|
||||
s32 rtl8188eu_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe);
|
||||
s32 rtl8188eu_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
|
||||
s32 rtl8188eu_xmit_buf_handler(PADAPTER padapter);
|
||||
void rtl8188eu_xmit_tasklet(void *priv);
|
||||
s32 rtl8188eu_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
s32 rtl8188ee_init_xmit_priv(PADAPTER padapter);
|
||||
void rtl8188ee_free_xmit_priv(PADAPTER padapter);
|
||||
void rtl8188ee_xmitframe_resume(_adapter *padapter);
|
||||
s32 rtl8188ee_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe);
|
||||
s32 rtl8188ee_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe);
|
||||
s32 rtl8188ee_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
|
||||
void rtl8188ee_xmit_tasklet(void *priv);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifdef CONFIG_TX_EARLY_MODE
|
||||
void UpdateEarlyModeInfo8188E(struct xmit_priv *pxmitpriv,struct xmit_buf *pxmitbuf );
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_XMIT_ACK
|
||||
void dump_txrpt_ccx_88e(void *buf);
|
||||
void handle_txrpt_ccx_88e(_adapter *adapter, u8 *buf);
|
||||
#else
|
||||
#define dump_txrpt_ccx_88e(buf) do {} while(0)
|
||||
#define handle_txrpt_ccx_88e(adapter, buf) do {} while(0)
|
||||
#endif //CONFIG_XMIT_ACK
|
||||
|
||||
void _dbg_dump_tx_info(_adapter *padapter,int frame_tag,struct tx_desc *ptxdesc);
|
||||
#endif //__RTL8188E_XMIT_H__
|
||||
|
||||
218
include/rtl8188f_cmd.h
Normal file
218
include/rtl8188f_cmd.h
Normal file
|
|
@ -0,0 +1,218 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188F_CMD_H__
|
||||
#define __RTL8188F_CMD_H__
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
//---------------------------------- H2C CMD DEFINITION ------------------------------------------------//
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
|
||||
enum h2c_cmd_8188F{
|
||||
//Common Class: 000
|
||||
H2C_8188F_RSVD_PAGE = 0x00,
|
||||
H2C_8188F_MEDIA_STATUS_RPT = 0x01,
|
||||
H2C_8188F_SCAN_ENABLE = 0x02,
|
||||
H2C_8188F_KEEP_ALIVE = 0x03,
|
||||
H2C_8188F_DISCON_DECISION = 0x04,
|
||||
H2C_8188F_PSD_OFFLOAD = 0x05,
|
||||
H2C_8188F_AP_OFFLOAD = 0x08,
|
||||
H2C_8188F_BCN_RSVDPAGE = 0x09,
|
||||
H2C_8188F_PROBERSP_RSVDPAGE = 0x0A,
|
||||
H2C_8188F_FCS_RSVDPAGE = 0x10,
|
||||
H2C_8188F_FCS_INFO = 0x11,
|
||||
H2C_8188F_AP_WOW_GPIO_CTRL = 0x13,
|
||||
|
||||
//PoweSave Class: 001
|
||||
H2C_8188F_SET_PWR_MODE = 0x20,
|
||||
H2C_8188F_PS_TUNING_PARA = 0x21,
|
||||
H2C_8188F_PS_TUNING_PARA2 = 0x22,
|
||||
H2C_8188F_P2P_LPS_PARAM = 0x23,
|
||||
H2C_8188F_P2P_PS_OFFLOAD = 0x24,
|
||||
H2C_8188F_PS_SCAN_ENABLE = 0x25,
|
||||
H2C_8188F_SAP_PS_ = 0x26,
|
||||
H2C_8188F_INACTIVE_PS_ = 0x27, //Inactive_PS
|
||||
H2C_8188F_FWLPS_IN_IPS_ = 0x28,
|
||||
|
||||
//Dynamic Mechanism Class: 010
|
||||
H2C_8188F_MACID_CFG = 0x40,
|
||||
H2C_8188F_TXBF = 0x41,
|
||||
H2C_8188F_RSSI_SETTING = 0x42,
|
||||
H2C_8188F_AP_REQ_TXRPT = 0x43,
|
||||
H2C_8188F_INIT_RATE_COLLECT = 0x44,
|
||||
H2C_8188F_RA_PARA_ADJUST = 0x46,
|
||||
|
||||
//BT Class: 011
|
||||
H2C_8188F_B_TYPE_TDMA = 0x60,
|
||||
H2C_8188F_BT_INFO = 0x61,
|
||||
H2C_8188F_FORCE_BT_TXPWR = 0x62,
|
||||
H2C_8188F_BT_IGNORE_WLANACT = 0x63,
|
||||
H2C_8188F_DAC_SWING_VALUE = 0x64,
|
||||
H2C_8188F_ANT_SEL_RSV = 0x65,
|
||||
H2C_8188F_WL_OPMODE = 0x66,
|
||||
H2C_8188F_BT_MP_OPER = 0x67,
|
||||
H2C_8188F_BT_CONTROL = 0x68,
|
||||
H2C_8188F_BT_WIFI_CTRL = 0x69,
|
||||
H2C_8188F_BT_FW_PATCH = 0x6A,
|
||||
H2C_8188F_BT_WLAN_CALIBRATION = 0x6D,
|
||||
|
||||
//WOWLAN Class: 100
|
||||
H2C_8188F_WOWLAN = 0x80,
|
||||
H2C_8188F_REMOTE_WAKE_CTRL = 0x81,
|
||||
H2C_8188F_AOAC_GLOBAL_INFO = 0x82,
|
||||
H2C_8188F_AOAC_RSVD_PAGE = 0x83,
|
||||
H2C_8188F_AOAC_RSVD_PAGE2 = 0x84,
|
||||
H2C_8188F_D0_SCAN_OFFLOAD_CTRL = 0x85,
|
||||
H2C_8188F_D0_SCAN_OFFLOAD_INFO = 0x86,
|
||||
H2C_8188F_CHNL_SWITCH_OFFLOAD = 0x87,
|
||||
H2C_8188F_P2P_OFFLOAD_RSVD_PAGE = 0x8A,
|
||||
H2C_8188F_P2P_OFFLOAD = 0x8B,
|
||||
|
||||
H2C_8188F_RESET_TSF = 0xC0,
|
||||
H2C_8188F_MAXID,
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
//---------------------------------- H2C CMD CONTENT --------------------------------------------------//
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
//_RSVDPAGE_LOC_CMD_0x00
|
||||
#define SET_8188F_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_RSVDPAGE_LOC_PSPOLL(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+1, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_RSVDPAGE_LOC_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+2, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_RSVDPAGE_LOC_QOS_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+3, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_RSVDPAGE_LOC_BT_QOS_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+4, 0, 8, __Value)
|
||||
|
||||
//_KEEP_ALIVE_CMD_0x03
|
||||
#define SET_8188F_H2CCMD_KEEPALIVE_PARM_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value)
|
||||
#define SET_8188F_H2CCMD_KEEPALIVE_PARM_ADOPT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value)
|
||||
#define SET_8188F_H2CCMD_KEEPALIVE_PARM_PKT_TYPE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value)
|
||||
#define SET_8188F_H2CCMD_KEEPALIVE_PARM_CHECK_PERIOD(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd+1, 0, 8, __Value)
|
||||
|
||||
//_DISCONNECT_DECISION_CMD_0x04
|
||||
#define SET_8188F_H2CCMD_DISCONDECISION_PARM_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value)
|
||||
#define SET_8188F_H2CCMD_DISCONDECISION_PARM_ADOPT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value)
|
||||
#define SET_8188F_H2CCMD_DISCONDECISION_PARM_CHECK_PERIOD(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd+1, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_DISCONDECISION_PARM_TRY_PKT_NUM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd+2, 0, 8, __Value)
|
||||
|
||||
// _PWR_MOD_CMD_0x20
|
||||
#define SET_8188F_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_PWRMODE_PARM_RLBM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 4, __Value)
|
||||
#define SET_8188F_H2CCMD_PWRMODE_PARM_SMART_PS(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 4, 4, __Value)
|
||||
#define SET_8188F_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+2, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+3, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_PWRMODE_PARM_PWR_STATE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+4, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_PWRMODE_PARM_BYTE5(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+5, 0, 8, __Value)
|
||||
|
||||
#define GET_8188F_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd) LE_BITS_TO_1BYTE(__pH2CCmd, 0, 8)
|
||||
|
||||
// _PS_TUNE_PARAM_CMD_0x21
|
||||
#define SET_8188F_H2CCMD_PSTUNE_PARM_BCN_TO_LIMIT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_PSTUNE_PARM_DTIM_TIMEOUT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_PSTUNE_PARM_ADOPT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 0, 1, __Value)
|
||||
#define SET_8188F_H2CCMD_PSTUNE_PARM_PS_TIMEOUT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 1, 7, __Value)
|
||||
#define SET_8188F_H2CCMD_PSTUNE_PARM_DTIM_PERIOD(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+3, 0, 8, __Value)
|
||||
|
||||
//_MACID_CFG_CMD_0x40
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_MACID(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_RAID(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 0, 5, __Value)
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_SGI_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 7, 1, __Value)
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_BW(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 0, 2, __Value)
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_NO_UPDATE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 3, 1, __Value)
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_VHT_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 4, 2, __Value)
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_DISPT(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 6, 1, __Value)
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_DISRA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 7, 1, __Value)
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_RATE_MASK0(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+3, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_RATE_MASK1(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+4, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_RATE_MASK2(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+5, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_MACID_CFG_RATE_MASK3(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+6, 0, 8, __Value)
|
||||
|
||||
//_RSSI_SETTING_CMD_0x42
|
||||
#define SET_8188F_H2CCMD_RSSI_SETTING_MACID(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_RSSI_SETTING_RSSI(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 0, 7, __Value)
|
||||
#define SET_8188F_H2CCMD_RSSI_SETTING_ULDL_STATE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+3, 0, 8, __Value)
|
||||
|
||||
// _AP_REQ_TXRPT_CMD_0x43
|
||||
#define SET_8188F_H2CCMD_APREQRPT_PARM_MACID1(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_APREQRPT_PARM_MACID2(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 0, 8, __Value)
|
||||
|
||||
// _FORCE_BT_TXPWR_CMD_0x62
|
||||
#define SET_8188F_H2CCMD_BT_PWR_IDX(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd, 0, 8, __Value)
|
||||
|
||||
// _FORCE_BT_MP_OPER_CMD_0x67
|
||||
#define SET_8188F_H2CCMD_BT_MPOPER_VER(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 4, __Value)
|
||||
#define SET_8188F_H2CCMD_BT_MPOPER_REQNUM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 4, 4, __Value)
|
||||
#define SET_8188F_H2CCMD_BT_MPOPER_IDX(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_BT_MPOPER_PARAM1(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_BT_MPOPER_PARAM2(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+3, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_BT_MPOPER_PARAM3(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd+4, 0, 8, __Value)
|
||||
|
||||
// _BT_FW_PATCH_0x6A
|
||||
#define SET_8188F_H2CCMD_BT_FW_PATCH_SIZE(__pH2CCmd, __Value) SET_BITS_TO_LE_2BYTE((pu1Byte)(__pH2CCmd), 0, 16, __Value)
|
||||
#define SET_8188F_H2CCMD_BT_FW_PATCH_ADDR0(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_BT_FW_PATCH_ADDR1(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_BT_FW_PATCH_ADDR2(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 0, 8, __Value)
|
||||
#define SET_8188F_H2CCMD_BT_FW_PATCH_ADDR3(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+5, 0, 8, __Value)
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
//------------------------------------------- Structure --------------------------------------------------//
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
//---------------------------------- Function Statement --------------------------------------------------//
|
||||
//---------------------------------------------------------------------------------------------------------//
|
||||
|
||||
// host message to firmware cmd
|
||||
void rtl8188f_set_FwPwrMode_cmd(PADAPTER padapter, u8 Mode);
|
||||
void rtl8188f_set_FwJoinBssRpt_cmd(PADAPTER padapter, u8 mstatus);
|
||||
void rtl8188f_set_rssi_cmd(PADAPTER padapter, u8 *param);
|
||||
void rtl8188f_Add_RateATid(PADAPTER pAdapter, u64 bitmap, u8* arg, u8 rssi_level);
|
||||
void rtl8188f_fw_try_ap_cmd(PADAPTER padapter, u32 need_ack);
|
||||
//s32 rtl8188f_set_lowpwr_lps_cmd(PADAPTER padapter, u8 enable);
|
||||
void rtl8188f_set_FwPsTuneParam_cmd(PADAPTER padapter);
|
||||
void rtl8188f_set_FwMacIdConfig_cmd(_adapter* padapter, u8 mac_id, u8 raid, u8 bw, u8 sgi, u32 mask);
|
||||
void rtl8188f_set_FwBtMpOper_cmd(PADAPTER padapter, u8 idx, u8 ver, u8 reqnum, u8 *param);
|
||||
void rtl8188f_download_rsvd_page(PADAPTER padapter, u8 mstatus);
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
void rtl8188f_download_BTCoex_AP_mode_rsvd_page(PADAPTER padapter);
|
||||
#endif // CONFIG_BT_COEXIST
|
||||
#ifdef CONFIG_P2P
|
||||
void rtl8188f_set_p2p_ps_offload_cmd(PADAPTER padapter, u8 p2p_ps_state);
|
||||
#endif //CONFIG_P2P
|
||||
|
||||
void CheckFwRsvdPageContent(PADAPTER padapter);
|
||||
|
||||
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
|
||||
void SetFwRelatedForWoWLAN8188f(_adapter* padapter, u8 bHostIsGoingtoSleep);
|
||||
#endif//CONFIG_WOWLAN
|
||||
|
||||
#ifdef CONFIG_P2P_WOWLAN
|
||||
void rtl8188f_set_p2p_wowlan_offload_cmd(PADAPTER padapter);
|
||||
#endif
|
||||
|
||||
void rtl8188f_set_FwPwrModeInIPS_cmd(PADAPTER padapter, u8 cmd_param);
|
||||
|
||||
#ifdef CONFIG_TSF_RESET_OFFLOAD
|
||||
u8 rtl8188f_reset_tsf(_adapter *padapter, u8 reset_port);
|
||||
#endif // CONFIG_TSF_RESET_OFFLOAD
|
||||
s32 FillH2CCmd8188F(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
|
||||
u8 GetTxBufferRsvdPageNum8188F(_adapter *padapter, bool wowlan);
|
||||
#endif
|
||||
|
||||
48
include/rtl8188f_dm.h
Normal file
48
include/rtl8188f_dm.h
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188F_DM_H__
|
||||
#define __RTL8188F_DM_H__
|
||||
//============================================================
|
||||
// Description:
|
||||
//
|
||||
// This file is for 8188F dynamic mechanism only
|
||||
//
|
||||
//
|
||||
//============================================================
|
||||
|
||||
//============================================================
|
||||
// structure and define
|
||||
//============================================================
|
||||
|
||||
//============================================================
|
||||
// function prototype
|
||||
//============================================================
|
||||
|
||||
void rtl8188f_init_dm_priv(PADAPTER padapter);
|
||||
void rtl8188f_deinit_dm_priv(PADAPTER padapter);
|
||||
|
||||
void rtl8188f_InitHalDm(PADAPTER padapter);
|
||||
void rtl8188f_HalDmWatchDog(PADAPTER padapter);
|
||||
void rtl8188f_HalDmWatchDog_in_LPS(PADAPTER padapter);
|
||||
void rtl8188f_hal_dm_in_lps(PADAPTER padapter);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
322
include/rtl8188f_hal.h
Normal file
322
include/rtl8188f_hal.h
Normal file
|
|
@ -0,0 +1,322 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188F_HAL_H__
|
||||
#define __RTL8188F_HAL_H__
|
||||
|
||||
#include "hal_data.h"
|
||||
|
||||
#include "rtl8188f_spec.h"
|
||||
#include "rtl8188f_rf.h"
|
||||
#include "rtl8188f_dm.h"
|
||||
#include "rtl8188f_recv.h"
|
||||
#include "rtl8188f_xmit.h"
|
||||
#include "rtl8188f_cmd.h"
|
||||
#include "rtl8188f_led.h"
|
||||
#include "Hal8188FPwrSeq.h"
|
||||
#include "Hal8188FPhyReg.h"
|
||||
#include "Hal8188FPhyCfg.h"
|
||||
#ifdef DBG_CONFIG_ERROR_DETECT
|
||||
#include "rtl8188f_sreset.h"
|
||||
#endif
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// RTL8188F From file
|
||||
//---------------------------------------------------------------------
|
||||
#define RTL8188F_FW_IMG "rtl8188f/FW_NIC.bin"
|
||||
#define RTL8188F_FW_WW_IMG "rtl8188f/FW_WoWLAN.bin"
|
||||
#define RTL8188F_PHY_REG "rtl8188f/PHY_REG.txt"
|
||||
#define RTL8188F_PHY_RADIO_A "rtl8188f/RadioA.txt"
|
||||
#define RTL8188F_PHY_RADIO_B "rtl8188f/RadioB.txt"
|
||||
#define RTL8188F_TXPWR_TRACK "rtl8188f/TxPowerTrack.txt"
|
||||
#define RTL8188F_AGC_TAB "rtl8188f/AGC_TAB.txt"
|
||||
#define RTL8188F_PHY_MACREG "rtl8188f/MAC_REG.txt"
|
||||
#define RTL8188F_PHY_REG_PG "rtl8188f/PHY_REG_PG.txt"
|
||||
#define RTL8188F_PHY_REG_MP "rtl8188f/PHY_REG_MP.txt"
|
||||
#define RTL8188F_TXPWR_LMT "rtl8188f/TXPWR_LMT.txt"
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// RTL8188F From header
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if MP_DRIVER == 1
|
||||
#define Rtl8188F_FwBTImgArray Rtl8188FFwBTImgArray
|
||||
#define Rtl8188F_FwBTImgArrayLength Rtl8188FFwBTImgArrayLength
|
||||
|
||||
#define Rtl8188F_FwMPImageArray Rtl8188FFwMPImgArray
|
||||
#define Rtl8188F_FwMPImgArrayLength Rtl8188FMPImgArrayLength
|
||||
|
||||
#define Rtl8188F_PHY_REG_Array_MP Rtl8188F_PHYREG_Array_MP
|
||||
#define Rtl8188F_PHY_REG_Array_MPLength Rtl8188F_PHYREG_Array_MPLength
|
||||
#endif
|
||||
|
||||
|
||||
#define FW_8188F_SIZE 0x8000
|
||||
#define FW_8188F_START_ADDRESS 0x1000
|
||||
#define FW_8188F_END_ADDRESS 0x1FFF //0x5FFF
|
||||
|
||||
#define IS_FW_HEADER_EXIST_8188F(_pFwHdr) ((le16_to_cpu(_pFwHdr->Signature)&0xFFF0) == 0x88F0)
|
||||
|
||||
typedef struct _RT_FIRMWARE {
|
||||
FIRMWARE_SOURCE eFWSource;
|
||||
#ifdef CONFIG_EMBEDDED_FWIMG
|
||||
u8* szFwBuffer;
|
||||
#else
|
||||
u8 szFwBuffer[FW_8188F_SIZE];
|
||||
#endif
|
||||
u32 ulFwLength;
|
||||
} RT_FIRMWARE_8188F, *PRT_FIRMWARE_8188F;
|
||||
|
||||
//
|
||||
// This structure must be cared byte-ordering
|
||||
//
|
||||
// Added by tynli. 2009.12.04.
|
||||
typedef struct _RT_8188F_FIRMWARE_HDR
|
||||
{
|
||||
// 8-byte alinment required
|
||||
|
||||
//--- LONG WORD 0 ----
|
||||
u16 Signature; // 92C0: test chip; 92C, 88C0: test chip; 88C1: MP A-cut; 92C1: MP A-cut
|
||||
u8 Category; // AP/NIC and USB/PCI
|
||||
u8 Function; // Reserved for different FW function indcation, for further use when driver needs to download different FW in different conditions
|
||||
u16 Version; // FW Version
|
||||
u16 Subversion; // FW Subversion, default 0x00
|
||||
|
||||
//--- LONG WORD 1 ----
|
||||
u8 Month; // Release time Month field
|
||||
u8 Date; // Release time Date field
|
||||
u8 Hour; // Release time Hour field
|
||||
u8 Minute; // Release time Minute field
|
||||
u16 RamCodeSize; // The size of RAM code
|
||||
u16 Rsvd2;
|
||||
|
||||
//--- LONG WORD 2 ----
|
||||
u32 SvnIdx; // The SVN entry index
|
||||
u32 Rsvd3;
|
||||
|
||||
//--- LONG WORD 3 ----
|
||||
u32 Rsvd4;
|
||||
u32 Rsvd5;
|
||||
}RT_8188F_FIRMWARE_HDR, *PRT_8188F_FIRMWARE_HDR;
|
||||
|
||||
#define DRIVER_EARLY_INT_TIME_8188F 0x05
|
||||
#define BCN_DMA_ATIME_INT_TIME_8188F 0x02
|
||||
|
||||
// for 8188F
|
||||
// TX 32K, RX 16K, Page size 128B for TX, 8B for RX
|
||||
#define PAGE_SIZE_TX_8188F 128
|
||||
#define PAGE_SIZE_RX_8188F 8
|
||||
|
||||
#define RX_DMA_SIZE_8188F 0x4000 // 16K
|
||||
#ifdef CONFIG_FW_C2H_DEBUG
|
||||
#define RX_DMA_RESERVED_SIZE_8188F 0x100 // 256B, reserved for c2h debug message
|
||||
#else
|
||||
#define RX_DMA_RESERVED_SIZE_8188F 0x80 // 128B, reserved for tx report
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_WOWLAN
|
||||
#define RESV_FMWF WKFMCAM_SIZE*MAX_WKFM_NUM /* 16 entries, for each is 24 bytes*/
|
||||
#else
|
||||
#define RESV_FMWF 0
|
||||
#endif
|
||||
|
||||
#define RX_DMA_BOUNDARY_8188F (RX_DMA_SIZE_8188F - RX_DMA_RESERVED_SIZE_8188F - 1)
|
||||
|
||||
// Note: We will divide number of page equally for each queue other than public queue!
|
||||
|
||||
//For General Reserved Page Number(Beacon Queue is reserved page)
|
||||
//Beacon:2, PS-Poll:1, Null Data:1,Qos Null Data:1,BT Qos Null Data:1
|
||||
#define BCNQ_PAGE_NUM_8188F 0x08
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
#define BCNQ1_PAGE_NUM_8188F 0x08 // 0x04
|
||||
#else
|
||||
#define BCNQ1_PAGE_NUM_8188F 0x00
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PNO_SUPPORT
|
||||
#undef BCNQ1_PAGE_NUM_8188F
|
||||
#define BCNQ1_PAGE_NUM_8188F 0x00 // 0x04
|
||||
#endif
|
||||
|
||||
//For WoWLan , more reserved page
|
||||
//ARP Rsp:1, RWC:1, GTK Info:1,GTK RSP:2,GTK EXT MEM:2, PNO: 6
|
||||
#ifdef CONFIG_WOWLAN
|
||||
#define WOWLAN_PAGE_NUM_8188F 0x07
|
||||
#else
|
||||
#define WOWLAN_PAGE_NUM_8188F 0x00
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PNO_SUPPORT
|
||||
#undef WOWLAN_PAGE_NUM_8188F
|
||||
#define WOWLAN_PAGE_NUM_8188F 0x15
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_AP_WOWLAN
|
||||
#define AP_WOWLAN_PAGE_NUM_8188F 0x02
|
||||
#endif
|
||||
|
||||
#define TX_TOTAL_PAGE_NUMBER_8188F (0xFF - BCNQ_PAGE_NUM_8188F - BCNQ1_PAGE_NUM_8188F - WOWLAN_PAGE_NUM_8188F)
|
||||
#define TX_PAGE_BOUNDARY_8188F (TX_TOTAL_PAGE_NUMBER_8188F + 1)
|
||||
|
||||
#define WMM_NORMAL_TX_TOTAL_PAGE_NUMBER_8188F TX_TOTAL_PAGE_NUMBER_8188F
|
||||
#define WMM_NORMAL_TX_PAGE_BOUNDARY_8188F (WMM_NORMAL_TX_TOTAL_PAGE_NUMBER_8188F + 1)
|
||||
|
||||
// For Normal Chip Setting
|
||||
// (HPQ + LPQ + NPQ + PUBQ) shall be TX_TOTAL_PAGE_NUMBER_8188F
|
||||
#define NORMAL_PAGE_NUM_HPQ_8188F 0x0C
|
||||
#define NORMAL_PAGE_NUM_LPQ_8188F 0x02
|
||||
#define NORMAL_PAGE_NUM_NPQ_8188F 0x02
|
||||
|
||||
// Note: For Normal Chip Setting, modify later
|
||||
#define WMM_NORMAL_PAGE_NUM_HPQ_8188F 0x30
|
||||
#define WMM_NORMAL_PAGE_NUM_LPQ_8188F 0x20
|
||||
#define WMM_NORMAL_PAGE_NUM_NPQ_8188F 0x20
|
||||
|
||||
|
||||
#include "HalVerDef.h"
|
||||
#include "hal_com.h"
|
||||
|
||||
#define EFUSE_OOB_PROTECT_BYTES 15
|
||||
|
||||
#define HAL_EFUSE_MEMORY
|
||||
|
||||
#define HWSET_MAX_SIZE_8188F 512
|
||||
#define EFUSE_REAL_CONTENT_LEN_8188F 512
|
||||
#define EFUSE_MAP_LEN_8188F 512
|
||||
#define EFUSE_MAX_SECTION_8188F 64
|
||||
|
||||
#define EFUSE_IC_ID_OFFSET 506 //For some inferiority IC purpose. added by Roger, 2009.09.02.
|
||||
#define AVAILABLE_EFUSE_ADDR(addr) (addr < EFUSE_REAL_CONTENT_LEN_8188F)
|
||||
|
||||
#define EFUSE_ACCESS_ON 0x69 // For RTL8188 only.
|
||||
#define EFUSE_ACCESS_OFF 0x00 // For RTL8188 only.
|
||||
|
||||
//========================================================
|
||||
// EFUSE for BT definition
|
||||
//========================================================
|
||||
#define EFUSE_BT_REAL_BANK_CONTENT_LEN 512
|
||||
#define EFUSE_BT_REAL_CONTENT_LEN 1536 // 512*3
|
||||
#define EFUSE_BT_MAP_LEN 1024 // 1k bytes
|
||||
#define EFUSE_BT_MAX_SECTION 128 // 1024/8
|
||||
|
||||
#define EFUSE_PROTECT_BYTES_BANK 16
|
||||
|
||||
typedef struct _C2H_EVT_HDR
|
||||
{
|
||||
u8 CmdID;
|
||||
u8 CmdLen;
|
||||
u8 CmdSeq;
|
||||
} __attribute__((__packed__)) C2H_EVT_HDR, *PC2H_EVT_HDR;
|
||||
|
||||
#define INCLUDE_MULTI_FUNC_BT(_Adapter) (GET_HAL_DATA(_Adapter)->MultiFunc & RT_MULTI_FUNC_BT)
|
||||
#define INCLUDE_MULTI_FUNC_GPS(_Adapter) (GET_HAL_DATA(_Adapter)->MultiFunc & RT_MULTI_FUNC_GPS)
|
||||
|
||||
// rtl8188a_hal_init.c
|
||||
s32 rtl8188f_FirmwareDownload(PADAPTER padapter, BOOLEAN bUsedWoWLANFw);
|
||||
void rtl8188f_FirmwareSelfReset(PADAPTER padapter);
|
||||
void rtl8188f_InitializeFirmwareVars(PADAPTER padapter);
|
||||
|
||||
void rtl8188f_InitAntenna_Selection(PADAPTER padapter);
|
||||
void rtl8188f_DeinitAntenna_Selection(PADAPTER padapter);
|
||||
void rtl8188f_CheckAntenna_Selection(PADAPTER padapter);
|
||||
void rtl8188f_init_default_value(PADAPTER padapter);
|
||||
|
||||
s32 rtl8188f_InitLLTTable(PADAPTER padapter);
|
||||
|
||||
s32 CardDisableHWSM(PADAPTER padapter, u8 resetMCU);
|
||||
s32 CardDisableWithoutHWSM(PADAPTER padapter);
|
||||
|
||||
// EFuse
|
||||
u8 GetEEPROMSize8188F(PADAPTER padapter);
|
||||
void Hal_InitPGData(PADAPTER padapter, u8 *PROMContent);
|
||||
void Hal_EfuseParseIDCode(PADAPTER padapter, u8 *hwinfo);
|
||||
void Hal_EfuseParseTxPowerInfo_8188F(PADAPTER padapter, u8 *PROMContent, BOOLEAN AutoLoadFail);
|
||||
/* void Hal_EfuseParseBTCoexistInfo_8188F(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail); */
|
||||
void Hal_EfuseParseEEPROMVer_8188F(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail);
|
||||
void Hal_EfuseParseChnlPlan_8188F(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail);
|
||||
void Hal_EfuseParseCustomerID_8188F(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail);
|
||||
void Hal_EfuseParsePowerSavingMode_8188F(PADAPTER pAdapter, u8 *hwinfo, BOOLEAN AutoLoadFail);
|
||||
void Hal_EfuseParseAntennaDiversity_8188F(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail);
|
||||
void Hal_EfuseParseXtal_8188F(PADAPTER pAdapter, u8 *hwinfo, u8 AutoLoadFail);
|
||||
void Hal_EfuseParseThermalMeter_8188F(PADAPTER padapter, u8 *hwinfo, u8 AutoLoadFail);
|
||||
void Hal_EfuseParseKFreeData_8188F(PADAPTER pAdapter, u8 *hwinfo, BOOLEAN AutoLoadFail);
|
||||
VOID Hal_EfuseParseMacHidden_8188F(PADAPTER pAdapter, u8 *hwinfo, BOOLEAN AutoLoadFail);
|
||||
|
||||
#if 0 /* Do not need for rtl8188f */
|
||||
VOID Hal_EfuseParseVoltage_8188F(PADAPTER pAdapter,u8* hwinfo,BOOLEAN AutoLoadFail);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_C2H_PACKET_EN
|
||||
void rtl8188f_c2h_packet_handler(PADAPTER padapter, u8 *pbuf, u16 length);
|
||||
#endif
|
||||
|
||||
void rtl8188f_set_pll_ref_clk_sel(_adapter *adapter, u8 sel);
|
||||
|
||||
void rtl8188f_set_hal_ops(struct hal_ops *pHalFunc);
|
||||
void init_hal_spec_8188f(_adapter *adapter);
|
||||
void SetHwReg8188F(PADAPTER padapter, u8 variable, u8 *val);
|
||||
void GetHwReg8188F(PADAPTER padapter, u8 variable, u8 *val);
|
||||
#ifdef CONFIG_C2H_PACKET_EN
|
||||
void SetHwRegWithBuf8188F(PADAPTER padapter, u8 variable, u8 *pbuf, int len);
|
||||
#endif // CONFIG_C2H_PACKET_EN
|
||||
u8 SetHalDefVar8188F(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval);
|
||||
u8 GetHalDefVar8188F(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval);
|
||||
|
||||
// register
|
||||
void rtl8188f_InitBeaconParameters(PADAPTER padapter);
|
||||
void rtl8188f_InitBeaconMaxError(PADAPTER padapter, u8 InfraMode);
|
||||
void _InitBurstPktLen_8188FS(PADAPTER Adapter);
|
||||
void _8051Reset8188(PADAPTER padapter);
|
||||
#ifdef CONFIG_WOWLAN
|
||||
void Hal_DetectWoWMode(PADAPTER pAdapter);
|
||||
#endif //CONFIG_WOWLAN
|
||||
|
||||
void rtl8188f_start_thread(_adapter *padapter);
|
||||
void rtl8188f_stop_thread(_adapter *padapter);
|
||||
|
||||
#if defined(CONFIG_CHECK_BT_HANG) && defined(CONFIG_BT_COEXIST)
|
||||
void rtl8188fs_init_checkbthang_workqueue(_adapter * adapter);
|
||||
void rtl8188fs_free_checkbthang_workqueue(_adapter * adapter);
|
||||
void rtl8188fs_cancle_checkbthang_workqueue(_adapter * adapter);
|
||||
void rtl8188fs_hal_check_bt_hang(_adapter * adapter);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_GPIO_WAKEUP
|
||||
void HalSetOutPutGPIO(PADAPTER padapter, u8 index, u8 OutPutValue);
|
||||
#endif
|
||||
|
||||
int FirmwareDownloadBT(IN PADAPTER Adapter, PRT_MP_FIRMWARE pFirmware);
|
||||
|
||||
void CCX_FwC2HTxRpt_8188f(PADAPTER padapter, u8 *pdata, u8 len);
|
||||
#ifdef CONFIG_FW_C2H_DEBUG
|
||||
void Debug_FwC2H_8188f(PADAPTER padapter, u8 *pdata, u8 len);
|
||||
#endif //CONFIG_FW_C2H_DEBUG
|
||||
s32 c2h_id_filter_ccx_8188f(u8 *buf);
|
||||
s32 c2h_handler_8188f(PADAPTER padapter, u8 *pC2hEvent);
|
||||
u8 MRateToHwRate8188F(u8 rate);
|
||||
u8 HwRateToMRate8188F(u8 rate);
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
BOOLEAN InterruptRecognized8188FE(PADAPTER Adapter);
|
||||
VOID UpdateInterruptMask8188FE(PADAPTER Adapter, u32 AddMSR, u32 AddMSR1, u32 RemoveMSR, u32 RemoveMSR1);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
49
include/rtl8188f_led.h
Normal file
49
include/rtl8188f_led.h
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188F_LED_H__
|
||||
#define __RTL8188F_LED_H__
|
||||
|
||||
#include <drv_conf.h>
|
||||
#include <osdep_service.h>
|
||||
#include <drv_types.h>
|
||||
|
||||
|
||||
//================================================================================
|
||||
// Interface to manipulate LED objects.
|
||||
//================================================================================
|
||||
#ifdef CONFIG_USB_HCI
|
||||
void rtl8188fu_InitSwLeds(PADAPTER padapter);
|
||||
void rtl8188fu_DeInitSwLeds(PADAPTER padapter);
|
||||
#endif
|
||||
#ifdef CONFIG_SDIO_HCI
|
||||
void rtl8188fs_InitSwLeds(PADAPTER padapter);
|
||||
void rtl8188fs_DeInitSwLeds(PADAPTER padapter);
|
||||
#endif
|
||||
#ifdef CONFIG_GSPI_HCI
|
||||
void rtl8188fs_InitSwLeds(PADAPTER padapter);
|
||||
void rtl8188fs_DeInitSwLeds(PADAPTER padapter);
|
||||
#endif
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
void rtl8188fe_InitSwLeds(PADAPTER padapter);
|
||||
void rtl8188fe_DeInitSwLeds(PADAPTER padapter);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
73
include/rtl8188f_recv.h
Normal file
73
include/rtl8188f_recv.h
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188F_RECV_H__
|
||||
#define __RTL8188F_RECV_H__
|
||||
|
||||
#if defined(CONFIG_USB_HCI)
|
||||
#ifndef MAX_RECVBUF_SZ
|
||||
#ifdef PLATFORM_OS_CE
|
||||
#define MAX_RECVBUF_SZ (8192+1024) // 8K+1k
|
||||
#else
|
||||
#ifdef CONFIG_MINIMAL_MEMORY_USAGE
|
||||
#define MAX_RECVBUF_SZ (4000) // about 4K
|
||||
#else
|
||||
#ifdef CONFIG_PLATFORM_MSTAR
|
||||
#define MAX_RECVBUF_SZ (8192) // 8K
|
||||
#elif defined(CONFIG_PLATFORM_HISILICON)
|
||||
#define MAX_RECVBUF_SZ (16384) /* 16k */
|
||||
#else
|
||||
#define MAX_RECVBUF_SZ (32768) /* 32k */
|
||||
#endif
|
||||
//#define MAX_RECVBUF_SZ (20480) //20K
|
||||
//#define MAX_RECVBUF_SZ (10240) //10K
|
||||
//#define MAX_RECVBUF_SZ (16384) // 16k - 92E RX BUF :16K
|
||||
//#define MAX_RECVBUF_SZ (8192+1024) // 8K+1k
|
||||
#endif
|
||||
#endif
|
||||
#endif //!MAX_RECVBUF_SZ
|
||||
#elif defined(CONFIG_PCI_HCI)
|
||||
#define MAX_RECVBUF_SZ (4000) // about 4K
|
||||
#elif defined(CONFIG_SDIO_HCI)
|
||||
#define MAX_RECVBUF_SZ (RX_DMA_BOUNDARY_8188F + 1)
|
||||
#endif /* CONFIG_SDIO_HCI */
|
||||
|
||||
// Rx smooth factor
|
||||
#define Rx_Smooth_Factor (20)
|
||||
|
||||
#if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
|
||||
s32 rtl8188fs_init_recv_priv(PADAPTER padapter);
|
||||
void rtl8188fs_free_recv_priv(PADAPTER padapter);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_HCI
|
||||
int rtl8188fu_init_recv_priv(_adapter *padapter);
|
||||
void rtl8188fu_free_recv_priv (_adapter *padapter);
|
||||
void rtl8188fu_init_recvbuf(_adapter *padapter, struct recv_buf *precvbuf);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
s32 rtl8188fe_init_recv_priv(PADAPTER padapter);
|
||||
void rtl8188fe_free_recv_priv(PADAPTER padapter);
|
||||
#endif
|
||||
|
||||
void rtl8188f_query_rx_desc_status(union recv_frame *precvframe, u8 *pdesc);
|
||||
|
||||
#endif /* __RTL8188F_RECV_H__ */
|
||||
|
||||
31
include/rtl8188f_rf.h
Normal file
31
include/rtl8188f_rf.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188F_RF_H__
|
||||
#define __RTL8188F_RF_H__
|
||||
|
||||
int PHY_RF6052_Config8188F( IN PADAPTER Adapter );
|
||||
|
||||
VOID
|
||||
PHY_RF6052SetBandwidth8188F(
|
||||
IN PADAPTER Adapter,
|
||||
IN CHANNEL_WIDTH Bandwidth);
|
||||
|
||||
#endif
|
||||
|
||||
302
include/rtl8188f_spec.h
Normal file
302
include/rtl8188f_spec.h
Normal file
|
|
@ -0,0 +1,302 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*******************************************************************************/
|
||||
#ifndef __RTL8188F_SPEC_H__
|
||||
#define __RTL8188F_SPEC_H__
|
||||
|
||||
#include <drv_conf.h>
|
||||
|
||||
|
||||
#define HAL_NAV_UPPER_UNIT_8188F 128 // micro-second
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0000h ~ 0x00FFh System Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
#define REG_RSV_CTRL_8188F 0x001C // 3 Byte
|
||||
#define REG_BT_WIFI_ANTENNA_SWITCH_8188F 0x0038
|
||||
#define REG_HSISR_8188F 0x005c
|
||||
#define REG_PAD_CTRL1_8188F 0x0064
|
||||
#define REG_AFE_CTRL_4_8188F 0x0078
|
||||
#define REG_HMEBOX_DBG_0_8188F 0x0088
|
||||
#define REG_HMEBOX_DBG_1_8188F 0x008A
|
||||
#define REG_HMEBOX_DBG_2_8188F 0x008C
|
||||
#define REG_HMEBOX_DBG_3_8188F 0x008E
|
||||
#define REG_HIMR0_8188F 0x00B0
|
||||
#define REG_HISR0_8188F 0x00B4
|
||||
#define REG_HIMR1_8188F 0x00B8
|
||||
#define REG_HISR1_8188F 0x00BC
|
||||
#define REG_PMC_DBG_CTRL2_8188F 0x00CC
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0100h ~ 0x01FFh MACTOP General Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
#define REG_C2HEVT_CMD_ID_8188F 0x01A0
|
||||
#define REG_C2HEVT_CMD_LEN_8188F 0x01AE
|
||||
#define REG_WOWLAN_WAKE_REASON 0x01C7
|
||||
#define REG_WOWLAN_GTK_DBG1 0x630
|
||||
#define REG_WOWLAN_GTK_DBG2 0x634
|
||||
|
||||
#define REG_HMEBOX_EXT0_8188F 0x01F0
|
||||
#define REG_HMEBOX_EXT1_8188F 0x01F4
|
||||
#define REG_HMEBOX_EXT2_8188F 0x01F8
|
||||
#define REG_HMEBOX_EXT3_8188F 0x01FC
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0200h ~ 0x027Fh TXDMA Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0280h ~ 0x02FFh RXDMA Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
#define REG_RXDMA_CONTROL_8188F 0x0286 // Control the RX DMA.
|
||||
#define REG_RXDMA_MODE_CTRL_8188F 0x0290
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0300h ~ 0x03FFh PCIe
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
#define REG_PCIE_CTRL_REG_8188F 0x0300
|
||||
#define REG_INT_MIG_8188F 0x0304 // Interrupt Migration
|
||||
#define REG_BCNQ_DESA_8188F 0x0308 // TX Beacon Descriptor Address
|
||||
#define REG_HQ_DESA_8188F 0x0310 // TX High Queue Descriptor Address
|
||||
#define REG_MGQ_DESA_8188F 0x0318 // TX Manage Queue Descriptor Address
|
||||
#define REG_VOQ_DESA_8188F 0x0320 // TX VO Queue Descriptor Address
|
||||
#define REG_VIQ_DESA_8188F 0x0328 // TX VI Queue Descriptor Address
|
||||
#define REG_BEQ_DESA_8188F 0x0330 // TX BE Queue Descriptor Address
|
||||
#define REG_BKQ_DESA_8188F 0x0338 // TX BK Queue Descriptor Address
|
||||
#define REG_RX_DESA_8188F 0x0340 // RX Queue Descriptor Address
|
||||
#define REG_DBI_WDATA_8188F 0x0348 // DBI Write Data
|
||||
#define REG_DBI_RDATA_8188F 0x034C // DBI Read Data
|
||||
#define REG_DBI_ADDR_8188F 0x0350 // DBI Address
|
||||
#define REG_DBI_FLAG_8188F 0x0352 // DBI Read/Write Flag
|
||||
#define REG_MDIO_WDATA_8188F 0x0354 // MDIO for Write PCIE PHY
|
||||
#define REG_MDIO_RDATA_8188F 0x0356 // MDIO for Reads PCIE PHY
|
||||
#define REG_MDIO_CTL_8188F 0x0358 // MDIO for Control
|
||||
#define REG_DBG_SEL_8188F 0x0360 // Debug Selection Register
|
||||
#define REG_PCIE_HRPWM_8188F 0x0361 //PCIe RPWM
|
||||
#define REG_PCIE_HCPWM_8188F 0x0363 //PCIe CPWM
|
||||
#define REG_PCIE_MULTIFET_CTRL_8188F 0x036A //PCIE Multi-Fethc Control
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0400h ~ 0x047Fh Protocol Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
#define REG_TXPKTBUF_BCNQ_BDNY_8188F 0x0424
|
||||
#define REG_TXPKTBUF_MGQ_BDNY_8188F 0x0425
|
||||
#define REG_TXPKTBUF_WMAC_LBK_BF_HD_8188F 0x045D
|
||||
#ifdef CONFIG_WOWLAN
|
||||
#define REG_TXPKTBUF_IV_LOW 0x0484
|
||||
#define REG_TXPKTBUF_IV_HIGH 0x0488
|
||||
#endif
|
||||
#define REG_AMPDU_BURST_MODE_8188F 0x04BC
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0500h ~ 0x05FFh EDCA Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
#define REG_SECONDARY_CCA_CTRL_8188F 0x0577
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0600h ~ 0x07FFh WMAC Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
|
||||
//============================================================
|
||||
// SDIO Bus Specification
|
||||
//============================================================
|
||||
|
||||
//-----------------------------------------------------
|
||||
// SDIO CMD Address Mapping
|
||||
//-----------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------
|
||||
// I/O bus domain (Host)
|
||||
//-----------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------
|
||||
// SDIO register
|
||||
//-----------------------------------------------------
|
||||
#define SDIO_REG_HIQ_FREEPG_8188F 0x0020
|
||||
#define SDIO_REG_MID_FREEPG_8188F 0x0022
|
||||
#define SDIO_REG_LOW_FREEPG_8188F 0x0024
|
||||
#define SDIO_REG_PUB_FREEPG_8188F 0x0026
|
||||
#define SDIO_REG_EXQ_FREEPG_8188F 0x0028
|
||||
#define SDIO_REG_AC_OQT_FREEPG_8188F 0x002A
|
||||
#define SDIO_REG_NOAC_OQT_FREEPG_8188F 0x002B
|
||||
|
||||
#define SDIO_REG_HCPWM1_8188F 0x0038
|
||||
|
||||
/* indirect access */
|
||||
#define SDIO_REG_INDIRECT_REG_CFG_8188F 0x40
|
||||
#define SET_INDIRECT_REG_ADDR(_cmd, _addr) SET_BITS_TO_LE_2BYTE(((u8 *)(_cmd)) + 0, 0, 16, (_addr))
|
||||
#define SET_INDIRECT_REG_SIZE_1BYTE(_cmd) SET_BITS_TO_LE_1BYTE(((u8 *)(_cmd)) + 2, 0, 2, 0)
|
||||
#define SET_INDIRECT_REG_SIZE_2BYTE(_cmd) SET_BITS_TO_LE_1BYTE(((u8 *)(_cmd)) + 2, 0, 2, 1)
|
||||
#define SET_INDIRECT_REG_SIZE_4BYTE(_cmd) SET_BITS_TO_LE_1BYTE(((u8 *)(_cmd)) + 2, 0, 2, 2)
|
||||
#define SET_INDIRECT_REG_WRITE(_cmd) SET_BITS_TO_LE_1BYTE(((u8 *)(_cmd)) + 2, 2, 1, 1)
|
||||
#define SET_INDIRECT_REG_READ(_cmd) SET_BITS_TO_LE_1BYTE(((u8 *)(_cmd)) + 2, 3, 1, 1)
|
||||
#define GET_INDIRECT_REG_RDY(_cmd) LE_BITS_TO_1BYTE(((u8 *)(_cmd)) + 2, 4, 1)
|
||||
|
||||
#define SDIO_REG_INDIRECT_REG_DATA_8188F 0x44
|
||||
|
||||
//============================================================================
|
||||
// 8188 Regsiter Bit and Content definition
|
||||
//============================================================================
|
||||
|
||||
//2 HSISR
|
||||
// interrupt mask which needs to clear
|
||||
#define MASK_HSISR_CLEAR (HSISR_GPIO12_0_INT |\
|
||||
HSISR_SPS_OCP_INT |\
|
||||
HSISR_RON_INT |\
|
||||
HSISR_PDNINT |\
|
||||
HSISR_GPIO9_INT)
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0100h ~ 0x01FFh MACTOP General Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0200h ~ 0x027Fh TXDMA Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0280h ~ 0x02FFh RXDMA Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
#define BIT_USB_RXDMA_AGG_EN BIT(31)
|
||||
#define RXDMA_AGG_MODE_EN BIT(1)
|
||||
|
||||
#ifdef CONFIG_WOWLAN
|
||||
#define RXPKT_RELEASE_POLL BIT(16)
|
||||
#define RXDMA_IDLE BIT(17)
|
||||
#define RW_RELEASE_EN BIT(18)
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0400h ~ 0x047Fh Protocol Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// 8188F REG_CCK_CHECK (offset 0x454)
|
||||
//----------------------------------------------------------------------------
|
||||
#define BIT_BCN_PORT_SEL BIT5
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0500h ~ 0x05FFh EDCA Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
// 0x0600h ~ 0x07FFh WMAC Configuration
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// 8195 IMR/ISR bits (offset 0xB0, 8bits)
|
||||
//----------------------------------------------------------------------------
|
||||
#define IMR_DISABLED_8188F 0
|
||||
// IMR DW0(0x00B0-00B3) Bit 0-31
|
||||
#define IMR_TIMER2_8188F BIT31 // Timeout interrupt 2
|
||||
#define IMR_TIMER1_8188F BIT30 // Timeout interrupt 1
|
||||
#define IMR_PSTIMEOUT_8188F BIT29 // Power Save Time Out Interrupt
|
||||
#define IMR_GTINT4_8188F BIT28 // When GTIMER4 expires, this bit is set to 1
|
||||
#define IMR_GTINT3_8188F BIT27 // When GTIMER3 expires, this bit is set to 1
|
||||
#define IMR_TXBCN0ERR_8188F BIT26 // Transmit Beacon0 Error
|
||||
#define IMR_TXBCN0OK_8188F BIT25 // Transmit Beacon0 OK
|
||||
#define IMR_TSF_BIT32_TOGGLE_8188F BIT24 // TSF Timer BIT32 toggle indication interrupt
|
||||
#define IMR_BCNDMAINT0_8188F BIT20 // Beacon DMA Interrupt 0
|
||||
#define IMR_BCNDERR0_8188F BIT16 // Beacon Queue DMA OK0
|
||||
#define IMR_HSISR_IND_ON_INT_8188F BIT15 // HSISR Indicator (HSIMR & HSISR is true, this bit is set to 1)
|
||||
#define IMR_BCNDMAINT_E_8188F BIT14 // Beacon DMA Interrupt Extension for Win7
|
||||
#define IMR_ATIMEND_8188F BIT12 // CTWidnow End or ATIM Window End
|
||||
#define IMR_C2HCMD_8188F BIT10 // CPU to Host Command INT Status, Write 1 clear
|
||||
#define IMR_CPWM2_8188F BIT9 // CPU power Mode exchange INT Status, Write 1 clear
|
||||
#define IMR_CPWM_8188F BIT8 // CPU power Mode exchange INT Status, Write 1 clear
|
||||
#define IMR_HIGHDOK_8188F BIT7 // High Queue DMA OK
|
||||
#define IMR_MGNTDOK_8188F BIT6 // Management Queue DMA OK
|
||||
#define IMR_BKDOK_8188F BIT5 // AC_BK DMA OK
|
||||
#define IMR_BEDOK_8188F BIT4 // AC_BE DMA OK
|
||||
#define IMR_VIDOK_8188F BIT3 // AC_VI DMA OK
|
||||
#define IMR_VODOK_8188F BIT2 // AC_VO DMA OK
|
||||
#define IMR_RDU_8188F BIT1 // Rx Descriptor Unavailable
|
||||
#define IMR_ROK_8188F BIT0 // Receive DMA OK
|
||||
|
||||
// IMR DW1(0x00B4-00B7) Bit 0-31
|
||||
#define IMR_BCNDMAINT7_8188F BIT27 // Beacon DMA Interrupt 7
|
||||
#define IMR_BCNDMAINT6_8188F BIT26 // Beacon DMA Interrupt 6
|
||||
#define IMR_BCNDMAINT5_8188F BIT25 // Beacon DMA Interrupt 5
|
||||
#define IMR_BCNDMAINT4_8188F BIT24 // Beacon DMA Interrupt 4
|
||||
#define IMR_BCNDMAINT3_8188F BIT23 // Beacon DMA Interrupt 3
|
||||
#define IMR_BCNDMAINT2_8188F BIT22 // Beacon DMA Interrupt 2
|
||||
#define IMR_BCNDMAINT1_8188F BIT21 // Beacon DMA Interrupt 1
|
||||
#define IMR_BCNDOK7_8188F BIT20 // Beacon Queue DMA OK Interrup 7
|
||||
#define IMR_BCNDOK6_8188F BIT19 // Beacon Queue DMA OK Interrup 6
|
||||
#define IMR_BCNDOK5_8188F BIT18 // Beacon Queue DMA OK Interrup 5
|
||||
#define IMR_BCNDOK4_8188F BIT17 // Beacon Queue DMA OK Interrup 4
|
||||
#define IMR_BCNDOK3_8188F BIT16 // Beacon Queue DMA OK Interrup 3
|
||||
#define IMR_BCNDOK2_8188F BIT15 // Beacon Queue DMA OK Interrup 2
|
||||
#define IMR_BCNDOK1_8188F BIT14 // Beacon Queue DMA OK Interrup 1
|
||||
#define IMR_ATIMEND_E_8188F BIT13 // ATIM Window End Extension for Win7
|
||||
#define IMR_TXERR_8188F BIT11 // Tx Error Flag Interrupt Status, write 1 clear.
|
||||
#define IMR_RXERR_8188F BIT10 // Rx Error Flag INT Status, Write 1 clear
|
||||
#define IMR_TXFOVW_8188F BIT9 // Transmit FIFO Overflow
|
||||
#define IMR_RXFOVW_8188F BIT8 // Receive FIFO Overflow
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
//#define IMR_RX_MASK (IMR_ROK_8188F|IMR_RDU_8188F|IMR_RXFOVW_8188F)
|
||||
#define IMR_TX_MASK (IMR_VODOK_8188F|IMR_VIDOK_8188F|IMR_BEDOK_8188F|IMR_BKDOK_8188F|IMR_MGNTDOK_8188F|IMR_HIGHDOK_8188F)
|
||||
|
||||
#define RT_BCN_INT_MASKS (IMR_BCNDMAINT0_8188F | IMR_TXBCN0OK_8188F | IMR_TXBCN0ERR_8188F | IMR_BCNDERR0_8188F)
|
||||
|
||||
#define RT_AC_INT_MASKS (IMR_VIDOK_8188F | IMR_VODOK_8188F | IMR_BEDOK_8188F|IMR_BKDOK_8188F)
|
||||
#endif
|
||||
|
||||
//========================================================
|
||||
// General definitions
|
||||
//========================================================
|
||||
|
||||
#define MACID_NUM_8188F 16
|
||||
#define SEC_CAM_ENT_NUM_8188F 16
|
||||
#define NSS_NUM_8188F 1
|
||||
#define BAND_CAP_8188F (BAND_CAP_2G)
|
||||
#define BW_CAP_8188F (BW_CAP_20M | BW_CAP_40M)
|
||||
|
||||
#endif /* __RTL8188F_SPEC_H__ */
|
||||
|
||||
30
include/rtl8188f_sreset.h
Normal file
30
include/rtl8188f_sreset.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _RTL8188F_SRESET_H_
|
||||
#define _RTL8188F_SRESET_H_
|
||||
|
||||
#include <rtw_sreset.h>
|
||||
|
||||
#ifdef DBG_CONFIG_ERROR_DETECT
|
||||
extern void rtl8188f_sreset_xmit_status_check(_adapter *padapter);
|
||||
extern void rtl8188f_sreset_linked_status_check(_adapter *padapter);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
336
include/rtl8188f_xmit.h
Normal file
336
include/rtl8188f_xmit.h
Normal file
|
|
@ -0,0 +1,336 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8188F_XMIT_H__
|
||||
#define __RTL8188F_XMIT_H__
|
||||
|
||||
|
||||
#define MAX_TID (15)
|
||||
|
||||
|
||||
#ifndef __INC_HAL8188FDESC_H
|
||||
#define __INC_HAL8188FDESC_H
|
||||
|
||||
#define RX_STATUS_DESC_SIZE_8188F 24
|
||||
#define RX_DRV_INFO_SIZE_UNIT_8188F 8
|
||||
|
||||
|
||||
//DWORD 0
|
||||
#define SET_RX_STATUS_DESC_PKT_LEN_8188F(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE( __pRxStatusDesc, 0, 14, __Value)
|
||||
#define SET_RX_STATUS_DESC_EOR_8188F(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE( __pRxStatusDesc, 30, 1, __Value)
|
||||
#define SET_RX_STATUS_DESC_OWN_8188F(__pRxStatusDesc, __Value) SET_BITS_TO_LE_4BYTE( __pRxStatusDesc, 31, 1, __Value)
|
||||
|
||||
#define GET_RX_STATUS_DESC_PKT_LEN_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 0, 14)
|
||||
#define GET_RX_STATUS_DESC_CRC32_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 14, 1)
|
||||
#define GET_RX_STATUS_DESC_ICV_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 15, 1)
|
||||
#define GET_RX_STATUS_DESC_DRVINFO_SIZE_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 16, 4)
|
||||
#define GET_RX_STATUS_DESC_SECURITY_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 20, 3)
|
||||
#define GET_RX_STATUS_DESC_QOS_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 23, 1)
|
||||
#define GET_RX_STATUS_DESC_SHIFT_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 24, 2)
|
||||
#define GET_RX_STATUS_DESC_PHY_STATUS_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 26, 1)
|
||||
#define GET_RX_STATUS_DESC_SWDEC_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 27, 1)
|
||||
#define GET_RX_STATUS_DESC_LAST_SEG_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 28, 1)
|
||||
#define GET_RX_STATUS_DESC_FIRST_SEG_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 29, 1)
|
||||
#define GET_RX_STATUS_DESC_EOR_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 30, 1)
|
||||
#define GET_RX_STATUS_DESC_OWN_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 31, 1)
|
||||
|
||||
//DWORD 1
|
||||
#define GET_RX_STATUS_DESC_MACID_8188F(__pRxDesc) LE_BITS_TO_4BYTE(__pRxDesc+4, 0, 7)
|
||||
#define GET_RX_STATUS_DESC_TID_8188F(__pRxDesc) LE_BITS_TO_4BYTE(__pRxDesc+4, 8, 4)
|
||||
#define GET_RX_STATUS_DESC_AMSDU_8188F(__pRxDesc) LE_BITS_TO_4BYTE(__pRxDesc+4, 13, 1)
|
||||
#define GET_RX_STATUS_DESC_RXID_MATCH_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+4, 14, 1)
|
||||
#define GET_RX_STATUS_DESC_PAGGR_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+4, 15, 1)
|
||||
#define GET_RX_STATUS_DESC_A1_FIT_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+4, 16, 4)
|
||||
#define GET_RX_STATUS_DESC_CHKERR_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+4, 20, 1)
|
||||
#define GET_RX_STATUS_DESC_IPVER_8188F(__pRxDesc) LE_BITS_TO_4BYTE(__pRxDesc+4, 21, 1)
|
||||
#define GET_RX_STATUS_DESC_IS_TCPUDP__8188F(__pRxDesc) LE_BITS_TO_4BYTE(__pRxDesc+4, 22, 1)
|
||||
#define GET_RX_STATUS_DESC_CHK_VLD_8188F(__pRxDesc) LE_BITS_TO_4BYTE(__pRxDesc+4, 23, 1)
|
||||
#define GET_RX_STATUS_DESC_PAM_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+4, 24, 1)
|
||||
#define GET_RX_STATUS_DESC_PWR_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+4, 25, 1)
|
||||
#define GET_RX_STATUS_DESC_MORE_DATA_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+4, 26, 1)
|
||||
#define GET_RX_STATUS_DESC_MORE_FRAG_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+4, 27, 1)
|
||||
#define GET_RX_STATUS_DESC_TYPE_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+4, 28, 2)
|
||||
#define GET_RX_STATUS_DESC_MC_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+4, 30, 1)
|
||||
#define GET_RX_STATUS_DESC_BC_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+4, 31, 1)
|
||||
|
||||
//DWORD 2
|
||||
#define GET_RX_STATUS_DESC_SEQ_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+8, 0, 12)
|
||||
#define GET_RX_STATUS_DESC_FRAG_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+8, 12, 4)
|
||||
#define GET_RX_STATUS_DESC_RX_IS_QOS_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+8, 16, 1)
|
||||
#define GET_RX_STATUS_DESC_WLANHD_IV_LEN_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+8, 18, 6)
|
||||
#define GET_RX_STATUS_DESC_RPT_SEL_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+8, 28, 1)
|
||||
|
||||
//DWORD 3
|
||||
#define GET_RX_STATUS_DESC_RX_RATE_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+12, 0, 7)
|
||||
#define GET_RX_STATUS_DESC_HTC_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+12, 10, 1)
|
||||
#define GET_RX_STATUS_DESC_EOSP_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+12, 11, 1)
|
||||
#define GET_RX_STATUS_DESC_BSSID_FIT_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+12, 12, 2)
|
||||
#ifdef CONFIG_USB_RX_AGGREGATION
|
||||
#define GET_RX_STATUS_DESC_USB_AGG_PKTNUM_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+12, 16, 8)
|
||||
#endif
|
||||
#define GET_RX_STATUS_DESC_PATTERN_MATCH_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+12, 29, 1)
|
||||
#define GET_RX_STATUS_DESC_UNICAST_MATCH_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+12, 30, 1)
|
||||
#define GET_RX_STATUS_DESC_MAGIC_MATCH_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+12, 31, 1)
|
||||
|
||||
//DWORD 6
|
||||
#define GET_RX_STATUS_DESC_SPLCP_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+16, 0, 1)
|
||||
#define GET_RX_STATUS_DESC_LDPC_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+16, 1, 1)
|
||||
#define GET_RX_STATUS_DESC_STBC_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+16, 2, 1)
|
||||
#define GET_RX_STATUS_DESC_BW_8188F(__pRxDesc) LE_BITS_TO_4BYTE( __pRxDesc+16, 4, 2)
|
||||
|
||||
//DWORD 5
|
||||
#define GET_RX_STATUS_DESC_TSFL_8188F(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+20, 0, 32)
|
||||
|
||||
#define GET_RX_STATUS_DESC_BUFF_ADDR_8188F(__pRxDesc) LE_BITS_TO_4BYTE(__pRxDesc+24, 0, 32)
|
||||
#define GET_RX_STATUS_DESC_BUFF_ADDR64_8188F(__pRxDesc) LE_BITS_TO_4BYTE(__pRxDesc+28, 0, 32)
|
||||
|
||||
#define SET_RX_STATUS_DESC_BUFF_ADDR_8188F(__pRxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pRxDesc+24, 0, 32, __Value)
|
||||
|
||||
|
||||
// Dword 0
|
||||
#define GET_TX_DESC_OWN_8188F(__pTxDesc) LE_BITS_TO_4BYTE(__pTxDesc, 31, 1)
|
||||
|
||||
#define SET_TX_DESC_PKT_SIZE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 0, 16, __Value)
|
||||
#define SET_TX_DESC_OFFSET_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 16, 8, __Value)
|
||||
#define SET_TX_DESC_BMC_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 24, 1, __Value)
|
||||
#define SET_TX_DESC_HTC_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 25, 1, __Value)
|
||||
#define SET_TX_DESC_LAST_SEG_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 26, 1, __Value)
|
||||
#define SET_TX_DESC_FIRST_SEG_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 27, 1, __Value)
|
||||
#define SET_TX_DESC_LINIP_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 28, 1, __Value)
|
||||
#define SET_TX_DESC_NO_ACM_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 29, 1, __Value)
|
||||
#define SET_TX_DESC_GF_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 30, 1, __Value)
|
||||
#define SET_TX_DESC_OWN_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 31, 1, __Value)
|
||||
|
||||
// Dword 1
|
||||
#define SET_TX_DESC_MACID_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 0, 7, __Value)
|
||||
#define SET_TX_DESC_QUEUE_SEL_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 8, 5, __Value)
|
||||
#define SET_TX_DESC_RDG_NAV_EXT_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 13, 1, __Value)
|
||||
#define SET_TX_DESC_LSIG_TXOP_EN_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 14, 1, __Value)
|
||||
#define SET_TX_DESC_PIFS_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 15, 1, __Value)
|
||||
#define SET_TX_DESC_RATE_ID_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 16, 5, __Value)
|
||||
#define SET_TX_DESC_EN_DESC_ID_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 21, 1, __Value)
|
||||
#define SET_TX_DESC_SEC_TYPE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 22, 2, __Value)
|
||||
#define SET_TX_DESC_PKT_OFFSET_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 24, 5, __Value)
|
||||
|
||||
|
||||
// Dword 2
|
||||
#define SET_TX_DESC_PAID_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 0, 9, __Value)
|
||||
#define SET_TX_DESC_CCA_RTS_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 10, 2, __Value)
|
||||
#define SET_TX_DESC_AGG_ENABLE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 12, 1, __Value)
|
||||
#define SET_TX_DESC_RDG_ENABLE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 13, 1, __Value)
|
||||
#define SET_TX_DESC_AGG_BREAK_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 16, 1, __Value)
|
||||
#define SET_TX_DESC_MORE_FRAG_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 17, 1, __Value)
|
||||
#define SET_TX_DESC_RAW_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 18, 1, __Value)
|
||||
#define SET_TX_DESC_SPE_RPT_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 19, 1, __Value)
|
||||
#define SET_TX_DESC_AMPDU_DENSITY_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 20, 3, __Value)
|
||||
#define SET_TX_DESC_BT_INT_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 23, 1, __Value)
|
||||
#define SET_TX_DESC_GID_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 24, 6, __Value)
|
||||
|
||||
|
||||
// Dword 3
|
||||
#define SET_TX_DESC_WHEADER_LEN_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 0, 4, __Value)
|
||||
#define SET_TX_DESC_CHK_EN_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 4, 1, __Value)
|
||||
#define SET_TX_DESC_EARLY_MODE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 5, 1, __Value)
|
||||
#define SET_TX_DESC_HWSEQ_SEL_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 6, 2, __Value)
|
||||
#define SET_TX_DESC_USE_RATE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 8, 1, __Value)
|
||||
#define SET_TX_DESC_DISABLE_RTS_FB_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 9, 1, __Value)
|
||||
#define SET_TX_DESC_DISABLE_FB_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 10, 1, __Value)
|
||||
#define SET_TX_DESC_CTS2SELF_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 11, 1, __Value)
|
||||
#define SET_TX_DESC_RTS_ENABLE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 12, 1, __Value)
|
||||
#define SET_TX_DESC_HW_RTS_ENABLE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 13, 1, __Value)
|
||||
#define SET_TX_DESC_NAV_USE_HDR_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 15, 1, __Value)
|
||||
#define SET_TX_DESC_USE_MAX_LEN_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 16, 1, __Value)
|
||||
#define SET_TX_DESC_MAX_AGG_NUM_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 17, 5, __Value)
|
||||
#define SET_TX_DESC_NDPA_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 22, 2, __Value)
|
||||
#define SET_TX_DESC_AMPDU_MAX_TIME_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 24, 8, __Value)
|
||||
|
||||
// Dword 4
|
||||
#define SET_TX_DESC_TX_RATE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 0, 7, __Value)
|
||||
#define SET_TX_DESC_DATA_RATE_FB_LIMIT_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 8, 5, __Value)
|
||||
#define SET_TX_DESC_RTS_RATE_FB_LIMIT_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 13, 4, __Value)
|
||||
#define SET_TX_DESC_RETRY_LIMIT_ENABLE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 17, 1, __Value)
|
||||
#define SET_TX_DESC_DATA_RETRY_LIMIT_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 18, 6, __Value)
|
||||
#define SET_TX_DESC_RTS_RATE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 24, 5, __Value)
|
||||
|
||||
|
||||
// Dword 5
|
||||
#define SET_TX_DESC_DATA_SC_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 0, 4, __Value)
|
||||
#define SET_TX_DESC_DATA_SHORT_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 4, 1, __Value)
|
||||
#define SET_TX_DESC_DATA_BW_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 5, 2, __Value)
|
||||
#define SET_TX_DESC_DATA_LDPC_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 7, 1, __Value)
|
||||
#define SET_TX_DESC_DATA_STBC_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 8, 2, __Value)
|
||||
#define SET_TX_DESC_CTROL_STBC_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 10, 2, __Value)
|
||||
#define SET_TX_DESC_RTS_SHORT_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 12, 1, __Value)
|
||||
#define SET_TX_DESC_RTS_SC_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 13, 4, __Value)
|
||||
|
||||
|
||||
// Dword 6
|
||||
#define SET_TX_DESC_SW_DEFINE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 0, 12, __Value)
|
||||
#define SET_TX_DESC_MBSSID_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 12, 4, __Value)
|
||||
#define SET_TX_DESC_ANTSEL_A_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 16, 3, __Value)
|
||||
#define SET_TX_DESC_ANTSEL_B_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 19, 3, __Value)
|
||||
#define SET_TX_DESC_ANTSEL_C_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 22, 3, __Value)
|
||||
#define SET_TX_DESC_ANTSEL_D_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 25, 3, __Value)
|
||||
|
||||
// Dword 7
|
||||
#if(DEV_BUS_TYPE == RT_PCI_INTERFACE)
|
||||
#define SET_TX_DESC_TX_BUFFER_SIZE_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 0, 16, __Value)
|
||||
#else
|
||||
#define SET_TX_DESC_TX_DESC_CHECKSUM_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 0, 16, __Value)
|
||||
#endif
|
||||
#define SET_TX_DESC_USB_TXAGG_NUM_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 24, 8, __Value)
|
||||
#if(DEV_BUS_TYPE == RT_SDIO_INTERFACE)
|
||||
#define SET_TX_DESC_SDIO_TXSEQ_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 16, 8, __Value)
|
||||
#endif
|
||||
|
||||
// Dword 8
|
||||
#define SET_TX_DESC_HWSEQ_EN_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 15, 1, __Value)
|
||||
|
||||
// Dword 9
|
||||
#define SET_TX_DESC_SEQ_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+36, 12, 12, __Value)
|
||||
|
||||
// Dword 10
|
||||
#define SET_TX_DESC_TX_BUFFER_ADDRESS_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+40, 0, 32, __Value)
|
||||
#define GET_TX_DESC_TX_BUFFER_ADDRESS_8188F(__pTxDesc) LE_BITS_TO_4BYTE(__pTxDesc+40, 0, 32)
|
||||
|
||||
// Dword 11
|
||||
#define SET_TX_DESC_NEXT_DESC_ADDRESS_8188F(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+48, 0, 32, __Value)
|
||||
|
||||
|
||||
#define SET_EARLYMODE_PKTNUM_8188F(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 0, 4, __Value)
|
||||
#define SET_EARLYMODE_LEN0_8188F(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 4, 15, __Value)
|
||||
#define SET_EARLYMODE_LEN1_1_8188F(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 19, 13, __Value)
|
||||
#define SET_EARLYMODE_LEN1_2_8188F(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 0, 2, __Value)
|
||||
#define SET_EARLYMODE_LEN2_8188F(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 2, 15, __Value)
|
||||
#define SET_EARLYMODE_LEN3_8188F(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 17, 15, __Value)
|
||||
|
||||
#endif
|
||||
//-----------------------------------------------------------
|
||||
//
|
||||
// Rate
|
||||
//
|
||||
//-----------------------------------------------------------
|
||||
// CCK Rates, TxHT = 0
|
||||
#define DESC8188F_RATE1M 0x00
|
||||
#define DESC8188F_RATE2M 0x01
|
||||
#define DESC8188F_RATE5_5M 0x02
|
||||
#define DESC8188F_RATE11M 0x03
|
||||
|
||||
// OFDM Rates, TxHT = 0
|
||||
#define DESC8188F_RATE6M 0x04
|
||||
#define DESC8188F_RATE9M 0x05
|
||||
#define DESC8188F_RATE12M 0x06
|
||||
#define DESC8188F_RATE18M 0x07
|
||||
#define DESC8188F_RATE24M 0x08
|
||||
#define DESC8188F_RATE36M 0x09
|
||||
#define DESC8188F_RATE48M 0x0a
|
||||
#define DESC8188F_RATE54M 0x0b
|
||||
|
||||
// MCS Rates, TxHT = 1
|
||||
#define DESC8188F_RATEMCS0 0x0c
|
||||
#define DESC8188F_RATEMCS1 0x0d
|
||||
#define DESC8188F_RATEMCS2 0x0e
|
||||
#define DESC8188F_RATEMCS3 0x0f
|
||||
#define DESC8188F_RATEMCS4 0x10
|
||||
#define DESC8188F_RATEMCS5 0x11
|
||||
#define DESC8188F_RATEMCS6 0x12
|
||||
#define DESC8188F_RATEMCS7 0x13
|
||||
#define DESC8188F_RATEMCS8 0x14
|
||||
#define DESC8188F_RATEMCS9 0x15
|
||||
#define DESC8188F_RATEMCS10 0x16
|
||||
#define DESC8188F_RATEMCS11 0x17
|
||||
#define DESC8188F_RATEMCS12 0x18
|
||||
#define DESC8188F_RATEMCS13 0x19
|
||||
#define DESC8188F_RATEMCS14 0x1a
|
||||
#define DESC8188F_RATEMCS15 0x1b
|
||||
#define DESC8188F_RATEVHTSS1MCS0 0x2c
|
||||
#define DESC8188F_RATEVHTSS1MCS1 0x2d
|
||||
#define DESC8188F_RATEVHTSS1MCS2 0x2e
|
||||
#define DESC8188F_RATEVHTSS1MCS3 0x2f
|
||||
#define DESC8188F_RATEVHTSS1MCS4 0x30
|
||||
#define DESC8188F_RATEVHTSS1MCS5 0x31
|
||||
#define DESC8188F_RATEVHTSS1MCS6 0x32
|
||||
#define DESC8188F_RATEVHTSS1MCS7 0x33
|
||||
#define DESC8188F_RATEVHTSS1MCS8 0x34
|
||||
#define DESC8188F_RATEVHTSS1MCS9 0x35
|
||||
#define DESC8188F_RATEVHTSS2MCS0 0x36
|
||||
#define DESC8188F_RATEVHTSS2MCS1 0x37
|
||||
#define DESC8188F_RATEVHTSS2MCS2 0x38
|
||||
#define DESC8188F_RATEVHTSS2MCS3 0x39
|
||||
#define DESC8188F_RATEVHTSS2MCS4 0x3a
|
||||
#define DESC8188F_RATEVHTSS2MCS5 0x3b
|
||||
#define DESC8188F_RATEVHTSS2MCS6 0x3c
|
||||
#define DESC8188F_RATEVHTSS2MCS7 0x3d
|
||||
#define DESC8188F_RATEVHTSS2MCS8 0x3e
|
||||
#define DESC8188F_RATEVHTSS2MCS9 0x3f
|
||||
|
||||
|
||||
#define RX_HAL_IS_CCK_RATE_8188F(pDesc)\
|
||||
(GET_RX_STATUS_DESC_RX_RATE_8188F(pDesc) == DESC8188F_RATE1M ||\
|
||||
GET_RX_STATUS_DESC_RX_RATE_8188F(pDesc) == DESC8188F_RATE2M ||\
|
||||
GET_RX_STATUS_DESC_RX_RATE_8188F(pDesc) == DESC8188F_RATE5_5M ||\
|
||||
GET_RX_STATUS_DESC_RX_RATE_8188F(pDesc) == DESC8188F_RATE11M)
|
||||
|
||||
|
||||
void rtl8188f_update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem);
|
||||
void rtl8188f_fill_fake_txdesc(PADAPTER padapter, u8 *pDesc, u32 BufferLen, u8 IsPsPoll, u8 IsBTQosNull, u8 bDataFrame);
|
||||
|
||||
#if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
|
||||
s32 rtl8188fs_init_xmit_priv(PADAPTER padapter);
|
||||
void rtl8188fs_free_xmit_priv(PADAPTER padapter);
|
||||
s32 rtl8188fs_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe);
|
||||
s32 rtl8188fs_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe);
|
||||
s32 rtl8188fs_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
|
||||
s32 rtl8188fs_xmit_buf_handler(PADAPTER padapter);
|
||||
thread_return rtl8188fs_xmit_thread(thread_context context);
|
||||
#define hal_xmit_handler rtl8188fs_xmit_buf_handler
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_HCI
|
||||
s32 rtl8188fu_xmit_buf_handler(PADAPTER padapter);
|
||||
#define hal_xmit_handler rtl8188fu_xmit_buf_handler
|
||||
|
||||
|
||||
s32 rtl8188fu_init_xmit_priv(PADAPTER padapter);
|
||||
void rtl8188fu_free_xmit_priv(PADAPTER padapter);
|
||||
s32 rtl8188fu_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe);
|
||||
s32 rtl8188fu_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe);
|
||||
s32 rtl8188fu_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
|
||||
//s32 rtl8812au_xmit_buf_handler(PADAPTER padapter);
|
||||
void rtl8188fu_xmit_tasklet(void *priv);
|
||||
s32 rtl8188fu_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf);
|
||||
void _dbg_dump_tx_info(_adapter *padapter,int frame_tag,struct tx_desc *ptxdesc);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCI_HCI
|
||||
s32 rtl8188fe_init_xmit_priv(PADAPTER padapter);
|
||||
void rtl8188fe_free_xmit_priv(PADAPTER padapter);
|
||||
struct xmit_buf *rtl8188fe_dequeue_xmitbuf(struct rtw_tx_ring *ring);
|
||||
void rtl8188fe_xmitframe_resume(_adapter *padapter);
|
||||
s32 rtl8188fe_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe);
|
||||
s32 rtl8188fe_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe);
|
||||
s32 rtl8188fe_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
|
||||
void rtl8188fe_xmit_tasklet(void *priv);
|
||||
#endif
|
||||
|
||||
u8 BWMapping_8188F(PADAPTER Adapter, struct pkt_attrib *pattrib);
|
||||
u8 SCMapping_8188F(PADAPTER Adapter, struct pkt_attrib *pattrib);
|
||||
|
||||
#endif
|
||||
|
||||
175
include/rtl8192e_cmd.h
Normal file
175
include/rtl8192e_cmd.h
Normal file
|
|
@ -0,0 +1,175 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* 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 the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTL8192E_CMD_H__
|
||||
#define __RTL8192E_CMD_H__
|
||||
|
||||
typedef enum _RTL8192E_H2C_CMD
|
||||
{
|
||||
H2C_8192E_RSVDPAGE = 0x00,
|
||||
H2C_8192E_MSRRPT = 0x01,
|
||||
H2C_8192E_SCAN = 0x02,
|
||||
H2C_8192E_KEEP_ALIVE_CTRL = 0x03,
|
||||
H2C_8192E_DISCONNECT_DECISION = 0x04,
|
||||
H2C_8192E_INIT_OFFLOAD = 0x06,
|
||||
H2C_8192E_AP_OFFLOAD = 0x08,
|
||||
H2C_8192E_BCN_RSVDPAGE = 0x09,
|
||||
H2C_8192E_PROBERSP_RSVDPAGE = 0x0a,
|
||||
|
||||
H2C_8192E_AP_WOW_GPIO_CTRL = 0x13,
|
||||
|
||||
H2C_8192E_SETPWRMODE = 0x20,
|
||||
H2C_8192E_PS_TUNING_PARA = 0x21,
|
||||
H2C_8192E_PS_TUNING_PARA2 = 0x22,
|
||||
H2C_8192E_PS_LPS_PARA = 0x23,
|
||||
H2C_8192E_P2P_PS_OFFLOAD = 0x24,
|
||||
H2C_8192E_SAP_PS = 0x26,
|
||||
H2C_8192E_RA_MASK = 0x40,
|
||||
H2C_8192E_RSSI_REPORT = 0x42,
|
||||
H2C_8192E_RA_PARA_ADJUST = 0x46,
|
||||
|
||||
H2C_8192E_WO_WLAN = 0x80,
|
||||
H2C_8192E_REMOTE_WAKE_CTRL = 0x81,
|
||||
H2C_8192E_AOAC_GLOBAL_INFO = 0x82,
|
||||
H2C_8192E_AOAC_RSVDPAGE = 0x83,
|
||||
|
||||
//Not defined in new 88E H2C CMD Format
|
||||
H2C_8192E_SELECTIVE_SUSPEND_ROF_CMD,
|
||||
H2C_8192E_P2P_PS_MODE,
|
||||
H2C_8192E_PSD_RESULT,
|
||||
MAX_8192E_H2CCMD
|
||||
}RTL8192E_H2C_CMD;
|
||||
|
||||
struct cmd_msg_parm {
|
||||
u8 eid; //element id
|
||||
u8 sz; // sz
|
||||
u8 buf[6];
|
||||
};
|
||||
|
||||
enum{
|
||||
PWRS
|
||||
};
|
||||
|
||||
typedef struct _SETPWRMODE_PARM {
|
||||
u8 Mode;//0:Active,1:LPS,2:WMMPS
|
||||
//u8 RLBM:4;//0:Min,1:Max,2: User define
|
||||
u8 SmartPS_RLBM;//LPS=0:PS_Poll,1:PS_Poll,2:NullData,WMM=0:PS_Poll,1:NullData
|
||||
u8 AwakeInterval; // unit: beacon interval
|
||||
u8 bAllQueueUAPSD;
|
||||
u8 PwrState;//AllON(0x0c),RFON(0x04),RFOFF(0x00)
|
||||
} SETPWRMODE_PARM, *PSETPWRMODE_PARM;
|
||||
|
||||
struct H2C_SS_RFOFF_PARAM{
|
||||
u8 ROFOn; // 1: on, 0:off
|
||||
u16 gpio_period; // unit: 1024 us
|
||||
}__attribute__ ((packed));
|
||||
|
||||
|
||||
typedef struct JOINBSSRPT_PARM_92E{
|
||||
u8 OpMode; // RT_MEDIA_STATUS
|
||||
#ifdef CONFIG_WOWLAN
|
||||
u8 MacID; // MACID
|
||||
#endif //CONFIG_WOWLAN
|
||||
}JOINBSSRPT_PARM_92E, *PJOINBSSRPT_PARM_92E;
|
||||
|
||||
/* move to hal_com_h2c.h
|
||||
typedef struct _RSVDPAGE_LOC_92E {
|
||||
u8 LocProbeRsp;
|
||||
u8 LocPsPoll;
|
||||
u8 LocNullData;
|
||||
u8 LocQosNull;
|
||||
u8 LocBTQosNull;
|
||||
} RSVDPAGE_LOC_92E, *PRSVDPAGE_LOC_92E;
|
||||
*/
|
||||
|
||||
|
||||
//_SETPWRMODE_PARM
|
||||
#define SET_8192E_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd, 0, 8, __Value)
|
||||
#define SET_8192E_H2CCMD_PWRMODE_PARM_RLBM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 4, __Value)
|
||||
#define SET_8192E_H2CCMD_PWRMODE_PARM_SMART_PS(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 4, 4, __Value)
|
||||
#define SET_8192E_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+2, 0, 8, __Value)
|
||||
#define SET_8192E_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+3, 0, 8, __Value)
|
||||
#define SET_8192E_H2CCMD_PWRMODE_PARM_PWR_STATE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+4, 0, 8, __Value)
|
||||
#define SET_8192E_H2CCMD_PWRMODE_PARM_BYTE5(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+5, 0, 8, __Value)
|
||||
#define GET_8192E_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd) LE_BITS_TO_1BYTE(__pH2CCmd, 0, 8)
|
||||
|
||||
//_P2P_PS_OFFLOAD
|
||||
#define SET_8192E_H2CCMD_P2P_PS_OFFLOAD_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value)
|
||||
#define SET_8192E_H2CCMD_P2P_PS_OFFLOAD_ROLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value)
|
||||
#define SET_8192E_H2CCMD_P2P_PS_OFFLOAD_CTWINDOW_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value)
|
||||
#define SET_8192E_H2CCMD_P2P_PS_OFFLOAD_NOA0_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 3, 1, __Value)
|
||||
#define SET_8192E_H2CCMD_P2P_PS_OFFLOAD_NOA1_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 4, 1, __Value)
|
||||
#define SET_8192E_H2CCMD_P2P_PS_OFFLOAD_ALLSTASLEEP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 5, 1, __Value)
|
||||
|
||||
|
||||
// host message to firmware cmd
|
||||
void rtl8192e_set_FwPwrMode_cmd(PADAPTER padapter, u8 Mode);
|
||||
void rtl8192e_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus);
|
||||
u8 rtl8192e_set_rssi_cmd(PADAPTER padapter, u8 *param);
|
||||
void rtl8192e_set_raid_cmd(PADAPTER padapter, u32 bitmap, u8* arg);
|
||||
void rtl8192e_Add_RateATid(PADAPTER padapter, u64 rate_bitmap, u8 *arg, u8 rssi_level);
|
||||
s32 FillH2CCmd_8192E(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
|
||||
u8 GetTxBufferRsvdPageNum8192E(_adapter *padapter, bool wowlan);
|
||||
//u8 rtl8192c_set_FwSelectSuspend_cmd(PADAPTER padapter, u8 bfwpoll, u16 period);
|
||||
s32 c2h_handler_8192e(PADAPTER padapter, u8 *buf);
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
void rtl8192e_download_BTCoex_AP_mode_rsvd_page(PADAPTER padapter);
|
||||
#endif // CONFIG_BT_COEXIST
|
||||
#ifdef CONFIG_P2P_PS
|
||||
void rtl8192e_set_p2p_ps_offload_cmd(PADAPTER padapter, u8 p2p_ps_state);
|
||||
#endif //CONFIG_P2P
|
||||
|
||||
void CheckFwRsvdPageContent(PADAPTER padapter);
|
||||
|
||||
#ifdef CONFIG_TSF_RESET_OFFLOAD
|
||||
int reset_tsf(PADAPTER Adapter, u8 reset_port );
|
||||
#endif // CONFIG_TSF_RESET_OFFLOAD
|
||||
|
||||
|
||||
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
|
||||
void SetFwRelatedForWoWLAN8192E(_adapter* padapter, u8 bHostIsGoingtoSleep);
|
||||
#endif
|
||||
/// TX Feedback Content
|
||||
#define USEC_UNIT_FOR_8192E_C2H_TX_RPT_QUEUE_TIME 256
|
||||
|
||||
#define GET_8192E_C2H_TX_RPT_QUEUE_SELECT(_Header) LE_BITS_TO_1BYTE((_Header + 0), 0, 5)
|
||||
#define GET_8192E_C2H_TX_RPT_PKT_BROCAST(_Header) LE_BITS_TO_1BYTE((_Header + 0), 5, 1)
|
||||
#define GET_8192E_C2H_TX_RPT_LIFE_TIME_OVER(_Header) LE_BITS_TO_1BYTE((_Header + 0), 6, 1)
|
||||
#define GET_8192E_C2H_TX_RPT_RETRY_OVER(_Header) LE_BITS_TO_1BYTE((_Header + 0), 7, 1)
|
||||
#define GET_8192E_C2H_TX_RPT_MAC_ID(_Header) LE_BITS_TO_1BYTE((_Header + 1), 0, 8)
|
||||
#define GET_8192E_C2H_TX_RPT_DATA_RETRY_CNT(_Header) LE_BITS_TO_1BYTE((_Header + 2), 0, 6)
|
||||
#define GET_8192E_C2H_TX_RPT_QUEUE_TIME(_Header) LE_BITS_TO_2BYTE((_Header + 3), 0, 16) // In unit of 256 microseconds.
|
||||
#define GET_8192E_C2H_TX_RPT_FINAL_DATA_RATE(_Header) LE_BITS_TO_1BYTE((_Header + 5), 0, 8)
|
||||
|
||||
|
||||
|
||||
void C2HContentParsing8192E(
|
||||
IN PADAPTER Adapter,
|
||||
IN u1Byte c2hCmdId,
|
||||
IN u1Byte c2hCmdLen,
|
||||
IN pu1Byte tmpBuf
|
||||
);
|
||||
VOID
|
||||
C2HPacketHandler_8192E(
|
||||
IN PADAPTER Adapter,
|
||||
IN pu1Byte Buffer,
|
||||
IN u1Byte Length
|
||||
);
|
||||
|
||||
#endif//__RTL8192E_CMD_H__
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue