xref: /linux/drivers/gpu/drm/i915/display/intel_bo.c (revision 53597deca0e38c30e6cd4ba2114fa42d2bcd85bb)
1 // SPDX-License-Identifier: MIT
2 /* Copyright © 2026 Intel Corporation */
3 
4 #include <drm/drm_gem.h>
5 #include <drm/intel/display_parent_interface.h>
6 
7 #include "intel_bo.h"
8 #include "intel_display_core.h"
9 #include "intel_display_types.h"
10 
11 bool intel_bo_is_tiled(struct drm_gem_object *obj)
12 {
13 	struct intel_display *display = to_intel_display(obj->dev);
14 
15 	return display->parent->bo->is_tiled && display->parent->bo->is_tiled(obj);
16 }
17 
18 bool intel_bo_is_userptr(struct drm_gem_object *obj)
19 {
20 	struct intel_display *display = to_intel_display(obj->dev);
21 
22 	return display->parent->bo->is_userptr && display->parent->bo->is_userptr(obj);
23 }
24 
25 bool intel_bo_is_shmem(struct drm_gem_object *obj)
26 {
27 	struct intel_display *display = to_intel_display(obj->dev);
28 
29 	return display->parent->bo->is_shmem && display->parent->bo->is_shmem(obj);
30 }
31 
32 bool intel_bo_is_protected(struct drm_gem_object *obj)
33 {
34 	struct intel_display *display = to_intel_display(obj->dev);
35 
36 	return display->parent->bo->is_protected(obj);
37 }
38 
39 int intel_bo_key_check(struct drm_gem_object *obj)
40 {
41 	struct intel_display *display = to_intel_display(obj->dev);
42 
43 	return display->parent->bo->key_check(obj);
44 }
45 
46 int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
47 {
48 	struct intel_display *display = to_intel_display(obj->dev);
49 
50 	return display->parent->bo->fb_mmap(obj, vma);
51 }
52 
53 int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size)
54 {
55 	struct intel_display *display = to_intel_display(obj->dev);
56 
57 	return display->parent->bo->read_from_page(obj, offset, dst, size);
58 }
59 
60 void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
61 {
62 	struct intel_display *display = to_intel_display(obj->dev);
63 
64 	if (display->parent->bo->describe)
65 		display->parent->bo->describe(m, obj);
66 }
67 
68 int intel_bo_framebuffer_init(struct drm_gem_object *obj, struct drm_mode_fb_cmd2 *mode_cmd)
69 {
70 	struct intel_display *display = to_intel_display(obj->dev);
71 
72 	return display->parent->bo->framebuffer_init(obj, mode_cmd);
73 }
74 
75 void intel_bo_framebuffer_fini(struct drm_gem_object *obj)
76 {
77 	struct intel_display *display = to_intel_display(obj->dev);
78 
79 	display->parent->bo->framebuffer_fini(obj);
80 }
81 
82 struct drm_gem_object *intel_bo_framebuffer_lookup(struct intel_display *display,
83 						   struct drm_file *filp,
84 						   const struct drm_mode_fb_cmd2 *user_mode_cmd)
85 {
86 	return display->parent->bo->framebuffer_lookup(display->drm, filp, user_mode_cmd);
87 }
88