.. | .. |
---|
9 | 9 | #include <media/videobuf2-dma-contig.h> |
---|
10 | 10 | #include <media/videobuf2-dma-sg.h> |
---|
11 | 11 | #include <media/v4l2-mc.h> |
---|
| 12 | +#include <uapi/linux/rk-video-format.h> |
---|
12 | 13 | #include "dev.h" |
---|
13 | 14 | #include "regs.h" |
---|
14 | 15 | #include "stats.h" |
---|
.. | .. |
---|
74 | 75 | nrbuf->image.index = vdev->nr.cur_wr->index; |
---|
75 | 76 | nrbuf->image.size = vdev->nr.cur_wr->size; |
---|
76 | 77 | 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", |
---|
78 | 79 | __func__, cur_frame_id, |
---|
79 | 80 | vdev->nr.cur_wr->index, |
---|
80 | 81 | vdev->nr.cur_wr->dma_fd, |
---|
81 | | - vdev->nr.cur_wr->dma_addr); |
---|
| 82 | + &vdev->nr.cur_wr->dma_addr); |
---|
82 | 83 | } |
---|
83 | 84 | } |
---|
84 | 85 | |
---|
.. | .. |
---|
156 | 157 | |
---|
157 | 158 | ret = v4l2_fh_open(filp); |
---|
158 | 159 | if (!ret) { |
---|
159 | | - ret = v4l2_pipeline_pm_use(&stats->vnode.vdev.entity, 1); |
---|
| 160 | + ret = v4l2_pipeline_pm_get(&stats->vnode.vdev.entity); |
---|
160 | 161 | if (ret < 0) { |
---|
161 | 162 | v4l2_err(&isppdev->v4l2_dev, |
---|
162 | 163 | "pipeline power on failed %d\n", ret); |
---|
.. | .. |
---|
169 | 170 | static int rkispp_stats_fh_release(struct file *filp) |
---|
170 | 171 | { |
---|
171 | 172 | struct rkispp_stats_vdev *stats = video_drvdata(filp); |
---|
172 | | - struct rkispp_device *isppdev = stats->dev; |
---|
173 | 173 | int ret; |
---|
174 | 174 | |
---|
175 | 175 | 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); |
---|
182 | 178 | return ret; |
---|
183 | 179 | } |
---|
184 | 180 | |
---|
.. | .. |
---|
230 | 226 | sizes[0] = sizeof(struct rkispp_stats_nrbuf); |
---|
231 | 227 | break; |
---|
232 | 228 | } |
---|
233 | | - |
---|
234 | 229 | INIT_LIST_HEAD(&stats_vdev->stat); |
---|
235 | 230 | |
---|
236 | 231 | return 0; |
---|
.. | .. |
---|
245 | 240 | unsigned long lock_flags = 0; |
---|
246 | 241 | |
---|
247 | 242 | 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) { |
---|
249 | 244 | struct sg_table *sgt = vb2_dma_sg_plane_desc(vb, 0); |
---|
250 | 245 | |
---|
251 | 246 | buf->buff_addr[0] = sg_dma_address(sgt->sgl); |
---|
.. | .. |
---|
346 | 341 | |
---|
347 | 342 | static void rkispp_init_stats_vdev(struct rkispp_stats_vdev *stats_vdev) |
---|
348 | 343 | { |
---|
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; |
---|
352 | 345 | switch (stats_vdev->vdev_id) { |
---|
353 | 346 | case STATS_VDEV_TNR: |
---|
354 | 347 | stats_vdev->vdev_fmt.fmt.meta.buffersize = |
---|
.. | .. |
---|
363 | 356 | } |
---|
364 | 357 | |
---|
365 | 358 | static int rkispp_register_stats_vdev(struct rkispp_device *dev, |
---|
366 | | - enum rkispp_statsvdev_id vdev_id) |
---|
| 359 | + enum rkispp_statsvdev_id vdev_id) |
---|
367 | 360 | { |
---|
368 | 361 | struct rkispp_stats_vdev *stats_vdev = &dev->stats_vdev[vdev_id]; |
---|
369 | 362 | struct rkispp_vdev_node *node = &stats_vdev->vnode; |
---|
.. | .. |
---|
402 | 395 | if (ret < 0) |
---|
403 | 396 | goto err_release_queue; |
---|
404 | 397 | |
---|
405 | | - ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1); |
---|
| 398 | + ret = video_register_device(vdev, VFL_TYPE_VIDEO, -1); |
---|
406 | 399 | if (ret < 0) { |
---|
407 | 400 | dev_err(&vdev->dev, |
---|
408 | 401 | "could not register Video for Linux device\n"); |
---|
.. | .. |
---|
419 | 412 | } |
---|
420 | 413 | |
---|
421 | 414 | static void rkispp_unregister_stats_vdev(struct rkispp_device *dev, |
---|
422 | | - enum rkispp_statsvdev_id vdev_id) |
---|
| 415 | + enum rkispp_statsvdev_id vdev_id) |
---|
423 | 416 | { |
---|
424 | 417 | struct rkispp_stats_vdev *stats_vdev = &dev->stats_vdev[vdev_id]; |
---|
425 | 418 | struct rkispp_vdev_node *node = &stats_vdev->vnode; |
---|
.. | .. |
---|
433 | 426 | int rkispp_register_stats_vdevs(struct rkispp_device *dev) |
---|
434 | 427 | { |
---|
435 | 428 | int ret = 0; |
---|
| 429 | + |
---|
| 430 | + if (dev->ispp_ver != ISPP_V10) |
---|
| 431 | + return 0; |
---|
436 | 432 | |
---|
437 | 433 | ret = rkispp_register_stats_vdev(dev, STATS_VDEV_TNR); |
---|
438 | 434 | if (ret) |
---|
.. | .. |
---|
449 | 445 | |
---|
450 | 446 | void rkispp_unregister_stats_vdevs(struct rkispp_device *dev) |
---|
451 | 447 | { |
---|
| 448 | + if (dev->ispp_ver != ISPP_V10) |
---|
| 449 | + return; |
---|
452 | 450 | rkispp_unregister_stats_vdev(dev, STATS_VDEV_TNR); |
---|
453 | 451 | rkispp_unregister_stats_vdev(dev, STATS_VDEV_NR); |
---|
454 | 452 | } |
---|
455 | | - |
---|