xref: /linux/drivers/accel/rocket/rocket_device.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_DEVICE_H__
5ed98261bSTomeu Vizoso #define __ROCKET_DEVICE_H__
6ed98261bSTomeu Vizoso 
7ed98261bSTomeu Vizoso #include <drm/drm_device.h>
8ed98261bSTomeu Vizoso #include <linux/clk.h>
9ed98261bSTomeu Vizoso #include <linux/container_of.h>
10ed98261bSTomeu Vizoso #include <linux/iommu.h>
11ed98261bSTomeu Vizoso #include <linux/platform_device.h>
12ed98261bSTomeu Vizoso 
13ed98261bSTomeu Vizoso #include "rocket_core.h"
14ed98261bSTomeu Vizoso 
15ed98261bSTomeu Vizoso struct rocket_device {
16ed98261bSTomeu Vizoso 	struct drm_device ddev;
17ed98261bSTomeu Vizoso 
18*0810d5adSTomeu Vizoso 	struct mutex sched_lock;
19*0810d5adSTomeu Vizoso 
20ed98261bSTomeu Vizoso 	struct rocket_core *cores;
21ed98261bSTomeu Vizoso 	unsigned int num_cores;
22ed98261bSTomeu Vizoso };
23ed98261bSTomeu Vizoso 
24ed98261bSTomeu Vizoso struct rocket_device *rocket_device_init(struct platform_device *pdev,
25ed98261bSTomeu Vizoso 					 const struct drm_driver *rocket_drm_driver);
26ed98261bSTomeu Vizoso void rocket_device_fini(struct rocket_device *rdev);
27ed98261bSTomeu Vizoso #define to_rocket_device(drm_dev) \
28ed98261bSTomeu Vizoso 	((struct rocket_device *)(container_of((drm_dev), struct rocket_device, ddev)))
29ed98261bSTomeu Vizoso 
30ed98261bSTomeu Vizoso #endif /* __ROCKET_DEVICE_H__ */
31