diff options
author | Herton Ronaldo Krzesinski <herton@mandriva.com.br> | 2008-07-10 17:55:23 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-07-14 14:52:56 -0400 |
commit | 4ece16a1cf9d36fee6d3ccb2c933296cf660e44d (patch) | |
tree | 9cf5e1364abb33f75950077900fc1acb2125da07 | |
parent | 9c0c7a429a0cf02c2ac1998d5cf4c26f6be5c989 (diff) |
rtl8187: use different ANAPARAM*_OFF values for 8187B
For RTL8187B it seems we need special values too for ANAPARAM*_OFF
values (and not use RTL8187 ones). The ANAPARAM*_OFF values used are the
stock ones read from the hardware after a cold boot.
Signed-off-by: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
Signed-off-by: Hin-Tak Leung <htl10@users.sourceforge.net>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/rtl8187_dev.c | 21 | ||||
-rw-r--r-- | drivers/net/wireless/rtl8187_rtl8225.c | 21 | ||||
-rw-r--r-- | drivers/net/wireless/rtl8187_rtl8225.h | 15 |
3 files changed, 42 insertions, 15 deletions
diff --git a/drivers/net/wireless/rtl8187_dev.c b/drivers/net/wireless/rtl8187_dev.c index bdea1d8ad8ef..d3067b1216ca 100644 --- a/drivers/net/wireless/rtl8187_dev.c +++ b/drivers/net/wireless/rtl8187_dev.c | |||
@@ -430,8 +430,10 @@ static int rtl8187_init_hw(struct ieee80211_hw *dev) | |||
430 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); | 430 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); |
431 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg | | 431 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg | |
432 | RTL818X_CONFIG3_ANAPARAM_WRITE); | 432 | RTL818X_CONFIG3_ANAPARAM_WRITE); |
433 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM, RTL8225_ANAPARAM_ON); | 433 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM, |
434 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, RTL8225_ANAPARAM2_ON); | 434 | RTL8187_RTL8225_ANAPARAM_ON); |
435 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, | ||
436 | RTL8187_RTL8225_ANAPARAM2_ON); | ||
435 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg & | 437 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg & |
436 | ~RTL818X_CONFIG3_ANAPARAM_WRITE); | 438 | ~RTL818X_CONFIG3_ANAPARAM_WRITE); |
437 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, | 439 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, |
@@ -453,8 +455,10 @@ static int rtl8187_init_hw(struct ieee80211_hw *dev) | |||
453 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); | 455 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); |
454 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, | 456 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, |
455 | reg | RTL818X_CONFIG3_ANAPARAM_WRITE); | 457 | reg | RTL818X_CONFIG3_ANAPARAM_WRITE); |
456 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM, RTL8225_ANAPARAM_ON); | 458 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM, |
457 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, RTL8225_ANAPARAM2_ON); | 459 | RTL8187_RTL8225_ANAPARAM_ON); |
460 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, | ||
461 | RTL8187_RTL8225_ANAPARAM2_ON); | ||
458 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, | 462 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, |
459 | reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE); | 463 | reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE); |
460 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); | 464 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); |
@@ -566,9 +570,12 @@ static int rtl8187b_init_hw(struct ieee80211_hw *dev) | |||
566 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); | 570 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); |
567 | reg |= RTL818X_CONFIG3_ANAPARAM_WRITE | RTL818X_CONFIG3_GNT_SELECT; | 571 | reg |= RTL818X_CONFIG3_ANAPARAM_WRITE | RTL818X_CONFIG3_GNT_SELECT; |
568 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg); | 572 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg); |
569 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, 0x727f3f52); | 573 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, |
570 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM, 0x45090658); | 574 | RTL8187B_RTL8225_ANAPARAM2_ON); |
571 | rtl818x_iowrite8(priv, &priv->map->ANAPARAM3, 0); | 575 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM, |
576 | RTL8187B_RTL8225_ANAPARAM_ON); | ||
577 | rtl818x_iowrite8(priv, &priv->map->ANAPARAM3, | ||
578 | RTL8187B_RTL8225_ANAPARAM3_ON); | ||
572 | 579 | ||
573 | rtl818x_iowrite8(priv, (u8 *)0xFF61, 0x10); | 580 | rtl818x_iowrite8(priv, (u8 *)0xFF61, 0x10); |
574 | reg = rtl818x_ioread8(priv, (u8 *)0xFF62); | 581 | reg = rtl818x_ioread8(priv, (u8 *)0xFF62); |
diff --git a/drivers/net/wireless/rtl8187_rtl8225.c b/drivers/net/wireless/rtl8187_rtl8225.c index 1e059de97116..1bae89903410 100644 --- a/drivers/net/wireless/rtl8187_rtl8225.c +++ b/drivers/net/wireless/rtl8187_rtl8225.c | |||
@@ -307,7 +307,8 @@ static void rtl8225_rf_set_tx_power(struct ieee80211_hw *dev, int channel) | |||
307 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); | 307 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); |
308 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, | 308 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, |
309 | reg | RTL818X_CONFIG3_ANAPARAM_WRITE); | 309 | reg | RTL818X_CONFIG3_ANAPARAM_WRITE); |
310 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, RTL8225_ANAPARAM2_ON); | 310 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, |
311 | RTL8187_RTL8225_ANAPARAM2_ON); | ||
311 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, | 312 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, |
312 | reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE); | 313 | reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE); |
313 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); | 314 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); |
@@ -560,7 +561,8 @@ static void rtl8225z2_rf_set_tx_power(struct ieee80211_hw *dev, int channel) | |||
560 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); | 561 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); |
561 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, | 562 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, |
562 | reg | RTL818X_CONFIG3_ANAPARAM_WRITE); | 563 | reg | RTL818X_CONFIG3_ANAPARAM_WRITE); |
563 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, RTL8225_ANAPARAM2_ON); | 564 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, |
565 | RTL8187_RTL8225_ANAPARAM2_ON); | ||
564 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, | 566 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, |
565 | reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE); | 567 | reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE); |
566 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); | 568 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); |
@@ -913,8 +915,19 @@ static void rtl8225_rf_stop(struct ieee80211_hw *dev) | |||
913 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); | 915 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); |
914 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); | 916 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); |
915 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg | RTL818X_CONFIG3_ANAPARAM_WRITE); | 917 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg | RTL818X_CONFIG3_ANAPARAM_WRITE); |
916 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, RTL8225_ANAPARAM2_OFF); | 918 | if (!priv->is_rtl8187b) { |
917 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM, RTL8225_ANAPARAM_OFF); | 919 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, |
920 | RTL8187_RTL8225_ANAPARAM2_OFF); | ||
921 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM, | ||
922 | RTL8187_RTL8225_ANAPARAM_OFF); | ||
923 | } else { | ||
924 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, | ||
925 | RTL8187B_RTL8225_ANAPARAM2_OFF); | ||
926 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM, | ||
927 | RTL8187B_RTL8225_ANAPARAM_OFF); | ||
928 | rtl818x_iowrite8(priv, &priv->map->ANAPARAM3, | ||
929 | RTL8187B_RTL8225_ANAPARAM3_OFF); | ||
930 | } | ||
918 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE); | 931 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE); |
919 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); | 932 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); |
920 | } | 933 | } |
diff --git a/drivers/net/wireless/rtl8187_rtl8225.h b/drivers/net/wireless/rtl8187_rtl8225.h index d39ed0295b6e..20c5b6ead0f6 100644 --- a/drivers/net/wireless/rtl8187_rtl8225.h +++ b/drivers/net/wireless/rtl8187_rtl8225.h | |||
@@ -15,10 +15,17 @@ | |||
15 | #ifndef RTL8187_RTL8225_H | 15 | #ifndef RTL8187_RTL8225_H |
16 | #define RTL8187_RTL8225_H | 16 | #define RTL8187_RTL8225_H |
17 | 17 | ||
18 | #define RTL8225_ANAPARAM_ON 0xa0000a59 | 18 | #define RTL8187_RTL8225_ANAPARAM_ON 0xa0000a59 |
19 | #define RTL8225_ANAPARAM2_ON 0x860c7312 | 19 | #define RTL8187_RTL8225_ANAPARAM2_ON 0x860c7312 |
20 | #define RTL8225_ANAPARAM_OFF 0xa00beb59 | 20 | #define RTL8187_RTL8225_ANAPARAM_OFF 0xa00beb59 |
21 | #define RTL8225_ANAPARAM2_OFF 0x840dec11 | 21 | #define RTL8187_RTL8225_ANAPARAM2_OFF 0x840dec11 |
22 | |||
23 | #define RTL8187B_RTL8225_ANAPARAM_ON 0x45090658 | ||
24 | #define RTL8187B_RTL8225_ANAPARAM2_ON 0x727f3f52 | ||
25 | #define RTL8187B_RTL8225_ANAPARAM3_ON 0x00 | ||
26 | #define RTL8187B_RTL8225_ANAPARAM_OFF 0x55480658 | ||
27 | #define RTL8187B_RTL8225_ANAPARAM2_OFF 0x72003f50 | ||
28 | #define RTL8187B_RTL8225_ANAPARAM3_OFF 0x00 | ||
22 | 29 | ||
23 | const struct rtl818x_rf_ops * rtl8187_detect_rf(struct ieee80211_hw *); | 30 | const struct rtl818x_rf_ops * rtl8187_detect_rf(struct ieee80211_hw *); |
24 | 31 | ||