Staging: rtl8187se: Remove card8185 variable to simplify flow
When this code is used for the rtl8187se, the value of card_8185 in struct r8180_priv is always 7 or 8. As a result, the program flow can be simplified. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Tested-by: Bernhard Schiffner <bernhard@schiffner-limbach.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
bbc9a9916b
commit
d44eb889cc
|
@ -77,21 +77,6 @@ typedef enum _WIRELESS_MODE {
|
||||||
WIRELESS_MODE_AUTO = 0x08,
|
WIRELESS_MODE_AUTO = 0x08,
|
||||||
} WIRELESS_MODE;
|
} WIRELESS_MODE;
|
||||||
|
|
||||||
typedef enum _VERSION_8185{
|
|
||||||
// RTL8185
|
|
||||||
VERSION_8185_UNKNOWN,
|
|
||||||
VERSION_8185_C, // C-cut
|
|
||||||
VERSION_8185_D, // D-cut
|
|
||||||
// RTL8185B
|
|
||||||
VERSION_8185B_B, // B-cut
|
|
||||||
VERSION_8185B_D, // D-cut
|
|
||||||
VERSION_8185B_E, // E-cut
|
|
||||||
//RTL8187S-PCIE
|
|
||||||
VERSION_8187S_B, // B-cut
|
|
||||||
VERSION_8187S_C, // C-cut
|
|
||||||
VERSION_8187S_D, // D-cut
|
|
||||||
|
|
||||||
}VERSION_8185,*PVERSION_8185;
|
|
||||||
typedef struct ChnlAccessSetting {
|
typedef struct ChnlAccessSetting {
|
||||||
u16 SIFS_Timer;
|
u16 SIFS_Timer;
|
||||||
u16 DIFS_Timer;
|
u16 DIFS_Timer;
|
||||||
|
@ -341,8 +326,6 @@ typedef struct r8180_priv
|
||||||
int irq;
|
int irq;
|
||||||
struct ieee80211_device *ieee80211;
|
struct ieee80211_device *ieee80211;
|
||||||
|
|
||||||
short card_8185; /* O: rtl8180, 1:rtl8185 V B/C, 2:rtl8185 V D, 3:rtl8185B */
|
|
||||||
short card_8185_Bversion; /* if TCR reports card V B/C this discriminates */
|
|
||||||
short phy_ver; /* meaningful for rtl8225 1:A 2:B 3:C */
|
short phy_ver; /* meaningful for rtl8225 1:A 2:B 3:C */
|
||||||
short enable_gpio0;
|
short enable_gpio0;
|
||||||
enum card_type {PCI,MINIPCI,CARDBUS,USB/*rtl8187*/}card_type;
|
enum card_type {PCI,MINIPCI,CARDBUS,USB/*rtl8187*/}card_type;
|
||||||
|
|
|
@ -886,8 +886,6 @@ void rtl8180_rx_enable(struct net_device *dev)
|
||||||
rxconf = rxconf | (1<<ACCEPT_ALLMAC_FRAME_SHIFT);
|
rxconf = rxconf | (1<<ACCEPT_ALLMAC_FRAME_SHIFT);
|
||||||
}else{
|
}else{
|
||||||
rxconf = rxconf | (1<<ACCEPT_NICMAC_FRAME_SHIFT);
|
rxconf = rxconf | (1<<ACCEPT_NICMAC_FRAME_SHIFT);
|
||||||
if(priv->card_8185 == 0)
|
|
||||||
rxconf = rxconf | (1<<RX_CHECK_BSSID_SHIFT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(priv->ieee80211->iw_mode == IW_MODE_MONITOR){
|
if(priv->ieee80211->iw_mode == IW_MODE_MONITOR){
|
||||||
|
@ -910,9 +908,6 @@ void rtl8180_rx_enable(struct net_device *dev)
|
||||||
|
|
||||||
rxconf = rxconf &~ RCR_CS_MASK;
|
rxconf = rxconf &~ RCR_CS_MASK;
|
||||||
|
|
||||||
if (!priv->card_8185)
|
|
||||||
rxconf |= (priv->rcr_csense<<RCR_CS_SHIFT);
|
|
||||||
|
|
||||||
write_nic_dword(dev, RX_CONF, rxconf);
|
write_nic_dword(dev, RX_CONF, rxconf);
|
||||||
|
|
||||||
fix_rx_fifo(dev);
|
fix_rx_fifo(dev);
|
||||||
|
@ -964,28 +959,19 @@ void rtl8180_tx_enable(struct net_device *dev)
|
||||||
|
|
||||||
txconf = read_nic_dword(dev, TX_CONF);
|
txconf = read_nic_dword(dev, TX_CONF);
|
||||||
|
|
||||||
if (priv->card_8185) {
|
byte = read_nic_byte(dev, CW_CONF);
|
||||||
byte = read_nic_byte(dev,CW_CONF);
|
byte &= ~(1<<CW_CONF_PERPACKET_CW_SHIFT);
|
||||||
byte &= ~(1<<CW_CONF_PERPACKET_CW_SHIFT);
|
byte &= ~(1<<CW_CONF_PERPACKET_RETRY_SHIFT);
|
||||||
byte &= ~(1<<CW_CONF_PERPACKET_RETRY_SHIFT);
|
write_nic_byte(dev, CW_CONF, byte);
|
||||||
write_nic_byte(dev, CW_CONF, byte);
|
|
||||||
|
|
||||||
tx_agc_ctl = read_nic_byte(dev, TX_AGC_CTL);
|
tx_agc_ctl = read_nic_byte(dev, TX_AGC_CTL);
|
||||||
tx_agc_ctl &= ~(1<<TX_AGC_CTL_PERPACKET_GAIN_SHIFT);
|
tx_agc_ctl &= ~(1<<TX_AGC_CTL_PERPACKET_GAIN_SHIFT);
|
||||||
tx_agc_ctl &= ~(1<<TX_AGC_CTL_PERPACKET_ANTSEL_SHIFT);
|
tx_agc_ctl &= ~(1<<TX_AGC_CTL_PERPACKET_ANTSEL_SHIFT);
|
||||||
tx_agc_ctl |=(1<<TX_AGC_CTL_FEEDBACK_ANT);
|
tx_agc_ctl |= (1<<TX_AGC_CTL_FEEDBACK_ANT);
|
||||||
write_nic_byte(dev, TX_AGC_CTL, tx_agc_ctl);
|
write_nic_byte(dev, TX_AGC_CTL, tx_agc_ctl);
|
||||||
write_nic_byte(dev, 0xec, 0x3f); /* Disable early TX */
|
write_nic_byte(dev, 0xec, 0x3f); /* Disable early TX */
|
||||||
}
|
|
||||||
|
|
||||||
if (priv->card_8185)
|
txconf = txconf & ~(1<<TCR_PROBE_NOTIMESTAMP_SHIFT);
|
||||||
txconf = txconf &~ (1<<TCR_PROBE_NOTIMESTAMP_SHIFT);
|
|
||||||
else {
|
|
||||||
if(hwseqnum)
|
|
||||||
txconf= txconf &~ (1<<TX_CONF_HEADER_AUTOICREMENT_SHIFT);
|
|
||||||
else
|
|
||||||
txconf= txconf | (1<<TX_CONF_HEADER_AUTOICREMENT_SHIFT);
|
|
||||||
}
|
|
||||||
|
|
||||||
txconf = txconf &~ TX_LOOPBACK_MASK;
|
txconf = txconf &~ TX_LOOPBACK_MASK;
|
||||||
txconf = txconf | (TX_LOOPBACK_NONE <<TX_LOOPBACK_SHIFT);
|
txconf = txconf | (TX_LOOPBACK_NONE <<TX_LOOPBACK_SHIFT);
|
||||||
|
@ -995,13 +981,10 @@ void rtl8180_tx_enable(struct net_device *dev)
|
||||||
txconf = txconf | (priv->retry_rts<<TX_RTSRETRY_SHIFT);
|
txconf = txconf | (priv->retry_rts<<TX_RTSRETRY_SHIFT);
|
||||||
txconf = txconf &~ (1<<TX_NOCRC_SHIFT);
|
txconf = txconf &~ (1<<TX_NOCRC_SHIFT);
|
||||||
|
|
||||||
if (priv->card_8185) {
|
if (priv->hw_plcp_len)
|
||||||
if (priv->hw_plcp_len)
|
txconf = txconf & ~TCR_PLCP_LEN;
|
||||||
txconf = txconf &~ TCR_PLCP_LEN;
|
else
|
||||||
else
|
txconf = txconf | TCR_PLCP_LEN;
|
||||||
txconf = txconf | TCR_PLCP_LEN;
|
|
||||||
} else
|
|
||||||
txconf = txconf &~ TCR_SAT;
|
|
||||||
|
|
||||||
txconf = txconf &~ TCR_MXDMA_MASK;
|
txconf = txconf &~ TCR_MXDMA_MASK;
|
||||||
txconf = txconf | (TCR_MXDMA_2048<<TCR_MXDMA_SHIFT);
|
txconf = txconf | (TCR_MXDMA_2048<<TCR_MXDMA_SHIFT);
|
||||||
|
@ -1720,8 +1703,6 @@ void rtl8180_rx(struct net_device *dev)
|
||||||
else
|
else
|
||||||
quality = 127 - quality;
|
quality = 127 - quality;
|
||||||
priv->SignalQuality = quality;
|
priv->SignalQuality = quality;
|
||||||
if(!priv->card_8185)
|
|
||||||
printk("check your card type\n");
|
|
||||||
|
|
||||||
stats.signal = (u8)quality;//priv->wstats.qual.level = priv->SignalStrength;
|
stats.signal = (u8)quality;//priv->wstats.qual.level = priv->SignalStrength;
|
||||||
stats.signalstrength = RXAGC;
|
stats.signalstrength = RXAGC;
|
||||||
|
@ -2221,10 +2202,8 @@ short rtl8180_tx(struct net_device *dev, u8* txbuf, int len, int priority,
|
||||||
*(tail+6) = 0;
|
*(tail+6) = 0;
|
||||||
*(tail+7) = 0;
|
*(tail+7) = 0;
|
||||||
|
|
||||||
if(priv->card_8185){
|
/*FIXME: this should be triggered by HW encryption parameters.*/
|
||||||
//FIXME: this should be triggered by HW encryption parameters.
|
*tail |= (1<<15); /* no encrypt */
|
||||||
*tail |= (1<<15); //no encrypt
|
|
||||||
}
|
|
||||||
|
|
||||||
if(remain==len && !descfrag) {
|
if(remain==len && !descfrag) {
|
||||||
ownbit_flag = false; //added by david woo,2007.12.14
|
ownbit_flag = false; //added by david woo,2007.12.14
|
||||||
|
@ -2266,7 +2245,7 @@ short rtl8180_tx(struct net_device *dev, u8* txbuf, int len, int priority,
|
||||||
|
|
||||||
/* hw_plcp_len is not used for rtl8180 chip */
|
/* hw_plcp_len is not used for rtl8180 chip */
|
||||||
/* FIXME */
|
/* FIXME */
|
||||||
if(priv->card_8185 == 0 || !priv->hw_plcp_len){
|
if (!priv->hw_plcp_len) {
|
||||||
duration = rtl8180_len2duration(len, rate, &ext);
|
duration = rtl8180_len2duration(len, rate, &ext);
|
||||||
*(tail+1) = *(tail+1) | ((duration & 0x7fff)<<16);
|
*(tail+1) = *(tail+1) | ((duration & 0x7fff)<<16);
|
||||||
if(ext) *(tail+1) = *(tail+1) |(1<<31); //plcp length extension
|
if(ext) *(tail+1) = *(tail+1) |(1<<31); //plcp length extension
|
||||||
|
@ -2355,8 +2334,7 @@ void rtl8180_link_change(struct net_device *dev)
|
||||||
|
|
||||||
rtl8180_set_mode(dev, EPROM_CMD_NORMAL);
|
rtl8180_set_mode(dev, EPROM_CMD_NORMAL);
|
||||||
|
|
||||||
if(priv->card_8185)
|
rtl8180_set_chan(dev, priv->chan);
|
||||||
rtl8180_set_chan(dev, priv->chan);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rtl8180_rq_tx_ack(struct net_device *dev){
|
void rtl8180_rq_tx_ack(struct net_device *dev){
|
||||||
|
@ -2702,8 +2680,6 @@ short rtl8180_init(struct net_device *dev)
|
||||||
struct r8180_priv *priv = ieee80211_priv(dev);
|
struct r8180_priv *priv = ieee80211_priv(dev);
|
||||||
u16 word;
|
u16 word;
|
||||||
u16 version;
|
u16 version;
|
||||||
u8 hw_version;
|
|
||||||
//u8 config3;
|
|
||||||
u32 usValue;
|
u32 usValue;
|
||||||
u16 tmpu16;
|
u16 tmpu16;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -2928,46 +2904,11 @@ short rtl8180_init(struct net_device *dev)
|
||||||
|
|
||||||
priv->InitialGain = 6;
|
priv->InitialGain = 6;
|
||||||
|
|
||||||
hw_version =( read_nic_dword(dev, TCR) & TCR_HWVERID_MASK)>>TCR_HWVERID_SHIFT;
|
DMESG("MAC controller is a RTL8187SE b/g");
|
||||||
|
priv->phy_ver = 2;
|
||||||
|
|
||||||
switch (hw_version){
|
priv->ieee80211->modulation |= IEEE80211_OFDM_MODULATION;
|
||||||
case HW_VERID_R8185B_B:
|
priv->ieee80211->short_slot = 1;
|
||||||
priv->card_8185 = VERSION_8187S_C;
|
|
||||||
DMESG("MAC controller is a RTL8187SE b/g");
|
|
||||||
priv->phy_ver = 2;
|
|
||||||
break;
|
|
||||||
case HW_VERID_R8185_ABC:
|
|
||||||
DMESG("MAC controller is a RTL8185 b/g");
|
|
||||||
priv->card_8185 = 1;
|
|
||||||
/* you should not find a card with 8225 PHY ver < C*/
|
|
||||||
priv->phy_ver = 2;
|
|
||||||
break;
|
|
||||||
case HW_VERID_R8185_D:
|
|
||||||
DMESG("MAC controller is a RTL8185 b/g (V. D)");
|
|
||||||
priv->card_8185 = 2;
|
|
||||||
/* you should not find a card with 8225 PHY ver < C*/
|
|
||||||
priv->phy_ver = 2;
|
|
||||||
break;
|
|
||||||
case HW_VERID_R8180_ABCD:
|
|
||||||
DMESG("MAC controller is a RTL8180");
|
|
||||||
priv->card_8185 = 0;
|
|
||||||
break;
|
|
||||||
case HW_VERID_R8180_F:
|
|
||||||
DMESG("MAC controller is a RTL8180 (v. F)");
|
|
||||||
priv->card_8185 = 0;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
DMESGW("MAC chip not recognized: version %x. Assuming RTL8180",hw_version);
|
|
||||||
priv->card_8185 = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(priv->card_8185){
|
|
||||||
priv->ieee80211->modulation |= IEEE80211_OFDM_MODULATION;
|
|
||||||
priv->ieee80211->short_slot = 1;
|
|
||||||
}
|
|
||||||
/* you should not found any 8185 Ver B Card */
|
|
||||||
priv->card_8185_Bversion = 0;
|
|
||||||
|
|
||||||
// just for sync 85
|
// just for sync 85
|
||||||
priv->card_type = PCI;
|
priv->card_type = PCI;
|
||||||
|
@ -3026,12 +2967,10 @@ short rtl8180_init(struct net_device *dev)
|
||||||
priv->chtxpwr[i]=word & 0xff;
|
priv->chtxpwr[i]=word & 0xff;
|
||||||
priv->chtxpwr[i+1]=(word & 0xff00)>>8;
|
priv->chtxpwr[i+1]=(word & 0xff00)>>8;
|
||||||
}
|
}
|
||||||
if(priv->card_8185){
|
for (i = 1, j = 0; i < 14; i += 2, j++) {
|
||||||
for(i=1,j=0; i<14; i+=2,j++){
|
word = eprom_read(dev, EPROM_TXPW_OFDM_CH1_2 + j);
|
||||||
word = eprom_read(dev,EPROM_TXPW_OFDM_CH1_2 + j);
|
priv->chtxpwr_ofdm[i] = word & 0xff;
|
||||||
priv->chtxpwr_ofdm[i]=word & 0xff;
|
priv->chtxpwr_ofdm[i+1] = (word & 0xff00)>>8;
|
||||||
priv->chtxpwr_ofdm[i+1]=(word & 0xff00)>>8;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//3Read crystal calibtration and thermal meter indication on 87SE.
|
//3Read crystal calibtration and thermal meter indication on 87SE.
|
||||||
|
@ -3057,37 +2996,11 @@ short rtl8180_init(struct net_device *dev)
|
||||||
|
|
||||||
version = eprom_read(dev,EPROM_VERSION);
|
version = eprom_read(dev,EPROM_VERSION);
|
||||||
DMESG("EEPROM version %x",version);
|
DMESG("EEPROM version %x",version);
|
||||||
if( (!priv->card_8185) && version < 0x0101){
|
priv->rcr_csense = 3;
|
||||||
DMESG ("EEPROM version too old, assuming defaults");
|
|
||||||
DMESG ("If you see this message *plase* send your \
|
|
||||||
DMESG output to andreamrl@tiscali.it THANKS");
|
|
||||||
priv->digphy=1;
|
|
||||||
priv->antb=0;
|
|
||||||
priv->diversity=1;
|
|
||||||
priv->cs_treshold=0xc;
|
|
||||||
priv->rcr_csense=1;
|
|
||||||
priv->rf_chip=RFCHIPID_PHILIPS;
|
|
||||||
}else{
|
|
||||||
if(!priv->card_8185){
|
|
||||||
u8 rfparam = eprom_read(dev,RF_PARAM);
|
|
||||||
DMESG("RfParam: %x",rfparam);
|
|
||||||
|
|
||||||
priv->digphy = rfparam & (1<<RF_PARAM_DIGPHY_SHIFT) ? 0:1;
|
priv->cs_treshold = (eprom_read(dev, ENERGY_TRESHOLD) & 0xff00) >> 8;
|
||||||
priv->antb = rfparam & (1<<RF_PARAM_ANTBDEFAULT_SHIFT) ? 1:0;
|
|
||||||
|
|
||||||
priv->rcr_csense = (rfparam & RF_PARAM_CARRIERSENSE_MASK) >>
|
priv->rf_chip = 0xff & eprom_read(dev, RFCHIPID);
|
||||||
RF_PARAM_CARRIERSENSE_SHIFT;
|
|
||||||
|
|
||||||
priv->diversity =
|
|
||||||
(read_nic_byte(dev,CONFIG2)&(1<<CONFIG2_ANTENNA_SHIFT)) ? 1:0;
|
|
||||||
}else{
|
|
||||||
priv->rcr_csense = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
priv->cs_treshold = (eprom_read(dev,ENERGY_TRESHOLD)&0xff00) >>8;
|
|
||||||
|
|
||||||
priv->rf_chip = 0xff & eprom_read(dev,RFCHIPID);
|
|
||||||
}
|
|
||||||
|
|
||||||
priv->rf_chip = RF_ZEBRA4;
|
priv->rf_chip = RF_ZEBRA4;
|
||||||
priv->rf_sleep = rtl8225z4_rf_sleep;
|
priv->rf_sleep = rtl8225z4_rf_sleep;
|
||||||
|
@ -3099,19 +3012,6 @@ DMESG output to andreamrl@tiscali.it THANKS");
|
||||||
priv->rf_set_chan = rtl8225z2_rf_set_chan;
|
priv->rf_set_chan = rtl8225z2_rf_set_chan;
|
||||||
priv->rf_set_sens = NULL;
|
priv->rf_set_sens = NULL;
|
||||||
|
|
||||||
if(!priv->card_8185){
|
|
||||||
if(priv->antb)
|
|
||||||
DMESG ("Antenna B is default antenna");
|
|
||||||
else
|
|
||||||
DMESG ("Antenna A is default antenna");
|
|
||||||
|
|
||||||
if(priv->diversity)
|
|
||||||
DMESG ("Antenna diversity is enabled");
|
|
||||||
else
|
|
||||||
DMESG("Antenna diversity is disabled");
|
|
||||||
|
|
||||||
DMESG("Carrier sense %d",priv->rcr_csense);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (0!=alloc_rx_desc_ring(dev, priv->rxbuffersize, priv->rxringcount))
|
if (0!=alloc_rx_desc_ring(dev, priv->rxbuffersize, priv->rxringcount))
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
@ -3144,17 +3044,6 @@ DMESG output to andreamrl@tiscali.it THANKS");
|
||||||
TX_BEACON_RING_ADDR))
|
TX_BEACON_RING_ADDR))
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
if(!priv->card_8185){
|
|
||||||
if(read_nic_byte(dev, CONFIG0) & (1<<CONFIG0_WEP40_SHIFT))
|
|
||||||
DMESG ("40-bit WEP is supported in hardware");
|
|
||||||
else
|
|
||||||
DMESG ("40-bit WEP is NOT supported in hardware");
|
|
||||||
|
|
||||||
if(read_nic_byte(dev,CONFIG0) & (1<<CONFIG0_WEP104_SHIFT))
|
|
||||||
DMESG ("104-bit WEP is supported in hardware");
|
|
||||||
else
|
|
||||||
DMESG ("104-bit WEP is NOT supported in hardware");
|
|
||||||
}
|
|
||||||
#if !defined(SA_SHIRQ)
|
#if !defined(SA_SHIRQ)
|
||||||
if(request_irq(dev->irq, (void *)rtl8180_interrupt, IRQF_SHARED, dev->name, dev)){
|
if(request_irq(dev->irq, (void *)rtl8180_interrupt, IRQF_SHARED, dev->name, dev)){
|
||||||
#else
|
#else
|
||||||
|
@ -3172,17 +3061,6 @@ DMESG output to andreamrl@tiscali.it THANKS");
|
||||||
|
|
||||||
void rtl8180_no_hw_wep(struct net_device *dev)
|
void rtl8180_no_hw_wep(struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct r8180_priv *priv = ieee80211_priv(dev);
|
|
||||||
|
|
||||||
if (!priv->card_8185) {
|
|
||||||
u8 security;
|
|
||||||
|
|
||||||
security = read_nic_byte(dev, SECURITY);
|
|
||||||
security &=~(1<<SECURITY_WEP_TX_ENABLE_SHIFT);
|
|
||||||
security &=~(1<<SECURITY_WEP_RX_ENABLE_SHIFT);
|
|
||||||
|
|
||||||
write_nic_byte(dev, SECURITY, security);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rtl8180_set_hw_wep(struct net_device *dev)
|
void rtl8180_set_hw_wep(struct net_device *dev)
|
||||||
|
@ -3355,8 +3233,6 @@ void rtl8185_set_rate(struct net_device *dev)
|
||||||
void rtl8180_adapter_start(struct net_device *dev)
|
void rtl8180_adapter_start(struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct r8180_priv *priv = ieee80211_priv(dev);
|
struct r8180_priv *priv = ieee80211_priv(dev);
|
||||||
u32 anaparam;
|
|
||||||
u16 word;
|
|
||||||
u8 config3;
|
u8 config3;
|
||||||
|
|
||||||
rtl8180_rtx_disable(dev);
|
rtl8180_rtx_disable(dev);
|
||||||
|
@ -3384,12 +3260,6 @@ void rtl8180_adapter_start(struct net_device *dev)
|
||||||
|
|
||||||
rtl8180_update_msr(dev);
|
rtl8180_update_msr(dev);
|
||||||
|
|
||||||
if(!priv->card_8185){
|
|
||||||
anaparam = eprom_read(dev,EPROM_ANAPARAM_ADDRLWORD);
|
|
||||||
anaparam |= eprom_read(dev,EPROM_ANAPARAM_ADDRHWORD)<<16;
|
|
||||||
|
|
||||||
rtl8180_set_anaparam(dev,anaparam);
|
|
||||||
}
|
|
||||||
/* These might be unnecessary since we do in rx_enable / tx_enable */
|
/* These might be unnecessary since we do in rx_enable / tx_enable */
|
||||||
fix_rx_fifo(dev);
|
fix_rx_fifo(dev);
|
||||||
fix_tx_fifo(dev);
|
fix_tx_fifo(dev);
|
||||||
|
@ -3406,54 +3276,27 @@ void rtl8180_adapter_start(struct net_device *dev)
|
||||||
CONFIG2, read_nic_byte(dev,CONFIG2) &~\
|
CONFIG2, read_nic_byte(dev,CONFIG2) &~\
|
||||||
(1<<CONFIG2_DMA_POLLING_MODE_SHIFT));
|
(1<<CONFIG2_DMA_POLLING_MODE_SHIFT));
|
||||||
//^the nic isn't in test mode
|
//^the nic isn't in test mode
|
||||||
if(priv->card_8185)
|
write_nic_byte(dev,
|
||||||
write_nic_byte(dev,
|
|
||||||
CONFIG2, read_nic_byte(dev,CONFIG2)|(1<<4));
|
CONFIG2, read_nic_byte(dev,CONFIG2)|(1<<4));
|
||||||
|
|
||||||
rtl8180_set_mode(dev,EPROM_CMD_NORMAL);
|
rtl8180_set_mode(dev,EPROM_CMD_NORMAL);
|
||||||
|
|
||||||
write_nic_dword(dev,INT_TIMEOUT,0);
|
write_nic_dword(dev,INT_TIMEOUT,0);
|
||||||
|
|
||||||
if(!priv->card_8185)
|
write_nic_byte(dev, WPA_CONFIG, 0);
|
||||||
{
|
|
||||||
/*
|
|
||||||
experimental - this might be needed to calibrate AGC,
|
|
||||||
anyway it shouldn't hurt
|
|
||||||
*/
|
|
||||||
write_nic_byte(dev, CONFIG5,
|
|
||||||
read_nic_byte(dev, CONFIG5) | (1<<AGCRESET_SHIFT));
|
|
||||||
read_nic_byte(dev, CONFIG5);
|
|
||||||
udelay(15);
|
|
||||||
write_nic_byte(dev, CONFIG5,
|
|
||||||
read_nic_byte(dev, CONFIG5) &~ (1<<AGCRESET_SHIFT));
|
|
||||||
}else{
|
|
||||||
write_nic_byte(dev, WPA_CONFIG, 0);
|
|
||||||
//write_nic_byte(dev, TESTR, 0xd);
|
|
||||||
}
|
|
||||||
|
|
||||||
rtl8180_no_hw_wep(dev);
|
rtl8180_no_hw_wep(dev);
|
||||||
|
|
||||||
if(priv->card_8185){
|
rtl8185_set_rate(dev);
|
||||||
rtl8185_set_rate(dev);
|
write_nic_byte(dev, RATE_FALLBACK, 0x81);
|
||||||
write_nic_byte(dev, RATE_FALLBACK, 0x81);
|
|
||||||
}else{
|
|
||||||
word = read_nic_word(dev, BRSR);
|
|
||||||
word &= ~BRSR_MBR;
|
|
||||||
word &= ~BRSR_BPLCP;
|
|
||||||
word |= ieeerate2rtlrate(priv->ieee80211->basic_rate);
|
|
||||||
word |= 0x0f;
|
|
||||||
write_nic_word(dev, BRSR, word);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(priv->card_8185){
|
write_nic_byte(dev, GP_ENABLE, read_nic_byte(dev, GP_ENABLE) & ~(1<<6));
|
||||||
write_nic_byte(dev, GP_ENABLE,read_nic_byte(dev, GP_ENABLE) & ~(1<<6));
|
|
||||||
|
|
||||||
//FIXME cfg 3 ClkRun enable - isn't it ReadOnly ?
|
/*FIXME cfg 3 ClkRun enable - isn't it ReadOnly ? */
|
||||||
rtl8180_set_mode(dev, EPROM_CMD_CONFIG);
|
rtl8180_set_mode(dev, EPROM_CMD_CONFIG);
|
||||||
write_nic_byte(dev,CONFIG3, read_nic_byte(dev, CONFIG3)
|
write_nic_byte(dev, CONFIG3, read_nic_byte(dev, CONFIG3)
|
||||||
| (1 << CONFIG3_CLKRUN_SHIFT));
|
| (1 << CONFIG3_CLKRUN_SHIFT));
|
||||||
rtl8180_set_mode(dev, EPROM_CMD_NORMAL);
|
rtl8180_set_mode(dev, EPROM_CMD_NORMAL);
|
||||||
}
|
|
||||||
|
|
||||||
priv->rf_init(dev);
|
priv->rf_init(dev);
|
||||||
|
|
||||||
|
|
|
@ -197,7 +197,6 @@ DIG_Zebra(
|
||||||
{ // Advised from SD3 DZ
|
{ // Advised from SD3 DZ
|
||||||
priv->InitialGain = 4; // In 87B, m74dBm means State 4 (m82dBm)
|
priv->InitialGain = 4; // In 87B, m74dBm means State 4 (m82dBm)
|
||||||
}
|
}
|
||||||
//if(pHalData->VersionID != VERSION_8187B_B)
|
|
||||||
{ // Advised from SD3 DZ
|
{ // Advised from SD3 DZ
|
||||||
OfdmFA1 = 0x20;
|
OfdmFA1 = 0x20;
|
||||||
}
|
}
|
||||||
|
|
|
@ -445,30 +445,28 @@ s8 DbmToTxPwrIdx(struct r8180_priv *priv, WIRELESS_MODE WirelessMode,
|
||||||
* OFDM Power in dBm = Index * 0.5 + 0
|
* OFDM Power in dBm = Index * 0.5 + 0
|
||||||
* CCK Power in dBm = Index * 0.25 + 13
|
* CCK Power in dBm = Index * 0.25 + 13
|
||||||
*/
|
*/
|
||||||
if (priv->card_8185 >= VERSION_8187S_B) {
|
s32 tmp = 0;
|
||||||
s32 tmp = 0;
|
|
||||||
|
|
||||||
if (WirelessMode == WIRELESS_MODE_G) {
|
if (WirelessMode == WIRELESS_MODE_G) {
|
||||||
bUseDefault = false;
|
bUseDefault = false;
|
||||||
tmp = (2 * PowerInDbm);
|
tmp = (2 * PowerInDbm);
|
||||||
|
|
||||||
if (tmp < 0)
|
if (tmp < 0)
|
||||||
TxPwrIdx = 0;
|
TxPwrIdx = 0;
|
||||||
else if (tmp > 40) /* 40 means 20 dBm. */
|
else if (tmp > 40) /* 40 means 20 dBm. */
|
||||||
TxPwrIdx = 40;
|
TxPwrIdx = 40;
|
||||||
else
|
else
|
||||||
TxPwrIdx = (s8)tmp;
|
TxPwrIdx = (s8)tmp;
|
||||||
} else if (WirelessMode == WIRELESS_MODE_B) {
|
} else if (WirelessMode == WIRELESS_MODE_B) {
|
||||||
bUseDefault = false;
|
bUseDefault = false;
|
||||||
tmp = (4 * PowerInDbm) - 52;
|
tmp = (4 * PowerInDbm) - 52;
|
||||||
|
|
||||||
if(tmp < 0)
|
if (tmp < 0)
|
||||||
TxPwrIdx = 0;
|
TxPwrIdx = 0;
|
||||||
else if (tmp > 28) /* 28 means 20 dBm. */
|
else if (tmp > 28) /* 28 means 20 dBm. */
|
||||||
TxPwrIdx = 28;
|
TxPwrIdx = 28;
|
||||||
else
|
else
|
||||||
TxPwrIdx = (s8)tmp;
|
TxPwrIdx = (s8)tmp;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1023,6 +1023,7 @@ ZEBRA_Config_85BASIC_HardCode(
|
||||||
u32 addr,data;
|
u32 addr,data;
|
||||||
u32 u4bRegOffset, u4bRegValue, u4bRF23, u4bRF24;
|
u32 u4bRegOffset, u4bRegValue, u4bRF23, u4bRF24;
|
||||||
u8 u1b24E;
|
u8 u1b24E;
|
||||||
|
int d_cut = 0;
|
||||||
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
@ -1035,8 +1036,10 @@ ZEBRA_Config_85BASIC_HardCode(
|
||||||
u4bRF23= RF_ReadReg(dev, 0x08); mdelay(1);
|
u4bRF23= RF_ReadReg(dev, 0x08); mdelay(1);
|
||||||
u4bRF24= RF_ReadReg(dev, 0x09); mdelay(1);
|
u4bRF24= RF_ReadReg(dev, 0x09); mdelay(1);
|
||||||
|
|
||||||
if (u4bRF23==0x818 && u4bRF24==0x70C && priv->card_8185 == VERSION_8187S_C)
|
if (u4bRF23 == 0x818 && u4bRF24 == 0x70C) {
|
||||||
priv->card_8185 = VERSION_8187S_D;
|
d_cut = 1;
|
||||||
|
printk(KERN_INFO "rtl8187se: card type changed from C- to D-cut\n");
|
||||||
|
}
|
||||||
|
|
||||||
// Page0 : reg0-reg15
|
// Page0 : reg0-reg15
|
||||||
|
|
||||||
|
@ -1070,18 +1073,9 @@ ZEBRA_Config_85BASIC_HardCode(
|
||||||
|
|
||||||
RF_WriteReg(dev, 0x03, 0x0806); mdelay(1);
|
RF_WriteReg(dev, 0x03, 0x0806); mdelay(1);
|
||||||
|
|
||||||
if(priv->card_8185 < VERSION_8187S_C)
|
RF_WriteReg(dev, 0x04, 0x03a7); mdelay(1);
|
||||||
{
|
RF_WriteReg(dev, 0x05, 0x059b); mdelay(1);
|
||||||
RF_WriteReg(dev, 0x04, 0x03f7); mdelay(1);
|
RF_WriteReg(dev, 0x06, 0x0081); mdelay(1);
|
||||||
RF_WriteReg(dev, 0x05, 0x05ab); mdelay(1);
|
|
||||||
RF_WriteReg(dev, 0x06, 0x00c1); mdelay(1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RF_WriteReg(dev, 0x04, 0x03a7); mdelay(1);
|
|
||||||
RF_WriteReg(dev, 0x05, 0x059b); mdelay(1);
|
|
||||||
RF_WriteReg(dev, 0x06, 0x0081); mdelay(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
RF_WriteReg(dev, 0x07, 0x01A0); mdelay(1);
|
RF_WriteReg(dev, 0x07, 0x01A0); mdelay(1);
|
||||||
|
@ -1091,14 +1085,11 @@ ZEBRA_Config_85BASIC_HardCode(
|
||||||
RF_WriteReg(dev, 0x0a, 0x0001); mdelay(1);
|
RF_WriteReg(dev, 0x0a, 0x0001); mdelay(1);
|
||||||
RF_WriteReg(dev, 0x0b, 0x0418); mdelay(1);
|
RF_WriteReg(dev, 0x0b, 0x0418); mdelay(1);
|
||||||
|
|
||||||
if(priv->card_8185 == VERSION_8187S_D)
|
if (d_cut) {
|
||||||
{
|
|
||||||
RF_WriteReg(dev, 0x0c, 0x0fbe); mdelay(1);
|
RF_WriteReg(dev, 0x0c, 0x0fbe); mdelay(1);
|
||||||
RF_WriteReg(dev, 0x0d, 0x0008); mdelay(1);
|
RF_WriteReg(dev, 0x0d, 0x0008); mdelay(1);
|
||||||
RF_WriteReg(dev, 0x0e, 0x0807); mdelay(1); // RX LO buffer
|
RF_WriteReg(dev, 0x0e, 0x0807); mdelay(1); // RX LO buffer
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
RF_WriteReg(dev, 0x0c, 0x0fbe); mdelay(1);
|
RF_WriteReg(dev, 0x0c, 0x0fbe); mdelay(1);
|
||||||
RF_WriteReg(dev, 0x0d, 0x0008); mdelay(1);
|
RF_WriteReg(dev, 0x0d, 0x0008); mdelay(1);
|
||||||
RF_WriteReg(dev, 0x0e, 0x0806); mdelay(1); // RX LO buffer
|
RF_WriteReg(dev, 0x0e, 0x0806); mdelay(1); // RX LO buffer
|
||||||
|
|
Loading…
Reference in New Issue