forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-10 9999e48639b3cecb08ffb37358bcba3b48161b29
kernel/drivers/media/platform/rockchip/ispp/stats.c
....@@ -9,6 +9,7 @@
99 #include <media/videobuf2-dma-contig.h>
1010 #include <media/videobuf2-dma-sg.h>
1111 #include <media/v4l2-mc.h>
12
+#include <uapi/linux/rk-video-format.h>
1213 #include "dev.h"
1314 #include "regs.h"
1415 #include "stats.h"
....@@ -74,11 +75,11 @@
7475 nrbuf->image.index = vdev->nr.cur_wr->index;
7576 nrbuf->image.size = vdev->nr.cur_wr->size;
7677 v4l2_dbg(3, rkispp_debug, &dev->v4l2_dev,
77
- "%s frame:%d nr output buf index:%d fd:%d dma:0x%x\n",
78
+ "%s frame:%d nr output buf index:%d fd:%d dma:%pad\n",
7879 __func__, cur_frame_id,
7980 vdev->nr.cur_wr->index,
8081 vdev->nr.cur_wr->dma_fd,
81
- vdev->nr.cur_wr->dma_addr);
82
+ &vdev->nr.cur_wr->dma_addr);
8283 }
8384 }
8485
....@@ -156,7 +157,7 @@
156157
157158 ret = v4l2_fh_open(filp);
158159 if (!ret) {
159
- ret = v4l2_pipeline_pm_use(&stats->vnode.vdev.entity, 1);
160
+ ret = v4l2_pipeline_pm_get(&stats->vnode.vdev.entity);
160161 if (ret < 0) {
161162 v4l2_err(&isppdev->v4l2_dev,
162163 "pipeline power on failed %d\n", ret);
....@@ -169,16 +170,11 @@
169170 static int rkispp_stats_fh_release(struct file *filp)
170171 {
171172 struct rkispp_stats_vdev *stats = video_drvdata(filp);
172
- struct rkispp_device *isppdev = stats->dev;
173173 int ret;
174174
175175 ret = vb2_fop_release(filp);
176
- if (!ret) {
177
- ret = v4l2_pipeline_pm_use(&stats->vnode.vdev.entity, 0);
178
- if (ret < 0)
179
- v4l2_err(&isppdev->v4l2_dev,
180
- "pipeline power off failed %d\n", ret);
181
- }
176
+ if (!ret)
177
+ v4l2_pipeline_pm_put(&stats->vnode.vdev.entity);
182178 return ret;
183179 }
184180
....@@ -230,7 +226,6 @@
230226 sizes[0] = sizeof(struct rkispp_stats_nrbuf);
231227 break;
232228 }
233
-
234229 INIT_LIST_HEAD(&stats_vdev->stat);
235230
236231 return 0;
....@@ -245,7 +240,7 @@
245240 unsigned long lock_flags = 0;
246241
247242 vb2_plane_vaddr(vb, 0);
248
- if (stats_dev->dev->hw_dev->is_mmu) {
243
+ if (stats_dev->dev->hw_dev->is_dma_sg_ops) {
249244 struct sg_table *sgt = vb2_dma_sg_plane_desc(vb, 0);
250245
251246 buf->buff_addr[0] = sg_dma_address(sgt->sgl);
....@@ -346,9 +341,7 @@
346341
347342 static void rkispp_init_stats_vdev(struct rkispp_stats_vdev *stats_vdev)
348343 {
349
- stats_vdev->vdev_fmt.fmt.meta.dataformat =
350
- V4L2_META_FMT_RK_ISPP_STAT;
351
-
344
+ stats_vdev->vdev_fmt.fmt.meta.dataformat = V4L2_META_FMT_RK_ISPP_STAT;
352345 switch (stats_vdev->vdev_id) {
353346 case STATS_VDEV_TNR:
354347 stats_vdev->vdev_fmt.fmt.meta.buffersize =
....@@ -363,7 +356,7 @@
363356 }
364357
365358 static int rkispp_register_stats_vdev(struct rkispp_device *dev,
366
- enum rkispp_statsvdev_id vdev_id)
359
+ enum rkispp_statsvdev_id vdev_id)
367360 {
368361 struct rkispp_stats_vdev *stats_vdev = &dev->stats_vdev[vdev_id];
369362 struct rkispp_vdev_node *node = &stats_vdev->vnode;
....@@ -402,7 +395,7 @@
402395 if (ret < 0)
403396 goto err_release_queue;
404397
405
- ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1);
398
+ ret = video_register_device(vdev, VFL_TYPE_VIDEO, -1);
406399 if (ret < 0) {
407400 dev_err(&vdev->dev,
408401 "could not register Video for Linux device\n");
....@@ -419,7 +412,7 @@
419412 }
420413
421414 static void rkispp_unregister_stats_vdev(struct rkispp_device *dev,
422
- enum rkispp_statsvdev_id vdev_id)
415
+ enum rkispp_statsvdev_id vdev_id)
423416 {
424417 struct rkispp_stats_vdev *stats_vdev = &dev->stats_vdev[vdev_id];
425418 struct rkispp_vdev_node *node = &stats_vdev->vnode;
....@@ -433,6 +426,9 @@
433426 int rkispp_register_stats_vdevs(struct rkispp_device *dev)
434427 {
435428 int ret = 0;
429
+
430
+ if (dev->ispp_ver != ISPP_V10)
431
+ return 0;
436432
437433 ret = rkispp_register_stats_vdev(dev, STATS_VDEV_TNR);
438434 if (ret)
....@@ -449,7 +445,8 @@
449445
450446 void rkispp_unregister_stats_vdevs(struct rkispp_device *dev)
451447 {
448
+ if (dev->ispp_ver != ISPP_V10)
449
+ return;
452450 rkispp_unregister_stats_vdev(dev, STATS_VDEV_TNR);
453451 rkispp_unregister_stats_vdev(dev, STATS_VDEV_NR);
454452 }
455
-