Deleted Added
full compact
busdma_machdep-v4.c (246713) busdma_machdep-v4.c (246881)
1/*-
2 * Copyright (c) 2012 Ian Lepore
3 * Copyright (c) 2004 Olivier Houchard
4 * Copyright (c) 2002 Peter Grehan
5 * Copyright (c) 1997, 1998 Justin T. Gibbs.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 16 unchanged lines hidden (view full) ---

25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * From i386/busdma_machdep.c,v 1.26 2002/04/19 22:58:09 alfred
30 */
31
32#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2012 Ian Lepore
3 * Copyright (c) 2004 Olivier Houchard
4 * Copyright (c) 2002 Peter Grehan
5 * Copyright (c) 1997, 1998 Justin T. Gibbs.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 16 unchanged lines hidden (view full) ---

25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * From i386/busdma_machdep.c,v 1.26 2002/04/19 22:58:09 alfred
30 */
31
32#include <sys/cdefs.h>
33__FBSDID("$FreeBSD: head/sys/arm/arm/busdma_machdep.c 246713 2013-02-12 16:57:20Z kib $");
33__FBSDID("$FreeBSD: head/sys/arm/arm/busdma_machdep.c 246881 2013-02-16 20:43:16Z ian $");
34
35/*
36 * ARM bus dma support routines.
37 *
38 * XXX Things to investigate / fix some day...
39 * - What is the earliest that this API can be called? Could there be any
40 * fallout from changing the SYSINIT() order from SI_SUB_VM to SI_SUB_KMEM?
41 * - The manpage mentions the BUS_DMA_NOWAIT flag only in the context of the

--- 866 unchanged lines hidden (view full) ---

908 sgsize = (baddr - curaddr);
909 }
910 if (dmat->ranges) {
911 struct arm32_dma_range *dr;
912
913 dr = _bus_dma_inrange(dmat->ranges, dmat->_nranges,
914 curaddr);
915 if (dr == NULL)
34
35/*
36 * ARM bus dma support routines.
37 *
38 * XXX Things to investigate / fix some day...
39 * - What is the earliest that this API can be called? Could there be any
40 * fallout from changing the SYSINIT() order from SI_SUB_VM to SI_SUB_KMEM?
41 * - The manpage mentions the BUS_DMA_NOWAIT flag only in the context of the

--- 866 unchanged lines hidden (view full) ---

908 sgsize = (baddr - curaddr);
909 }
910 if (dmat->ranges) {
911 struct arm32_dma_range *dr;
912
913 dr = _bus_dma_inrange(dmat->ranges, dmat->_nranges,
914 curaddr);
915 if (dr == NULL)
916 return (EINVAL);
916 return (0);
917 /*
918 * In a valid DMA range. Translate the physical
919 * memory address to an address in the DMA window.
920 */
921 curaddr = (curaddr - dr->dr_sysbase) + dr->dr_busbase;
922
923 }
924

--- 5 unchanged lines hidden (view full) ---

930 if (seg >= 0 &&
931 curaddr == segs[seg].ds_addr + segs[seg].ds_len &&
932 (segs[seg].ds_len + sgsize) <= dmat->maxsegsz &&
933 (dmat->boundary == 0 ||
934 (segs[seg].ds_addr & bmask) == (curaddr & bmask))) {
935 segs[seg].ds_len += sgsize;
936 } else {
937 if (++seg >= dmat->nsegments)
917 /*
918 * In a valid DMA range. Translate the physical
919 * memory address to an address in the DMA window.
920 */
921 curaddr = (curaddr - dr->dr_sysbase) + dr->dr_busbase;
922
923 }
924

--- 5 unchanged lines hidden (view full) ---

930 if (seg >= 0 &&
931 curaddr == segs[seg].ds_addr + segs[seg].ds_len &&
932 (segs[seg].ds_len + sgsize) <= dmat->maxsegsz &&
933 (dmat->boundary == 0 ||
934 (segs[seg].ds_addr & bmask) == (curaddr & bmask))) {
935 segs[seg].ds_len += sgsize;
936 } else {
937 if (++seg >= dmat->nsegments)
938 return (EFBIG);
938 return (0);
939 segs[seg].ds_addr = curaddr;
940 segs[seg].ds_len = sgsize;
941 }
942 *segp = seg;
939 segs[seg].ds_addr = curaddr;
940 segs[seg].ds_len = sgsize;
941 }
942 *segp = seg;
943 return (0);
943 return (sgsize);
944}
945
946/*
947 * Utility function to load a physical buffer. segp contains
948 * the starting segment on entrace, and the ending segment on exit.
949 */
950int
951_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map, vm_paddr_t buf,

--- 565 unchanged lines hidden ---
944}
945
946/*
947 * Utility function to load a physical buffer. segp contains
948 * the starting segment on entrace, and the ending segment on exit.
949 */
950int
951_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map, vm_paddr_t buf,

--- 565 unchanged lines hidden ---