powerpc/8xxx: Fix dma for 36bit addressing
authorYork Sun <yorksun@freescale.com>
Fri, 27 Aug 2010 21:25:50 +0000 (16:25 -0500)
committerKumar Gala <galak@kernel.crashing.org>
Tue, 31 Aug 2010 16:23:15 +0000 (11:23 -0500)
Use more bits to support 36-bit addressing

Signed-off-by: York Sun <yorksun@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
drivers/dma/fsl_dma.c

index df33e7a..09c18c1 100644 (file)
@@ -114,8 +114,12 @@ int dmacpy(phys_addr_t dest, phys_addr_t src, phys_size_t count) {
        while (count) {
                xfer_size = MIN(FSL_DMA_MAX_SIZE, count);
 
-               out_dma32(&dma->dar, (uint) dest);
-               out_dma32(&dma->sar, (uint) src);
+               out_dma32(&dma->dar, (u32) (dest & 0xFFFFFFFF));
+               out_dma32(&dma->sar, (u32) (src & 0xFFFFFFFF));
+               out_dma32(&dma->satr,
+                       in_dma32(&dma->satr) | (u32)((u64)src >> 32));
+               out_dma32(&dma->datr,
+                       in_dma32(&dma->datr) | (u32)((u64)dest >> 32));
                out_dma32(&dma->bcr, xfer_size);
                dma_sync();