diff options
Diffstat (limited to 'drivers/net/wireless/b43/main.c')
-rw-r--r-- | drivers/net/wireless/b43/main.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index f7582c096f8d..1e6a2add2aaf 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -2685,6 +2685,17 @@ out: | |||
2685 | dev->mac_suspended++; | 2685 | dev->mac_suspended++; |
2686 | } | 2686 | } |
2687 | 2687 | ||
2688 | /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/MacPhyClkSet */ | ||
2689 | void b43_mac_phy_clock_set(struct b43_wldev *dev, bool on) | ||
2690 | { | ||
2691 | u32 tmslow = ssb_read32(dev->dev, SSB_TMSLOW); | ||
2692 | if (on) | ||
2693 | tmslow |= B43_TMSLOW_MACPHYCLKEN; | ||
2694 | else | ||
2695 | tmslow &= ~B43_TMSLOW_MACPHYCLKEN; | ||
2696 | ssb_write32(dev->dev, SSB_TMSLOW, tmslow); | ||
2697 | } | ||
2698 | |||
2688 | static void b43_adjust_opmode(struct b43_wldev *dev) | 2699 | static void b43_adjust_opmode(struct b43_wldev *dev) |
2689 | { | 2700 | { |
2690 | struct b43_wl *wl = dev->wl; | 2701 | struct b43_wl *wl = dev->wl; |
@@ -2841,7 +2852,7 @@ static int b43_chip_init(struct b43_wldev *dev) | |||
2841 | { | 2852 | { |
2842 | struct b43_phy *phy = &dev->phy; | 2853 | struct b43_phy *phy = &dev->phy; |
2843 | int err; | 2854 | int err; |
2844 | u32 value32, macctl; | 2855 | u32 macctl; |
2845 | u16 value16; | 2856 | u16 value16; |
2846 | 2857 | ||
2847 | /* Initialize the MAC control */ | 2858 | /* Initialize the MAC control */ |
@@ -2919,9 +2930,7 @@ static int b43_chip_init(struct b43_wldev *dev) | |||
2919 | b43_write32(dev, B43_MMIO_DMA4_IRQ_MASK, 0x0000DC00); | 2930 | b43_write32(dev, B43_MMIO_DMA4_IRQ_MASK, 0x0000DC00); |
2920 | b43_write32(dev, B43_MMIO_DMA5_IRQ_MASK, 0x0000DC00); | 2931 | b43_write32(dev, B43_MMIO_DMA5_IRQ_MASK, 0x0000DC00); |
2921 | 2932 | ||
2922 | value32 = ssb_read32(dev->dev, SSB_TMSLOW); | 2933 | b43_mac_phy_clock_set(dev, true); |
2923 | value32 |= 0x00100000; | ||
2924 | ssb_write32(dev->dev, SSB_TMSLOW, value32); | ||
2925 | 2934 | ||
2926 | b43_write16(dev, B43_MMIO_POWERUP_DELAY, | 2935 | b43_write16(dev, B43_MMIO_POWERUP_DELAY, |
2927 | dev->dev->bus->chipco.fast_pwrup_delay); | 2936 | dev->dev->bus->chipco.fast_pwrup_delay); |