没有合适的资源?快使用搜索试试~ 我知道了~
TI OMAP3 ISP驱动整体框架、流程整理分析
5星 · 超过95%的资源 需积分: 50 90 下载量 100 浏览量
2017-11-09
17:32:36
上传
评论 3
收藏 131KB DOCX 举报
温馨提示
试读
5页
文档是对\linux-4.4.52\drivers\media\platform\omap3isp\Isp.c阅读后的梳理总结。这份代码是TI针对OMAP3 ISP模块的驱动实现,编写遵守V4L2框架,涉及多个v4l2_subdev,非常典型的V4L2的编写场景,代码清新,很适合对V4L2的深入学习理解。另:TI对应的datasheet对ISP的硬件描述也非常详尽,可辅助学习。
资源推荐
资源详情
资源评论
isp_probe
isp_initialize_modules
ret = omap3isp_csiphy_init(isp);
ret = omap3isp_csi2_init(isp);
ret = csi2_init_entities(csi2a);
ret = omap3isp_video_init(&csi2->video_out, "CSI2a");
ret = omap3isp_ccp2_init(isp);
ret = ccp2_init_entities(ccp2);
ret = omap3isp_video_init(&ccp2->video_in, "CCP2");
ret = omap3isp_ccdc_init(isp);
ret = ccdc_init_entities(ccdc);
ret = omap3isp_video_init(&ccdc->video_out, "CCDC");
ret = omap3isp_preview_init(isp);
return preview_init_entities(prev);
ret = omap3isp_video_init(&prev->video_in, "preview");
ret = omap3isp_video_init(&prev->video_out, "preview");
ret = omap3isp_resizer_init(isp);
return resizer_init_entities(res);
ret = omap3isp_video_init(&res->video_in, "resizer");
ret = omap3isp_video_init(&res->video_out, "resizer");
//csi2a,ccp2,ccdc,preview,resizer 子设备有向上层开放操作接口(video_device)
ret = omap3isp_hist_init(isp);
ret = omap3isp_stat_init(hist, "histogram", &hist_subdev_ops);
ret = omap3isp_h3a_aewb_init(isp);
return omap3isp_stat_init(aewb, "AEWB", &h3a_aewb_subdev_ops);
ret = omap3isp_h3a_af_init(isp);
return omap3isp_stat_init(af, "AF", &h3a_af_subdev_ops);
//hist,aewb,af 子设备不需要向上层开放操作接口
omap3isp_video_init(struct isp_video *video, const char *name) // 初 始 化
video_device(ispvideo.c)
video->video.fops = &isp_video_fops;
video->video.vfl_type = VFL_TYPE_GRABBER;
video->video.release = video_device_release_empty;
video->video.ioctl_ops = &isp_video_ioctl_ops;
video->pipe.stream_state = ISP_PIPELINE_STREAM_STOPPED;
video_set_drvdata(&video->video, video);
omap3isp_video_register
ret = video_register_device(&video->video, VFL_TYPE_GRABBER, -1);
# csi2a,ccp2,ccdc,preview,resizer 子 设 备 共 用
video_device.fops,video_device.ioctl_ops( 只 是 设 备 节 点 不
同 ),vb2_queue.ops,vb2_queue.mem_ops, 需 要 各 自 实 现 的 是 不 同 的 底 层 硬 件 操 作
v4l2_subdev_ops
# preview,resizer 的输入和输出都有上层应用参与处理,所以一个 v4l2_subdev 同时对应 2 个
video_device(2 个不同的设备节点).
资源评论
- 快乐人生1232019-03-20代码不错,值得推荐
- checode2019-09-16还可以,感觉入门看挺好
wangpeng20112011
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功