diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c index 76f4758ead3e..f2dd98d3f5e6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | |||
@@ -42,131 +42,6 @@ struct amdgpu_cgs_device { | |||
42 | ((struct amdgpu_cgs_device *)cgs_device)->adev | 42 | ((struct amdgpu_cgs_device *)cgs_device)->adev |
43 | 43 | ||
44 | 44 | ||
45 | static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device, | ||
46 | enum cgs_gpu_mem_type type, | ||
47 | uint64_t size, uint64_t align, | ||
48 | cgs_handle_t *handle) | ||
49 | { | ||
50 | CGS_FUNC_ADEV; | ||
51 | uint16_t flags = 0; | ||
52 | int ret = 0; | ||
53 | uint32_t domain = 0; | ||
54 | struct amdgpu_bo *obj; | ||
55 | |||
56 | /* fail if the alignment is not a power of 2 */ | ||
57 | if (((align != 1) && (align & (align - 1))) | ||
58 | || size == 0 || align == 0) | ||
59 | return -EINVAL; | ||
60 | |||
61 | |||
62 | switch(type) { | ||
63 | case CGS_GPU_MEM_TYPE__VISIBLE_CONTIG_FB: | ||
64 | case CGS_GPU_MEM_TYPE__VISIBLE_FB: | ||
65 | flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | | ||
66 | AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; | ||
67 | domain = AMDGPU_GEM_DOMAIN_VRAM; | ||
68 | break; | ||
69 | case CGS_GPU_MEM_TYPE__INVISIBLE_CONTIG_FB: | ||
70 | case CGS_GPU_MEM_TYPE__INVISIBLE_FB: | ||
71 | flags = AMDGPU_GEM_CREATE_NO_CPU_ACCESS | | ||
72 | AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; | ||
73 | domain = AMDGPU_GEM_DOMAIN_VRAM; | ||
74 | break; | ||
75 | case CGS_GPU_MEM_TYPE__GART_CACHEABLE: | ||
76 | domain = AMDGPU_GEM_DOMAIN_GTT; | ||
77 | break; | ||
78 | case CGS_GPU_MEM_TYPE__GART_WRITECOMBINE: | ||
79 | flags = AMDGPU_GEM_CREATE_CPU_GTT_USWC; | ||
80 | domain = AMDGPU_GEM_DOMAIN_GTT; | ||
81 | break; | ||
82 | default: | ||
83 | return -EINVAL; | ||
84 | } | ||
85 | |||
86 | |||
87 | *handle = 0; | ||
88 | |||
89 | ret = amdgpu_bo_create(adev, size, align, true, domain, flags, | ||
90 | NULL, NULL, &obj); | ||
91 | if (ret) { | ||
92 | DRM_ERROR("(%d) bo create failed\n", ret); | ||
93 | return ret; | ||
94 | } | ||
95 | *handle = (cgs_handle_t)obj; | ||
96 | |||
97 | return ret; | ||
98 | } | ||
99 | |||
100 | static int amdgpu_cgs_free_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t handle) | ||
101 | { | ||
102 | struct amdgpu_bo *obj = (struct amdgpu_bo *)handle; | ||
103 | |||
104 | if (obj) { | ||
105 | int r = amdgpu_bo_reserve(obj, true); | ||
106 | if (likely(r == 0)) { | ||
107 | amdgpu_bo_kunmap(obj); | ||
108 | amdgpu_bo_unpin(obj); | ||
109 | amdgpu_bo_unreserve(obj); | ||
110 | } | ||
111 | amdgpu_bo_unref(&obj); | ||
112 | |||
113 | } | ||
114 | return 0; | ||
115 | } | ||
116 | |||
117 | static int amdgpu_cgs_gmap_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t handle, | ||
118 | uint64_t *mcaddr) | ||
119 | { | ||
120 | int r; | ||
121 | struct amdgpu_bo *obj = (struct amdgpu_bo *)handle; | ||
122 | |||
123 | WARN_ON_ONCE(obj->placement.num_placement > 1); | ||
124 | |||
125 | r = amdgpu_bo_reserve(obj, true); | ||
126 | if (unlikely(r != 0)) | ||
127 | return r; | ||
128 | r = amdgpu_bo_pin(obj, obj->preferred_domains, mcaddr); | ||
129 | amdgpu_bo_unreserve(obj); | ||
130 | return r; | ||
131 | } | ||
132 | |||
133 | static int amdgpu_cgs_gunmap_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t handle) | ||
134 | { | ||
135 | int r; | ||
136 | struct amdgpu_bo *obj = (struct amdgpu_bo *)handle; | ||
137 | r = amdgpu_bo_reserve(obj, true); | ||
138 | if (unlikely(r != 0)) | ||
139 | return r; | ||
140 | r = amdgpu_bo_unpin(obj); | ||
141 | amdgpu_bo_unreserve(obj); | ||
142 | return r; | ||
143 | } | ||
144 | |||
145 | static int amdgpu_cgs_kmap_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t handle, | ||
146 | void **map) | ||
147 | { | ||
148 | int r; | ||
149 | struct amdgpu_bo *obj = (struct amdgpu_bo *)handle; | ||
150 | r = amdgpu_bo_reserve(obj, true); | ||
151 | if (unlikely(r != 0)) | ||
152 | return r; | ||
153 | r = amdgpu_bo_kmap(obj, map); | ||
154 | amdgpu_bo_unreserve(obj); | ||
155 | return r; | ||
156 | } | ||
157 | |||
158 | static int amdgpu_cgs_kunmap_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t handle) | ||
159 | { | ||
160 | int r; | ||
161 | struct amdgpu_bo *obj = (struct amdgpu_bo *)handle; | ||
162 | r = amdgpu_bo_reserve(obj, true); | ||
163 | if (unlikely(r != 0)) | ||
164 | return r; | ||
165 | amdgpu_bo_kunmap(obj); | ||
166 | amdgpu_bo_unreserve(obj); | ||
167 | return r; | ||
168 | } | ||
169 | |||
170 | static uint32_t amdgpu_cgs_read_register(struct cgs_device *cgs_device, unsigned offset) | 45 | static uint32_t amdgpu_cgs_read_register(struct cgs_device *cgs_device, unsigned offset) |
171 | { | 46 | { |
172 | CGS_FUNC_ADEV; | 47 | CGS_FUNC_ADEV; |
@@ -906,12 +781,6 @@ static int amdgpu_cgs_notify_dpm_enabled(struct cgs_device *cgs_device, bool ena | |||
906 | } | 781 | } |
907 | 782 | ||
908 | static const struct cgs_ops amdgpu_cgs_ops = { | 783 | static const struct cgs_ops amdgpu_cgs_ops = { |
909 | .alloc_gpu_mem = amdgpu_cgs_alloc_gpu_mem, | ||
910 | .free_gpu_mem = amdgpu_cgs_free_gpu_mem, | ||
911 | .gmap_gpu_mem = amdgpu_cgs_gmap_gpu_mem, | ||
912 | .gunmap_gpu_mem = amdgpu_cgs_gunmap_gpu_mem, | ||
913 | .kmap_gpu_mem = amdgpu_cgs_kmap_gpu_mem, | ||
914 | .kunmap_gpu_mem = amdgpu_cgs_kunmap_gpu_mem, | ||
915 | .read_register = amdgpu_cgs_read_register, | 784 | .read_register = amdgpu_cgs_read_register, |
916 | .write_register = amdgpu_cgs_write_register, | 785 | .write_register = amdgpu_cgs_write_register, |
917 | .read_ind_register = amdgpu_cgs_read_ind_register, | 786 | .read_ind_register = amdgpu_cgs_read_ind_register, |