| 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 |
