1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2019 Intel Corporation 4 */ 5 6 #ifndef __I915_GEM_STOLEN_H__ 7 #define __I915_GEM_STOLEN_H__ 8 9 #include <linux/types.h> 10 11 struct drm_i915_private; 12 struct drm_mm_node; 13 struct drm_i915_gem_object; 14 15 #define i915_stolen_fb drm_mm_node 16 17 int i915_gem_stolen_insert_node(struct drm_i915_private *i915, 18 struct drm_mm_node *node, u64 size, 19 unsigned alignment); 20 int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915, 21 struct drm_mm_node *node, u64 size, 22 unsigned alignment, u64 start, 23 u64 end); 24 void i915_gem_stolen_remove_node(struct drm_i915_private *i915, 25 struct drm_mm_node *node); 26 struct intel_memory_region * 27 i915_gem_stolen_smem_setup(struct drm_i915_private *i915, u16 type, 28 u16 instance); 29 struct intel_memory_region * 30 i915_gem_stolen_lmem_setup(struct drm_i915_private *i915, u16 type, 31 u16 instance); 32 33 struct drm_i915_gem_object * 34 i915_gem_object_create_stolen(struct drm_i915_private *i915, 35 resource_size_t size); 36 37 bool i915_gem_object_is_stolen(const struct drm_i915_gem_object *obj); 38 39 #define I915_GEM_STOLEN_BIAS SZ_128K 40 41 bool i915_gem_stolen_initialized(const struct drm_i915_private *i915); 42 u64 i915_gem_stolen_area_address(const struct drm_i915_private *i915); 43 u64 i915_gem_stolen_area_size(const struct drm_i915_private *i915); 44 45 u64 i915_gem_stolen_node_address(const struct drm_i915_private *i915, 46 const struct drm_mm_node *node); 47 48 bool i915_gem_stolen_node_allocated(const struct drm_mm_node *node); 49 u64 i915_gem_stolen_node_offset(const struct drm_mm_node *node); 50 u64 i915_gem_stolen_node_size(const struct drm_mm_node *node); 51 52 #endif /* __I915_GEM_STOLEN_H__ */ 53