V4L2 和 MIPI CSI2 虚拟通道:如何将它们分成流?

问题描述 投票:0回答:1

为了避免疑问,这是关于编程的问题 - 我正在为将在不同虚拟通道上流出的设备编写设备驱动程序。

到目前为止我认为我的接收器设备应该为 MIPI CSI2 总线的每个虚拟通道都有一个源媒体垫,但例如在 AM625 上有两个驱动程序:

  • ticsi2rx
  • csi-bridge

每个都有 4 个源焊盘,没有任何指示它们如何映射到虚拟通道。

在我痛苦地挖掘有关该主题的任何有用信息的过程中,我发现人们尝试将 TP2855 与 i.MX8QM 和 Jetsons 之一一起使用。该设备可以将从模拟源捕获的视频流传输到单独的“虚拟通道”。该芯片的驱动程序代码可在 Rockchip 的 Linux 内核分支上找到:

    https://github.com/armbian/linux-rockchip/blob/rk-5.10-rkr5.1/drivers/media/i2c/tp2855.c
  • https://github.com/armbian/linux-rockchip/blob/rk-5.10-rkr5.1/drivers/media/i2c/techpoint/techpoint_tp2855.c
  • 深入研究这段代码,我发现它指的是设置虚拟通道的使用,例如使用
V4L2_MBUS_CSI2_CHANNEL_0

常量...但进一步搜索显示,这已从 Linux 内核中删除:

https://patchwork.kernel.org/project/linux-media/patch/

[电子邮件受保护]/#24738396 这表明 Linux 内核已删除对 CSI2 虚拟通道的支持。

如果是这样,如何将 CSI2 虚拟通道的支持添加到自己的相机驱动程序中以针对更新的内核?

我是否正确地认为,内核代码中不存在对虚拟通道的 i.MX8 芯片支持?

linux camera v4l2
1个回答
0
投票

这些 IMX 芯片的驱动程序将 VC 硬编码为 0,即使它们支持 VC 过滤。

https://github.com/torvalds/linux/blob/master/drivers/media/platform/nxp/imx8mq-mipi-csi2.c#L261

https://github.com/torvalds/linux/blob/master/drivers/media/platform/nxp/imx8-isi/imx8-isi-hw.c#L345 杰森一家对 VC 有更好的支持,基本上允许您在单独的视频设备中接收每个 VC 的数据。但 Jetson CSI 并不在主线中。

最近,Linux 内核中添加了对每个 pad 多个流的实验性支持以及 v4l-utils(media-ctl、v4l2-ctl),并支持在 V4L2 子开发内的源和接收器之间路由这些流。

为虚拟频道添加适当的支持,这些部分已经准备就绪。

我已经开始为我的公司提供这些支持。

https://github.com/Demon000/linux/commit/eb72b5b4f28e0020e8eebc8c83791249590c4b12

https://github.com/Demon000/v4l-utils/commit/962364c29cd3a3d2eced53a5d4cd408e01436991

我还没有向主线发送这些内容的 RFC,但是您可以将它们挑选到您的内核分支中,以便让事情继续进行,直到添加主线支持。

© www.soinside.com 2019 - 2024. All rights reserved.