diff options
author | Ashutosh Singh <ashutosh.singh@arm.com> | 2016-02-18 22:21:34 +0000 |
---|---|---|
committer | Ryan Harkin <ryan.harkin@linaro.org> | 2017-05-11 11:25:11 +0100 |
commit | 6c7640dad3b91f0d4fd7a474dddf0d1e0743c9ad (patch) | |
tree | 569653c8f91a32913b8d58442184d74803f1708a | |
parent | 9fd94ce1ac22305c0c90027474a1edbd1f22582f (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.c | 15 |
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]); |