Hardware abstractions: bus_dma Used to abstract the process of letting the device talk to memory while the CPU does something else. bus_dmamap_t: Describes DMA mapping Array of segments (dm_segs) Number of segments (dm_nsegs) bus_dma_segment_t Single DMA segment Create the mapping Allocate memory Load data into memory Flush DMA cache Do DMA transfer Flush DMA cache Unload data Free memory