xref: /linux/drivers/accel/rocket/rocket_gem.h (revision 58809f614e0e3f4e12b489bddf680bfeb31c0a20)
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