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