工作

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

热门文章

  1. 开发环境、测试环境、生产环境、UAT环境、仿真环境
  2. 物联网建设与发达国家相比,主要存在哪些差距
  3. 矩阵快速幂(求斐波那契数列)
  4. mac 常用软件及快捷键整理
  5. 大话备考之数据结构综合题
  6. c语言毕业程序设计论文,C语言程序设计论文
  7. 基于C语言的材料力学模型计算实现(前言)
  8. pms152应广pms132B应广单片机应用之-呼吸灯
  9. CMake时候出错排查
  10. uoj#399. 【CTSC2018】假面(概率期望)