diff options
Diffstat (limited to 'drivers/net/wireless/b43legacy/phy.c')
-rw-r--r-- | drivers/net/wireless/b43legacy/phy.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/drivers/net/wireless/b43legacy/phy.c b/drivers/net/wireless/b43legacy/phy.c index 768cccb9b1ba..4c9442b16f3f 100644 --- a/drivers/net/wireless/b43legacy/phy.c +++ b/drivers/net/wireless/b43legacy/phy.c | |||
@@ -103,7 +103,7 @@ void b43legacy_phy_lock(struct b43legacy_wldev *dev) | |||
103 | if (dev->dev->id.revision < 3) { | 103 | if (dev->dev->id.revision < 3) { |
104 | b43legacy_mac_suspend(dev); | 104 | b43legacy_mac_suspend(dev); |
105 | } else { | 105 | } else { |
106 | if (!b43legacy_is_mode(dev->wl, IEEE80211_IF_TYPE_AP)) | 106 | if (!b43legacy_is_mode(dev->wl, NL80211_IFTYPE_AP)) |
107 | b43legacy_power_saving_ctl_bits(dev, -1, 1); | 107 | b43legacy_power_saving_ctl_bits(dev, -1, 1); |
108 | } | 108 | } |
109 | } | 109 | } |
@@ -118,7 +118,7 @@ void b43legacy_phy_unlock(struct b43legacy_wldev *dev) | |||
118 | if (dev->dev->id.revision < 3) { | 118 | if (dev->dev->id.revision < 3) { |
119 | b43legacy_mac_enable(dev); | 119 | b43legacy_mac_enable(dev); |
120 | } else { | 120 | } else { |
121 | if (!b43legacy_is_mode(dev->wl, IEEE80211_IF_TYPE_AP)) | 121 | if (!b43legacy_is_mode(dev->wl, NL80211_IFTYPE_AP)) |
122 | b43legacy_power_saving_ctl_bits(dev, -1, -1); | 122 | b43legacy_power_saving_ctl_bits(dev, -1, -1); |
123 | } | 123 | } |
124 | } | 124 | } |
@@ -595,12 +595,14 @@ static void b43legacy_phy_initb5(struct b43legacy_wldev *dev) | |||
595 | 0x0035) & 0xFFC0) | 0x0064); | 595 | 0x0035) & 0xFFC0) | 0x0064); |
596 | b43legacy_phy_write(dev, 0x005D, (b43legacy_phy_read(dev, | 596 | b43legacy_phy_write(dev, 0x005D, (b43legacy_phy_read(dev, |
597 | 0x005D) & 0xFF80) | 0x000A); | 597 | 0x005D) & 0xFF80) | 0x000A); |
598 | b43legacy_phy_write(dev, 0x5B, 0x0000); | ||
599 | b43legacy_phy_write(dev, 0x5C, 0x0000); | ||
598 | } | 600 | } |
599 | 601 | ||
600 | if (dev->bad_frames_preempt) | 602 | if (dev->bad_frames_preempt) |
601 | b43legacy_phy_write(dev, B43legacy_PHY_RADIO_BITFIELD, | 603 | b43legacy_phy_write(dev, B43legacy_PHY_RADIO_BITFIELD, |
602 | b43legacy_phy_read(dev, | 604 | b43legacy_phy_read(dev, |
603 | B43legacy_PHY_RADIO_BITFIELD) | (1 << 11)); | 605 | B43legacy_PHY_RADIO_BITFIELD) | (1 << 12)); |
604 | 606 | ||
605 | if (phy->analog == 1) { | 607 | if (phy->analog == 1) { |
606 | b43legacy_phy_write(dev, 0x0026, 0xCE00); | 608 | b43legacy_phy_write(dev, 0x0026, 0xCE00); |
@@ -753,7 +755,7 @@ static void b43legacy_phy_initb6(struct b43legacy_wldev *dev) | |||
753 | b43legacy_radio_write16(dev, 0x0050, 0x0020); | 755 | b43legacy_radio_write16(dev, 0x0050, 0x0020); |
754 | } | 756 | } |
755 | if (phy->radio_rev <= 2) { | 757 | if (phy->radio_rev <= 2) { |
756 | b43legacy_radio_write16(dev, 0x007C, 0x0020); | 758 | b43legacy_radio_write16(dev, 0x0050, 0x0020); |
757 | b43legacy_radio_write16(dev, 0x005A, 0x0070); | 759 | b43legacy_radio_write16(dev, 0x005A, 0x0070); |
758 | b43legacy_radio_write16(dev, 0x005B, 0x007B); | 760 | b43legacy_radio_write16(dev, 0x005B, 0x007B); |
759 | b43legacy_radio_write16(dev, 0x005C, 0x00B0); | 761 | b43legacy_radio_write16(dev, 0x005C, 0x00B0); |
@@ -771,7 +773,7 @@ static void b43legacy_phy_initb6(struct b43legacy_wldev *dev) | |||
771 | b43legacy_phy_write(dev, 0x002A, 0x8AC0); | 773 | b43legacy_phy_write(dev, 0x002A, 0x8AC0); |
772 | b43legacy_phy_write(dev, 0x0038, 0x0668); | 774 | b43legacy_phy_write(dev, 0x0038, 0x0668); |
773 | b43legacy_radio_set_txpower_bg(dev, 0xFFFF, 0xFFFF, 0xFFFF); | 775 | b43legacy_radio_set_txpower_bg(dev, 0xFFFF, 0xFFFF, 0xFFFF); |
774 | if (phy->radio_rev <= 5) | 776 | if (phy->radio_rev == 4 || phy->radio_rev == 5) |
775 | b43legacy_phy_write(dev, 0x005D, (b43legacy_phy_read(dev, | 777 | b43legacy_phy_write(dev, 0x005D, (b43legacy_phy_read(dev, |
776 | 0x005D) & 0xFF80) | 0x0003); | 778 | 0x005D) & 0xFF80) | 0x0003); |
777 | if (phy->radio_rev <= 2) | 779 | if (phy->radio_rev <= 2) |
@@ -1010,7 +1012,7 @@ static void b43legacy_phy_initg(struct b43legacy_wldev *dev) | |||
1010 | b43legacy_phy_initb5(dev); | 1012 | b43legacy_phy_initb5(dev); |
1011 | else | 1013 | else |
1012 | b43legacy_phy_initb6(dev); | 1014 | b43legacy_phy_initb6(dev); |
1013 | if (phy->rev >= 2 || phy->gmode) | 1015 | if (phy->rev >= 2 && phy->gmode) |
1014 | b43legacy_phy_inita(dev); | 1016 | b43legacy_phy_inita(dev); |
1015 | 1017 | ||
1016 | if (phy->rev >= 2) { | 1018 | if (phy->rev >= 2) { |
@@ -1025,18 +1027,22 @@ static void b43legacy_phy_initg(struct b43legacy_wldev *dev) | |||
1025 | b43legacy_phy_write(dev, 0x0811, 0x0400); | 1027 | b43legacy_phy_write(dev, 0x0811, 0x0400); |
1026 | b43legacy_phy_write(dev, 0x0015, 0x00C0); | 1028 | b43legacy_phy_write(dev, 0x0015, 0x00C0); |
1027 | } | 1029 | } |
1028 | if (phy->rev >= 2 || phy->gmode) { | 1030 | if (phy->gmode) { |
1029 | tmp = b43legacy_phy_read(dev, 0x0400) & 0xFF; | 1031 | tmp = b43legacy_phy_read(dev, 0x0400) & 0xFF; |
1030 | if (tmp == 3 || tmp == 5) { | 1032 | if (tmp == 3) { |
1033 | b43legacy_phy_write(dev, 0x04C2, 0x1816); | ||
1034 | b43legacy_phy_write(dev, 0x04C3, 0x8606); | ||
1035 | } | ||
1036 | if (tmp == 4 || tmp == 5) { | ||
1031 | b43legacy_phy_write(dev, 0x04C2, 0x1816); | 1037 | b43legacy_phy_write(dev, 0x04C2, 0x1816); |
1032 | b43legacy_phy_write(dev, 0x04C3, 0x8006); | 1038 | b43legacy_phy_write(dev, 0x04C3, 0x8006); |
1033 | if (tmp == 5) | 1039 | b43legacy_phy_write(dev, 0x04CC, |
1034 | b43legacy_phy_write(dev, 0x04CC, | 1040 | (b43legacy_phy_read(dev, |
1035 | (b43legacy_phy_read(dev, | 1041 | 0x04CC) & 0x00FF) | |
1036 | 0x04CC) & 0x00FF) | | 1042 | 0x1F00); |
1037 | 0x1F00); | ||
1038 | } | 1043 | } |
1039 | b43legacy_phy_write(dev, 0x047E, 0x0078); | 1044 | if (phy->rev >= 2) |
1045 | b43legacy_phy_write(dev, 0x047E, 0x0078); | ||
1040 | } | 1046 | } |
1041 | if (phy->radio_rev == 8) { | 1047 | if (phy->radio_rev == 8) { |
1042 | b43legacy_phy_write(dev, 0x0801, b43legacy_phy_read(dev, 0x0801) | 1048 | b43legacy_phy_write(dev, 0x0801, b43legacy_phy_read(dev, 0x0801) |
@@ -1078,7 +1084,7 @@ static void b43legacy_phy_initg(struct b43legacy_wldev *dev) | |||
1078 | else | 1084 | else |
1079 | b43legacy_phy_write(dev, 0x002F, 0x0202); | 1085 | b43legacy_phy_write(dev, 0x002F, 0x0202); |
1080 | } | 1086 | } |
1081 | if (phy->gmode || phy->rev >= 2) { | 1087 | if (phy->gmode) { |
1082 | b43legacy_phy_lo_adjust(dev, 0); | 1088 | b43legacy_phy_lo_adjust(dev, 0); |
1083 | b43legacy_phy_write(dev, 0x080F, 0x8078); | 1089 | b43legacy_phy_write(dev, 0x080F, 0x8078); |
1084 | } | 1090 | } |