工作

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模块注册相关推荐

  1. 基于RV1126 Video分析-----sensor模块所代表的subdev子设备注册

    工作: static LIST_HEAD(notifier_list); //异步通知链表 static LIST_HEAD(subdev_list);//v4l2_subdev 链表LIST_HEA ...

  2. 基于RV1126 Video分析-----mipi协议解析模块所代表的subdev子设备注册

    工作: sensorLIST_HEAD(notifier_list)----+ LIST_HEAD(subdev_list)----+ | || || 挂载 | 挂载| | struct techpo ...

  3. 基于RV1126 Video分析-----驱动各模块总览

    一 通用理论 硬件链接: 一般情况下,Camera和SOC有两个接口进行连接,分为为MIPI接口和I2C接口,其中MIPI接口用来传输图像的数据,数据传输路径为从Sensor传输到SOC.另一个接口为 ...

  4. 基于RV1126 Video分析-----图像处理模块所代表的V4L2设备注册

    工作: 以设备通知器为线索,从顶向下,依次找到下一级设备,添加到V4L2设备种,循环处理.将全部的子设备整理到 V4L2设备中,这样可以通过V4L2设备直接管理所包含的各个子设备. 即这样 所有设备注 ...

  5. 基于RV1126 Video分析-----mipi dphy模块所代表的subdev子设备注册

    工作: LIST_HEAD(notifier_list)----+ LIST_HEAD(subdev_list)----+ | || || 挂载 | 挂载| | struct techpoint | ...

  6. java bs架构书_基于BS架构的图书借阅管理模块的分析与设计(JSP+MySQL)(新品)

    基于BS架构的图书借阅管理模块的分析与设计(JSP+MySQL)(新品) 来源:2BYSJ.cn 资料编号:2SJ295500 资料等级:★★★★★ %D7%CA%C1%CF%B1%E0%BA%C5% ...

  7. PLUS模型有两大模块,一是基于土地扩张分析策略的规则挖掘框架,二是基于多类型随机补丁种子的CA模型,此外该模型还内嵌了Markov chain,以便于对土地利用数量需要作出预测。

    工业革命以来,社会生产力迅速提高,人类活动频繁,此外人口与日俱增对土地的需求与改造更加强烈,人-地关系日益紧张.此外,土地资源的不合理开发利用更是造成了水土流失.植被退化.水资源短缺.区域气候变化.生 ...

  8. 【复】基于 WebRTC 的音视频在线监考模块的设计与实现(上)

    文章目录 前言 什么是 WebRTC? WebRTC 架构 WebRTC 通讯内容 WebRTC 通讯协议 WebRTC 连接建立过程 后记 前言 最近在做关于考试系统的项目,其中有一项需求分析是要做 ...

  9. rsyslog概要以及源码安装mysql,rsyslog输出到Mysql基于loganalyzer查看分析

    Rsyslog:syslog的加强版本 日志对于系统中程序和服务的运行起着很大的作用,我们经常需要去看日志记录来查看各种信息,有用户登录信息,有网页访问信息,有系统故障信息,等等.. 日志通常有日志级 ...

最新文章

  1. bottle框架学习(八)之Mysql数据库的操作
  2. Vmware VsPhere下的VM如何安装Hyper-v服务
  3. setHeadAndPropagate
  4. Python+Opencv根据颜色进行目标检测
  5. 使用Symantec Altiris 来监控 Dell 服务器 的 硬件
  6. 【Python】Pandas加载并查询Excel文件
  7. HTML学习笔记:iframe框架演示
  8. 自学python能干什么-python能干啥
  9. ArcIMS9.2新增地图服务时check your map file's layers and data source connections解决
  10. Crossing Road Simulation
  11. 使用docx4j在线word转换pdf及替换文本域
  12. python 广告联盟_利用京东联盟API获取自定义推广链接
  13. html 树 excel,用Excel实现简易树状关系
  14. latex入门(一)——latex网站overleaf
  15. C语言扫雷(可展开)
  16. 心电电路算法滤波_心电仪滤波
  17. 太原理工和山西大学计算机,双一流建设后,山西大学和太原理工你更想去哪一个?...
  18. jquery短信验证码倒计时
  19. windows Apache 的安装和配置教程
  20. C++快慢指针理解与应用

热门文章

  1. mysql重复数据只取一条数据_My sql 中删除表中重复记录?只保留一条
  2. python全栈生鲜电商_GitHub - yuanwenq/dailyfresh: Django-天天生鲜电商学习项目
  3. cmd bat删除文件命令_运用sed命令高效地删除文件的特定行
  4. Python合并数据、多表连接查询
  5. 西北工业大学计算机操作系统实验_西北工业大学,2020年计算机考研考情分析...
  6. 爱旅行项目中实现支付宝支付
  7. 手把手带你用Python完成一个能写进简历的项目(实战篇)
  8. 10.数据结构:栈和队列
  9. word绘制柱状图显示少一列数据-解决办法
  10. 微信小说分销系统设计之使用百度Echarts地图统计功能统计微信粉丝地域分布情况...