Lines Matching refs:sg
141 dma_map_sg(bus_dma_tag_t dmat, struct scatterlist *sg, int nents, int dir) in dma_map_sg() argument
144 return dma_map_sg_attrs(dmat, sg, nents, dir, 0); in dma_map_sg()
148 dma_map_sg_attrs(bus_dma_tag_t dmat, struct scatterlist *sg, int nents, in dma_map_sg_attrs() argument
155 KASSERT(sg->sg_dmamap == NULL); in dma_map_sg_attrs()
156 KASSERT(sg->sg_npgs); in dma_map_sg_attrs()
174 error = bus_dmamap_create(dmat, (bus_size_t)sg->sg_npgs << PAGE_SHIFT, in dma_map_sg_attrs()
175 nents, PAGE_SIZE, 0, BUS_DMA_WAITOK, &sg->sg_dmamap); in dma_map_sg_attrs()
178 KASSERT(sg->sg_dmamap); in dma_map_sg_attrs()
180 error = bus_dmamap_load_pages(dmat, sg->sg_dmamap, sg->sg_pgs, in dma_map_sg_attrs()
181 (bus_size_t)sg->sg_npgs << PAGE_SHIFT, BUS_DMA_WAITOK|flags); in dma_map_sg_attrs()
187 KASSERT(sg->sg_dmamap->dm_nsegs > 0); in dma_map_sg_attrs()
188 KASSERT(sg->sg_dmamap->dm_nsegs <= nents); in dma_map_sg_attrs()
189 sg->sg_dmat = dmat; in dma_map_sg_attrs()
190 ret = sg->sg_dmamap->dm_nsegs; in dma_map_sg_attrs()
195 bus_dmamap_unload(dmat, sg->sg_dmamap); in dma_map_sg_attrs()
197 if (sg->sg_dmamap) in dma_map_sg_attrs()
198 bus_dmamap_destroy(dmat, sg->sg_dmamap); in dma_map_sg_attrs()
199 sg->sg_dmamap = NULL; in dma_map_sg_attrs()
206 dma_unmap_sg(bus_dma_tag_t dmat, struct scatterlist *sg, int nents, int dir) in dma_unmap_sg() argument
209 dma_unmap_sg_attrs(dmat, sg, nents, dir, 0); in dma_unmap_sg()
213 dma_unmap_sg_attrs(bus_dma_tag_t dmat, struct scatterlist *sg, int nents, in dma_unmap_sg_attrs() argument
217 KASSERT(sg->sg_dmat == dmat); in dma_unmap_sg_attrs()
219 bus_dmamap_unload(dmat, sg->sg_dmamap); in dma_unmap_sg_attrs()
220 bus_dmamap_destroy(dmat, sg->sg_dmamap); in dma_unmap_sg_attrs()
221 sg->sg_dmamap = NULL; in dma_unmap_sg_attrs()
225 sg_dma_address(const struct scatterlist *sg) in sg_dma_address() argument
228 KASSERT(sg->sg_dmamap->dm_nsegs == 1); in sg_dma_address()
229 return sg->sg_dmamap->dm_segs[0].ds_addr; in sg_dma_address()
233 sg_dma_len(const struct scatterlist *sg) in sg_dma_len() argument
236 KASSERT(sg->sg_dmamap->dm_nsegs == 1); in sg_dma_len()
237 return sg->sg_dmamap->dm_segs[0].ds_len; in sg_dma_len()