diff options
Diffstat (limited to 'drivers/base/dma-mapping.c')
| -rw-r--r-- | drivers/base/dma-mapping.c | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/base/dma-mapping.c b/drivers/base/dma-mapping.c index db5db02e885..3fbedc75e7c 100644 --- a/drivers/base/dma-mapping.c +++ b/drivers/base/dma-mapping.c @@ -218,6 +218,24 @@ void dmam_release_declared_memory(struct device *dev)  }  EXPORT_SYMBOL(dmam_release_declared_memory); +/* + * Create scatter-list for the already allocated DMA buffer. + */ +int dma_common_get_sgtable(struct device *dev, struct sg_table *sgt, +		 void *cpu_addr, dma_addr_t handle, size_t size) +{ +	struct page *page = virt_to_page(cpu_addr); +	int ret; + +	ret = sg_alloc_table(sgt, 1, GFP_KERNEL); +	if (unlikely(ret)) +		return ret; + +	sg_set_page(sgt->sgl, page, PAGE_ALIGN(size), 0); +	return 0; +} +EXPORT_SYMBOL(dma_common_get_sgtable); +  #endif  /*  |