1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* Copyright 2024-2025 Tomeu Vizoso <tomeu@tomeuvizoso.net> */ 3 4 #ifndef __ROCKET_GEM_H__ 5 #define __ROCKET_GEM_H__ 6 7 #include <drm/drm_gem_shmem_helper.h> 8 9 struct rocket_gem_object { 10 struct drm_gem_shmem_object base; 11 12 struct rocket_file_priv *driver_priv; 13 14 struct rocket_iommu_domain *domain; 15 struct drm_mm_node mm; 16 size_t size; 17 u32 offset; 18 }; 19 20 struct drm_gem_object *rocket_gem_create_object(struct drm_device *dev, size_t size); 21 22 int rocket_ioctl_create_bo(struct drm_device *dev, void *data, struct drm_file *file); 23 24 int rocket_ioctl_prep_bo(struct drm_device *dev, void *data, struct drm_file *file); 25 26 int rocket_ioctl_fini_bo(struct drm_device *dev, void *data, struct drm_file *file); 27 28 static inline 29 struct rocket_gem_object *to_rocket_bo(struct drm_gem_object *obj) 30 { 31 return container_of(to_drm_gem_shmem_obj(obj), struct rocket_gem_object, base); 32 } 33 34 #endif 35