7.5. ioctl VIDIOC_DBG_G_CHIP_INFO¶
7.5.1. 名称¶
VIDIOC_DBG_G_CHIP_INFO - 识别电视卡上的芯片
7.5.2. 概要¶
-
VIDIOC_DBG_G_CHIP_INFO¶
int ioctl(int fd, VIDIOC_DBG_G_CHIP_INFO, struct v4l2_dbg_chip_info *argp)
7.5.3. 参数¶
fd
由
open()
返回的文件描述符。argp
指向结构体
v4l2_dbg_chip_info
的指针。
7.5.4. 描述¶
注意
这是一个 实验性 API 元素 接口,将来可能会更改。
出于驱动程序调试的目的,此 ioctl 允许测试应用程序查询驱动程序关于电视卡上存在的芯片的信息。常规应用程序不得使用它。当您发现某个芯片特定的错误时,请联系 linux-media 邮件列表 (https://linuxtv.org/lists.php),以便可以修复它。
此外,Linux 内核必须使用 CONFIG_VIDEO_ADV_DEBUG
选项进行编译才能启用此 ioctl。
要查询驱动程序,应用程序必须初始化结构体 v4l2_dbg_chip_info
的 match.type
和 match.addr
或 match.name
字段,并使用指向此结构的指针调用 ioctl VIDIOC_DBG_G_CHIP_INFO。成功后,驱动程序会将有关所选芯片的信息存储在 name
和 flags
字段中。
当 match.type
为 V4L2_CHIP_MATCH_BRIDGE
时,match.addr
选择电视卡上的第 n 个桥接“芯片”。您可以通过从零开始并将 match.addr
递增 1 来枚举所有芯片,直到 ioctl VIDIOC_DBG_G_CHIP_INFO 失败并出现 EINVAL
错误代码。数字零始终选择桥接芯片本身,例如,连接到 PCI 或 USB 总线的芯片。非零数字标识桥接芯片的特定部分,例如 AC97 寄存器块。
当 match.type
为 V4L2_CHIP_MATCH_SUBDEV
时,match.addr
选择第 n 个子设备。这允许您枚举所有子设备。
成功后,name
字段将包含芯片名称,如果驱动程序支持从设备读取寄存器,则 flags
字段将包含 V4L2_CHIP_FL_READABLE
,如果驱动程序支持向设备写入寄存器,则该字段将包含 V4L2_CHIP_FL_WRITABLE
。
我们建议使用 v4l2-dbg 实用程序,而不是直接调用此 ioctl。它可以从 LinuxTV v4l-dvb 存储库获得;有关访问说明,请参阅 https://linuxtv.org/repo/。
__u32 |
|
有关可能类型的列表,请参阅 芯片匹配类型。 |
union { |
(匿名) |
|
__u32 |
|
按此数字匹配芯片,根据 |
char |
|
按此名称匹配芯片,根据 |
} |
-
type v4l2_dbg_chip_info¶
|
如何匹配芯片,请参阅 结构体 v4l2_dbg_match。 |
|
char |
|
芯片的名称。 |
__u32 |
|
由驱动程序设置。如果设置了 |
__u32 |
|
保留字段,应用程序和驱动程序都必须将这些字段设置为 0。 |
|
0 |
匹配卡上的第 n 个芯片,零表示桥接芯片。不匹配子设备。 |
|
4 |
匹配第 n 个子设备。 |
7.5.5. 返回值¶
成功时返回 0,错误时返回 -1,并适当地设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。
- EINVAL
match_type
无效或无法匹配设备。