blob: 4d5d1a77eb2abd1c9b1afb8ffc9bac7a5a8b064c [file] [log] [blame]
Lucas Stachf6ffbd42018-05-08 16:20:54 +02001/* SPDX-License-Identifier: GPL-2.0 */
Lucas Stachea1f5722017-01-16 16:09:51 +01002/*
3 * Copyright (C) 2017 Etnaviv Project
Lucas Stachea1f5722017-01-16 16:09:51 +01004 */
5
6#ifndef __ETNAVIV_CMDBUF_H__
7#define __ETNAVIV_CMDBUF_H__
8
Lucas Stachea1f5722017-01-16 16:09:51 +01009#include <linux/types.h>
10
Lucas Stache66774d2017-01-16 17:29:57 +010011struct etnaviv_gpu;
12struct etnaviv_cmdbuf_suballoc;
Christian Gmeiner8d3d56c2017-09-24 15:15:23 +020013struct etnaviv_perfmon_request;
Lucas Stache66774d2017-01-16 17:29:57 +010014
Lucas Stachea1f5722017-01-16 16:09:51 +010015struct etnaviv_cmdbuf {
Lucas Stache66774d2017-01-16 17:29:57 +010016 /* suballocator this cmdbuf is allocated from */
17 struct etnaviv_cmdbuf_suballoc *suballoc;
Lucas Stachea1f5722017-01-16 16:09:51 +010018 /* cmdbuf properties */
Lucas Stache66774d2017-01-16 17:29:57 +010019 int suballoc_offset;
Lucas Stachea1f5722017-01-16 16:09:51 +010020 void *vaddr;
Lucas Stachea1f5722017-01-16 16:09:51 +010021 u32 size;
22 u32 user_size;
Lucas Stachea1f5722017-01-16 16:09:51 +010023};
24
Lucas Stache66774d2017-01-16 17:29:57 +010025struct etnaviv_cmdbuf_suballoc *
26etnaviv_cmdbuf_suballoc_new(struct etnaviv_gpu * gpu);
27void etnaviv_cmdbuf_suballoc_destroy(struct etnaviv_cmdbuf_suballoc *suballoc);
28
Lucas Stach2f9225d2017-11-24 16:56:37 +010029
30int etnaviv_cmdbuf_init(struct etnaviv_cmdbuf_suballoc *suballoc,
31 struct etnaviv_cmdbuf *cmdbuf, u32 size);
Lucas Stache66774d2017-01-16 17:29:57 +010032void etnaviv_cmdbuf_free(struct etnaviv_cmdbuf *cmdbuf);
33
Lucas Stachc3ef4b82017-01-16 16:52:44 +010034u32 etnaviv_cmdbuf_get_va(struct etnaviv_cmdbuf *buf);
Lucas Stach9912b4d2017-01-16 17:00:08 +010035dma_addr_t etnaviv_cmdbuf_get_pa(struct etnaviv_cmdbuf *buf);
Lucas Stachc3ef4b82017-01-16 16:52:44 +010036
Lucas Stachea1f5722017-01-16 16:09:51 +010037#endif /* __ETNAVIV_CMDBUF_H__ */