Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9384adf authored by Jordan Crouse's avatar Jordan Crouse
Browse files

msm: kgsl: move memdesc_sg_dma from the header



memdesc_sg_dma is too big to be an inline function so move it into the
code and rename it to match the namespace.

Change-Id: Ic0dedbad859b4ef3e1d168aabbf27970bf7e1288
Signed-off-by: default avatarJordan Crouse <jcrouse@codeaurora.org>
parent bae62cc7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -259,7 +259,7 @@ static void kgsl_setup_qdss_desc(struct kgsl_device *device)
	gpu_qdss_desc.ops = NULL;
	gpu_qdss_desc.hostptr = NULL;

	result = memdesc_sg_dma(&gpu_qdss_desc, gpu_qdss_desc.physaddr,
	result = kgsl_memdesc_sg_dma(&gpu_qdss_desc, gpu_qdss_desc.physaddr,
			gpu_qdss_desc.size);
	if (result) {
		dev_err(device->dev, "memdesc_sg_dma failed: %d\n", result);
@@ -303,7 +303,7 @@ static void kgsl_setup_qtimer_desc(struct kgsl_device *device)
	gpu_qtimer_desc.ops = NULL;
	gpu_qtimer_desc.hostptr = NULL;

	result = memdesc_sg_dma(&gpu_qtimer_desc, gpu_qtimer_desc.physaddr,
	result = kgsl_memdesc_sg_dma(&gpu_qtimer_desc, gpu_qtimer_desc.physaddr,
			gpu_qtimer_desc.size);
	if (result) {
		dev_err(device->dev, "memdesc_sg_dma failed: %d\n", result);
+23 −2
Original line number Diff line number Diff line
@@ -1248,6 +1248,27 @@ void kgsl_get_memory_usage(char *name, size_t name_size, uint64_t memflags)
}
EXPORT_SYMBOL(kgsl_get_memory_usage);

int kgsl_memdesc_sg_dma(struct kgsl_memdesc *memdesc,
		phys_addr_t addr, u64 size)
{
	int ret;
	struct page *page = phys_to_page(addr);

	memdesc->sgt = kmalloc(sizeof(*memdesc->sgt), GFP_KERNEL);
	if (memdesc->sgt == NULL)
		return -ENOMEM;

	ret = sg_alloc_table(memdesc->sgt, 1, GFP_KERNEL);
	if (ret) {
		kfree(memdesc->sgt);
		memdesc->sgt = NULL;
		return ret;
	}

	sg_set_page(memdesc->sgt->sgl, page, (size_t) size, 0);
	return 0;
}

int kgsl_sharedmem_alloc_contig(struct kgsl_device *device,
			struct kgsl_memdesc *memdesc, uint64_t size)
{
@@ -1269,7 +1290,7 @@ int kgsl_sharedmem_alloc_contig(struct kgsl_device *device,
		goto err;
	}

	result = memdesc_sg_dma(memdesc, memdesc->physaddr, size);
	result = kgsl_memdesc_sg_dma(memdesc, memdesc->physaddr, size);
	if (result)
		goto err;

@@ -1379,7 +1400,7 @@ static int kgsl_cma_alloc_secure(struct kgsl_device *device,
		goto err;
	}

	result = memdesc_sg_dma(memdesc, memdesc->physaddr, aligned);
	result = kgsl_memdesc_sg_dma(memdesc, memdesc->physaddr, aligned);
	if (result)
		goto err;

+7 −24
Original line number Diff line number Diff line
@@ -152,34 +152,17 @@ kgsl_memdesc_usermem_type(const struct kgsl_memdesc *memdesc)
}

/**
 * memdesg_sg_dma() - Turn a dma_addr (from CMA) into a sg table
 * @memdesc: Pointer to the memdesc structure
 * kgsl_memdesc_sg_dma - Turn a dma_addr (from CMA) into a sg table
 * @memdesc: Pointer to a memory descriptor
 * @addr: Physical address from the dma_alloc function
 * @size: Size of the chunk
 *
 * Create a sg table for the contigious chunk specified by addr and size.
 * Create a sg table for the contiguous chunk specified by addr and size.
 *
 * Return: 0 on success or negative on failure.
 */
static inline int
memdesc_sg_dma(struct kgsl_memdesc *memdesc,
		phys_addr_t addr, uint64_t size)
{
	int ret;
	struct page *page = phys_to_page(addr);

	memdesc->sgt = kmalloc(sizeof(struct sg_table), GFP_KERNEL);
	if (memdesc->sgt == NULL)
		return -ENOMEM;

	ret = sg_alloc_table(memdesc->sgt, 1, GFP_KERNEL);
	if (ret) {
		kfree(memdesc->sgt);
		memdesc->sgt = NULL;
		return ret;
	}

	sg_set_page(memdesc->sgt->sgl, page, (size_t) size, 0);
	return 0;
}
int kgsl_memdesc_sg_dma(struct kgsl_memdesc *memdesc,
		phys_addr_t addr, u64 size);

/*
 * kgsl_memdesc_is_global - is this a globally mapped buffer?