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