1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /* SPDX-License-Identifier: GPL-2.0 OR MIT */
- #ifndef _TTM_RANGE_MANAGER_H_
- #define _TTM_RANGE_MANAGER_H_
- #include <drm/ttm/ttm_resource.h>
- #include <drm/ttm/ttm_device.h>
- #include <drm/drm_mm.h>
- /**
- * struct ttm_range_mgr_node
- *
- * @base: base clase we extend
- * @mm_nodes: MM nodes, usually 1
- *
- * Extending the ttm_resource object to manage an address space allocation with
- * one or more drm_mm_nodes.
- */
- struct ttm_range_mgr_node {
- struct ttm_resource base;
- struct drm_mm_node mm_nodes[];
- };
- /**
- * to_ttm_range_mgr_node
- *
- * @res: the resource to upcast
- *
- * Upcast the ttm_resource object into a ttm_range_mgr_node object.
- */
- static inline struct ttm_range_mgr_node *
- to_ttm_range_mgr_node(struct ttm_resource *res)
- {
- return container_of(res, struct ttm_range_mgr_node, base);
- }
- int ttm_range_man_init_nocheck(struct ttm_device *bdev,
- unsigned type, bool use_tt,
- unsigned long p_size);
- int ttm_range_man_fini_nocheck(struct ttm_device *bdev,
- unsigned type);
- static __always_inline int ttm_range_man_init(struct ttm_device *bdev,
- unsigned int type, bool use_tt,
- unsigned long p_size)
- {
- BUILD_BUG_ON(__builtin_constant_p(type) && type >= TTM_NUM_MEM_TYPES);
- return ttm_range_man_init_nocheck(bdev, type, use_tt, p_size);
- }
- static __always_inline int ttm_range_man_fini(struct ttm_device *bdev,
- unsigned int type)
- {
- BUILD_BUG_ON(__builtin_constant_p(type) && type >= TTM_NUM_MEM_TYPES);
- return ttm_range_man_fini_nocheck(bdev, type);
- }
- #endif
|