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 */ 18struct 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 */ 30static inline struct ttm_range_mgr_node * 31to_ttm_range_mgr_node(struct ttm_resource *res) 32{ 33 return container_of(res, struct ttm_range_mgr_node, base); 34} 35 36int ttm_range_man_init(struct ttm_device *bdev, 37 unsigned type, bool use_tt, 38 unsigned long p_size); 39int ttm_range_man_fini(struct ttm_device *bdev, 40 unsigned type); 41 42#endif 43