1 /* SPDX-License-Identifier: GPL-2.0+ */
3 * NVIDIA Tegra Video decoder driver
5 * Copyright (C) 2016-2019 GRATE-DRIVER project
11 #include <linux/completion.h>
12 #include <linux/dma-direction.h>
13 #include <linux/iova.h>
14 #include <linux/list.h>
15 #include <linux/miscdevice.h>
16 #include <linux/mutex.h>
17 #include <linux/types.h>
25 struct dma_buf_attachment;
36 void __iomem *frameid;
38 struct mutex map_lock;
39 struct list_head map_list;
40 struct miscdevice miscdev;
41 struct reset_control *rst;
42 struct reset_control *rst_mc;
43 struct gen_pool *iram_pool;
44 struct completion decode_completion;
46 struct iommu_domain *domain;
47 struct iommu_group *group;
48 struct iova_domain iova;
49 struct iova *iova_resv_static_addresses;
50 struct iova *iova_resv_last_page;
51 dma_addr_t iram_lists_addr;
55 int tegra_vde_iommu_init(struct tegra_vde *vde);
56 void tegra_vde_iommu_deinit(struct tegra_vde *vde);
57 int tegra_vde_iommu_map(struct tegra_vde *vde,
61 void tegra_vde_iommu_unmap(struct tegra_vde *vde, struct iova *iova);
63 int tegra_vde_dmabuf_cache_map(struct tegra_vde *vde,
64 struct dma_buf *dmabuf,
65 enum dma_data_direction dma_dir,
66 struct dma_buf_attachment **ap,
68 void tegra_vde_dmabuf_cache_unmap(struct tegra_vde *vde,
69 struct dma_buf_attachment *a,
71 void tegra_vde_dmabuf_cache_unmap_sync(struct tegra_vde *vde);
72 void tegra_vde_dmabuf_cache_unmap_all(struct tegra_vde *vde);
74 static __maybe_unused char const *
75 tegra_vde_reg_base_name(struct tegra_vde *vde, void __iomem *base)
80 if (vde->bsev == base)
98 if (vde->vdma == base)
101 if (vde->frameid == base)
107 #endif /* TEGRA_VDE_H */