基于RV1126 Video分析-----sensor 的 media模块注册
工作
kernel\drivers\media\i2c\techpoint\techpoint_v4l2.c
static int techpoint_probe(struct i2c_client *client,const struct i2c_device_id *id)
{...//PAD_MAX == 4for (index = 0; index < PAD_MAX; index++)//所以 可以知道 techpoint 只有四个下一级 source pad 。没有上一级(SLNK) padtechpoint->pad[index].flags = MEDIA_PAD_FL_SOURCE;sd->entity.function = MEDIA_ENT_F_CAM_SENSOR;ret = media_entity_pads_init(&sd->entity, PAD_MAX, techpoint->pad);/*参数1 struct techpoint struct v4l2_subdev subdevstruct media_entity entity参数2 4参数3 struct techpoint struct media_pad pad[PAD_MAX];struct techpoint+--------struct media_pad pad[4];| struct media_gobj graph_obj; | struct media_device *mdev; --------------+ 绑定 entity--pad | struct list_head list; ------->----+ || +-------struct media_entity *entity; | | | | struct v4l2_subdev subdev; | | 绑定 pad--多媒体设备 | |-------struct media_entity entity; | | +---------------struct media_pad *pads;(四个pad) | | //该模块所属的多媒体设备 | | struct media_gobj graph_obj; | | struct media_device *mdev; ------|---+ //多媒体设备下的pads链表 |struct list_head pads; ---<--+ 将所有pad 挂载到多媒体设备中的 pads 链表struct list_head entities;struct list_head links; */ret = media_entity_pads_init(&sd->entity, PAD_MAX, techpoint->pad);}/*
参数1 struct techpoint struct v4l2_subdev subdevstruct media_entity entity参数2 4参数3 struct techpoint struct media_pad pad[PAD_MAX];
*/
int media_entity_pads_init(struct media_entity *entity, u16 num_pads,struct media_pad *pads)
{//获取 硬件设备模块entity 所对应的 多媒体设备media_device/*struct techpointstruct v4l2_subdev subdev; struct media_entity entity; struct media_gobj graph_obj; struct media_device *mdev;*/struct media_device *mdev = entity->graph_obj.mdev;unsigned int i;if (num_pads >= MEDIA_ENTITY_MAX_PADS)return -E2BIG;//绑定 entity ----> padsentity->num_pads = num_pads; //4个entity->pads = pads;if (mdev)mutex_lock(&mdev->graph_mutex);//绑定 多媒体设备media_device---------硬件设备模块entity------------硬件设备端口 pads/*初始化 4个 硬件设备端口pads,分别指定所在的硬件设备模块entity,以及ID。并分别绑定 所在的多媒体设备media_device*/for (i = 0; i < num_pads; i++) {pads[i].entity = entity;pads[i].index = i;/*参数1 多媒体设备 struct techpoint struct v4l2_subdev subdevstruct media_entity entitystruct media_gobj graph_obj;struct media_device *mdev;参数2 MEDIA_GRAPH_PAD参数3 端口抽象中用于关联所属的多媒体设备的 图形对象struct techpoint struct v4l2_subdev subdevstruct media_entity entitystruct media_pad *padsstruct media_gobj graph_obj;*/if (mdev)media_gobj_create(mdev, MEDIA_GRAPH_PAD,&entity->pads[i].graph_obj);}if (mdev)mutex_unlock(&mdev->graph_mutex);return 0;
}/*
struct techpointstruct v4l2_subdev subdev; struct media_entity entity; struct media_gobj graph_obj; struct media_device *mdev;struct techpointstruct v4l2_subdev subdev; struct media_entity entity; struct media_pad *pads;(n个padstruct media_gobj graph_obj;*/void media_gobj_create(struct media_device *mdev,enum media_gobj_type type,struct media_gobj *gobj)
{BUG_ON(!mdev);gobj->mdev = mdev;/* Create a per-type unique object ID */
gobj->id = media_gobj_gen_id(type, ++mdev->id);/*struct techpointstruct v4l2_subdev subdev; struct media_entity entity; struct media_gobj graph_obj; struct media_device *mdev;struct list_head pads;----------+|struct media_pad *pads;(n个pad | 挂载到多媒体设备中的 pad 链表struct media_gobj graph_obj; |struct list_head list;-------+*/ switch (type) {case MEDIA_GRAPH_ENTITY:list_add_tail(&gobj->list, &mdev->entities);break;case MEDIA_GRAPH_PAD://关联 pad ---- 多媒体设备list_add_tail(&gobj->list, &mdev->pads);break;case MEDIA_GRAPH_LINK: list_add_tail(&gobj->list, &mdev->links);break;case MEDIA_GRAPH_INTF_DEVNODE:list_add_tail(&gobj->list, &mdev->interfaces);break;}mdev->topology_version++;dev_dbg_obj(__func__, gobj);
}
基于RV1126 Video分析-----sensor 的 media模块注册相关推荐
- 基于RV1126 Video分析-----sensor模块所代表的subdev子设备注册
工作: static LIST_HEAD(notifier_list); //异步通知链表 static LIST_HEAD(subdev_list);//v4l2_subdev 链表LIST_HEA ...
- 基于RV1126 Video分析-----mipi协议解析模块所代表的subdev子设备注册
工作: sensorLIST_HEAD(notifier_list)----+ LIST_HEAD(subdev_list)----+ | || || 挂载 | 挂载| | struct techpo ...
- 基于RV1126 Video分析-----驱动各模块总览
一 通用理论 硬件链接: 一般情况下,Camera和SOC有两个接口进行连接,分为为MIPI接口和I2C接口,其中MIPI接口用来传输图像的数据,数据传输路径为从Sensor传输到SOC.另一个接口为 ...
- 基于RV1126 Video分析-----图像处理模块所代表的V4L2设备注册
工作: 以设备通知器为线索,从顶向下,依次找到下一级设备,添加到V4L2设备种,循环处理.将全部的子设备整理到 V4L2设备中,这样可以通过V4L2设备直接管理所包含的各个子设备. 即这样 所有设备注 ...
- 基于RV1126 Video分析-----mipi dphy模块所代表的subdev子设备注册
工作: LIST_HEAD(notifier_list)----+ LIST_HEAD(subdev_list)----+ | || || 挂载 | 挂载| | struct techpoint | ...
- java bs架构书_基于BS架构的图书借阅管理模块的分析与设计(JSP+MySQL)(新品)
基于BS架构的图书借阅管理模块的分析与设计(JSP+MySQL)(新品) 来源:2BYSJ.cn 资料编号:2SJ295500 资料等级:★★★★★ %D7%CA%C1%CF%B1%E0%BA%C5% ...
- PLUS模型有两大模块,一是基于土地扩张分析策略的规则挖掘框架,二是基于多类型随机补丁种子的CA模型,此外该模型还内嵌了Markov chain,以便于对土地利用数量需要作出预测。
工业革命以来,社会生产力迅速提高,人类活动频繁,此外人口与日俱增对土地的需求与改造更加强烈,人-地关系日益紧张.此外,土地资源的不合理开发利用更是造成了水土流失.植被退化.水资源短缺.区域气候变化.生 ...
- 【复】基于 WebRTC 的音视频在线监考模块的设计与实现(上)
文章目录 前言 什么是 WebRTC? WebRTC 架构 WebRTC 通讯内容 WebRTC 通讯协议 WebRTC 连接建立过程 后记 前言 最近在做关于考试系统的项目,其中有一项需求分析是要做 ...
- rsyslog概要以及源码安装mysql,rsyslog输出到Mysql基于loganalyzer查看分析
Rsyslog:syslog的加强版本 日志对于系统中程序和服务的运行起着很大的作用,我们经常需要去看日志记录来查看各种信息,有用户登录信息,有网页访问信息,有系统故障信息,等等.. 日志通常有日志级 ...
最新文章
- bottle框架学习(八)之Mysql数据库的操作
- Vmware VsPhere下的VM如何安装Hyper-v服务
- setHeadAndPropagate
- Python+Opencv根据颜色进行目标检测
- 使用Symantec Altiris 来监控 Dell 服务器 的 硬件
- 【Python】Pandas加载并查询Excel文件
- HTML学习笔记:iframe框架演示
- 自学python能干什么-python能干啥
- ArcIMS9.2新增地图服务时check your map file's layers and data source connections解决
- Crossing Road Simulation
- 使用docx4j在线word转换pdf及替换文本域
- python 广告联盟_利用京东联盟API获取自定义推广链接
- html 树 excel,用Excel实现简易树状关系
- latex入门(一)——latex网站overleaf
- C语言扫雷(可展开)
- 心电电路算法滤波_心电仪滤波
- 太原理工和山西大学计算机,双一流建设后,山西大学和太原理工你更想去哪一个?...
- jquery短信验证码倒计时
- windows Apache 的安装和配置教程
- C++快慢指针理解与应用
热门文章
- mysql重复数据只取一条数据_My sql 中删除表中重复记录?只保留一条
- python全栈生鲜电商_GitHub - yuanwenq/dailyfresh: Django-天天生鲜电商学习项目
- cmd bat删除文件命令_运用sed命令高效地删除文件的特定行
- Python合并数据、多表连接查询
- 西北工业大学计算机操作系统实验_西北工业大学,2020年计算机考研考情分析...
- 爱旅行项目中实现支付宝支付
- 手把手带你用Python完成一个能写进简历的项目(实战篇)
- 10.数据结构:栈和队列
- word绘制柱状图显示少一列数据-解决办法
- 微信小说分销系统设计之使用百度Echarts地图统计功能统计微信粉丝地域分布情况...