Lucas Stach | f6ffbd4 | 2018-05-08 16:20:54 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
Lucas Stach | ea1f572 | 2017-01-16 16:09:51 +0100 | [diff] [blame] | 2 | /* |
| 3 | * Copyright (C) 2017 Etnaviv Project |
Lucas Stach | ea1f572 | 2017-01-16 16:09:51 +0100 | [diff] [blame] | 4 | */ |
| 5 | |
| 6 | #ifndef __ETNAVIV_CMDBUF_H__ |
| 7 | #define __ETNAVIV_CMDBUF_H__ |
| 8 | |
Lucas Stach | ea1f572 | 2017-01-16 16:09:51 +0100 | [diff] [blame] | 9 | #include <linux/types.h> |
| 10 | |
Lucas Stach | e66774d | 2017-01-16 17:29:57 +0100 | [diff] [blame] | 11 | struct etnaviv_gpu; |
| 12 | struct etnaviv_cmdbuf_suballoc; |
Christian Gmeiner | 8d3d56c | 2017-09-24 15:15:23 +0200 | [diff] [blame] | 13 | struct etnaviv_perfmon_request; |
Lucas Stach | e66774d | 2017-01-16 17:29:57 +0100 | [diff] [blame] | 14 | |
Lucas Stach | ea1f572 | 2017-01-16 16:09:51 +0100 | [diff] [blame] | 15 | struct etnaviv_cmdbuf { |
Lucas Stach | e66774d | 2017-01-16 17:29:57 +0100 | [diff] [blame] | 16 | /* suballocator this cmdbuf is allocated from */ |
| 17 | struct etnaviv_cmdbuf_suballoc *suballoc; |
Lucas Stach | ea1f572 | 2017-01-16 16:09:51 +0100 | [diff] [blame] | 18 | /* cmdbuf properties */ |
Lucas Stach | e66774d | 2017-01-16 17:29:57 +0100 | [diff] [blame] | 19 | int suballoc_offset; |
Lucas Stach | ea1f572 | 2017-01-16 16:09:51 +0100 | [diff] [blame] | 20 | void *vaddr; |
Lucas Stach | ea1f572 | 2017-01-16 16:09:51 +0100 | [diff] [blame] | 21 | u32 size; |
| 22 | u32 user_size; |
Lucas Stach | ea1f572 | 2017-01-16 16:09:51 +0100 | [diff] [blame] | 23 | }; |
| 24 | |
Lucas Stach | e66774d | 2017-01-16 17:29:57 +0100 | [diff] [blame] | 25 | struct etnaviv_cmdbuf_suballoc * |
| 26 | etnaviv_cmdbuf_suballoc_new(struct etnaviv_gpu * gpu); |
| 27 | void etnaviv_cmdbuf_suballoc_destroy(struct etnaviv_cmdbuf_suballoc *suballoc); |
| 28 | |
Lucas Stach | 2f9225d | 2017-11-24 16:56:37 +0100 | [diff] [blame] | 29 | |
| 30 | int etnaviv_cmdbuf_init(struct etnaviv_cmdbuf_suballoc *suballoc, |
| 31 | struct etnaviv_cmdbuf *cmdbuf, u32 size); |
Lucas Stach | e66774d | 2017-01-16 17:29:57 +0100 | [diff] [blame] | 32 | void etnaviv_cmdbuf_free(struct etnaviv_cmdbuf *cmdbuf); |
| 33 | |
Lucas Stach | c3ef4b8 | 2017-01-16 16:52:44 +0100 | [diff] [blame] | 34 | u32 etnaviv_cmdbuf_get_va(struct etnaviv_cmdbuf *buf); |
Lucas Stach | 9912b4d | 2017-01-16 17:00:08 +0100 | [diff] [blame] | 35 | dma_addr_t etnaviv_cmdbuf_get_pa(struct etnaviv_cmdbuf *buf); |
Lucas Stach | c3ef4b8 | 2017-01-16 16:52:44 +0100 | [diff] [blame] | 36 | |
Lucas Stach | ea1f572 | 2017-01-16 16:09:51 +0100 | [diff] [blame] | 37 | #endif /* __ETNAVIV_CMDBUF_H__ */ |