Module Name: src Committed By: matt Date: Tue Feb 19 02:22:02 UTC 2013
Modified Files: src/sys/arch/arm/broadcom [matt-nb6-plus]: bcm53xx_board.c bcm53xx_eth.c bcm53xx_pax.c bcm53xx_var.h Log Message: Sync with HEAD. To generate a diff of this commit: cvs rdiff -u -r1.8.4.4 -r1.8.4.5 src/sys/arch/arm/broadcom/bcm53xx_board.c cvs rdiff -u -r1.17.2.4 -r1.17.2.5 src/sys/arch/arm/broadcom/bcm53xx_eth.c cvs rdiff -u -r1.7.4.2 -r1.7.4.3 src/sys/arch/arm/broadcom/bcm53xx_pax.c cvs rdiff -u -r1.4.4.2 -r1.4.4.3 src/sys/arch/arm/broadcom/bcm53xx_var.h 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.8.4.4 src/sys/arch/arm/broadcom/bcm53xx_board.c:1.8.4.5 --- src/sys/arch/arm/broadcom/bcm53xx_board.c:1.8.4.4 Wed Feb 13 23:52:18 2013 +++ src/sys/arch/arm/broadcom/bcm53xx_board.c Tue Feb 19 02:22:02 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: bcm53xx_board.c,v 1.8.4.4 2013/02/13 23:52:18 matt Exp $ */ +/* $NetBSD: bcm53xx_board.c,v 1.8.4.5 2013/02/19 02:22:02 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.8.4.4 2013/02/13 23:52:18 matt Exp $"); +__KERNEL_RCSID(1, "$NetBSD: bcm53xx_board.c,v 1.8.4.5 2013/02/19 02:22:02 matt Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -91,11 +91,9 @@ 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 }, }; @@ -107,6 +105,25 @@ struct arm32_bus_dma_tag bcm53xx_coheren _BUS_DMATAG_FUNCS, }; +#ifdef _ARM32_NEED_BUS_DMA_BOUNCE +struct arm32_dma_range bcm53xx_bounce_dma_ranges[] = { + [0] = { + .dr_sysbase = 0x80000000, + .dr_busbase = 0x80000000, + .dr_len = 0x10000000, + .dr_flags = _BUS_DMAMAP_COHERENT, + }, +}; + +struct arm32_bus_dma_tag bcm53xx_bounce_dma_tag = { + ._ranges = bcm53xx_bounce_dma_ranges, + ._nranges = __arraycount(bcm53xx_bounce_dma_ranges), + _BUS_DMAMAP_FUNCS, + _BUS_DMAMEM_FUNCS, + _BUS_DMATAG_FUNCS, +}; +#endif + #ifdef BCM53XX_CONSOLE_EARLY #include <dev/ic/ns16550reg.h> #include <dev/ic/comreg.h> @@ -529,6 +546,8 @@ bcm53xx_dma_bootstrap(psize_t memsize) bcm53xx_dma_tag._nranges = 1; #ifndef _ARM32_NEED_BUS_DMA_BOUNCE bcm53xx_coherent_dma_tag._nranges = 1; +#else + bcm53xx_bounce_dma_ranges[0].dr_len = memsize; #endif } else { /* @@ -537,12 +556,16 @@ bcm53xx_dma_bootstrap(psize_t memsize) * below 256MB which for PCI and GMAC are coherent. */ bcm53xx_dma_ranges[1].dr_len = memsize - 0x10000000; -#ifndef _ARM32_NEED_BUS_DMA_BOUNCE bcm53xx_coherent_dma_ranges[1].dr_len = memsize - 0x10000000; +#ifdef _ARM32_NEED_BUS_DMA_BOUNCE + bcm53xx_bounce_dma_ranges[1].dr_len = memsize - 0x10000000; #endif } KASSERT(bcm53xx_dma_tag._ranges[0].dr_flags == 0); KASSERT(bcm53xx_coherent_dma_tag._ranges[0].dr_flags == _BUS_DMAMAP_COHERENT); +#ifdef _ARM32_NEED_BUS_DMA_BOUNCE + KASSERT(bcm53xx_bounce_dma_tag._ranges[0].dr_flags == _BUS_DMAMAP_COHERENT); +#endif } #ifdef MULTIPROCESSOR Index: src/sys/arch/arm/broadcom/bcm53xx_eth.c diff -u src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.17.2.4 src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.17.2.5 --- src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.17.2.4 Thu Feb 7 06:51:49 2013 +++ src/sys/arch/arm/broadcom/bcm53xx_eth.c Tue Feb 19 02:22:02 2013 @@ -35,7 +35,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: bcm53xx_eth.c,v 1.17.2.4 2013/02/07 06:51:49 matt Exp $"); +__KERNEL_RCSID(1, "$NetBSD: bcm53xx_eth.c,v 1.17.2.5 2013/02/19 02:22:02 matt Exp $"); #include <sys/param.h> #include <sys/atomic.h> @@ -281,6 +281,11 @@ bcmeth_ccb_attach(device_t parent, devic * We need to use the coherent dma tag for the GMAC. */ sc->sc_dmat = &bcm53xx_coherent_dma_tag; +#if _ARM32_NEED_BUS_DMA_BOUNCE + if (device_cfdata(self)->cf_flags & 2) { + sc->sc_dmat = &bcm53xx_bounce_dma_tag; + } +#endif prop_data_t eaprop = prop_dictionary_get(dict, "mac-address"); if (eaprop == NULL) { Index: src/sys/arch/arm/broadcom/bcm53xx_pax.c diff -u src/sys/arch/arm/broadcom/bcm53xx_pax.c:1.7.4.2 src/sys/arch/arm/broadcom/bcm53xx_pax.c:1.7.4.3 --- src/sys/arch/arm/broadcom/bcm53xx_pax.c:1.7.4.2 Wed Nov 28 22:40:23 2012 +++ src/sys/arch/arm/broadcom/bcm53xx_pax.c Tue Feb 19 02:22:02 2013 @@ -34,7 +34,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: bcm53xx_pax.c,v 1.7.4.2 2012/11/28 22:40:23 matt Exp $"); +__KERNEL_RCSID(1, "$NetBSD: bcm53xx_pax.c,v 1.7.4.3 2013/02/19 02:22:02 matt Exp $"); #include <sys/bus.h> #include <sys/device.h> @@ -199,10 +199,15 @@ bcmpax_ccb_attach(device_t parent, devic struct bcmccb_attach_args * const ccbaa = aux; const struct bcm_locators * const loc = &ccbaa->ccbaa_loc; const char * const xname = device_xname(self); + cfdata_t cf = device_cfdata(self); sc->sc_dev = self; - //sc->sc_dmat = ccbaa->ccbaa_dmat; sc->sc_dmat = &bcm53xx_coherent_dma_tag; +#ifdef _ARM32_NEED_BUS_DMA_BOUNCE + if (cf->cf_flags & 2) { + sc->sc_dmat = &bcm53xx_bounce_dma_tag; + } +#endif for (u_int i = 0; i < 4; i++) { snprintf(sc->sc_intrstring[i], sizeof(sc->sc_intrstring[i]), @@ -293,7 +298,7 @@ bcmpax_ccb_attach(device_t parent, devic /* * This will force the device to negotiate to a max of gen1. */ - if (device_cfdata(self)->cf_flags & 1) { + if (cf->cf_flags & 1) { bcmpax_conf_write(sc, 0, offset + PCI_PCIE_LCSR2, 1); } Index: src/sys/arch/arm/broadcom/bcm53xx_var.h diff -u src/sys/arch/arm/broadcom/bcm53xx_var.h:1.4.4.2 src/sys/arch/arm/broadcom/bcm53xx_var.h:1.4.4.3 --- src/sys/arch/arm/broadcom/bcm53xx_var.h:1.4.4.2 Wed Nov 28 22:40:24 2012 +++ src/sys/arch/arm/broadcom/bcm53xx_var.h Tue Feb 19 02:22:02 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: bcm53xx_var.h,v 1.4.4.2 2012/11/28 22:40:24 matt Exp $ */ +/* $NetBSD: bcm53xx_var.h,v 1.4.4.3 2013/02/19 02:22:02 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -115,6 +115,9 @@ uint64_t bcm53xx_srab_read_8(u_int); void bcm53xx_srab_write_4(u_int, uint32_t); void bcm53xx_srab_write_8(u_int, uint64_t); extern struct arm32_bus_dma_tag bcm53xx_dma_tag, bcm53xx_coherent_dma_tag; +#ifdef _ARM32_NEED_BUS_DMA_BOUNCE +extern struct arm32_bus_dma_tag bcm53xx_bounce_dma_tag; +#endif extern struct bus_space bcmgen_bs_tag; extern bus_space_tag_t bcm53xx_ioreg_bst; extern bus_space_handle_t bcm53xx_ioreg_bsh;