Commit 186ca446 authored by Christian König's avatar Christian König Committed by Alex Deucher
parent 681066ec
...@@ -922,40 +922,40 @@ EXPORT_SYMBOL(drm_prime_pages_to_sg); ...@@ -922,40 +922,40 @@ EXPORT_SYMBOL(drm_prime_pages_to_sg);
/** /**
* drm_prime_sg_to_page_addr_arrays - convert an sg table into a page array * drm_prime_sg_to_page_addr_arrays - convert an sg table into a page array
* @sgt: scatter-gather table to convert * @sgt: scatter-gather table to convert
* @pages: array of page pointers to store the page array in * @pages: optional array of page pointers to store the page array in
* @addrs: optional array to store the dma bus address of each page * @addrs: optional array to store the dma bus address of each page
* @max_pages: size of both the passed-in arrays * @max_entries: size of both the passed-in arrays
* *
* Exports an sg table into an array of pages and addresses. This is currently * Exports an sg table into an array of pages and addresses. This is currently
* required by the TTM driver in order to do correct fault handling. * required by the TTM driver in order to do correct fault handling.
*/ */
int drm_prime_sg_to_page_addr_arrays(struct sg_table *sgt, struct page **pages, int drm_prime_sg_to_page_addr_arrays(struct sg_table *sgt, struct page **pages,
dma_addr_t *addrs, int max_pages) dma_addr_t *addrs, int max_entries)
{ {
unsigned count; unsigned count;
struct scatterlist *sg; struct scatterlist *sg;
struct page *page; struct page *page;
u32 len; u32 len, index;
int pg_index;
dma_addr_t addr; dma_addr_t addr;
pg_index = 0; index = 0;
for_each_sg(sgt->sgl, sg, sgt->nents, count) { for_each_sg(sgt->sgl, sg, sgt->nents, count) {
len = sg->length; len = sg->length;
page = sg_page(sg); page = sg_page(sg);
addr = sg_dma_address(sg); addr = sg_dma_address(sg);
while (len > 0) { while (len > 0) {
if (WARN_ON(pg_index >= max_pages)) if (WARN_ON(index >= max_entries))
return -1; return -1;
pages[pg_index] = page; if (pages)
pages[index] = page;
if (addrs) if (addrs)
addrs[pg_index] = addr; addrs[index] = addr;
page++; page++;
addr += PAGE_SIZE; addr += PAGE_SIZE;
len -= PAGE_SIZE; len -= PAGE_SIZE;
pg_index++; index++;
} }
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment