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