diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2011-07-20 21:52:15 +0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-07-22 17:51:12 +0400 |
commit | 05aec233367262a43dbf0b615099757162e36f88 (patch) | |
tree | cbfd96e2909dac94177db4e9b57c91056c2ad3a8 /drivers/bcma | |
parent | a9770a815d280d6aa2da406e159eff92b880670e (diff) | |
download | linux-05aec233367262a43dbf0b615099757162e36f88.tar.xz |
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.c | 16 |
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); |