-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
staging: r8723au: Add source files for new driver - part 4
The Realtek USB device RTL8723AU is found in Lenovo Yoga 13 tablets. A driver for it has been available in a GitHub repo for several months. This commit contains the fourth part of source files. The source is arbitrarily split to avoid E-mail files that are too large. Jes Sorensen at RedHat has made many improvements to the vendor code, and he has been doing the testing. I do not have access to this device. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Cc: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
- Loading branch information
Larry Finger
authored and
Greg Kroah-Hartman
committed
Apr 5, 2014
1 parent
b1925ad
commit 364e30e
Showing
75 changed files
with
18,670 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,234 @@ | ||
/****************************************************************************** | ||
* | ||
* 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. | ||
* | ||
* | ||
******************************************************************************/ | ||
#ifndef __INC_HAL8723PHYCFG_H__ | ||
#define __INC_HAL8723PHYCFG_H__ | ||
|
||
/*--------------------------Define Parameters-------------------------------*/ | ||
#define LOOP_LIMIT 5 | ||
#define MAX_STALL_TIME 50 /* us */ | ||
#define AntennaDiversityValue 0x80 | ||
#define MAX_TXPWR_IDX_NMODE_92S 63 | ||
#define Reset_Cnt_Limit 3 | ||
|
||
|
||
#define MAX_AGGR_NUM 0x0909 | ||
|
||
/*--------------------------Define Parameters-------------------------------*/ | ||
|
||
|
||
/*------------------------------Define structure----------------------------*/ | ||
enum swchnlcmdid { | ||
CmdID_End, | ||
CmdID_SetTxPowerLevel, | ||
CmdID_BBRegWrite10, | ||
CmdID_WritePortUlong, | ||
CmdID_WritePortUshort, | ||
CmdID_WritePortUchar, | ||
CmdID_RF_WriteReg, | ||
}; | ||
|
||
|
||
/* 1. Switch channel related */ | ||
struct swchnlcmd { | ||
enum swchnlcmdid CmdID; | ||
u32 Para1; | ||
u32 Para2; | ||
u32 msDelay; | ||
}; | ||
|
||
enum HW90_BLOCK { | ||
HW90_BLOCK_MAC = 0, | ||
HW90_BLOCK_PHY0 = 1, | ||
HW90_BLOCK_PHY1 = 2, | ||
HW90_BLOCK_RF = 3, | ||
HW90_BLOCK_MAXIMUM = 4, /* Never use this */ | ||
}; | ||
|
||
enum RF_RADIO_PATH { | ||
RF_PATH_A = 0, /* Radio Path A */ | ||
RF_PATH_B = 1, /* Radio Path B */ | ||
RF_PATH_C = 2, /* Radio Path C */ | ||
RF_PATH_D = 3, /* Radio Path D */ | ||
RF_PATH_MAX /* Max RF number 90 support */ | ||
}; | ||
|
||
#define RF_PATH_MAX 3 | ||
|
||
#define CHANNEL_MAX_NUMBER 14 /* 14 is the max channel number */ | ||
#define CHANNEL_GROUP_MAX 3 /* ch1~3, ch4~9, ch10~14 total three groups */ | ||
|
||
enum WIRELESS_MODE { | ||
WIRELESS_MODE_UNKNOWN = 0x00, | ||
WIRELESS_MODE_A = BIT2, | ||
WIRELESS_MODE_B = BIT0, | ||
WIRELESS_MODE_G = BIT1, | ||
WIRELESS_MODE_AUTO = BIT5, | ||
WIRELESS_MODE_N_24G = BIT3, | ||
WIRELESS_MODE_N_5G = BIT4, | ||
WIRELESS_MODE_AC = BIT6 | ||
}; | ||
|
||
enum baseband_config_type { | ||
BaseBand_Config_PHY_REG = 0, /* Radio Path A */ | ||
BaseBand_Config_AGC_TAB = 1, /* Radio Path B */ | ||
}; | ||
|
||
enum ra_offset_area { | ||
RA_OFFSET_LEGACY_OFDM1, | ||
RA_OFFSET_LEGACY_OFDM2, | ||
RA_OFFSET_HT_OFDM1, | ||
RA_OFFSET_HT_OFDM2, | ||
RA_OFFSET_HT_OFDM3, | ||
RA_OFFSET_HT_OFDM4, | ||
RA_OFFSET_HT_CCK, | ||
}; | ||
|
||
|
||
/* BB/RF related */ | ||
enum rf_type_8190p { | ||
RF_TYPE_MIN, /* 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. */ | ||
}; | ||
|
||
struct bb_reg_define { | ||
u32 rfintfs; /* set software control: */ | ||
/* 0x870~0x877[8 bytes] */ | ||
u32 rfintfi; /* readback data: */ | ||
/* 0x8e0~0x8e7[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 rfLSSI_Select; /* BB Band Select: */ | ||
/* 0x878~0x87f [8 bytes] */ | ||
u32 rfTxGainStage; /* Tx gain stage: */ | ||
/* 0x80c~0x80f [4 bytes] */ | ||
u32 rfHSSIPara1; /* wire parameter control1 : */ | ||
/* 0x820~0x823, 0x828~0x82b, 0x830~0x833, 0x838~0x83b [16 bytes] */ | ||
u32 rfHSSIPara2; /* wire parameter control2 : */ | ||
/* 0x824~0x827, 0x82c~0x82f, 0x834~0x837, 0x83c~0x83f [16 bytes] */ | ||
u32 rfSwitchControl; /* Tx Rx antenna control : */ | ||
/* 0x858~0x85f [16 bytes] */ | ||
u32 rfAGCControl1; /* AGC parameter control1 : */ | ||
/* 0xc50~0xc53, 0xc58~0xc5b, 0xc60~0xc63, 0xc68~0xc6b [16 bytes] */ | ||
u32 rfAGCControl2; /* AGC parameter control2 : */ | ||
/* 0xc54~0xc57, 0xc5c~0xc5f, 0xc64~0xc67, 0xc6c~0xc6f [16 bytes] */ | ||
u32 rfRxIQImbalance; /* OFDM Rx IQ imbalance matrix : */ | ||
/* 0xc14~0xc17, 0xc1c~0xc1f, 0xc24~0xc27, 0xc2c~0xc2f [16 bytes] */ | ||
u32 rfRxAFE; /* Rx IQ DC ofset and Rx digital filter, Rx DC notch filter : */ | ||
/* 0xc10~0xc13, 0xc18~0xc1b, 0xc20~0xc23, 0xc28~0xc2b [16 bytes] */ | ||
u32 rfTxIQImbalance; /* OFDM Tx IQ imbalance matrix */ | ||
/* 0xc80~0xc83, 0xc88~0xc8b, 0xc90~0xc93, 0xc98~0xc9b [16 bytes] */ | ||
u32 rfTxAFE; /* Tx IQ DC Offset and Tx DFIR type */ | ||
/* 0xc84~0xc87, 0xc8c~0xc8f, 0xc94~0xc97, 0xc9c~0xc9f [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 */ | ||
}; | ||
|
||
struct r_antenna_sel_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; | ||
}; | ||
|
||
struct r_antenna_sel_cck { | ||
u8 r_cckrx_enable_2:2; | ||
u8 r_cckrx_enable:2; | ||
u8 r_ccktx_enable:4; | ||
}; | ||
|
||
/*------------------------------Define structure----------------------------*/ | ||
|
||
|
||
/*------------------------Export global variable----------------------------*/ | ||
/*------------------------Export global variable----------------------------*/ | ||
|
||
|
||
/*------------------------Export Macro Definition---------------------------*/ | ||
/*------------------------Export Macro Definition---------------------------*/ | ||
|
||
|
||
/*--------------------------Exported Function prototype---------------------*/ | ||
/* */ | ||
/* BB and RF register read/write */ | ||
/* */ | ||
u32 PHY_QueryBBReg(struct rtw_adapter *Adapter, u32 RegAddr, | ||
u32 BitMask); | ||
void PHY_SetBBReg(struct rtw_adapter *Adapter, u32 RegAddr, | ||
u32 BitMask, u32 Data); | ||
u32 PHY_QueryRFReg(struct rtw_adapter *Adapter, | ||
enum RF_RADIO_PATH eRFPath, u32 RegAddr, | ||
u32 BitMask); | ||
void PHY_SetRFReg(struct rtw_adapter *Adapter, | ||
enum RF_RADIO_PATH eRFPath, u32 RegAddr, | ||
u32 BitMask, u32 Data); | ||
|
||
/* */ | ||
/* BB TX Power R/W */ | ||
/* */ | ||
void PHY_SetTxPowerLevel8723A(struct rtw_adapter *Adapter, u8 channel); | ||
|
||
/* */ | ||
/* Switch bandwidth for 8723A */ | ||
/* */ | ||
void PHY_SetBWMode23a8723A(struct rtw_adapter *pAdapter, | ||
enum ht_channel_width ChnlWidth, | ||
unsigned char Offset); | ||
|
||
/* */ | ||
/* channel switch related funciton */ | ||
/* */ | ||
void PHY_SwChnl8723A(struct rtw_adapter *pAdapter, u8 channel); | ||
/* Call after initialization */ | ||
void ChkFwCmdIoDone(struct rtw_adapter *Adapter); | ||
|
||
/* */ | ||
/* Modify the value of the hw register when beacon interval be changed. */ | ||
/* */ | ||
void | ||
rtl8192c_PHY_SetBeaconHwReg(struct rtw_adapter *Adapter, u16 BeaconInterval); | ||
|
||
|
||
void PHY_SwitchEphyParameter(struct rtw_adapter *Adapter); | ||
|
||
void PHY_EnableHostClkReq(struct rtw_adapter *Adapter); | ||
|
||
bool | ||
SetAntennaConfig92C(struct rtw_adapter *Adapter, u8 DefaultAnt); | ||
|
||
/*--------------------------Exported Function prototype---------------------*/ | ||
|
||
#define PHY_SetMacReg PHY_SetBBReg | ||
|
||
/* MAC/BB/RF HAL config */ | ||
int PHY_BBConfig8723A(struct rtw_adapter *Adapter); | ||
int PHY_RFConfig8723A(struct rtw_adapter *Adapter); | ||
s32 PHY_MACConfig8723A(struct rtw_adapter *padapter); | ||
|
||
#endif |
Oops, something went wrong.