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