diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2012-06-30 15:16:18 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-07-10 12:16:55 -0400 |
commit | ec5ab1dd73a4b28c2e02d8ad585cae01ad626c9a (patch) | |
tree | 34d8537bf6785941491fe63eb2ff55f4aac23fc1 | |
parent | 093cd33497d4f3336bf0940a0fa1d5659dbe68d2 (diff) | |
download | linux-ec5ab1dd73a4b28c2e02d8ad585cae01ad626c9a.tar.gz linux-ec5ab1dd73a4b28c2e02d8ad585cae01ad626c9a.tar.bz2 linux-ec5ab1dd73a4b28c2e02d8ad585cae01ad626c9a.zip |
brcmsmac: fix DMA on SoCs
These extra offsets are only needed by PCIe devices and not when
running on an SoC.
This partly reverts commit:
commit 821e4e93172e4f7d5ac1eade04665c3dc5049c4a
Author: Roland Vossen <rvossen@broadcom.com>
Date: Mon Aug 8 15:58:58 2011 +0200
staging: brcm80211: removed unused bus code from softmac
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Acked-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/dma.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/dma.c b/drivers/net/wireless/brcm80211/brcmsmac/dma.c index b67b20c95712..f64c5cf3fccc 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/dma.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/dma.c @@ -573,6 +573,7 @@ struct dma_pub *dma_attach(char *name, struct si_pub *sih, struct dma_info *di; u8 rev = core->id.rev; uint size; + struct si_info *sii = container_of(sih, struct si_info, pub); /* allocate private info structure */ di = kzalloc(sizeof(struct dma_info), GFP_ATOMIC); @@ -633,11 +634,15 @@ struct dma_pub *dma_attach(char *name, struct si_pub *sih, */ di->ddoffsetlow = 0; di->dataoffsetlow = 0; - /* add offset for pcie with DMA64 bus */ - di->ddoffsetlow = 0; - di->ddoffsethigh = SI_PCIE_DMA_H32; + /* for pci bus, add offset */ + if (sii->icbus->hosttype == BCMA_HOSTTYPE_PCI) { + /* add offset for pcie with DMA64 bus */ + di->ddoffsetlow = 0; + di->ddoffsethigh = SI_PCIE_DMA_H32; + } di->dataoffsetlow = di->ddoffsetlow; di->dataoffsethigh = di->ddoffsethigh; + /* WAR64450 : DMACtl.Addr ext fields are not supported in SDIOD core. */ if ((core->id.id == BCMA_CORE_SDIO_DEV) && ((rev > 0) && (rev <= 2))) |