基于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的加强版本 日志对于系统中程序和服务的运行起着很大的作用,我们经常需要去看日志记录来查看各种信息,有用户登录信息,有网页访问信息,有系统故障信息,等等.. 日志通常有日志级 ...
最新文章
- Redis RDB 持久化详解
- Mac OS使用技巧十八:Safari碉堡功能之一制作Widget
- NUMA架构和Java
- linux下dvwa安装教程,在Kali Linux上部署DVWA
- 域名和IP地址并用的理由
- 腾讯翻译君在线翻译怎么翻译整个文件_希腊语怎么翻译?教你两个超实用的翻译方法...
- 风筝 vpn_风筝将其AI驱动的代码完成功能引入JavaScript
- 一阶锁相环的FPGA实现(基于quartus+matlab)
- 登录名、服务器角色、用户名和数据库角色
- Excel 锁定特定单元格 不允许更改
- 小木虫网站登录返回404
- 【物联网】物联网开发从入门到精通
- Android商城开发(一)——一次活动页需求引发的危机感
- java实现游戏对战过程_【Java实战】Java实现简易坦克对战小游戏
- C++四个数排序(从小到大)
- 基于FPGA的呼叫设备verilog开发
- 【雷达原理】雷达功能及原理概述
- 有关ARM RTC时钟使用心得
- 天天都在说的用户画像到底该如何构建?看这篇就够了!
- linux内核-X86CPU对中断的硬件支持