1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | /* |
3 | * Copyright (C) 2017 Etnaviv Project |
4 | */ |
5 | |
6 | #ifndef __ETNAVIV_CMDBUF_H__ |
7 | #define __ETNAVIV_CMDBUF_H__ |
8 | |
9 | #include <linux/types.h> |
10 | |
11 | struct device; |
12 | struct etnaviv_iommu_context; |
13 | struct etnaviv_vram_mapping; |
14 | struct etnaviv_cmdbuf_suballoc; |
15 | struct etnaviv_perfmon_request; |
16 | |
17 | struct etnaviv_cmdbuf { |
18 | /* suballocator this cmdbuf is allocated from */ |
19 | struct etnaviv_cmdbuf_suballoc *suballoc; |
20 | /* cmdbuf properties */ |
21 | int suballoc_offset; |
22 | void *vaddr; |
23 | u32 size; |
24 | u32 user_size; |
25 | }; |
26 | |
27 | struct etnaviv_cmdbuf_suballoc * |
28 | etnaviv_cmdbuf_suballoc_new(struct device *dev); |
29 | void etnaviv_cmdbuf_suballoc_destroy(struct etnaviv_cmdbuf_suballoc *suballoc); |
30 | int etnaviv_cmdbuf_suballoc_map(struct etnaviv_cmdbuf_suballoc *suballoc, |
31 | struct etnaviv_iommu_context *context, |
32 | struct etnaviv_vram_mapping *mapping, |
33 | u32 memory_base); |
34 | void etnaviv_cmdbuf_suballoc_unmap(struct etnaviv_iommu_context *context, |
35 | struct etnaviv_vram_mapping *mapping); |
36 | |
37 | |
38 | int etnaviv_cmdbuf_init(struct etnaviv_cmdbuf_suballoc *suballoc, |
39 | struct etnaviv_cmdbuf *cmdbuf, u32 size); |
40 | void etnaviv_cmdbuf_free(struct etnaviv_cmdbuf *cmdbuf); |
41 | |
42 | u32 etnaviv_cmdbuf_get_va(struct etnaviv_cmdbuf *buf, |
43 | struct etnaviv_vram_mapping *mapping); |
44 | dma_addr_t etnaviv_cmdbuf_get_pa(struct etnaviv_cmdbuf *buf); |
45 | |
46 | #endif /* __ETNAVIV_CMDBUF_H__ */ |
47 |