forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/gpu/drm/qxl/qxl_prime.c
....@@ -23,25 +23,27 @@
2323 */
2424
2525 #include "qxl_drv.h"
26
+#include "qxl_object.h"
2627
2728 /* Empty Implementations as there should not be any other driver for a virtual
2829 * device that might share buffers with qxl */
2930
3031 int qxl_gem_prime_pin(struct drm_gem_object *obj)
3132 {
32
- WARN_ONCE(1, "not implemented");
33
- return -ENOSYS;
33
+ struct qxl_bo *bo = gem_to_qxl_bo(obj);
34
+
35
+ return qxl_bo_pin(bo);
3436 }
3537
3638 void qxl_gem_prime_unpin(struct drm_gem_object *obj)
3739 {
38
- WARN_ONCE(1, "not implemented");
39
-}
40
+ struct qxl_bo *bo = gem_to_qxl_bo(obj);
4041
42
+ qxl_bo_unpin(bo);
43
+}
4144
4245 struct sg_table *qxl_gem_prime_get_sg_table(struct drm_gem_object *obj)
4346 {
44
- WARN_ONCE(1, "not implemented");
4547 return ERR_PTR(-ENOSYS);
4648 }
4749
....@@ -49,24 +51,31 @@
4951 struct drm_device *dev, struct dma_buf_attachment *attach,
5052 struct sg_table *table)
5153 {
52
- WARN_ONCE(1, "not implemented");
5354 return ERR_PTR(-ENOSYS);
5455 }
5556
5657 void *qxl_gem_prime_vmap(struct drm_gem_object *obj)
5758 {
58
- WARN_ONCE(1, "not implemented");
59
- return ERR_PTR(-ENOSYS);
59
+ struct qxl_bo *bo = gem_to_qxl_bo(obj);
60
+ void *ptr;
61
+ int ret;
62
+
63
+ ret = qxl_bo_kmap(bo, &ptr);
64
+ if (ret < 0)
65
+ return ERR_PTR(ret);
66
+
67
+ return ptr;
6068 }
6169
6270 void qxl_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr)
6371 {
64
- WARN_ONCE(1, "not implemented");
72
+ struct qxl_bo *bo = gem_to_qxl_bo(obj);
73
+
74
+ qxl_bo_kunmap(bo);
6575 }
6676
6777 int qxl_gem_prime_mmap(struct drm_gem_object *obj,
6878 struct vm_area_struct *area)
6979 {
70
- WARN_ONCE(1, "not implemented");
7180 return -ENOSYS;
7281 }