aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAshutosh Singh <ashutosh.singh@arm.com>2016-02-18 22:21:34 +0000
committerRyan Harkin <ryan.harkin@linaro.org>2017-05-11 11:25:11 +0100
commit6c7640dad3b91f0d4fd7a474dddf0d1e0743c9ad (patch)
tree569653c8f91a32913b8d58442184d74803f1708a
parent9fd94ce1ac22305c0c90027474a1edbd1f22582f (diff)
staging: android: ion: Add ION_HEAP_TYPE_DMA to dummy ion driver pool
Android system relies on ION to make large contiguous allocations. Allocations for small buffer sizes from linux heap works fine, however allocation of large buffers (e.g. for high res displays) becomes increasing difficult with memory fragmentation. This change leverages on linux CMA framework to allocate large buffers using dma_buf APIs. Reviewed-by: James King <james.king@arm.com> Signed-off-by: Ashutosh Singh <ashutosh.singh@arm.com> Signed-off-by: Jon Medhurst <tixy@linaro.org>
-rw-r--r--drivers/staging/android/ion/ion_dummy_driver.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/staging/android/ion/ion_dummy_driver.c b/drivers/staging/android/ion/ion_dummy_driver.c
index 5678870bff48..cf650c6981db 100644
--- a/drivers/staging/android/ion/ion_dummy_driver.c
+++ b/drivers/staging/android/ion/ion_dummy_driver.c
@@ -31,6 +31,11 @@ static struct ion_heap **heaps;
static void *carveout_ptr;
static void *chunk_ptr;
+struct platform_device dummy_device_ion = {
+ .name = "ion-dummy",
+ .id = -1,
+};
+
static struct ion_platform_heap dummy_heaps[] = {
{
.id = ION_HEAP_TYPE_SYSTEM,
@@ -56,6 +61,12 @@ static struct ion_platform_heap dummy_heaps[] = {
.align = SZ_16K,
.priv = (void *)(SZ_16K),
},
+ {
+ .id = ION_HEAP_TYPE_DMA,
+ .type = ION_HEAP_TYPE_DMA,
+ .name = "ion_dma_heap",
+ .priv = &dummy_device_ion.dev,
+ }
};
static struct ion_platform_data dummy_ion_pdata = {
@@ -110,7 +121,9 @@ static int __init ion_dummy_init(void)
}
ion_device_add_heap(idev, heaps[i]);
}
- return 0;
+
+ return platform_device_register(&dummy_device_ion);
+
err:
for (i = 0; i < dummy_ion_pdata.nr; ++i)
ion_heap_destroy(heaps[i]);