diff options
Diffstat (limited to 'drivers/net/wireless/b43/dma.c')
-rw-r--r-- | drivers/net/wireless/b43/dma.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c index 83cba22ac6e8..481e534534eb 100644 --- a/drivers/net/wireless/b43/dma.c +++ b/drivers/net/wireless/b43/dma.c | |||
@@ -795,9 +795,23 @@ static u64 supported_dma_mask(struct b43_wldev *dev) | |||
795 | u32 tmp; | 795 | u32 tmp; |
796 | u16 mmio_base; | 796 | u16 mmio_base; |
797 | 797 | ||
798 | tmp = b43_read32(dev, SSB_TMSHIGH); | 798 | switch (dev->dev->bus_type) { |
799 | if (tmp & SSB_TMSHIGH_DMA64) | 799 | #ifdef CONFIG_B43_BCMA |
800 | return DMA_BIT_MASK(64); | 800 | case B43_BUS_BCMA: |
801 | tmp = bcma_aread32(dev->dev->bdev, BCMA_IOST); | ||
802 | if (tmp & BCMA_IOST_DMA64) | ||
803 | return DMA_BIT_MASK(64); | ||
804 | break; | ||
805 | #endif | ||
806 | #ifdef CONFIG_B43_SSB | ||
807 | case B43_BUS_SSB: | ||
808 | tmp = ssb_read32(dev->dev->sdev, SSB_TMSHIGH); | ||
809 | if (tmp & SSB_TMSHIGH_DMA64) | ||
810 | return DMA_BIT_MASK(64); | ||
811 | break; | ||
812 | #endif | ||
813 | } | ||
814 | |||
801 | mmio_base = b43_dmacontroller_base(0, 0); | 815 | mmio_base = b43_dmacontroller_base(0, 0); |
802 | b43_write32(dev, mmio_base + B43_DMA32_TXCTL, B43_DMA32_TXADDREXT_MASK); | 816 | b43_write32(dev, mmio_base + B43_DMA32_TXCTL, B43_DMA32_TXADDREXT_MASK); |
803 | tmp = b43_read32(dev, mmio_base + B43_DMA32_TXCTL); | 817 | tmp = b43_read32(dev, mmio_base + B43_DMA32_TXCTL); |