Merge tag 'rproc-v5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/andersson...
[linux-2.6-microblaze.git] / include / drm / ttm / ttm_range_manager.h
1 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
2
3 #ifndef _TTM_RANGE_MANAGER_H_
4 #define _TTM_RANGE_MANAGER_H_
5
6 #include <drm/ttm/ttm_resource.h>
7 #include <drm/drm_mm.h>
8
9 /**
10  * struct ttm_range_mgr_node
11  *
12  * @base: base clase we extend
13  * @mm_nodes: MM nodes, usually 1
14  *
15  * Extending the ttm_resource object to manage an address space allocation with
16  * one or more drm_mm_nodes.
17  */
18 struct ttm_range_mgr_node {
19         struct ttm_resource base;
20         struct drm_mm_node mm_nodes[];
21 };
22
23 /**
24  * to_ttm_range_mgr_node
25  *
26  * @res: the resource to upcast
27  *
28  * Upcast the ttm_resource object into a ttm_range_mgr_node object.
29  */
30 static inline struct ttm_range_mgr_node *
31 to_ttm_range_mgr_node(struct ttm_resource *res)
32 {
33         return container_of(res, struct ttm_range_mgr_node, base);
34 }
35
36 int ttm_range_man_init(struct ttm_device *bdev,
37                        unsigned type, bool use_tt,
38                        unsigned long p_size);
39 int ttm_range_man_fini(struct ttm_device *bdev,
40                        unsigned type);
41
42 #endif