1658ebeacSTomeu Vizoso /* SPDX-License-Identifier: GPL-2.0-only */ 2658ebeacSTomeu Vizoso /* Copyright 2024-2025 Tomeu Vizoso <tomeu@tomeuvizoso.net> */ 3658ebeacSTomeu Vizoso 4658ebeacSTomeu Vizoso #ifndef __ROCKET_GEM_H__ 5658ebeacSTomeu Vizoso #define __ROCKET_GEM_H__ 6658ebeacSTomeu Vizoso 7658ebeacSTomeu Vizoso #include <drm/drm_gem_shmem_helper.h> 8658ebeacSTomeu Vizoso 9658ebeacSTomeu Vizoso struct rocket_gem_object { 10658ebeacSTomeu Vizoso struct drm_gem_shmem_object base; 11658ebeacSTomeu Vizoso 12658ebeacSTomeu Vizoso struct rocket_file_priv *driver_priv; 13658ebeacSTomeu Vizoso 14658ebeacSTomeu Vizoso struct rocket_iommu_domain *domain; 15658ebeacSTomeu Vizoso struct drm_mm_node mm; 16658ebeacSTomeu Vizoso size_t size; 17658ebeacSTomeu Vizoso u32 offset; 18658ebeacSTomeu Vizoso }; 19658ebeacSTomeu Vizoso 20658ebeacSTomeu Vizoso struct drm_gem_object *rocket_gem_create_object(struct drm_device *dev, size_t size); 21658ebeacSTomeu Vizoso 22658ebeacSTomeu Vizoso int rocket_ioctl_create_bo(struct drm_device *dev, void *data, struct drm_file *file); 23658ebeacSTomeu Vizoso 24*525ad89dSTomeu Vizoso int rocket_ioctl_prep_bo(struct drm_device *dev, void *data, struct drm_file *file); 25*525ad89dSTomeu Vizoso 26*525ad89dSTomeu Vizoso int rocket_ioctl_fini_bo(struct drm_device *dev, void *data, struct drm_file *file); 27*525ad89dSTomeu Vizoso 28658ebeacSTomeu Vizoso static inline 29658ebeacSTomeu Vizoso struct rocket_gem_object *to_rocket_bo(struct drm_gem_object *obj) 30658ebeacSTomeu Vizoso { 31658ebeacSTomeu Vizoso return container_of(to_drm_gem_shmem_obj(obj), struct rocket_gem_object, base); 32658ebeacSTomeu Vizoso } 33658ebeacSTomeu Vizoso 34658ebeacSTomeu Vizoso #endif 35