Module Name:    src
Committed By:   matt
Date:           Fri Feb  8 23:21:35 UTC 2013

Modified Files:
        src/sys/arch/arm/broadcom: bcm53xx_board.c

Log Message:
If _ARM32_NEED_BUS_DMA_BOUNCE is defined, only define one dma_range
for the coherent dma tag.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/broadcom/bcm53xx_board.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/broadcom/bcm53xx_board.c
diff -u src/sys/arch/arm/broadcom/bcm53xx_board.c:1.9 src/sys/arch/arm/broadcom/bcm53xx_board.c:1.10
--- src/sys/arch/arm/broadcom/bcm53xx_board.c:1.9	Thu Jan 10 22:06:32 2013
+++ src/sys/arch/arm/broadcom/bcm53xx_board.c	Fri Feb  8 23:21:35 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm53xx_board.c,v 1.9 2013/01/10 22:06:32 matt Exp $	*/
+/*	$NetBSD: bcm53xx_board.c,v 1.10 2013/02/08 23:21:35 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: bcm53xx_board.c,v 1.9 2013/01/10 22:06:32 matt Exp $");
+__KERNEL_RCSID(1, "$NetBSD: bcm53xx_board.c,v 1.10 2013/02/08 23:21:35 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -91,9 +91,11 @@ struct arm32_dma_range bcm53xx_coherent_
 		.dr_busbase = 0x80000000,
 		.dr_len = 0x10000000,
 		.dr_flags = _BUS_DMAMAP_COHERENT,
+#ifndef _ARM32_NEED_BUS_DMA_BOUNCE
 	}, [1] = {
 		.dr_sysbase = 0x90000000,
 		.dr_busbase = 0x90000000,
+#endif
 	},
 };
 
@@ -521,7 +523,13 @@ bcm53xx_bootstrap(vaddr_t iobase)
 void
 bcm53xx_dma_bootstrap(psize_t memsize)
 {
-	if (memsize > 256*1024*1024) {
+	if (memsize < 256*1024*1024) {
+		bcm53xx_dma_ranges[0].dr_len = memsize;
+		bcm53xx_coherent_dma_ranges[0].dr_len = memsize;
+#ifdef _ARM32_NEED_BUS_DMA_BOUNCE
+		bcm53xx_dma_tag._nranges = 1;
+		bcm53xx_coherent_dma_tag._nranges = 1;
+	} else {
 		/*
 		 * By setting up two ranges, bus_dmamem_alloc will always
 		 * try to allocate from range 0 first resulting in allocations
@@ -529,11 +537,7 @@ bcm53xx_dma_bootstrap(psize_t memsize)
 		 */
 		bcm53xx_dma_ranges[1].dr_len = memsize - 0x10000000;
 		bcm53xx_coherent_dma_ranges[1].dr_len = memsize - 0x10000000;
-	} else {
-		bcm53xx_dma_ranges[0].dr_len = memsize;
-		bcm53xx_coherent_dma_ranges[0].dr_len = memsize;
-		bcm53xx_dma_tag._nranges = 1;
-		bcm53xx_coherent_dma_tag._nranges = 1;
+#endif
 	}
 	KASSERT(bcm53xx_dma_tag._ranges[0].dr_flags == 0);
 	KASSERT(bcm53xx_coherent_dma_tag._ranges[0].dr_flags == _BUS_DMAMAP_COHERENT);

Reply via email to