diff options
Diffstat (limited to 'meta-rcar-gen3-adas/recipes-multimedia/mmngr-module/files/0001-cached-buffers-support.patch')
-rw-r--r-- | meta-rcar-gen3-adas/recipes-multimedia/mmngr-module/files/0001-cached-buffers-support.patch | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/meta-rcar-gen3-adas/recipes-multimedia/mmngr-module/files/0001-cached-buffers-support.patch b/meta-rcar-gen3-adas/recipes-multimedia/mmngr-module/files/0001-cached-buffers-support.patch new file mode 100644 index 0000000..9a8030e --- /dev/null +++ b/meta-rcar-gen3-adas/recipes-multimedia/mmngr-module/files/0001-cached-buffers-support.patch @@ -0,0 +1,113 @@ +From ac078825fab834a524e45befa6a7f9de12317d16 Mon Sep 17 00:00:00 2001 +From: Andrey Dolnikov <andrey.dolnikov@cogentembedded.com> +Date: Wed, 14 Feb 2018 12:10:09 +0300 +Subject: [PATCH] mmngr: Add kernelheap cached buffers support. + +--- + libmmngr/mmngr/if/mmngr_if.c | 49 ++++++++++++++++++++++++++++-- + libmmngr/mmngr/include/mmngr_user_public.h | 4 +++ + 2 files changed, 50 insertions(+), 3 deletions(-) + +diff --git a/libmmngr/mmngr/if/mmngr_if.c b/libmmngr/mmngr/if/mmngr_if.c +index 670aa60..1096d14 100644 +--- a/libmmngr/mmngr/if/mmngr_if.c ++++ b/libmmngr/mmngr/if/mmngr_if.c +@@ -216,7 +216,7 @@ int mmngr_alloc_in_user_ext(MMNGR_ID *pid, size_t size, + goto exit; + } + +- if ((flag != MM_KERNELHEAP) && (flag != MM_CARVEOUT) ++ if ((flag != MM_KERNELHEAP) && (flag != MM_KERNELHEAP_CACHED) && (flag != MM_CARVEOUT) + && (flag != MM_CARVEOUT_SSP) && (flag != MM_CARVEOUT_LOSSY)) { + ret = R_MM_PARE; + goto exit; +@@ -243,7 +243,7 @@ int mmngr_alloc_in_user_ext(MMNGR_ID *pid, size_t size, + } + } + +- if (flag == MM_KERNELHEAP) { ++ if (flag == MM_KERNELHEAP || flag == MM_KERNELHEAP_CACHED) { + ret = mm_alloc_kh_in_user(pid, size, phard_addr, + puser_virt_addr, flag); + if (ret) +@@ -296,7 +296,7 @@ int mmngr_free_in_user_ext(MMNGR_ID id) + goto exit; + } + +- if (p.flag == MM_KERNELHEAP) { ++ if (p.flag == MM_KERNELHEAP || p.flag == MM_KERNELHEAP_CACHED) { + ret = mm_free_kh_in_user(id); + if (ret) + goto exit; +@@ -479,3 +479,46 @@ int mmngr_release_in_user(MMNGR_ID id) + ret = mmngr_release_in_user_ext(id); + return ret; + } ++ ++int mmngr_inval(MMNGR_ID id, size_t offset, size_t len) ++{ ++ int ret; ++ struct MM_CACHE_PARAM cachep; ++ ++ cachep.offset = offset; ++ cachep.len = len; ++ ++ ret = ioctl(id, MM_IOC_INVAL, &cachep); ++ if (ret) { ++ perror("MMI INVAL"); ++ ret = R_MM_FATAL; ++ goto exit; ++ } ++ ++ return R_MM_OK; ++ ++exit: ++ return ret; ++ ++} ++ ++int mmngr_flush(MMNGR_ID id, size_t offset, size_t len) ++{ ++ int ret; ++ struct MM_CACHE_PARAM cachep; ++ ++ cachep.offset = offset; ++ cachep.len = len; ++ ++ ret = ioctl(id, MM_IOC_FLUSH, &cachep); ++ if (ret) { ++ perror("MMI INVAL"); ++ ret = R_MM_FATAL; ++ goto exit; ++ } ++ ++ return R_MM_OK; ++ ++exit: ++ return ret; ++} +diff --git a/libmmngr/mmngr/include/mmngr_user_public.h b/libmmngr/mmngr/include/mmngr_user_public.h +index e4e0e2a..9fc0c0a 100644 +--- a/libmmngr/mmngr/include/mmngr_user_public.h ++++ b/libmmngr/mmngr/include/mmngr_user_public.h +@@ -54,6 +54,9 @@ int mmngr_share_in_user(MMNGR_ID *pid, + unsigned long *puser_virt_addr); + int mmngr_release_in_user(MMNGR_ID id); + ++int mmngr_inval(MMNGR_ID id, size_t offset, size_t len); ++int mmngr_flush(MMNGR_ID id, size_t offset, size_t len); ++ + #define R_MM_OK 0 + #define R_MM_FATAL -1 + #define R_MM_SEQE -2 +@@ -61,6 +64,7 @@ int mmngr_release_in_user(MMNGR_ID id); + #define R_MM_NOMEM -4 + + #define MMNGR_VA_SUPPORT MM_KERNELHEAP ++#define MMNGR_VA_SUPPORT_CACHED MM_KERNELHEAP_CACHED + #define MMNGR_PA_SUPPORT MM_CARVEOUT + #define MMNGR_PA_SUPPORT_SSP MM_CARVEOUT_SSP + #define MMNGR_PA_SUPPORT_LOSSY MM_CARVEOUT_LOSSY +-- +2.7.4 + |