| .. | .. |
|---|
| 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 | | - |
|---|