summaryrefslogtreecommitdiff
path: root/drivers/dma/fsl_dma.c
diff options
context:
space:
mode:
authorYork Sun <yorksun@freescale.com>2010-08-27 16:25:50 -0500
committerKumar Gala <galak@kernel.crashing.org>2010-08-31 11:23:15 -0500
commit359ec4931944adb885882deb9b781e4095eabc94 (patch)
treedfffa9d3949c402c81bd46cb7b6dc1f36d586999 /drivers/dma/fsl_dma.c
parent8d9207c79223497666580c51be7c4f9e2d7a4d1f (diff)
downloadu-boot-imx-359ec4931944adb885882deb9b781e4095eabc94.zip
u-boot-imx-359ec4931944adb885882deb9b781e4095eabc94.tar.gz
u-boot-imx-359ec4931944adb885882deb9b781e4095eabc94.tar.bz2
powerpc/8xxx: Fix dma for 36bit addressing
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>
Diffstat (limited to 'drivers/dma/fsl_dma.c')
-rw-r--r--drivers/dma/fsl_dma.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/dma/fsl_dma.c b/drivers/dma/fsl_dma.c
index df33e7a..09c18c1 100644
--- a/drivers/dma/fsl_dma.c
+++ b/drivers/dma/fsl_dma.c
@@ -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();