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
11struct drm_device;
12struct drm_i915_gem_object;
13struct drm_i915_private;
14struct intel_stolen_node;
15
16int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64 size,
17 unsigned alignment);
18int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node *node, u64 size,
19 unsigned alignment, u64 start,
20 u64 end);
21void i915_gem_stolen_remove_node(struct intel_stolen_node *node);
22struct intel_memory_region *
23i915_gem_stolen_smem_setup(struct drm_i915_private *i915, u16 type,
24 u16 instance);
25struct intel_memory_region *
26i915_gem_stolen_lmem_setup(struct drm_i915_private *i915, u16 type,
27 u16 instance);
28
29struct drm_i915_gem_object *
30i915_gem_object_create_stolen(struct drm_i915_private *i915,
31 resource_size_t size);
32
33bool i915_gem_object_is_stolen(const struct drm_i915_gem_object *obj);
34
35#define I915_GEM_STOLEN_BIAS SZ_128K
36
37bool i915_gem_stolen_initialized(struct drm_device *drm);
38u64 i915_gem_stolen_area_address(struct drm_device *drm);
39u64 i915_gem_stolen_area_size(struct drm_device *drm);
40
41u64 i915_gem_stolen_node_address(const struct intel_stolen_node *node);
42
43bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node);
44u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node);
45u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node);
46
47struct intel_stolen_node *i915_gem_stolen_node_alloc(struct drm_device *drm);
48void i915_gem_stolen_node_free(const struct intel_stolen_node *node);
49
50#endif /* __I915_GEM_STOLEN_H__ */
51

source code of linux/drivers/gpu/drm/i915/gem/i915_gem_stolen.h