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

Commit f1efdc30 authored by Isaac J. Manjarres's avatar Isaac J. Manjarres
Browse files

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: default avatarIsaac J. Manjarres <isaacm@codeaurora.org>
parent cc72a30d
Loading
Loading
Loading
Loading
+31 −1
Original line number Diff line number Diff line
// 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));
+8 −1
Original line number Diff line number Diff line
/* 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 */