18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2017 Etnaviv Project 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#ifndef __ETNAVIV_CMDBUF_H__ 78c2ecf20Sopenharmony_ci#define __ETNAVIV_CMDBUF_H__ 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <linux/types.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cistruct device; 128c2ecf20Sopenharmony_cistruct etnaviv_iommu_context; 138c2ecf20Sopenharmony_cistruct etnaviv_vram_mapping; 148c2ecf20Sopenharmony_cistruct etnaviv_cmdbuf_suballoc; 158c2ecf20Sopenharmony_cistruct etnaviv_perfmon_request; 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_cistruct etnaviv_cmdbuf { 188c2ecf20Sopenharmony_ci /* suballocator this cmdbuf is allocated from */ 198c2ecf20Sopenharmony_ci struct etnaviv_cmdbuf_suballoc *suballoc; 208c2ecf20Sopenharmony_ci /* cmdbuf properties */ 218c2ecf20Sopenharmony_ci int suballoc_offset; 228c2ecf20Sopenharmony_ci void *vaddr; 238c2ecf20Sopenharmony_ci u32 size; 248c2ecf20Sopenharmony_ci u32 user_size; 258c2ecf20Sopenharmony_ci}; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_cistruct etnaviv_cmdbuf_suballoc * 288c2ecf20Sopenharmony_cietnaviv_cmdbuf_suballoc_new(struct device *dev); 298c2ecf20Sopenharmony_civoid etnaviv_cmdbuf_suballoc_destroy(struct etnaviv_cmdbuf_suballoc *suballoc); 308c2ecf20Sopenharmony_ciint etnaviv_cmdbuf_suballoc_map(struct etnaviv_cmdbuf_suballoc *suballoc, 318c2ecf20Sopenharmony_ci struct etnaviv_iommu_context *context, 328c2ecf20Sopenharmony_ci struct etnaviv_vram_mapping *mapping, 338c2ecf20Sopenharmony_ci u32 memory_base); 348c2ecf20Sopenharmony_civoid etnaviv_cmdbuf_suballoc_unmap(struct etnaviv_iommu_context *context, 358c2ecf20Sopenharmony_ci struct etnaviv_vram_mapping *mapping); 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ciint etnaviv_cmdbuf_init(struct etnaviv_cmdbuf_suballoc *suballoc, 398c2ecf20Sopenharmony_ci struct etnaviv_cmdbuf *cmdbuf, u32 size); 408c2ecf20Sopenharmony_civoid etnaviv_cmdbuf_free(struct etnaviv_cmdbuf *cmdbuf); 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ciu32 etnaviv_cmdbuf_get_va(struct etnaviv_cmdbuf *buf, 438c2ecf20Sopenharmony_ci struct etnaviv_vram_mapping *mapping); 448c2ecf20Sopenharmony_cidma_addr_t etnaviv_cmdbuf_get_pa(struct etnaviv_cmdbuf *buf); 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci#endif /* __ETNAVIV_CMDBUF_H__ */ 47