summaryrefslogtreecommitdiffstats
path: root/drivers/bcma
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2011-07-20 19:52:15 +0200
committerJohn W. Linville <linville@tuxdriver.com>2011-07-22 15:51:12 +0200
commit05aec233367262a43dbf0b615099757162e36f88 (patch)
treecbfd96e2909dac94177db4e9b57c91056c2ad3a8 /drivers/bcma
parentssb: return correct translation bit for 64-bit DMA (diff)
downloadlinux-05aec233367262a43dbf0b615099757162e36f88.tar.xz
linux-05aec233367262a43dbf0b615099757162e36f88.zip
bcma: inform drivers about translation bits needed for the core
When using DMA, drivers need to pass special translation info to the hardware. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/bcma')
-rw-r--r--drivers/bcma/core.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/bcma/core.c b/drivers/bcma/core.c
index 2d8506dbca76..4a04a49cc06d 100644
--- a/drivers/bcma/core.c
+++ b/drivers/bcma/core.c
@@ -106,3 +106,19 @@ void bcma_core_pll_ctl(struct bcma_device *core, u32 req, u32 status, bool on)
}
}
EXPORT_SYMBOL_GPL(bcma_core_pll_ctl);
+
+u32 bcma_core_dma_translation(struct bcma_device *core)
+{
+ switch (core->bus->hosttype) {
+ case BCMA_HOSTTYPE_PCI:
+ if (bcma_aread32(core, BCMA_IOST) & BCMA_IOST_DMA64)
+ return BCMA_DMA_TRANSLATION_DMA64_CMT;
+ else
+ return BCMA_DMA_TRANSLATION_DMA32_CMT;
+ default:
+ pr_err("DMA translation unknown for host %d\n",
+ core->bus->hosttype);
+ }
+ return BCMA_DMA_TRANSLATION_NONE;
+}
+EXPORT_SYMBOL(bcma_core_dma_translation);