ion: msm: Add support for mapping VMIDs to ION flags

Add support for mapping VMID values to their corresponding
ION flags.

Change-Id: I827c4e7c4a1761fcc6c6b08f2855f490243d8ea5
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
This commit is contained in:
Isaac J. Manjarres 2020-01-23 21:40:14 -08:00
commit f1efdc30c2
2 changed files with 39 additions and 2 deletions

View file

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
*/
#include <linux/slab.h>
@ -53,6 +53,36 @@ int get_secure_vmid(unsigned long flags)
return -EINVAL;
}
int get_ion_flags(u32 vmid)
{
if (vmid == VMID_CP_TOUCH)
return ION_FLAG_CP_TOUCH;
if (vmid == VMID_CP_BITSTREAM)
return ION_FLAG_CP_BITSTREAM;
if (vmid == VMID_CP_PIXEL)
return ION_FLAG_CP_PIXEL;
if (vmid == VMID_CP_NON_PIXEL)
return ION_FLAG_CP_NON_PIXEL;
if (vmid == VMID_CP_CAMERA)
return ION_FLAG_CP_CAMERA;
if (vmid == VMID_CP_SEC_DISPLAY)
return ION_FLAG_CP_SEC_DISPLAY;
if (vmid == VMID_CP_APP)
return ION_FLAG_CP_APP;
if (vmid == VMID_CP_CAMERA_PREVIEW)
return ION_FLAG_CP_CAMERA_PREVIEW;
if (vmid == VMID_CP_SPSS_SP)
return ION_FLAG_CP_SPSS_SP;
if (vmid == VMID_CP_SPSS_SP_SHARED)
return ION_FLAG_CP_SPSS_SP_SHARED;
if (vmid == VMID_CP_SPSS_HLOS_SHARED)
return ION_FLAG_CP_SPSS_HLOS_SHARED;
if (vmid == VMID_CP_CDSP)
return ION_FLAG_CP_CDSP;
return -EINVAL;
}
EXPORT_SYMBOL(get_ion_flags);
static unsigned int count_set_bits(unsigned long val)
{
return ((unsigned int)bitmap_weight(&val, BITS_PER_LONG));

View file

@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
*/
#ifndef _MSM_ION_H
@ -35,6 +35,8 @@ int msm_ion_heap_prefetch(int heap_id, struct ion_prefetch_region *regions,
int msm_ion_heap_drain(int heap_id, struct ion_prefetch_region *regions,
int nr_regions);
int get_ion_flags(u32 vmid);
#else
static inline struct device *msm_ion_heap_device_by_id(int heap_id)
@ -67,5 +69,10 @@ static inline int msm_ion_heap_drain(int heap_id,
return -ENODEV;
}
static inline int get_ion_flags(u32 vmid)
{
return -EINVAL;
}
#endif /* CONFIG_ION_MSM_HEAPS */
#endif /* _MSM_ION_H */