diff options
Diffstat (limited to 'drivers/net/wireless/bcm43xx/bcm43xx_dma.h')
-rw-r--r-- | drivers/net/wireless/bcm43xx/bcm43xx_dma.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_dma.h b/drivers/net/wireless/bcm43xx/bcm43xx_dma.h index e04bcaddd1d0..ea16078cfe98 100644 --- a/drivers/net/wireless/bcm43xx/bcm43xx_dma.h +++ b/drivers/net/wireless/bcm43xx/bcm43xx_dma.h | |||
@@ -314,6 +314,23 @@ int bcm43xx_dma_tx(struct bcm43xx_private *bcm, | |||
314 | struct ieee80211_txb *txb); | 314 | struct ieee80211_txb *txb); |
315 | void bcm43xx_dma_rx(struct bcm43xx_dmaring *ring); | 315 | void bcm43xx_dma_rx(struct bcm43xx_dmaring *ring); |
316 | 316 | ||
317 | /* Helper function that returns the dma mask for this device. */ | ||
318 | static inline | ||
319 | u64 bcm43xx_get_supported_dma_mask(struct bcm43xx_private *bcm) | ||
320 | { | ||
321 | int dma64 = bcm43xx_read32(bcm, BCM43xx_CIR_SBTMSTATEHIGH) & | ||
322 | BCM43xx_SBTMSTATEHIGH_DMA64BIT; | ||
323 | u16 mmio_base = bcm43xx_dmacontroller_base(dma64, 0); | ||
324 | u32 mask = BCM43xx_DMA32_TXADDREXT_MASK; | ||
325 | |||
326 | if (dma64) | ||
327 | return DMA_64BIT_MASK; | ||
328 | bcm43xx_write32(bcm, mmio_base + BCM43xx_DMA32_TXCTL, mask); | ||
329 | if (bcm43xx_read32(bcm, mmio_base + BCM43xx_DMA32_TXCTL) & mask) | ||
330 | return DMA_32BIT_MASK; | ||
331 | return DMA_30BIT_MASK; | ||
332 | } | ||
333 | |||
317 | #else /* CONFIG_BCM43XX_DMA */ | 334 | #else /* CONFIG_BCM43XX_DMA */ |
318 | 335 | ||
319 | 336 | ||