etnaviv_cmdbuf.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright (C) 2017 Etnaviv Project
  4. */
  5. #ifndef __ETNAVIV_CMDBUF_H__
  6. #define __ETNAVIV_CMDBUF_H__
  7. #include <linux/types.h>
  8. struct device;
  9. struct etnaviv_iommu_context;
  10. struct etnaviv_vram_mapping;
  11. struct etnaviv_cmdbuf_suballoc;
  12. struct etnaviv_perfmon_request;
  13. struct etnaviv_cmdbuf {
  14. /* suballocator this cmdbuf is allocated from */
  15. struct etnaviv_cmdbuf_suballoc *suballoc;
  16. /* cmdbuf properties */
  17. int suballoc_offset;
  18. void *vaddr;
  19. u32 size;
  20. u32 user_size;
  21. };
  22. struct etnaviv_cmdbuf_suballoc *
  23. etnaviv_cmdbuf_suballoc_new(struct device *dev);
  24. void etnaviv_cmdbuf_suballoc_destroy(struct etnaviv_cmdbuf_suballoc *suballoc);
  25. int etnaviv_cmdbuf_suballoc_map(struct etnaviv_cmdbuf_suballoc *suballoc,
  26. struct etnaviv_iommu_context *context,
  27. struct etnaviv_vram_mapping *mapping,
  28. u32 memory_base);
  29. void etnaviv_cmdbuf_suballoc_unmap(struct etnaviv_iommu_context *context,
  30. struct etnaviv_vram_mapping *mapping);
  31. int etnaviv_cmdbuf_init(struct etnaviv_cmdbuf_suballoc *suballoc,
  32. struct etnaviv_cmdbuf *cmdbuf, u32 size);
  33. void etnaviv_cmdbuf_free(struct etnaviv_cmdbuf *cmdbuf);
  34. u32 etnaviv_cmdbuf_get_va(struct etnaviv_cmdbuf *buf,
  35. struct etnaviv_vram_mapping *mapping);
  36. dma_addr_t etnaviv_cmdbuf_get_pa(struct etnaviv_cmdbuf *buf);
  37. #endif /* __ETNAVIV_CMDBUF_H__ */