hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/gpu/drm/exynos/exynos_drm_ipp.c
....@@ -16,10 +16,12 @@
1616 * all copies or substantial portions of the Software.
1717 */
1818
19
+#include <linux/uaccess.h>
1920
20
-#include <drm/drmP.h>
21
+#include <drm/drm_file.h>
22
+#include <drm/drm_fourcc.h>
2123 #include <drm/drm_mode.h>
22
-#include <uapi/drm/exynos_drm.h>
24
+#include <drm/exynos_drm.h>
2325
2426 #include "exynos_drm_drv.h"
2527 #include "exynos_drm_gem.h"
....@@ -43,7 +45,7 @@
4345 * Returns:
4446 * Zero on success, error code on failure.
4547 */
46
-int exynos_drm_ipp_register(struct drm_device *dev, struct exynos_drm_ipp *ipp,
48
+int exynos_drm_ipp_register(struct device *dev, struct exynos_drm_ipp *ipp,
4749 const struct exynos_drm_ipp_funcs *funcs, unsigned int caps,
4850 const struct exynos_drm_ipp_formats *formats,
4951 unsigned int num_formats, const char *name)
....@@ -67,7 +69,7 @@
6769 list_add_tail(&ipp->head, &ipp_list);
6870 ipp->id = num_ipp++;
6971
70
- DRM_DEBUG_DRIVER("Registered ipp %d\n", ipp->id);
72
+ DRM_DEV_DEBUG_DRIVER(dev, "Registered ipp %d\n", ipp->id);
7173
7274 return 0;
7375 }
....@@ -77,7 +79,7 @@
7779 * @dev: DRM device
7880 * @ipp: ipp module
7981 */
80
-void exynos_drm_ipp_unregister(struct drm_device *dev,
82
+void exynos_drm_ipp_unregister(struct device *dev,
8183 struct exynos_drm_ipp *ipp)
8284 {
8385 WARN_ON(ipp->task);
....@@ -268,7 +270,7 @@
268270 task->src.rect.h = task->dst.rect.h = UINT_MAX;
269271 task->transform.rotation = DRM_MODE_ROTATE_0;
270272
271
- DRM_DEBUG_DRIVER("Allocated task %pK\n", task);
273
+ DRM_DEV_DEBUG_DRIVER(task->dev, "Allocated task %pK\n", task);
272274
273275 return task;
274276 }
....@@ -335,7 +337,9 @@
335337 size -= map[i].size;
336338 }
337339
338
- DRM_DEBUG_DRIVER("Got task %pK configuration from userspace\n", task);
340
+ DRM_DEV_DEBUG_DRIVER(task->dev,
341
+ "Got task %pK configuration from userspace\n",
342
+ task);
339343 return 0;
340344 }
341345
....@@ -389,12 +393,12 @@
389393 static void exynos_drm_ipp_task_free(struct exynos_drm_ipp *ipp,
390394 struct exynos_drm_ipp_task *task)
391395 {
392
- DRM_DEBUG_DRIVER("Freeing task %pK\n", task);
396
+ DRM_DEV_DEBUG_DRIVER(task->dev, "Freeing task %pK\n", task);
393397
394398 exynos_drm_ipp_task_release_buf(&task->src);
395399 exynos_drm_ipp_task_release_buf(&task->dst);
396400 if (task->event)
397
- drm_event_cancel_free(ipp->dev, &task->event->base);
401
+ drm_event_cancel_free(ipp->drm_dev, &task->event->base);
398402 kfree(task);
399403 }
400404
....@@ -553,8 +557,9 @@
553557 buf == src ? DRM_EXYNOS_IPP_FORMAT_SOURCE :
554558 DRM_EXYNOS_IPP_FORMAT_DESTINATION);
555559 if (!fmt) {
556
- DRM_DEBUG_DRIVER("Task %pK: %s format not supported\n", task,
557
- buf == src ? "src" : "dst");
560
+ DRM_DEV_DEBUG_DRIVER(task->dev,
561
+ "Task %pK: %s format not supported\n",
562
+ task, buf == src ? "src" : "dst");
558563 return -EINVAL;
559564 }
560565
....@@ -603,7 +608,7 @@
603608 bool rotate = (rotation != DRM_MODE_ROTATE_0);
604609 bool scale = false;
605610
606
- DRM_DEBUG_DRIVER("Checking task %pK\n", task);
611
+ DRM_DEV_DEBUG_DRIVER(task->dev, "Checking task %pK\n", task);
607612
608613 if (src->rect.w == UINT_MAX)
609614 src->rect.w = src->buf.width;
....@@ -618,8 +623,9 @@
618623 src->rect.y + src->rect.h > (src->buf.height) ||
619624 dst->rect.x + dst->rect.w > (dst->buf.width) ||
620625 dst->rect.y + dst->rect.h > (dst->buf.height)) {
621
- DRM_DEBUG_DRIVER("Task %pK: defined area is outside provided buffers\n",
622
- task);
626
+ DRM_DEV_DEBUG_DRIVER(task->dev,
627
+ "Task %pK: defined area is outside provided buffers\n",
628
+ task);
623629 return -EINVAL;
624630 }
625631
....@@ -635,7 +641,8 @@
635641 (!(ipp->capabilities & DRM_EXYNOS_IPP_CAP_SCALE) && scale) ||
636642 (!(ipp->capabilities & DRM_EXYNOS_IPP_CAP_CONVERT) &&
637643 src->buf.fourcc != dst->buf.fourcc)) {
638
- DRM_DEBUG_DRIVER("Task %pK: hw capabilities exceeded\n", task);
644
+ DRM_DEV_DEBUG_DRIVER(task->dev, "Task %pK: hw capabilities exceeded\n",
645
+ task);
639646 return -EINVAL;
640647 }
641648
....@@ -647,7 +654,8 @@
647654 if (ret)
648655 return ret;
649656
650
- DRM_DEBUG_DRIVER("Task %pK: all checks done.\n", task);
657
+ DRM_DEV_DEBUG_DRIVER(ipp->dev, "Task %pK: all checks done.\n",
658
+ task);
651659
652660 return ret;
653661 }
....@@ -658,20 +666,26 @@
658666 struct exynos_drm_ipp_buffer *src = &task->src, *dst = &task->dst;
659667 int ret = 0;
660668
661
- DRM_DEBUG_DRIVER("Setting buffer for task %pK\n", task);
669
+ DRM_DEV_DEBUG_DRIVER(task->dev, "Setting buffer for task %pK\n",
670
+ task);
662671
663672 ret = exynos_drm_ipp_task_setup_buffer(src, filp);
664673 if (ret) {
665
- DRM_DEBUG_DRIVER("Task %pK: src buffer setup failed\n", task);
674
+ DRM_DEV_DEBUG_DRIVER(task->dev,
675
+ "Task %pK: src buffer setup failed\n",
676
+ task);
666677 return ret;
667678 }
668679 ret = exynos_drm_ipp_task_setup_buffer(dst, filp);
669680 if (ret) {
670
- DRM_DEBUG_DRIVER("Task %pK: dst buffer setup failed\n", task);
681
+ DRM_DEV_DEBUG_DRIVER(task->dev,
682
+ "Task %pK: dst buffer setup failed\n",
683
+ task);
671684 return ret;
672685 }
673686
674
- DRM_DEBUG_DRIVER("Task %pK: buffers prepared.\n", task);
687
+ DRM_DEV_DEBUG_DRIVER(task->dev, "Task %pK: buffers prepared.\n",
688
+ task);
675689
676690 return ret;
677691 }
....@@ -691,7 +705,7 @@
691705 e->event.base.length = sizeof(e->event);
692706 e->event.user_data = user_data;
693707
694
- ret = drm_event_reserve_init(task->dev, file_priv, &e->base,
708
+ ret = drm_event_reserve_init(task->ipp->drm_dev, file_priv, &e->base,
695709 &e->event.base);
696710 if (ret)
697711 goto free;
....@@ -712,7 +726,7 @@
712726 task->event->event.tv_usec = now.tv_nsec / NSEC_PER_USEC;
713727 task->event->event.sequence = atomic_inc_return(&task->ipp->sequence);
714728
715
- drm_send_event(task->dev, &task->event->base);
729
+ drm_send_event(task->ipp->drm_dev, &task->event->base);
716730 }
717731
718732 static int exynos_drm_ipp_task_cleanup(struct exynos_drm_ipp_task *task)
....@@ -749,7 +763,8 @@
749763 struct exynos_drm_ipp *ipp = task->ipp;
750764 unsigned long flags;
751765
752
- DRM_DEBUG_DRIVER("ipp: %d, task %pK done: %d\n", ipp->id, task, ret);
766
+ DRM_DEV_DEBUG_DRIVER(task->dev, "ipp: %d, task %pK done: %d\n",
767
+ ipp->id, task, ret);
753768
754769 spin_lock_irqsave(&ipp->lock, flags);
755770 if (ipp->task == task)
....@@ -773,7 +788,8 @@
773788 unsigned long flags;
774789 int ret;
775790
776
- DRM_DEBUG_DRIVER("ipp: %d, try to run new task\n", ipp->id);
791
+ DRM_DEV_DEBUG_DRIVER(ipp->dev, "ipp: %d, try to run new task\n",
792
+ ipp->id);
777793
778794 spin_lock_irqsave(&ipp->lock, flags);
779795
....@@ -789,7 +805,9 @@
789805
790806 spin_unlock_irqrestore(&ipp->lock, flags);
791807
792
- DRM_DEBUG_DRIVER("ipp: %d, selected task %pK to run\n", ipp->id, task);
808
+ DRM_DEV_DEBUG_DRIVER(ipp->dev,
809
+ "ipp: %d, selected task %pK to run\n", ipp->id,
810
+ task);
793811
794812 ret = ipp->funcs->commit(ipp, task);
795813 if (ret)
....@@ -897,15 +915,16 @@
897915 * then freed after exynos_drm_ipp_task_done()
898916 */
899917 if (arg->flags & DRM_EXYNOS_IPP_FLAG_NONBLOCK) {
900
- DRM_DEBUG_DRIVER("ipp: %d, nonblocking processing task %pK\n",
901
- ipp->id, task);
918
+ DRM_DEV_DEBUG_DRIVER(ipp->dev,
919
+ "ipp: %d, nonblocking processing task %pK\n",
920
+ ipp->id, task);
902921
903922 task->flags |= DRM_EXYNOS_IPP_TASK_ASYNC;
904923 exynos_drm_ipp_schedule_task(task->ipp, task);
905924 ret = 0;
906925 } else {
907
- DRM_DEBUG_DRIVER("ipp: %d, processing task %pK\n", ipp->id,
908
- task);
926
+ DRM_DEV_DEBUG_DRIVER(ipp->dev, "ipp: %d, processing task %pK\n",
927
+ ipp->id, task);
909928 exynos_drm_ipp_schedule_task(ipp, task);
910929 ret = wait_event_interruptible(ipp->done_wq,
911930 task->flags & DRM_EXYNOS_IPP_TASK_DONE);