1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* Copyright 2024-2025 Tomeu Vizoso <tomeu@tomeuvizoso.net> */ 3 4 #ifndef __ROCKET_DRV_H__ 5 #define __ROCKET_DRV_H__ 6 7 #include <drm/drm_mm.h> 8 #include <drm/gpu_scheduler.h> 9 10 #include "rocket_device.h" 11 12 extern const struct dev_pm_ops rocket_pm_ops; 13 14 struct rocket_iommu_domain { 15 struct iommu_domain *domain; 16 struct kref kref; 17 }; 18 19 struct rocket_file_priv { 20 struct rocket_device *rdev; 21 22 struct rocket_iommu_domain *domain; 23 struct drm_mm mm; 24 struct mutex mm_lock; 25 26 struct drm_sched_entity sched_entity; 27 }; 28 29 struct rocket_iommu_domain *rocket_iommu_domain_get(struct rocket_file_priv *rocket_priv); 30 void rocket_iommu_domain_put(struct rocket_iommu_domain *domain); 31 32 #endif 33