Commit 05100a29 authored by Rafał Miłecki's avatar Rafał Miłecki Committed by John W. Linville

b43: dma: cache translation (routing bits)

Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 0355a345
...@@ -567,6 +567,8 @@ struct b43_dma { ...@@ -567,6 +567,8 @@ struct b43_dma {
struct b43_dmaring *tx_ring_mcast; /* Multicast */ struct b43_dmaring *tx_ring_mcast; /* Multicast */
struct b43_dmaring *rx_ring; struct b43_dmaring *rx_ring;
u32 translation; /* Routing bits */
}; };
struct b43_pio_txqueue; struct b43_pio_txqueue;
......
...@@ -80,7 +80,7 @@ static void op32_fill_descriptor(struct b43_dmaring *ring, ...@@ -80,7 +80,7 @@ static void op32_fill_descriptor(struct b43_dmaring *ring,
addr = (u32) (dmaaddr & ~SSB_DMA_TRANSLATION_MASK); addr = (u32) (dmaaddr & ~SSB_DMA_TRANSLATION_MASK);
addrext = (u32) (dmaaddr & SSB_DMA_TRANSLATION_MASK) addrext = (u32) (dmaaddr & SSB_DMA_TRANSLATION_MASK)
>> SSB_DMA_TRANSLATION_SHIFT; >> SSB_DMA_TRANSLATION_SHIFT;
addr |= ssb_dma_translation(ring->dev->sdev); addr |= ring->dev->dma.translation;
ctl = bufsize & B43_DMA32_DCTL_BYTECNT; ctl = bufsize & B43_DMA32_DCTL_BYTECNT;
if (slot == ring->nr_slots - 1) if (slot == ring->nr_slots - 1)
ctl |= B43_DMA32_DCTL_DTABLEEND; ctl |= B43_DMA32_DCTL_DTABLEEND;
...@@ -174,7 +174,7 @@ static void op64_fill_descriptor(struct b43_dmaring *ring, ...@@ -174,7 +174,7 @@ static void op64_fill_descriptor(struct b43_dmaring *ring,
addrhi = (((u64) dmaaddr >> 32) & ~SSB_DMA_TRANSLATION_MASK); addrhi = (((u64) dmaaddr >> 32) & ~SSB_DMA_TRANSLATION_MASK);
addrext = (((u64) dmaaddr >> 32) & SSB_DMA_TRANSLATION_MASK) addrext = (((u64) dmaaddr >> 32) & SSB_DMA_TRANSLATION_MASK)
>> SSB_DMA_TRANSLATION_SHIFT; >> SSB_DMA_TRANSLATION_SHIFT;
addrhi |= (ssb_dma_translation(ring->dev->sdev) << 1); addrhi |= (ring->dev->dma.translation << 1);
if (slot == ring->nr_slots - 1) if (slot == ring->nr_slots - 1)
ctl0 |= B43_DMA64_DCTL0_DTABLEEND; ctl0 |= B43_DMA64_DCTL0_DTABLEEND;
if (start) if (start)
...@@ -658,7 +658,7 @@ static int dmacontroller_setup(struct b43_dmaring *ring) ...@@ -658,7 +658,7 @@ static int dmacontroller_setup(struct b43_dmaring *ring)
int err = 0; int err = 0;
u32 value; u32 value;
u32 addrext; u32 addrext;
u32 trans = ssb_dma_translation(ring->dev->sdev); u32 trans = ring->dev->dma.translation;
if (ring->tx) { if (ring->tx) {
if (ring->type == B43_DMA_64BIT) { if (ring->type == B43_DMA_64BIT) {
...@@ -1055,6 +1055,7 @@ int b43_dma_init(struct b43_wldev *dev) ...@@ -1055,6 +1055,7 @@ int b43_dma_init(struct b43_wldev *dev)
err = b43_dma_set_mask(dev, dmamask); err = b43_dma_set_mask(dev, dmamask);
if (err) if (err)
return err; return err;
dma->translation = ssb_dma_translation(dev->sdev);
err = -ENOMEM; err = -ENOMEM;
/* setup TX DMA channels. */ /* setup TX DMA channels. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment