V4L2设备驱动开发:子设备注册与控制框架详解
1. V4L2子设备回调调用
在V4L2设备开发中,有时需要对所有子设备调用特定的回调函数。可以使用 v4l2_device_call_all 函数来实现这一目的,示例代码如下:
v4l2_device_call_all(dev, 0, core, g_chip_ident, &chip);
该函数会尝试对所有子设备调用指定的回调函数。如果某个子设备不支持该回调,会跳过该子设备,并且忽略错误结果。
如果需要检查错误,可以使用 v4l2_device_call_until_err 函数:
err = v4l2_device_call_until_err(dev, 0, core, g_chip_ident, &chip);
除了 -ENOIOCTLCMD 错误外,任何其他错误都会使循环退出,并返回该错误。如果没有发生错误(除 -ENOIOCTLCMD 外),则返回0。
2. 传统子设备注册与注销
子设备与桥接器的注册方式有两种,具体取决于媒体设备的性质:
- 同步模式 :这是传统的注册方法。在这种模式下,桥接器驱动负责注册子设备。子设备驱动可以在桥接器驱动内部实现,或者桥接器驱动需要找到一种方法来获取它所负责的子设
超级会员免费看
订阅专栏 解锁全文
6767

被折叠的 条评论
为什么被折叠?



