Module Name: src Committed By: matt Date: Wed Feb 26 00:19:01 UTC 2014
Modified Files: src/sys/arch/arm/allwinner: awin_board.c awin_io.c awin_var.h Log Message: Include latent support for coherent dma though for now it seems that isn't possible. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/allwinner/awin_board.c \ src/sys/arch/arm/allwinner/awin_var.h cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/allwinner/awin_io.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/allwinner/awin_board.c diff -u src/sys/arch/arm/allwinner/awin_board.c:1.8 src/sys/arch/arm/allwinner/awin_board.c:1.9 --- src/sys/arch/arm/allwinner/awin_board.c:1.8 Mon Feb 24 16:50:49 2014 +++ src/sys/arch/arm/allwinner/awin_board.c Wed Feb 26 00:19:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: awin_board.c,v 1.8 2014/02/24 16:50:49 matt Exp $ */ +/* $NetBSD: awin_board.c,v 1.9 2014/02/26 00:19:01 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -34,7 +34,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: awin_board.c,v 1.8 2014/02/24 16:50:49 matt Exp $"); +__KERNEL_RCSID(1, "$NetBSD: awin_board.c,v 1.9 2014/02/26 00:19:01 matt Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -63,6 +63,23 @@ struct arm32_bus_dma_tag awin_dma_tag = _BUS_DMATAG_FUNCS, }; +struct arm32_dma_range awin_coherent_dma_ranges[] = { + [0] = { + .dr_sysbase = AWIN_SDRAM_PBASE, + .dr_busbase = AWIN_SDRAM_PBASE, + .dr_flags = _BUS_DMAMAP_COHERENT, + }, +}; + + +struct arm32_bus_dma_tag awin_coherent_dma_tag = { + ._ranges = awin_coherent_dma_ranges, + ._nranges = __arraycount(awin_coherent_dma_ranges), + _BUS_DMAMAP_FUNCS, + _BUS_DMAMEM_FUNCS, + _BUS_DMATAG_FUNCS, +}; + #ifdef AWIN_CONSOLE_EARLY #include <dev/ic/ns16550reg.h> #include <dev/ic/comreg.h> @@ -181,6 +198,14 @@ awin_bootstrap(vaddr_t iobase, vaddr_t u #endif } +#if 0 +void +awin_dma_bootstrap(psize_t psize) +{ + awin_coherent_dma_ranges[0].dr_len = psize; +} +#endif + #ifdef MULTIPROCESSOR void awin_cpu_hatch(struct cpu_info *ci) Index: src/sys/arch/arm/allwinner/awin_var.h diff -u src/sys/arch/arm/allwinner/awin_var.h:1.8 src/sys/arch/arm/allwinner/awin_var.h:1.9 --- src/sys/arch/arm/allwinner/awin_var.h:1.8 Tue Feb 25 00:08:29 2014 +++ src/sys/arch/arm/allwinner/awin_var.h Wed Feb 26 00:19:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: awin_var.h,v 1.8 2014/02/25 00:08:29 jmcneill Exp $ */ +/* $NetBSD: awin_var.h,v 1.9 2014/02/26 00:19:01 matt Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. * All rights reserved. @@ -58,6 +58,7 @@ struct awinio_attach_args { bus_space_handle_t aio_core_bsh; bus_space_handle_t aio_ccm_bsh; bus_dma_tag_t aio_dmat; + bus_dma_tag_t aio_coherent_dmat; }; struct awin_gpio_pinset { @@ -75,9 +76,11 @@ extern struct bus_space awin_bs_tag; extern struct bus_space awin_a4x_bs_tag; extern bus_space_handle_t awin_core_bsh; extern struct arm32_bus_dma_tag awin_dma_tag; +extern struct arm32_bus_dma_tag awin_coherent_dma_tag; psize_t awin_memprobe(void); void awin_bootstrap(vaddr_t, vaddr_t); +void awin_dma_bootstrap(psize_t); void awin_pll6_enable(void); void awin_cpu_hatch(struct cpu_info *); Index: src/sys/arch/arm/allwinner/awin_io.c diff -u src/sys/arch/arm/allwinner/awin_io.c:1.7 src/sys/arch/arm/allwinner/awin_io.c:1.8 --- src/sys/arch/arm/allwinner/awin_io.c:1.7 Tue Feb 25 00:08:29 2014 +++ src/sys/arch/arm/allwinner/awin_io.c Wed Feb 26 00:19:01 2014 @@ -31,7 +31,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: awin_io.c,v 1.7 2014/02/25 00:08:29 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: awin_io.c,v 1.8 2014/02/26 00:19:01 matt Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -56,6 +56,7 @@ static struct awinio_softc { bus_space_handle_t sc_bsh; bus_space_handle_t sc_ccm_bsh; bus_dma_tag_t sc_dmat; + bus_dma_tag_t sc_coherent_dmat; } awinio_sc; CFATTACH_DECL_NEW(awin_io, 0, @@ -152,6 +153,7 @@ awinio_attach(device_t parent, device_t sc->sc_a4x_bst = &awin_a4x_bs_tag; sc->sc_bsh = awin_core_bsh; sc->sc_dmat = &awin_dma_tag; + sc->sc_coherent_dmat = &awin_coherent_dma_tag; bus_space_subregion(sc->sc_bst, sc->sc_bsh, AWIN_CCM_OFFSET, 0x1000, &sc->sc_ccm_bsh); @@ -188,6 +190,7 @@ awinio_attach(device_t parent, device_t .aio_core_bsh = sc->sc_bsh, .aio_ccm_bsh = sc->sc_ccm_bsh, .aio_dmat = sc->sc_dmat, + .aio_coherent_dmat = sc->sc_coherent_dmat, }; cfdata_t cf = config_search_ia(awinio_find, sc->sc_dev, "awinio", &aio);