xref: /linux/drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.h (revision 2f9225dbc09abe7cacb9820ebdeef5b6c0eb9c72)
1ea1f5729SLucas Stach /*
2ea1f5729SLucas Stach  * Copyright (C) 2017 Etnaviv Project
3ea1f5729SLucas Stach  *
4ea1f5729SLucas Stach  * This program is free software; you can redistribute it and/or modify it
5ea1f5729SLucas Stach  * under the terms of the GNU General Public License version 2 as published by
6ea1f5729SLucas Stach  * the Free Software Foundation.
7ea1f5729SLucas Stach  *
8ea1f5729SLucas Stach  * This program is distributed in the hope that it will be useful, but WITHOUT
9ea1f5729SLucas Stach  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10ea1f5729SLucas Stach  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
11ea1f5729SLucas Stach  * more details.
12ea1f5729SLucas Stach  *
13ea1f5729SLucas Stach  * You should have received a copy of the GNU General Public License along with
14ea1f5729SLucas Stach  * this program.  If not, see <http://www.gnu.org/licenses/>.
15ea1f5729SLucas Stach  */
16ea1f5729SLucas Stach 
17ea1f5729SLucas Stach #ifndef __ETNAVIV_CMDBUF_H__
18ea1f5729SLucas Stach #define __ETNAVIV_CMDBUF_H__
19ea1f5729SLucas Stach 
20ea1f5729SLucas Stach #include <linux/types.h>
21ea1f5729SLucas Stach 
22e66774ddSLucas Stach struct etnaviv_gpu;
23e66774ddSLucas Stach struct etnaviv_cmdbuf_suballoc;
248d3d56ceSChristian Gmeiner struct etnaviv_perfmon_request;
25e66774ddSLucas Stach 
26ea1f5729SLucas Stach struct etnaviv_cmdbuf {
27e66774ddSLucas Stach 	/* suballocator this cmdbuf is allocated from */
28e66774ddSLucas Stach 	struct etnaviv_cmdbuf_suballoc *suballoc;
29ea1f5729SLucas Stach 	/* user context key, must be unique between all active users */
30ea1f5729SLucas Stach 	struct etnaviv_file_private *ctx;
31ea1f5729SLucas Stach 	/* cmdbuf properties */
32e66774ddSLucas Stach 	int suballoc_offset;
33ea1f5729SLucas Stach 	void *vaddr;
34ea1f5729SLucas Stach 	u32 size;
35ea1f5729SLucas Stach 	u32 user_size;
36ea1f5729SLucas Stach };
37ea1f5729SLucas Stach 
38e66774ddSLucas Stach struct etnaviv_cmdbuf_suballoc *
39e66774ddSLucas Stach etnaviv_cmdbuf_suballoc_new(struct etnaviv_gpu * gpu);
40e66774ddSLucas Stach void etnaviv_cmdbuf_suballoc_destroy(struct etnaviv_cmdbuf_suballoc *suballoc);
41e66774ddSLucas Stach 
42*2f9225dbSLucas Stach 
43*2f9225dbSLucas Stach int etnaviv_cmdbuf_init(struct etnaviv_cmdbuf_suballoc *suballoc,
44*2f9225dbSLucas Stach 		struct etnaviv_cmdbuf *cmdbuf, u32 size);
45e66774ddSLucas Stach void etnaviv_cmdbuf_free(struct etnaviv_cmdbuf *cmdbuf);
46e66774ddSLucas Stach 
47c3ef4b8cSLucas Stach u32 etnaviv_cmdbuf_get_va(struct etnaviv_cmdbuf *buf);
489912b4dbSLucas Stach dma_addr_t etnaviv_cmdbuf_get_pa(struct etnaviv_cmdbuf *buf);
49c3ef4b8cSLucas Stach 
50ea1f5729SLucas Stach #endif /* __ETNAVIV_CMDBUF_H__ */
51