gem.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /**************************************************************************
  3. * Copyright (c) 2014 Patrik Jakobsson
  4. * All Rights Reserved.
  5. *
  6. **************************************************************************/
  7. #ifndef _GEM_H
  8. #define _GEM_H
  9. #include <linux/kernel.h>
  10. #include <drm/drm_gem.h>
  11. struct drm_device;
  12. /*
  13. * PSB GEM object
  14. */
  15. struct psb_gem_object {
  16. struct drm_gem_object base;
  17. struct resource resource; /* GTT resource for our allocation */
  18. u32 offset; /* GTT offset of our object */
  19. int in_gart; /* Currently in the GART (ref ct) */
  20. bool stolen; /* Backed from stolen RAM */
  21. bool mmapping; /* Is mmappable */
  22. struct page **pages; /* Backing pages if present */
  23. };
  24. static inline struct psb_gem_object *to_psb_gem_object(struct drm_gem_object *obj)
  25. {
  26. return container_of(obj, struct psb_gem_object, base);
  27. }
  28. struct psb_gem_object *
  29. psb_gem_create(struct drm_device *dev, u64 size, const char *name, bool stolen, u32 align);
  30. int psb_gem_pin(struct psb_gem_object *pobj);
  31. void psb_gem_unpin(struct psb_gem_object *pobj);
  32. /*
  33. * Memory management
  34. */
  35. int psb_gem_mm_init(struct drm_device *dev);
  36. void psb_gem_mm_fini(struct drm_device *dev);
  37. int psb_gem_mm_resume(struct drm_device *dev);
  38. #endif