diff options
author | cognet <cognet@FreeBSD.org> | 2005-10-03 22:44:54 +0000 |
---|---|---|
committer | cognet <cognet@FreeBSD.org> | 2005-10-03 22:44:54 +0000 |
commit | 2feb4ae38fb40ab03fff36c380df859ceb9b68fb (patch) | |
tree | 23f5922ad3a31f93425d66685d02764837632505 /sys | |
parent | 12c8814c4626cae198759b6669ede20afcd22c90 (diff) | |
download | FreeBSD-src-2feb4ae38fb40ab03fff36c380df859ceb9b68fb.zip FreeBSD-src-2feb4ae38fb40ab03fff36c380df859ceb9b68fb.tar.gz |
Bring in the good version of this file.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arm/arm/busdma_machdep.c | 46 |
1 files changed, 2 insertions, 44 deletions
diff --git a/sys/arm/arm/busdma_machdep.c b/sys/arm/arm/busdma_machdep.c index 0ee2d9f..39d4d82 100644 --- a/sys/arm/arm/busdma_machdep.c +++ b/sys/arm/arm/busdma_machdep.c @@ -494,14 +494,10 @@ bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dma_segment_t *segs, } else { curaddr = (pte & L2_S_FRAME) | (vaddr & L2_S_OFFSET); - pmap_uncache(ptep); - map->flags |= DMAMAP_UNCACHED; -#if 0 if (pte & L2_S_CACHE_MASK) { map->flags &= ~DMAMAP_COHERENT; } -#endif } } } else { @@ -774,43 +770,7 @@ bus_dmamap_load_uio(bus_dma_tag_t dmat, bus_dmamap_t map, struct uio *uio, */ void _bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map) -{ - struct mbuf *m; - struct uio *uio; - int resid; - struct iovec *iov; - - if (map->flags & DMAMAP_UNCACHED) { - switch(map->flags & DMAMAP_TYPE_MASK) { - case DMAMAP_LINEAR: - pmap_recache(map->buffer, len); - break; - case DMAMAP_MBUF: - m = map->buffer; - while (m) { - if (m->m_len > 0) - pmap_recache(m->m_data, len); - m = m->m_next; - } - break; - case DMAMAP_UIO: - uio = map->buffer; - iov = uio->uio_iov; - resid = uio->uio_resid; - for (int i = 0; i < uio->uio_iovcnt && resid != 0; i++) { - bus_size_t minlen = resid < iov[i].iov_len ? resid : - iov[i].iov_len; - if (minlen > 0) { - pmap_recache(iov[i].iov_base, minlen); - resid -= minlen; - } - } - break; - default: - break; - } - - } +{ map->flags &= ~DMAMAP_TYPE_MASK; return; } @@ -840,10 +800,8 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op) if (!(op & (BUS_DMASYNC_PREWRITE | BUS_DMASYNC_POSTREAD))) return; - if (map->flags & DMAMAP_COHERENT) { - printf("COHERENT\n"); + if (map->flags & DMAMAP_COHERENT) return; - } if ((op && BUS_DMASYNC_POSTREAD) && (map->len >= 2 * PAGE_SIZE)) { cpu_dcache_wbinv_all(); return; |