84 lines
2.5 KiB
C
Executable File
84 lines
2.5 KiB
C
Executable File
/*
|
|
* include/linux/ion_exynos.h
|
|
*
|
|
* Copyright (C) 2018 Samsung Electronics Co., Ltd.
|
|
*
|
|
* This software is licensed under the terms of the GNU General Public
|
|
* License version 2, as published by the Free Software Foundation, and
|
|
* may be copied, distributed, and modified under those terms.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#ifndef __LINUX_ION_EXYNOS_H__
|
|
#define __LINUX_ION_EXYNOS_H__
|
|
|
|
#include <linux/dma-direction.h>
|
|
|
|
struct dma_buf_attachment;
|
|
|
|
#define ION_FLAG_CACHED 1
|
|
#define ION_FLAG_NOZEROED 8
|
|
#define ION_FLAG_PROTECTED 16
|
|
|
|
#ifdef CONFIG_ION_EXYNOS
|
|
struct dma_buf *ion_alloc_dmabuf(const char *heap_name,
|
|
size_t len, unsigned int flags);
|
|
bool ion_cached_dmabuf(struct dma_buf *dmabuf);
|
|
bool ion_hwrender_dmabuf(struct dma_buf *dmabuf);
|
|
#else
|
|
static inline struct dma_buf *ion_alloc_dmabuf(const char *heap_name,
|
|
size_t len, unsigned int flags)
|
|
{
|
|
return ERR_PTR(-ENODEV);
|
|
}
|
|
|
|
static inline bool ion_cached_dmabuf(struct dma_buf *dmabuf)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
static inline bool ion_cached_hwrender(struct dma_buf *dmabuf)
|
|
{
|
|
return false;
|
|
}
|
|
#endif
|
|
|
|
#if defined(CONFIG_EXYNOS_IOVMM) && defined(CONFIG_ION_EXYNOS)
|
|
#define IOMMU_EXYNOS_SECURE (1 << 0)
|
|
|
|
dma_addr_t ion_iovmm_map(struct dma_buf_attachment *attachment,
|
|
off_t offset, size_t size,
|
|
enum dma_data_direction direction, int prop);
|
|
void ion_iovmm_unmap(struct dma_buf_attachment *attachment, dma_addr_t iova);
|
|
dma_addr_t ion_iovmm_map_attr(struct dma_buf_attachment *attachment,
|
|
off_t offset, size_t size,
|
|
enum dma_data_direction direction, int prop,
|
|
int map_attr);
|
|
void ion_iovmm_unmap_attr(struct dma_buf_attachment *attachment,
|
|
dma_addr_t iova, int map_attr);
|
|
#else
|
|
static inline dma_addr_t ion_iovmm_map(struct dma_buf_attachment *attachment,
|
|
off_t offset, size_t size,
|
|
enum dma_data_direction direction,
|
|
int prop)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
#define ion_iovmm_unmap(attachment, iova) do { } while (0)
|
|
static inline dma_addr_t ion_iovmm_map_attr(struct dma_buf_attachment *attachment,
|
|
off_t offset, size_t size,
|
|
enum dma_data_direction direction,
|
|
int prop, int map_attr)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
#define ion_iovmm_unmap(attachment, iova, map_attr) do { } while (0)
|
|
|
|
#endif
|
|
|
|
#endif /* __LINUX_ION_EXYNOS_H__ */
|