diff options
-rw-r--r-- | drivers/gpu/drm/qxl/Makefile | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/qxl/qxl_drv.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/qxl/qxl_drv.h | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/qxl/qxl_prime.c | 72 |
4 files changed, 97 insertions, 2 deletions
diff --git a/drivers/gpu/drm/qxl/Makefile b/drivers/gpu/drm/qxl/Makefile index ac0d74852e11..bacc4aff1201 100644 --- a/drivers/gpu/drm/qxl/Makefile +++ b/drivers/gpu/drm/qxl/Makefile | |||
@@ -4,6 +4,6 @@ | |||
4 | 4 | ||
5 | ccflags-y := -Iinclude/drm | 5 | ccflags-y := -Iinclude/drm |
6 | 6 | ||
7 | qxl-y := qxl_drv.o qxl_kms.o qxl_display.o qxl_ttm.o qxl_fb.o qxl_object.o qxl_gem.o qxl_cmd.o qxl_image.o qxl_draw.o qxl_debugfs.o qxl_irq.o qxl_dumb.o qxl_ioctl.o qxl_release.o | 7 | qxl-y := qxl_drv.o qxl_kms.o qxl_display.o qxl_ttm.o qxl_fb.o qxl_object.o qxl_gem.o qxl_cmd.o qxl_image.o qxl_draw.o qxl_debugfs.o qxl_irq.o qxl_dumb.o qxl_ioctl.o qxl_release.o qxl_prime.o |
8 | 8 | ||
9 | obj-$(CONFIG_DRM_QXL)+= qxl.o | 9 | obj-$(CONFIG_DRM_QXL)+= qxl.o |
diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c index b8a3eae4b1b1..4da0105e481a 100644 --- a/drivers/gpu/drm/qxl/qxl_drv.c +++ b/drivers/gpu/drm/qxl/qxl_drv.c | |||
@@ -227,7 +227,7 @@ static struct pci_driver qxl_pci_driver = { | |||
227 | }; | 227 | }; |
228 | 228 | ||
229 | static struct drm_driver qxl_driver = { | 229 | static struct drm_driver qxl_driver = { |
230 | .driver_features = DRIVER_GEM | DRIVER_MODESET | | 230 | .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | |
231 | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED, | 231 | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED, |
232 | .load = qxl_driver_load, | 232 | .load = qxl_driver_load, |
233 | .unload = qxl_driver_unload, | 233 | .unload = qxl_driver_unload, |
@@ -242,6 +242,17 @@ static struct drm_driver qxl_driver = { | |||
242 | .debugfs_init = qxl_debugfs_init, | 242 | .debugfs_init = qxl_debugfs_init, |
243 | .debugfs_cleanup = qxl_debugfs_takedown, | 243 | .debugfs_cleanup = qxl_debugfs_takedown, |
244 | #endif | 244 | #endif |
245 | .prime_handle_to_fd = drm_gem_prime_handle_to_fd, | ||
246 | .prime_fd_to_handle = drm_gem_prime_fd_to_handle, | ||
247 | .gem_prime_export = drm_gem_prime_export, | ||
248 | .gem_prime_import = drm_gem_prime_import, | ||
249 | .gem_prime_pin = qxl_gem_prime_pin, | ||
250 | .gem_prime_unpin = qxl_gem_prime_unpin, | ||
251 | .gem_prime_get_sg_table = qxl_gem_prime_get_sg_table, | ||
252 | .gem_prime_import_sg_table = qxl_gem_prime_import_sg_table, | ||
253 | .gem_prime_vmap = qxl_gem_prime_vmap, | ||
254 | .gem_prime_vunmap = qxl_gem_prime_vunmap, | ||
255 | .gem_prime_mmap = qxl_gem_prime_mmap, | ||
245 | .gem_free_object = qxl_gem_object_free, | 256 | .gem_free_object = qxl_gem_object_free, |
246 | .gem_open_object = qxl_gem_object_open, | 257 | .gem_open_object = qxl_gem_object_open, |
247 | .gem_close_object = qxl_gem_object_close, | 258 | .gem_close_object = qxl_gem_object_close, |
diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h index a8be87632cae..d75c0a9f674f 100644 --- a/drivers/gpu/drm/qxl/qxl_drv.h +++ b/drivers/gpu/drm/qxl/qxl_drv.h | |||
@@ -530,6 +530,18 @@ int qxl_garbage_collect(struct qxl_device *qdev); | |||
530 | int qxl_debugfs_init(struct drm_minor *minor); | 530 | int qxl_debugfs_init(struct drm_minor *minor); |
531 | void qxl_debugfs_takedown(struct drm_minor *minor); | 531 | void qxl_debugfs_takedown(struct drm_minor *minor); |
532 | 532 | ||
533 | /* qxl_prime.c */ | ||
534 | int qxl_gem_prime_pin(struct drm_gem_object *obj); | ||
535 | void qxl_gem_prime_unpin(struct drm_gem_object *obj); | ||
536 | struct sg_table *qxl_gem_prime_get_sg_table(struct drm_gem_object *obj); | ||
537 | struct drm_gem_object *qxl_gem_prime_import_sg_table( | ||
538 | struct drm_device *dev, size_t size, | ||
539 | struct sg_table *sgt); | ||
540 | void *qxl_gem_prime_vmap(struct drm_gem_object *obj); | ||
541 | void qxl_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); | ||
542 | int qxl_gem_prime_mmap(struct drm_gem_object *obj, | ||
543 | struct vm_area_struct *vma); | ||
544 | |||
533 | /* qxl_irq.c */ | 545 | /* qxl_irq.c */ |
534 | int qxl_irq_init(struct qxl_device *qdev); | 546 | int qxl_irq_init(struct qxl_device *qdev); |
535 | irqreturn_t qxl_irq_handler(int irq, void *arg); | 547 | irqreturn_t qxl_irq_handler(int irq, void *arg); |
diff --git a/drivers/gpu/drm/qxl/qxl_prime.c b/drivers/gpu/drm/qxl/qxl_prime.c new file mode 100644 index 000000000000..ba0689c728e8 --- /dev/null +++ b/drivers/gpu/drm/qxl/qxl_prime.c | |||
@@ -0,0 +1,72 @@ | |||
1 | /* | ||
2 | * Copyright 2014 Canonical | ||
3 | * | ||
4 | * Permission is hereby granted, free of charge, to any person obtaining a | ||
5 | * copy of this software and associated documentation files (the "Software"), | ||
6 | * to deal in the Software without restriction, including without limitation | ||
7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
8 | * and/or sell copies of the Software, and to permit persons to whom the | ||
9 | * Software is furnished to do so, subject to the following conditions: | ||
10 | * | ||
11 | * The above copyright notice and this permission notice shall be included in | ||
12 | * all copies or substantial portions of the Software. | ||
13 | * | ||
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
17 | * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
18 | * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
20 | * OTHER DEALINGS IN THE SOFTWARE. | ||
21 | * | ||
22 | * Authors: Andreas Pokorny | ||
23 | */ | ||
24 | |||
25 | #include "qxl_drv.h" | ||
26 | |||
27 | /* Empty Implementations as there should not be any other driver for a virtual | ||
28 | * device that might share buffers with qxl */ | ||
29 | |||
30 | int qxl_gem_prime_pin(struct drm_gem_object *obj) | ||
31 | { | ||
32 | WARN_ONCE(1, "not implemented"); | ||
33 | return -ENOSYS; | ||
34 | } | ||
35 | |||
36 | void qxl_gem_prime_unpin(struct drm_gem_object *obj) | ||
37 | { | ||
38 | WARN_ONCE(1, "not implemented"); | ||
39 | } | ||
40 | |||
41 | |||
42 | struct sg_table *qxl_gem_prime_get_sg_table(struct drm_gem_object *obj) | ||
43 | { | ||
44 | WARN_ONCE(1, "not implemented"); | ||
45 | return ERR_PTR(-ENOSYS); | ||
46 | } | ||
47 | |||
48 | struct drm_gem_object *qxl_gem_prime_import_sg_table( | ||
49 | struct drm_device *dev, size_t size, | ||
50 | struct sg_table *table) | ||
51 | { | ||
52 | WARN_ONCE(1, "not implemented"); | ||
53 | return ERR_PTR(-ENOSYS); | ||
54 | } | ||
55 | |||
56 | void *qxl_gem_prime_vmap(struct drm_gem_object *obj) | ||
57 | { | ||
58 | WARN_ONCE(1, "not implemented"); | ||
59 | return ERR_PTR(-ENOSYS); | ||
60 | } | ||
61 | |||
62 | void qxl_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr) | ||
63 | { | ||
64 | WARN_ONCE(1, "not implemented"); | ||
65 | } | ||
66 | |||
67 | int qxl_gem_prime_mmap(struct drm_gem_object *obj, | ||
68 | struct vm_area_struct *area) | ||
69 | { | ||
70 | WARN_ONCE(1, "not implemented"); | ||
71 | return ENOSYS; | ||
72 | } | ||