浏览代码

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>
York Sun 14 年之前
父节点
当前提交
359ec49319
共有 1 个文件被更改,包括 6 次插入2 次删除
  1. 6 2
      drivers/dma/fsl_dma.c

+ 6 - 2
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) {
 	while (count) {
 		xfer_size = MIN(FSL_DMA_MAX_SIZE, 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);
 		out_dma32(&dma->bcr, xfer_size);
 		dma_sync();
 		dma_sync();