€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ-/translations/zh_CN/driver-api/media/v4l2-dev”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/zh_TW/driver-api/media/v4l2-dev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/it_IT/driver-api/media/v4l2-dev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ja_JP/driver-api/media/v4l2-dev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ko_KR/driver-api/media/v4l2-dev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/pt_BR/driver-api/media/v4l2-dev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/sp_SP/driver-api/media/v4l2-dev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒG/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ'Video device' s internal representation”h]”hŒ)Video device’ s internal representation”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒÇThe actual device nodes in the ``/dev`` directory are created using the :c:type:`video_device` struct (``v4l2-dev.h``). This struct can either be allocated dynamically or embedded in a larger struct.”h]”(hŒThe actual device nodes in the ”…”�”}”(hhßh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``/dev``”h]”hŒ/dev”…”�”}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhßubhŒ! directory are created using the ”…”�”}”(hhßh²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hhýh]”hŒ video_device”…”�”}”(hhÿh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œc”Œc-type”eh"]”h$]”h&]”uh1hçhhûubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/media/v4l2-dev”Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰Œ reftarget”Œ video_device”uh1hh³hÇh´KhhßubhŒ struct (”…”�”}”(hhßh²hh³Nh´Nubhè)�”}”(hŒ``v4l2-dev.h``”h]”hŒ v4l2-dev.h”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhßubhŒR). This struct can either be allocated dynamically or embedded in a larger struct.”…”�”}”(hhßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒrelease = video_device_release;”h]”hŒƒstruct video_device *vdev = video_device_alloc(); if (vdev == NULL) return -ENOMEM; vdev->release = video_device_release;”…”�”}”hjmsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”j Œhighlight_args”}”uh1jkh³hÇh´K hhÊh²hubhÞ)�”}”(hŒfIf you embed it in a larger struct, then you must set the ``release()`` callback to your own function:”h]”(hŒ:If you embed it in a larger struct, then you must set the ”…”�”}”(hjh²hh³Nh´Nubhè)�”}”(hŒ ``release()``”h]”hŒ release()”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubhŒ callback to your own function:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubjl)�”}”(hŒMstruct video_device *vdev = &my_vdev->vdev; vdev->release = my_vdev_release;”h]”hŒMstruct video_device *vdev = &my_vdev->vdev; vdev->release = my_vdev_release;”…”�”}”hjŸsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj{‰j|j j}}”uh1jkh³hÇh´KhhÊh²hubhÞ)�”}”(hŒeThe ``release()`` callback must be set and it is called when the last user of the video device exits.”h]”(hŒThe ”…”�”}”(hj®h²hh³Nh´Nubhè)�”}”(hŒ ``release()``”h]”hŒ release()”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj®ubhŒT callback must be set and it is called when the last user of the video device exits.”…”�”}”(hj®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒpThe default :c:func:`video_device_release` callback currently just calls ``kfree`` to free the allocated memory.”h]”(hŒ The default ”…”�”}”(hjÎh²hh³Nh´Nubh)�”}”(hŒ:c:func:`video_device_release`”h]”hè)�”}”(hjØh]”hŒvideo_device_release()”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjÖubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_device_release”uh1hh³hÇh´K!hjÎubhŒ callback currently just calls ”…”�”}”(hjÎh²hh³Nh´Nubhè)�”}”(hŒ ``kfree``”h]”hŒkfree”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÎubhŒ to free the allocated memory.”…”�”}”(hjÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K!hhÊh²hubhÞ)�”}”(hŒ·There is also a :c:func:`video_device_release_empty` function that does nothing (is empty) and should be used if the struct is embedded and there is nothing to do when it is released.”h]”(hŒThere is also a ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ$:c:func:`video_device_release_empty`”h]”hè)�”}”(hjh]”hŒvideo_device_release_empty()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_device_release_empty”uh1hh³hÇh´K$hjubhŒƒ function that does nothing (is empty) and should be used if the struct is embedded and there is nothing to do when it is released.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K$hhÊh²hubhÞ)�”}”(hŒ;You should also set these fields of :c:type:`video_device`:”h]”(hŒ$You should also set these fields of ”…”�”}”(hjBh²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjLh]”hŒ video_device”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjJubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K(hjBubhŒ:”…”�”}”(hjBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K(hhÊh²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒZ:c:type:`video_device`->v4l2_dev: must be set to the :c:type:`v4l2_device` parent device. ”h]”hÞ)�”}”(hŒY:c:type:`video_device`->v4l2_dev: must be set to the :c:type:`v4l2_device` parent device.”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hj„h]”hŒ video_device”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj‚ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K*hj~ubhŒ->v4l2_dev: must be set to the ”…”�”}”(hj~h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_device`”h]”hè)�”}”(hj§h]”hŒ v4l2_device”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ v4l2_device”uh1hh³hÇh´K*hj~ubhŒ parent device.”…”�”}”(hj~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K*hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjuh²hh³hÇh´Nubjy)�”}”(hŒG:c:type:`video_device`->name: set to something descriptive and unique. ”h]”hÞ)�”}”(hŒF:c:type:`video_device`->name: set to something descriptive and unique.”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjÞh]”hŒ video_device”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÜubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K-hjØubhŒ0->name: set to something descriptive and unique.”…”�”}”(hjØh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K-hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjuh²hh³hÇh´Nubjy)�”}”(hŒñ:c:type:`video_device`->vfl_dir: set this to ``VFL_DIR_RX`` for capture devices (``VFL_DIR_RX`` has value 0, so this is normally already the default), set to ``VFL_DIR_TX`` for output devices and ``VFL_DIR_M2M`` for mem2mem (codec) devices. ”h]”hÞ)�”}”(hŒð:c:type:`video_device`->vfl_dir: set this to ``VFL_DIR_RX`` for capture devices (``VFL_DIR_RX`` has value 0, so this is normally already the default), set to ``VFL_DIR_TX`` for output devices and ``VFL_DIR_M2M`` for mem2mem (codec) devices.”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjh]”hŒ video_device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K/hjubhŒ->vfl_dir: set this to ”…”�”}”(hjh²hh³Nh´Nubhè)�”}”(hŒ``VFL_DIR_RX``”h]”hŒ VFL_DIR_RX”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubhŒ for capture devices (”…”�”}”(hjh²hh³Nh´Nubhè)�”}”(hŒ``VFL_DIR_RX``”h]”hŒ VFL_DIR_RX”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubhŒ? has value 0, so this is normally already the default), set to ”…”�”}”(hjh²hh³Nh´Nubhè)�”}”(hŒ``VFL_DIR_TX``”h]”hŒ VFL_DIR_TX”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubhŒ for output devices and ”…”�”}”(hjh²hh³Nh´Nubhè)�”}”(hŒ``VFL_DIR_M2M``”h]”hŒ VFL_DIR_M2M”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubhŒ for mem2mem (codec) devices.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K/hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjuh²hh³hÇh´Nubjy)�”}”(hŒP:c:type:`video_device`->fops: set to the :c:type:`v4l2_file_operations` struct. ”h]”hÞ)�”}”(hŒO:c:type:`video_device`->fops: set to the :c:type:`v4l2_file_operations` struct.”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hj”h]”hŒ video_device”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj’ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K3hjŽubhŒ->fops: set to the ”…”�”}”(hjŽh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_file_operations`”h]”hè)�”}”(hj·h]”hŒv4l2_file_operations”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjµubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_file_operations”uh1hh³hÇh´K3hjŽubhŒ struct.”…”�”}”(hjŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K3hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjuh²hh³hÇh´Nubjy)�”}”(hXM:c:type:`video_device`->ioctl_ops: if you use the :c:type:`v4l2_ioctl_ops` to simplify ioctl maintenance (highly recommended to use this and it might become compulsory in the future!), then set this to your :c:type:`v4l2_ioctl_ops` struct. The :c:type:`video_device`->vfl_type and :c:type:`video_device`->vfl_dir fields are used to disable ops that do not match the type/dir combination. E.g. VBI ops are disabled for non-VBI nodes, and output ops are disabled for a capture device. This makes it possible to provide just one :c:type:`v4l2_ioctl_ops` struct for both vbi and video nodes. ”h]”hÞ)�”}”(hXL:c:type:`video_device`->ioctl_ops: if you use the :c:type:`v4l2_ioctl_ops` to simplify ioctl maintenance (highly recommended to use this and it might become compulsory in the future!), then set this to your :c:type:`v4l2_ioctl_ops` struct. The :c:type:`video_device`->vfl_type and :c:type:`video_device`->vfl_dir fields are used to disable ops that do not match the type/dir combination. E.g. VBI ops are disabled for non-VBI nodes, and output ops are disabled for a capture device. This makes it possible to provide just one :c:type:`v4l2_ioctl_ops` struct for both vbi and video nodes.”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjîh]”hŒ video_device”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjìubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K6hjèubhŒ->ioctl_ops: if you use the ”…”�”}”(hjèh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ioctl_ops`”h]”hè)�”}”(hjh]”hŒv4l2_ioctl_ops”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_ioctl_ops”uh1hh³hÇh´K6hjèubhŒ… to simplify ioctl maintenance (highly recommended to use this and it might become compulsory in the future!), then set this to your ”…”�”}”(hjèh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ioctl_ops`”h]”hè)�”}”(hj4h]”hŒv4l2_ioctl_ops”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj2ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_ioctl_ops”uh1hh³hÇh´K6hjèubhŒ struct. The ”…”�”}”(hjèh²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjWh]”hŒ video_device”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjUubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K6hjèubhŒ->vfl_type and ”…”�”}”(hjèh²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjzh]”hŒ video_device”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjxubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K6hjèubhŒà->vfl_dir fields are used to disable ops that do not match the type/dir combination. E.g. VBI ops are disabled for non-VBI nodes, and output ops are disabled for a capture device. This makes it possible to provide just one ”…”�”}”(hjèh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ioctl_ops`”h]”hè)�”}”(hj�h]”hŒv4l2_ioctl_ops”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj›ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_ioctl_ops”uh1hh³hÇh´K6hjèubhŒ% struct for both vbi and video nodes.”…”�”}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjuh²hh³hÇh´Nubjy)�”}”(hXP:c:type:`video_device`->lock: leave to ``NULL`` if you want to do all the locking in the driver. Otherwise you give it a pointer to a struct ``mutex_lock`` and before the :c:type:`video_device`->unlocked_ioctl file operation is called this lock will be taken by the core and released afterwards. See the next section for more details. ”h]”hÞ)�”}”(hXO:c:type:`video_device`->lock: leave to ``NULL`` if you want to do all the locking in the driver. Otherwise you give it a pointer to a struct ``mutex_lock`` and before the :c:type:`video_device`->unlocked_ioctl file operation is called this lock will be taken by the core and released afterwards. See the next section for more details.”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjÔh]”hŒ video_device”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÒubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K@hjÎubhŒ->lock: leave to ”…”�”}”(hjÎh²hh³Nh´Nubhè)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÎubhŒ_ if you want to do all the locking in the driver. Otherwise you give it a pointer to a struct ”…”�”}”(hjÎh²hh³Nh´Nubhè)�”}”(hŒ``mutex_lock``”h]”hŒ mutex_lock”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÎubhŒ and before the ”…”�”}”(hjÎh²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjh]”hŒ video_device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K@hjÎubhŒ�->unlocked_ioctl file operation is called this lock will be taken by the core and released afterwards. See the next section for more details.”…”�”}”(hjÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K@hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjuh²hh³hÇh´Nubjy)�”}”(hX{:c:type:`video_device`->queue: a pointer to the struct vb2_queue associated with this device node. If queue is not ``NULL``, and queue->lock is not ``NULL``, then queue->lock is used for the queuing ioctls (``VIDIOC_REQBUFS``, ``CREATE_BUFS``, ``QBUF``, ``DQBUF``, ``QUERYBUF``, ``PREPARE_BUF``, ``STREAMON`` and ``STREAMOFF``) instead of the lock above. That way the :ref:`vb2 ` queuing framework does not have to wait for other ioctls. This queue pointer is also used by the :ref:`vb2 ` helper functions to check for queuing ownership (i.e. is the filehandle calling it allowed to do the operation). ”h]”hÞ)�”}”(hXz:c:type:`video_device`->queue: a pointer to the struct vb2_queue associated with this device node. If queue is not ``NULL``, and queue->lock is not ``NULL``, then queue->lock is used for the queuing ioctls (``VIDIOC_REQBUFS``, ``CREATE_BUFS``, ``QBUF``, ``DQBUF``, ``QUERYBUF``, ``PREPARE_BUF``, ``STREAMON`` and ``STREAMOFF``) instead of the lock above. That way the :ref:`vb2 ` queuing framework does not have to wait for other ioctls. This queue pointer is also used by the :ref:`vb2 ` helper functions to check for queuing ownership (i.e. is the filehandle calling it allowed to do the operation).”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjRh]”hŒ video_device”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjPubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´KFhjLubhŒ]->queue: a pointer to the struct vb2_queue associated with this device node. If queue is not ”…”�”}”(hjLh²hh³Nh´Nubhè)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjLubhŒ, and queue->lock is not ”…”�”}”(hjLh²hh³Nh´Nubhè)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjLubhŒ3, then queue->lock is used for the queuing ioctls (”…”�”}”(hjLh²hh³Nh´Nubhè)�”}”(hŒ``VIDIOC_REQBUFS``”h]”hŒVIDIOC_REQBUFS”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjLubhŒ, ”…”�”}”(hjLh²hh³Nh´Nubhè)�”}”(hŒ``CREATE_BUFS``”h]”hŒ CREATE_BUFS”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjLubhŒ, ”…”�”}”(hjLh²hh³Nh´Nubhè)�”}”(hŒ``QBUF``”h]”hŒQBUF”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjLubhŒ, ”…”�”}”hjLsbhè)�”}”(hŒ ``DQBUF``”h]”hŒDQBUF”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjLubhŒ, ”…”�”}”(hjLh²hh³Nh´Nubhè)�”}”(hŒ ``QUERYBUF``”h]”hŒQUERYBUF”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjLubhŒ, ”…”�”}”hjLsbhè)�”}”(hŒ``PREPARE_BUF``”h]”hŒ PREPARE_BUF”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjLubhŒ, ”…”�”}”hjLsbhè)�”}”(hŒ ``STREAMON``”h]”hŒSTREAMON”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjLubhŒ and ”…”�”}”(hjLh²hh³Nh´Nubhè)�”}”(hŒ ``STREAMOFF``”h]”hŒ STREAMOFF”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjLubhŒ*) instead of the lock above. That way the ”…”�”}”(hjLh²hh³Nh´Nubh)�”}”(hŒ:ref:`vb2 `”h]”hŒinline”“”)�”}”(hj)h]”hŒvb2”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j+hj'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j7Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ vb2_framework”uh1hh³hÇh´KFhjLubhŒd queuing framework does not have to wait for other ioctls. This queue pointer is also used by the ”…”�”}”(hjLh²hh³Nh´Nubh)�”}”(hŒ:ref:`vb2 `”h]”j,)�”}”(hjOh]”hŒvb2”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j+hjMubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j[Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ vb2_framework”uh1hh³hÇh´KFhjLubhŒq helper functions to check for queuing ownership (i.e. is the filehandle calling it allowed to do the operation).”…”�”}”(hjLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KFhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjuh²hh³hÇh´Nubjy)�”}”(hXn:c:type:`video_device`->prio: keeps track of the priorities. Used to implement ``VIDIOC_G_PRIORITY`` and ``VIDIOC_S_PRIORITY``. If left to ``NULL``, then it will use the struct v4l2_prio_state in :c:type:`v4l2_device`. If you want to have a separate priority state per (group of) device node(s), then you can point it to your own struct :c:type:`v4l2_prio_state`. ”h]”hÞ)�”}”(hXm:c:type:`video_device`->prio: keeps track of the priorities. Used to implement ``VIDIOC_G_PRIORITY`` and ``VIDIOC_S_PRIORITY``. If left to ``NULL``, then it will use the struct v4l2_prio_state in :c:type:`v4l2_device`. If you want to have a separate priority state per (group of) device node(s), then you can point it to your own struct :c:type:`v4l2_prio_state`.”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hj‡h]”hŒ video_device”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj…ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´KRhj�ubhŒ9->prio: keeps track of the priorities. Used to implement ”…”�”}”(hj�h²hh³Nh´Nubhè)�”}”(hŒ``VIDIOC_G_PRIORITY``”h]”hŒVIDIOC_G_PRIORITY”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj�ubhŒ and ”…”�”}”(hj�h²hh³Nh´Nubhè)�”}”(hŒ``VIDIOC_S_PRIORITY``”h]”hŒVIDIOC_S_PRIORITY”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj�ubhŒ . If left to ”…”�”}”(hj�h²hh³Nh´Nubhè)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj�ubhŒ1, then it will use the struct v4l2_prio_state in ”…”�”}”(hj�h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_device`”h]”hè)�”}”(hjàh]”hŒ v4l2_device”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÞubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ v4l2_device”uh1hh³hÇh´KRhj�ubhŒz. If you want to have a separate priority state per (group of) device node(s), then you can point it to your own struct ”…”�”}”(hj�h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_prio_state`”h]”hè)�”}”(hjh]”hŒv4l2_prio_state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_prio_state”uh1hh³hÇh´KRhj�ubhŒ.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjuh²hh³hÇh´Nubjy)�”}”(hXÅ:c:type:`video_device`->dev_parent: you only set this if v4l2_device was registered with ``NULL`` as the parent ``device`` struct. This only happens in cases where one hardware device has multiple PCI devices that all share the same :c:type:`v4l2_device` core. The cx88 driver is an example of this: one core :c:type:`v4l2_device` struct, but it is used by both a raw video PCI device (cx8800) and a MPEG PCI device (cx8802). Since the :c:type:`v4l2_device` cannot be associated with two PCI devices at the same time it is setup without a parent device. But when the struct video_device is initialized you **do** know which parent PCI device to use and so you set ``dev_device`` to the correct PCI device. ”h]”(hÞ)�”}”(hX:c:type:`video_device`->dev_parent: you only set this if v4l2_device was registered with ``NULL`` as the parent ``device`` struct. This only happens in cases where one hardware device has multiple PCI devices that all share the same :c:type:`v4l2_device` core.”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hj:h]”hŒ video_device”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´KYhj4ubhŒC->dev_parent: you only set this if v4l2_device was registered with ”…”�”}”(hj4h²hh³Nh´Nubhè)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj4ubhŒ as the parent ”…”�”}”(hj4h²hh³Nh´Nubhè)�”}”(hŒ ``device``”h]”hŒdevice”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj4ubhŒo struct. This only happens in cases where one hardware device has multiple PCI devices that all share the same ”…”�”}”(hj4h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_device`”h]”hè)�”}”(hj�h]”hŒ v4l2_device”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ v4l2_device”uh1hh³hÇh´KYhj4ubhŒ core.”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KYhj0ubhÞ)�”}”(hX¾The cx88 driver is an example of this: one core :c:type:`v4l2_device` struct, but it is used by both a raw video PCI device (cx8800) and a MPEG PCI device (cx8802). Since the :c:type:`v4l2_device` cannot be associated with two PCI devices at the same time it is setup without a parent device. But when the struct video_device is initialized you **do** know which parent PCI device to use and so you set ``dev_device`` to the correct PCI device.”h]”(hŒ0The cx88 driver is an example of this: one core ”…”�”}”(hj¨h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_device`”h]”hè)�”}”(hj²h]”hŒ v4l2_device”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj°ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ v4l2_device”uh1hh³hÇh´K^hj¨ubhŒl struct, but it is used by both a raw video PCI device (cx8800) and a MPEG PCI device (cx8802). Since the ”…”�”}”(hj¨h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_device`”h]”hè)�”}”(hjÕh]”hŒ v4l2_device”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÓubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ v4l2_device”uh1hh³hÇh´K^hj¨ubhŒ• cannot be associated with two PCI devices at the same time it is setup without a parent device. But when the struct video_device is initialized you ”…”�”}”(hj¨h²hh³Nh´NubhŒstrong”“”)�”}”(hŒ**do**”h]”hŒdo”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj¨ubhŒ4 know which parent PCI device to use and so you set ”…”�”}”(hj¨h²hh³Nh´Nubhè)�”}”(hŒ``dev_device``”h]”hŒ dev_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¨ubhŒ to the correct PCI device.”…”�”}”(hj¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K^hj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjuh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jsh³hÇh´K*hhÊh²hubhÞ)�”}”(hŒ¨If you use :c:type:`v4l2_ioctl_ops`, then you should set :c:type:`video_device`->unlocked_ioctl to :c:func:`video_ioctl2` in your :c:type:`v4l2_file_operations` struct.”h]”(hŒ If you use ”…”�”}”(hj0h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ioctl_ops`”h]”hè)�”}”(hj:h]”hŒv4l2_ioctl_ops”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_ioctl_ops”uh1hh³hÇh´Kehj0ubhŒ, then you should set ”…”�”}”(hj0h²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hj]h]”hŒ video_device”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´Kehj0ubhŒ->unlocked_ioctl to ”…”�”}”(hj0h²hh³Nh´Nubh)�”}”(hŒ:c:func:`video_ioctl2`”h]”hè)�”}”(hj€h]”hŒvideo_ioctl2()”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhj~ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒ video_ioctl2”uh1hh³hÇh´Kehj0ubhŒ in your ”…”�”}”(hj0h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_file_operations`”h]”hè)�”}”(hj£h]”hŒv4l2_file_operations”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj¡ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_file_operations”uh1hh³hÇh´Kehj0ubhŒ struct.”…”�”}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KehhÊh²hubhÞ)�”}”(hŒáIn some cases you want to tell the core that a function you had specified in your :c:type:`v4l2_ioctl_ops` should be ignored. You can mark such ioctls by calling this function before :c:func:`video_register_device` is called:”h]”(hŒRIn some cases you want to tell the core that a function you had specified in your ”…”�”}”(hjÊh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ioctl_ops`”h]”hè)�”}”(hjÔh]”hŒv4l2_ioctl_ops”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÒubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_ioctl_ops”uh1hh³hÇh´KihjÊubhŒM should be ignored. You can mark such ioctls by calling this function before ”…”�”}”(hjÊh²hh³Nh´Nubh)�”}”(hŒ:c:func:`video_register_device`”h]”hè)�”}”(hj÷h]”hŒvideo_register_device()”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjõubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_register_device”uh1hh³hÇh´KihjÊubhŒ is called:”…”�”}”(hjÊh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KihhÊh²hubhŒ block_quote”“”)�”}”(hŒX:c:func:`v4l2_disable_ioctl ` (:c:type:`vdev `, cmd). ”h]”hÞ)�”}”(hŒW:c:func:`v4l2_disable_ioctl ` (:c:type:`vdev `, cmd).”h]”(h)�”}”(hŒ1:c:func:`v4l2_disable_ioctl `”h]”hè)�”}”(hj* h]”hŒv4l2_disable_ioctl”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhj( ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”ˆŒrefwarn”‰jŒv4l2_disable_ioctl”uh1hh³hÇh´Kmhj$ ubhŒ (”…”�”}”(hj$ h²hh³Nh´Nubh)�”}”(hŒ:c:type:`vdev `”h]”hè)�”}”(hjM h]”hŒvdev”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjK ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jŒ video_device”uh1hh³hÇh´Kmhj$ ubhŒ, cmd).”…”�”}”(hj$ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kmhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KmhhÊh²hubhÞ)�”}”(hŒ¼This tends to be needed if based on external factors (e.g. which card is being used) you want to turns off certain features in :c:type:`v4l2_ioctl_ops` without having to make a new struct.”h]”(hŒThis tends to be needed if based on external factors (e.g. which card is being used) you want to turns off certain features in ”…”�”}”(hjz h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ioctl_ops`”h]”hè)�”}”(hj„ h]”hŒv4l2_ioctl_ops”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj‚ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_ioctl_ops”uh1hh³hÇh´Kphjz ubhŒ% without having to make a new struct.”…”�”}”(hjz h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KphhÊh²hubhÞ)�”}”(hŒ›The :c:type:`v4l2_file_operations` struct is a subset of file_operations. The main difference is that the inode argument is omitted since it is never used.”h]”(hŒThe ”…”�”}”(hj« h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_file_operations`”h]”hè)�”}”(hjµ h]”hŒv4l2_file_operations”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj³ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_file_operations”uh1hh³hÇh´Kthj« ubhŒy struct is a subset of file_operations. The main difference is that the inode argument is omitted since it is never used.”…”�”}”(hj« h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KthhÊh²hubhÞ)�”}”(hŒÒIf integration with the media framework is needed, you must initialize the :c:type:`media_entity` struct embedded in the :c:type:`video_device` struct (entity field) by calling :c:func:`media_entity_pads_init`:”h]”(hŒKIf integration with the media framework is needed, you must initialize the ”…”�”}”(hjÜ h²hh³Nh´Nubh)�”}”(hŒ:c:type:`media_entity`”h]”hè)�”}”(hjæ h]”hŒ media_entity”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjä ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ media_entity”uh1hh³hÇh´KxhjÜ ubhŒ struct embedded in the ”…”�”}”(hjÜ h²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hj h]”hŒ video_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´KxhjÜ ubhŒ" struct (entity field) by calling ”…”�”}”(hjÜ h²hh³Nh´Nubh)�”}”(hŒ :c:func:`media_entity_pads_init`”h]”hè)�”}”(hj, h]”hŒmedia_entity_pads_init()”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhj* ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒmedia_entity_pads_init”uh1hh³hÇh´KxhjÜ ubhŒ:”…”�”}”(hjÜ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KxhhÊh²hubjl)�”}”(hŒestruct media_pad *pad = &my_vdev->pad; int err; err = media_entity_pads_init(&vdev->entity, 1, pad);”h]”hŒestruct media_pad *pad = &my_vdev->pad; int err; err = media_entity_pads_init(&vdev->entity, 1, pad);”…”�”}”hjS sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj{‰j|j j}}”uh1jkh³hÇh´K|hhÊh²hubhÞ)�”}”(hŒ„The pads array must have been previously initialized. There is no need to manually set the struct media_entity type and name fields.”h]”hŒ„The pads array must have been previously initialized. There is no need to manually set the struct media_entity type and name fields.”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KƒhhÊh²hubhÞ)�”}”(hŒiA reference to the entity will be automatically acquired/released when the video device is opened/closed.”h]”hŒiA reference to the entity will be automatically acquired/released when the video device is opened/closed.”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K†hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒioctls and locking”h]”hŒioctls and locking”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj~ h²hh³hÇh´KŠubhÞ)�”}”(hŒåThe V4L core provides optional locking services. The main service is the lock field in struct video_device, which is a pointer to a mutex. If you set this pointer, then that will be used by unlocked_ioctl to serialize all ioctls.”h]”hŒåThe V4L core provides optional locking services. The main service is the lock field in struct video_device, which is a pointer to a mutex. If you set this pointer, then that will be used by unlocked_ioctl to serialize all ioctls.”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KŒhj~ h²hubhÞ)�”}”(hX=If you are using the :ref:`videobuf2 framework `, then there is a second lock that you can set: :c:type:`video_device`->queue->lock. If set, then this lock will be used instead of :c:type:`video_device`->lock to serialize all queuing ioctls (see the previous section for the full list of those ioctls).”h]”(hŒIf you are using the ”…”�”}”(hj� h²hh³Nh´Nubh)�”}”(hŒ*:ref:`videobuf2 framework `”h]”j,)�”}”(hj§ h]”hŒvideobuf2 framework”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j+hj¥ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j³ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ vb2_framework”uh1hh³hÇh´K‘hj� ubhŒ0, then there is a second lock that you can set: ”…”�”}”(hj� h²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjË h]”hŒ video_device”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÉ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K‘hj� ubhŒ>->queue->lock. If set, then this lock will be used instead of ”…”�”}”(hj� h²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjî h]”hŒ video_device”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjì ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K‘hj� ubhŒd->lock to serialize all queuing ioctls (see the previous section for the full list of those ioctls).”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K‘hj~ h²hubhÞ)�”}”(hXfThe advantage of using a different lock for the queuing ioctls is that for some drivers (particularly USB drivers) certain commands such as setting controls can take a long time, so you want to use a separate lock for the buffer queuing ioctls. That way your ``VIDIOC_DQBUF`` doesn't stall because the driver is busy changing the e.g. exposure of the webcam.”h]”(hXThe advantage of using a different lock for the queuing ioctls is that for some drivers (particularly USB drivers) certain commands such as setting controls can take a long time, so you want to use a separate lock for the buffer queuing ioctls. That way your ”…”�”}”(hj h²hh³Nh´Nubhè)�”}”(hŒ``VIDIOC_DQBUF``”h]”hŒ VIDIOC_DQBUF”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj ubhŒU doesn’t stall because the driver is busy changing the e.g. exposure of the webcam.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K—hj~ h²hubhÞ)�”}”(hŒ`Of course, you can always do all the locking yourself by leaving both lock pointers at ``NULL``.”h]”(hŒWOf course, you can always do all the locking yourself by leaving both lock pointers at ”…”�”}”(hj5 h²hh³Nh´Nubhè)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj5 ubhŒ.”…”�”}”(hj5 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K�hj~ h²hubhÞ)�”}”(hX In the case of :ref:`videobuf2 ` you must set the ``queue->lock`` pointer to the lock you use to serialize the queuing ioctls. This ensures that that lock is released while waiting in ``VIDIOC_DQBUF`` for a buffer to arrive, and it is retaken afterwards.”h]”(hŒIn the case of ”…”�”}”(hjU h²hh³Nh´Nubh)�”}”(hŒ :ref:`videobuf2 `”h]”j,)�”}”(hj_ h]”hŒ videobuf2”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j+hj] ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jk Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ vb2_framework”uh1hh³hÇh´K hjU ubhŒ you must set the ”…”�”}”(hjU h²hh³Nh´Nubhè)�”}”(hŒ``queue->lock``”h]”hŒ queue->lock”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjU ubhŒw pointer to the lock you use to serialize the queuing ioctls. This ensures that that lock is released while waiting in ”…”�”}”(hjU h²hh³Nh´Nubhè)�”}”(hŒ``VIDIOC_DQBUF``”h]”hŒ VIDIOC_DQBUF”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjU ubhŒ6 for a buffer to arrive, and it is retaken afterwards.”…”�”}”(hjU h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hj~ h²hubhÞ)�”}”(hX‰The implementation of a hotplug disconnect should also take the lock from :c:type:`video_device` before calling v4l2_device_disconnect. If you are also using :c:type:`video_device`->queue->lock, then you have to first lock :c:type:`video_device`->queue->lock followed by :c:type:`video_device`->lock. That way you can be sure no ioctl is running when you call :c:func:`v4l2_device_disconnect`.”h]”(hŒJThe implementation of a hotplug disconnect should also take the lock from ”…”�”}”(hj« h²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjµ h]”hŒ video_device”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj³ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K¥hj« ubhŒ> before calling v4l2_device_disconnect. If you are also using ”…”�”}”(hj« h²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjØ h]”hŒ video_device”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÖ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K¥hj« ubhŒ+->queue->lock, then you have to first lock ”…”�”}”(hj« h²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjû h]”hŒ video_device”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjù ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K¥hj« ubhŒ->queue->lock followed by ”…”�”}”(hj« h²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hj h]”hŒ video_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K¥hj« ubhŒC->lock. That way you can be sure no ioctl is running when you call ”…”�”}”(hj« h²hh³Nh´Nubh)�”}”(hŒ :c:func:`v4l2_device_disconnect`”h]”hè)�”}”(hjA h]”hŒv4l2_device_disconnect()”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhj? ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_device_disconnect”uh1hh³hÇh´K¥hj« ubhŒ.”…”�”}”(hj« h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¥hj~ h²hubeh}”(h]”Œioctls-and-locking”ah ]”h"]”Œioctls and locking”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KŠubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒVideo device registration”h]”hŒVideo device registration”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjp h²hh³hÇh´K­ubhÞ)�”}”(hŒwNext you register the video device with :c:func:`video_register_device`. This will create the character device for you.”h]”(hŒ(Next you register the video device with ”…”�”}”(hj� h²hh³Nh´Nubh)�”}”(hŒ:c:func:`video_register_device`”h]”hè)�”}”(hj‹ h]”hŒvideo_register_device()”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhj‰ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_register_device”uh1hh³hÇh´K¯hj� ubhŒ0. This will create the character device for you.”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¯hjp h²hubjl)�”}”(hŒ”err = video_register_device(vdev, VFL_TYPE_VIDEO, -1); if (err) { video_device_release(vdev); /* or kfree(my_vdev); */ return err; }”h]”hŒ”err = video_register_device(vdev, VFL_TYPE_VIDEO, -1); if (err) { video_device_release(vdev); /* or kfree(my_vdev); */ return err; }”…”�”}”hj² sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj{‰j|j j}}”uh1jkh³hÇh´K²hjp h²hubhÞ)�”}”(hŒ™If the :c:type:`v4l2_device` parent device has a not ``NULL`` mdev field, the video device entity will be automatically registered with the media device.”h]”(hŒIf the ”…”�”}”(hjÁ h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_device`”h]”hè)�”}”(hjË h]”hŒ v4l2_device”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÉ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ v4l2_device”uh1hh³hÇh´KºhjÁ ubhŒ parent device has a not ”…”�”}”(hjÁ h²hh³Nh´Nubhè)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÁ ubhŒ\ mdev field, the video device entity will be automatically registered with the media device.”…”�”}”(hjÁ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kºhjp h²hubhÞ)�”}”(hŒSWhich device is registered depends on the type argument. The following types exist:”h]”hŒSWhich device is registered depends on the type argument. The following types exist:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¾hjp h²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j hj ubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j hj ubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j hj ubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÞ)�”}”(hŒ:c:type:`vfl_devnode_type`”h]”h)�”}”(hjM h]”hè)�”}”(hjM h]”hŒvfl_devnode_type”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjO ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒvfl_devnode_type”uh1hh³hÇh´KÃhjK ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÂhjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjC ubjG )�”}”(hhh]”hÞ)�”}”(hŒ Device name”h]”hŒ Device name”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÂhjy ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjC ubjG )�”}”(hhh]”hÞ)�”}”(hŒUsage”h]”hŒUsage”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÂhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjC ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1j< hj ubhŒtbody”“”)�”}”(hhh]”(jB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ``VFL_TYPE_VIDEO``”h]”hè)�”}”(hjÀ h]”hŒVFL_TYPE_VIDEO”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÄhj» ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj¸ ubjG )�”}”(hhh]”hÞ)�”}”(hŒ``/dev/videoX``”h]”hè)�”}”(hjà h]”hŒ /dev/videoX”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÞ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÄhjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj¸ ubjG )�”}”(hhh]”hÞ)�”}”(hŒfor video input/output devices”h]”hŒfor video input/output devices”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÄhjû ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj¸ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjµ ubjB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ``VFL_TYPE_VBI``”h]”hè)�”}”(hj h]”hŒ VFL_TYPE_VBI”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÅhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjubjG )�”}”(hhh]”hÞ)�”}”(hŒ ``/dev/vbiX``”h]”hè)�”}”(hj@h]”hŒ /dev/vbiX”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÅhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjubjG )�”}”(hhh]”hÞ)�”}”(hŒ8for vertical blank data (i.e. closed captions, teletext)”h]”hŒ8for vertical blank data (i.e. closed captions, teletext)”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÅhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjµ ubjB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ``VFL_TYPE_RADIO``”h]”hè)�”}”(hj€h]”hŒVFL_TYPE_RADIO”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÇhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjxubjG )�”}”(hhh]”hÞ)�”}”(hŒ``/dev/radioX``”h]”hè)�”}”(hj h]”hŒ /dev/radioX”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÇhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjxubjG )�”}”(hhh]”hÞ)�”}”(hŒfor radio tuners”h]”hŒfor radio tuners”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÇhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjµ ubjB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ``VFL_TYPE_SUBDEV``”h]”hè)�”}”(hjàh]”hŒVFL_TYPE_SUBDEV”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÈhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjØubjG )�”}”(hhh]”hÞ)�”}”(hŒ``/dev/v4l-subdevX``”h]”hè)�”}”(hjh]”hŒ/dev/v4l-subdevX”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÈhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjØubjG )�”}”(hhh]”hÞ)�”}”(hŒfor V4L2 subdevices”h]”hŒfor V4L2 subdevices”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÈhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjµ ubjB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ``VFL_TYPE_SDR``”h]”hè)�”}”(hj@h]”hŒ VFL_TYPE_SDR”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÉhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj8ubjG )�”}”(hhh]”hÞ)�”}”(hŒ``/dev/swradioX``”h]”hè)�”}”(hj`h]”hŒ /dev/swradioX”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÉhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj8ubjG )�”}”(hhh]”hÞ)�”}”(hŒ'for Software Defined Radio (SDR) tuners”h]”hŒ'for Software Defined Radio (SDR) tuners”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÉhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjµ ubjB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ``VFL_TYPE_TOUCH``”h]”hè)�”}”(hj h]”hŒVFL_TYPE_TOUCH”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KËhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj˜ubjG )�”}”(hhh]”hÞ)�”}”(hŒ``/dev/v4l-touchX``”h]”hè)�”}”(hjÀh]”hŒ/dev/v4l-touchX”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KËhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj˜ubjG )�”}”(hhh]”hÞ)�”}”(hŒfor touch sensors”h]”hŒfor touch sensors”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KËhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjµ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³ hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjp h²hh³hÇh´NubhÞ)�”}”(hXnThe last argument gives you a certain amount of control over the device node number used (i.e. the X in ``videoX``). Normally you will pass -1 to let the v4l2 framework pick the first free number. But sometimes users want to select a specific node number. It is common that drivers allow the user to select a specific device node number through a driver module option. That number is then passed to this function and video_register_device will attempt to select that device node number. If that number was already in use, then the next free device node number will be selected and it will send a warning to the kernel log.”h]”(hŒhThe last argument gives you a certain amount of control over the device node number used (i.e. the X in ”…”�”}”(hj h²hh³Nh´Nubhè)�”}”(hŒ ``videoX``”h]”hŒvideoX”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj ubhXü). Normally you will pass -1 to let the v4l2 framework pick the first free number. But sometimes users want to select a specific node number. It is common that drivers allow the user to select a specific device node number through a driver module option. That number is then passed to this function and video_register_device will attempt to select that device node number. If that number was already in use, then the next free device node number will be selected and it will send a warning to the kernel log.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÎhjp h²hubhÞ)�”}”(hXÉAnother use-case is if a driver creates many devices. In that case it can be useful to place different video devices in separate ranges. For example, video capture devices start at 0, video output devices start at 16. So you can use the last argument to specify a minimum device node number and the v4l2 framework will try to pick the first free number that is equal or higher to what you passed. If that fails, then it will just pick the first free number.”h]”hXÉAnother use-case is if a driver creates many devices. In that case it can be useful to place different video devices in separate ranges. For example, video capture devices start at 0, video output devices start at 16. So you can use the last argument to specify a minimum device node number and the v4l2 framework will try to pick the first free number that is equal or higher to what you passed. If that fails, then it will just pick the first free number.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KØhjp h²hubhÞ)�”}”(hŒ¾Since in this case you do not care about a warning about not being able to select the specified device node number, you can call the function :c:func:`video_register_device_no_warn` instead.”h]”(hŒŽSince in this case you do not care about a warning about not being able to select the specified device node number, you can call the function ”…”�”}”(hj9h²hh³Nh´Nubh)�”}”(hŒ':c:func:`video_register_device_no_warn`”h]”hè)�”}”(hjCh]”hŒvideo_register_device_no_warn()”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjAubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_register_device_no_warn”uh1hh³hÇh´Kàhj9ubhŒ instead.”…”�”}”(hj9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kàhjp h²hubhÞ)�”}”(hX Whenever a device node is created some attributes are also created for you. If you look in ``/sys/class/video4linux`` you see the devices. Go into e.g. ``video0`` and you will see 'name', 'dev_debug' and 'index' attributes. The 'name' attribute is the 'name' field of the video_device struct. The 'dev_debug' attribute can be used to enable core debugging. See the next section for more detailed information on this.”h]”(hŒ[Whenever a device node is created some attributes are also created for you. If you look in ”…”�”}”(hjjh²hh³Nh´Nubhè)�”}”(hŒ``/sys/class/video4linux``”h]”hŒ/sys/class/video4linux”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjjubhŒ# you see the devices. Go into e.g. ”…”�”}”(hjjh²hh³Nh´Nubhè)�”}”(hŒ ``video0``”h]”hŒvideo0”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjjubhX and you will see ‘name’, ‘dev_debug’ and ‘index’ attributes. The ‘name’ attribute is the ‘name’ field of the video_device struct. The ‘dev_debug’ attribute can be used to enable core debugging. See the next section for more detailed information on this.”…”�”}”(hjjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kähjp h²hubhÞ)�”}”(hŒÐThe 'index' attribute is the index of the device node: for each call to :c:func:`video_register_device()` the index is just increased by 1. The first video device node you register always starts with index 0.”h]”(hŒLThe ‘index’ attribute is the index of the device node: for each call to ”…”�”}”(hjœh²hh³Nh´Nubh)�”}”(hŒ!:c:func:`video_register_device()`”h]”hè)�”}”(hj¦h]”hŒvideo_register_device()”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhj¤ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_register_device”uh1hh³hÇh´KëhjœubhŒg the index is just increased by 1. The first video device node you register always starts with index 0.”…”�”}”(hjœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Këhjp h²hubhÞ)�”}”(hŒŽUsers can setup udev rules that utilize the index attribute to make fancy device names (e.g. '``mpegX``' for MPEG video capture device nodes).”h]”(hŒ`Users can setup udev rules that utilize the index attribute to make fancy device names (e.g. ‘”…”�”}”(hjÍh²hh³Nh´Nubhè)�”}”(hŒ ``mpegX``”h]”hŒmpegX”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÍubhŒ)’ for MPEG video capture device nodes).”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kïhjp h²hubhÞ)�”}”(hŒLAfter the device was successfully registered, then you can use these fields:”h]”hŒLAfter the device was successfully registered, then you can use these fields:”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kòhjp h²hubjt)�”}”(hhh]”(jy)�”}”(hŒ\:c:type:`video_device`->vfl_type: the device type passed to :c:func:`video_register_device`.”h]”hÞ)�”}”(hŒ\:c:type:`video_device`->vfl_type: the device type passed to :c:func:`video_register_device`.”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjh]”hŒ video_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´KôhjubhŒ&->vfl_type: the device type passed to ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:func:`video_register_device`”h]”hè)�”}”(hj+h]”hŒvideo_register_device()”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhj)ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_register_device”uh1hh³hÇh´KôhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kôhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjûh²hh³hÇh´Nubjy)�”}”(hŒ@:c:type:`video_device`->minor: the assigned device minor number.”h]”hÞ)�”}”(hjZh]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjah]”hŒ video_device”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´Köhj\ubhŒ*->minor: the assigned device minor number.”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KöhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjûh²hh³hÇh´Nubjy)�”}”(hŒO:c:type:`video_device`->num: the device node number (i.e. the X in ``videoX``).”h]”hÞ)�”}”(hŒO:c:type:`video_device`->num: the device node number (i.e. the X in ``videoX``).”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hj˜h]”hŒ video_device”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj–ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´K÷hj’ubhŒ-->num: the device node number (i.e. the X in ”…”�”}”(hj’h²hh³Nh´Nubhè)�”}”(hŒ ``videoX``”h]”hŒvideoX”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj’ubhŒ).”…”�”}”(hj’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K÷hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjûh²hh³hÇh´Nubjy)�”}”(hŒ8:c:type:`video_device`->index: the device index number. ”h]”hÞ)�”}”(hŒ7:c:type:`video_device`->index: the device index number.”h]”(h)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjáh]”hŒ video_device”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjßubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´KùhjÛubhŒ!->index: the device index number.”…”�”}”(hjÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kùhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjûh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jsh³hÇh´Kôhjp h²hubhÞ)�”}”(hXrIf the registration failed, then you need to call :c:func:`video_device_release` to free the allocated :c:type:`video_device` struct, or free your own struct if the :c:type:`video_device` was embedded in it. The ``vdev->release()`` callback will never be called if the registration failed, nor should you ever attempt to unregister the device if the registration failed.”h]”(hŒ2If the registration failed, then you need to call ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:func:`video_device_release`”h]”hè)�”}”(hjh]”hŒvideo_device_release()”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_device_release”uh1hh³hÇh´KûhjubhŒ to free the allocated ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjAh]”hŒ video_device”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj?ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´KûhjubhŒ( struct, or free your own struct if the ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjdh]”hŒ video_device”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjbubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´KûhjubhŒ was embedded in it. The ”…”�”}”(hjh²hh³Nh´Nubhè)�”}”(hŒ``vdev->release()``”h]”hŒvdev->release()”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubhŒ‹ callback will never be called if the registration failed, nor should you ever attempt to unregister the device if the registration failed.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kûhjp h²hubeh}”(h]”Œvideo-device-registration”ah ]”h"]”Œvideo device registration”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K­ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒvideo device debugging”h]”hŒvideo device debugging”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¥h²hh³hÇh´MubhÞ)�”}”(hŒ­The 'dev_debug' attribute that is created for each video, vbi, radio or swradio device in ``/sys/class/video4linux//`` allows you to enable logging of file operations.”h]”(hŒ^The ‘dev_debug’ attribute that is created for each video, vbi, radio or swradio device in ”…”�”}”(hj¶h²hh³Nh´Nubhè)�”}”(hŒ"``/sys/class/video4linux//``”h]”hŒ/sys/class/video4linux//”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¶ubhŒ1 allows you to enable logging of file operations.”…”�”}”(hj¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj¥h²hubhÞ)�”}”(hŒ2It is a bitmask and the following bits can be set:”h]”hŒ2It is a bitmask and the following bits can be set:”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj¥h²hubhŒtabular_col_spec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œspec”Œ |p{5ex}|L|”uh1jäh³hÇh´M hj¥h²hubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j hjôubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K@uh1j hjôubj= )�”}”(hhh]”jB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒMask”h]”hŒMask”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjuba•lh}”(h]”h ]”h"]”h$]”h&]”uh1jF hjubjG )�”}”(hhh]”hÞ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j< hjôubj´ )�”}”(hhh]”(jB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ0x01”h]”hŒ0x01”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjNubjG )�”}”(hhh]”hÞ)�”}”(hŒaLog the ioctl name and error code. VIDIOC_(D)QBUF ioctls are only logged if bit 0x08 is also set.”h]”hŒaLog the ioctl name and error code. VIDIOC_(D)QBUF ioctls are only logged if bit 0x08 is also set.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjKubjB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ0x02”h]”hŒ0x02”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj…ubjG )�”}”(hhh]”hÞ)�”}”(hŒkLog the ioctl name arguments and error code. VIDIOC_(D)QBUF ioctls are only logged if bit 0x08 is also set.”h]”hŒkLog the ioctl name arguments and error code. VIDIOC_(D)QBUF ioctls are only logged if bit 0x08 is also set.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjKubjB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ0x04”h]”hŒ0x04”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj¼ubjG )�”}”(hhh]”hÞ)�”}”(hŒ–Log the file operations open, release, read, write, mmap and get_unmapped_area. The read and write operations are only logged if bit 0x08 is also set.”h]”hŒ–Log the file operations open, release, read, write, mmap and get_unmapped_area. The read and write operations are only logged if bit 0x08 is also set.”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjKubjB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ0x08”h]”hŒ0x08”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjóubjG )�”}”(hhh]”hÞ)�”}”(hŒSLog the read and write file operations and the VIDIOC_QBUF and VIDIOC_DQBUF ioctls.”h]”hŒSLog the read and write file operations and the VIDIOC_QBUF and VIDIOC_DQBUF ioctls.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjKubjB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ0x10”h]”hŒ0x10”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj*ubjG )�”}”(hhh]”hÞ)�”}”(hŒLog the poll file operation.”h]”hŒLog the poll file operation.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjKubjB )�”}”(hhh]”(jG )�”}”(hhh]”hÞ)�”}”(hŒ0x20”h]”hŒ0x20”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjaubjG )�”}”(hhh]”hÞ)�”}”(hŒ1Log error and messages in the control operations.”h]”hŒ1Log error and messages in the control operations.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jA hjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³ hjôubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¥h²hh³hÇh´Nubeh}”(h]”Œvideo-device-debugging”ah ]”h"]”Œvideo device debugging”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒVideo device cleanup”h]”hŒVideo device cleanup”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj³h²hh³hÇh´MubhÞ)�”}”(hŒ¨When the video device nodes have to be removed, either during the unload of the driver or because the USB device was disconnected, then you should unregister them with:”h]”hŒ¨When the video device nodes have to be removed, either during the unload of the driver or because the USB device was disconnected, then you should unregister them with:”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M!hj³h²hubj )�”}”(hŒC:c:func:`video_unregister_device` (:c:type:`vdev `); ”h]”hÞ)�”}”(hŒB:c:func:`video_unregister_device` (:c:type:`vdev `);”h]”(h)�”}”(hŒ!:c:func:`video_unregister_device`”h]”hè)�”}”(hjÜh]”hŒvideo_unregister_device()”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjÚubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_unregister_device”uh1hh³hÇh´M%hjÖubhŒ (”…”�”}”(hjÖh²hh³Nh´Nubh)�”}”(hŒ:c:type:`vdev `”h]”hè)�”}”(hjÿh]”hŒvdev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjýubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jŒ video_device”uh1hh³hÇh´M%hjÖubhŒ);”…”�”}”(hjÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M%hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M%hj³h²hubhÞ)�”}”(hŒYThis will remove the device nodes from sysfs (causing udev to remove them from ``/dev``).”h]”(hŒOThis will remove the device nodes from sysfs (causing udev to remove them from ”…”�”}”(hj,h²hh³Nh´Nubhè)�”}”(hŒ``/dev``”h]”hŒ/dev”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj,ubhŒ).”…”�”}”(hj,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M(hj³h²hubhÞ)�”}”(hXAfter :c:func:`video_unregister_device` returns no new opens can be done. However, in the case of USB devices some application might still have one of these device nodes open. So after the unregister all file operations (except release, of course) will return an error as well.”h]”(hŒAfter ”…”�”}”(hjLh²hh³Nh´Nubh)�”}”(hŒ!:c:func:`video_unregister_device`”h]”hè)�”}”(hjVh]”hŒvideo_unregister_device()”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjTubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_unregister_device”uh1hh³hÇh´M+hjLubhŒî returns no new opens can be done. However, in the case of USB devices some application might still have one of these device nodes open. So after the unregister all file operations (except release, of course) will return an error as well.”…”�”}”(hjLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M+hj³h²hubhÞ)�”}”(hŒŠWhen the last user of the video device node exits, then the ``vdev->release()`` callback is called and you can do the final cleanup there.”h]”(hŒrelease()``”h]”hŒvdev->release()”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj}ubhŒ; callback is called and you can do the final cleanup there.”…”�”}”(hj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M0hj³h²hubhÞ)�”}”(hŒeDon't forget to cleanup the media entity associated with the video device if it has been initialized:”h]”hŒgDon’t forget to cleanup the media entity associated with the video device if it has been initialized:”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M3hj³h²hubj )�”}”(hŒG:c:func:`media_entity_cleanup ` (&vdev->entity); ”h]”hÞ)�”}”(hŒF:c:func:`media_entity_cleanup ` (&vdev->entity);”h]”(h)�”}”(hŒ5:c:func:`media_entity_cleanup `”h]”hè)�”}”(hjµh]”hŒmedia_entity_cleanup”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”ˆŒrefwarn”‰jŒmedia_entity_cleanup”uh1hh³hÇh´M6hj¯ubhŒ (&vdev->entity);”…”�”}”(hj¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M6hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M6hj³h²hubhÞ)�”}”(hŒ+This can be done from the release callback.”h]”hŒ+This can be done from the release callback.”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M9hj³h²hubeh}”(h]”Œvideo-device-cleanup”ah ]”h"]”Œvideo device cleanup”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒhelper functions”h]”hŒhelper functions”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjøh²hh³hÇh´M=ubhÞ)�”}”(hŒ(There are a few useful helper functions:”h]”hŒ(There are a few useful helper functions:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M?hjøh²hubjt)�”}”(hhh]”jy)�”}”(hŒ-file and :c:type:`video_device` private data ”h]”hÞ)�”}”(hŒ,file and :c:type:`video_device` private data”h]”(hŒ file and ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hj(h]”hŒ video_device”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj&ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´MAhjubhŒ private data”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MAhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjh²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jsh³hÇh´MAhjøh²hubhÞ)�”}”(hŒEYou can set/get driver private data in the video_device struct using:”h]”hŒEYou can set/get driver private data in the video_device struct using:”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MChjøh²hubj )�”}”(hŒ£:c:func:`video_get_drvdata ` (:c:type:`vdev `); :c:func:`video_set_drvdata ` (:c:type:`vdev `); ”h]”(hÞ)�”}”(hŒP:c:func:`video_get_drvdata ` (:c:type:`vdev `);”h]”(h)�”}”(hŒ/:c:func:`video_get_drvdata `”h]”hè)�”}”(hjsh]”hŒvideo_get_drvdata”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjqubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”ˆŒrefwarn”‰jŒvideo_get_drvdata”uh1hh³hÇh´MEhjmubhŒ (”…”�”}”(hjmh²hh³Nh´Nubh)�”}”(hŒ:c:type:`vdev `”h]”hè)�”}”(hj–h]”hŒvdev”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj”ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jŒ video_device”uh1hh³hÇh´MEhjmubhŒ);”…”�”}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MEhjiubhÞ)�”}”(hŒP:c:func:`video_set_drvdata ` (:c:type:`vdev `);”h]”(h)�”}”(hŒ/:c:func:`video_set_drvdata `”h]”hè)�”}”(hjÃh]”hŒvideo_set_drvdata”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjÁubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”ˆŒrefwarn”‰jŒvideo_set_drvdata”uh1hh³hÇh´MHhj½ubhŒ (”…”�”}”(hj½h²hh³Nh´Nubh)�”}”(hŒ:c:type:`vdev `”h]”hè)�”}”(hjæh]”hŒvdev”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjäubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jŒ video_device”uh1hh³hÇh´MHhj½ubhŒ);”…”�”}”(hj½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MHhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MEhjøh²hubhÞ)�”}”(hŒiNote that you can safely call :c:func:`video_set_drvdata` before calling :c:func:`video_register_device`.”h]”(hŒNote that you can safely call ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:func:`video_set_drvdata`”h]”hè)�”}”(hjh]”hŒvideo_set_drvdata()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_set_drvdata”uh1hh³hÇh´MKhjubhŒ before calling ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:func:`video_register_device`”h]”hè)�”}”(hj@h]”hŒvideo_register_device()”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhj>ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_register_device”uh1hh³hÇh´MKhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MKhjøh²hubhÞ)�”}”(hŒAnd this function:”h]”hŒAnd this function:”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MNhjøh²hubj )�”}”(hŒ>:c:func:`video_devdata ` (struct file \*file); ”h]”hÞ)�”}”(hŒ=:c:func:`video_devdata ` (struct file \*file);”h]”(h)�”}”(hŒ':c:func:`video_devdata `”h]”hè)�”}”(hjh]”hŒ video_devdata”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhj}ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”ˆŒrefwarn”‰jŒ video_devdata”uh1hh³hÇh´MPhjyubhŒ (struct file *file);”…”�”}”(hjyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MPhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MPhjøh²hubhÞ)�”}”(hŒ6returns the video_device belonging to the file struct.”h]”hŒ6returns the video_device belonging to the file struct.”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MShjøh²hubhÞ)�”}”(hŒgThe :c:func:`video_devdata` function combines :c:func:`video_get_drvdata` with :c:func:`video_devdata`:”h]”(hŒThe ”…”�”}”(hjºh²hh³Nh´Nubh)�”}”(hŒ:c:func:`video_devdata`”h]”hè)�”}”(hjÄh]”hŒvideo_devdata()”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjÂubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒ video_devdata”uh1hh³hÇh´MUhjºubhŒ function combines ”…”�”}”(hjºh²hh³Nh´Nubh)�”}”(hŒ:c:func:`video_get_drvdata`”h]”hè)�”}”(hjçh]”hŒvideo_get_drvdata()”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjåubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒvideo_get_drvdata”uh1hh³hÇh´MUhjºubhŒ with ”…”�”}”(hjºh²hh³Nh´Nubh)�”}”(hŒ:c:func:`video_devdata`”h]”hè)�”}”(hj h]”hŒvideo_devdata()”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒ video_devdata”uh1hh³hÇh´MUhjºubhŒ:”…”�”}”(hjºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MUhjøh²hubj )�”}”(hŒ>:c:func:`video_drvdata ` (struct file \*file); ”h]”hÞ)�”}”(hŒ=:c:func:`video_drvdata ` (struct file \*file);”h]”(h)�”}”(hŒ':c:func:`video_drvdata `”h]”hè)�”}”(hj;h]”hŒ video_drvdata”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhj9ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”ˆŒrefwarn”‰jŒ video_drvdata”uh1hh³hÇh´MXhj5ubhŒ (struct file *file);”…”�”}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MXhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MXhjøh²hubhÞ)�”}”(hŒPYou can go from a :c:type:`video_device` struct to the v4l2_device struct using:”h]”(hŒYou can go from a ”…”�”}”(hjhh²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjrh]”hŒ video_device”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjpubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´M[hjhubhŒ( struct to the v4l2_device struct using:”…”�”}”(hjhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M[hjøh²hubjl)�”}”(hŒ.struct v4l2_device *v4l2_dev = vdev->v4l2_dev;”h]”hŒ.struct v4l2_device *v4l2_dev = vdev->v4l2_dev;”…”�”}”hj™sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj{‰j|j j}}”uh1jkh³hÇh´M]hjøh²hubjt)�”}”(hhh]”jy)�”}”(hŒDevice node name ”h]”hÞ)�”}”(hŒDevice node name”h]”hŒDevice node name”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mahj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¨h²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jsh³hÇh´Mahjøh²hubhÞ)�”}”(hŒCThe :c:type:`video_device` node kernel name can be retrieved using:”h]”(hŒThe ”…”�”}”(hjÉh²hh³Nh´Nubh)�”}”(hŒ:c:type:`video_device`”h]”hè)�”}”(hjÓh]”hŒ video_device”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÑubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jŒ video_device”uh1hh³hÇh´MchjÉubhŒ) node kernel name can be retrieved using:”…”�”}”(hjÉh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mchjøh²hubj )�”}”(hŒ[:c:func:`video_device_node_name ` (:c:type:`vdev `); ”h]”hÞ)�”}”(hŒZ:c:func:`video_device_node_name ` (:c:type:`vdev `);”h]”(h)�”}”(hŒ9:c:func:`video_device_node_name `”h]”hè)�”}”(hjh]”hŒvideo_device_node_name”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-func”eh"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œfunc”Œ refexplicit”ˆŒrefwarn”‰jŒvideo_device_node_name”uh1hh³hÇh´MehjþubhŒ (”…”�”}”(hjþh²hh³Nh´Nubh)�”}”(hŒ:c:type:`vdev `”h]”hè)�”}”(hj'h]”hŒvdev”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jŒ video_device”uh1hh³hÇh´MehjþubhŒ);”…”�”}”(hjþh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mehjúubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mehjøh²hubhÞ)�”}”(hŒ±The name is used as a hint by userspace tools such as udev. The function should be used where possible instead of accessing the video_device::num and video_device::minor fields.”h]”hŒ±The name is used as a hint by userspace tools such as udev. The function should be used where possible instead of accessing the video_device::num and video_device::minor fields.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhhjøh²hubeh}”(h]”Œhelper-functions”ah ]”h"]”Œhelper functions”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M=ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ*video_device functions and data structures”h]”hŒ*video_device functions and data structures”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjjh²hh³hÇh´MmubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œvfl_devnode_type (C enum)”Œc.vfl_devnode_type”hNt”auh1j{hjjh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒvfl_devnode_type”h]”hŒdesc_signature_line”“”)�”}”(hŒenum vfl_devnode_type”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j�hj™h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j¯hj™h²hh³j®h´KubhŒ desc_name”“”)�”}”(hŒvfl_devnode_type”h]”hŒ desc_sig_name”“”)�”}”(hj•h]”hŒvfl_devnode_type”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jÆhjÂubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jÀhj™h²hh³j®h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1j—Œsphinx_line_type”Œ declarator”hj“h²hh³j®h´Kubah}”(h]”jŠah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j‘h³j®h´KhjŽh²hubhŒ desc_content”“”)�”}”(hhh]”hÞ)�”}”(hŒtype of V4L2 device node”h]”hŒtype of V4L2 device node”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Khjôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjŽh²hh³j®h´Kubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”Œdomain”j Œobjtype”jŒdesctype”jŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jŒh²hhjjh³Nh´NubhŒ container”“”)�”}”(hXˆ**Constants** ``VFL_TYPE_VIDEO`` for video input/output devices ``VFL_TYPE_VBI`` for vertical blank data (i.e. closed captions, teletext) ``VFL_TYPE_RADIO`` for radio tuners ``VFL_TYPE_SUBDEV`` for V4L2 subdevices ``VFL_TYPE_SDR`` for Software Defined Radio tuners ``VFL_TYPE_TOUCH`` for touch sensors ``VFL_TYPE_MAX`` number of VFL types, must always be last in the enum”h]”(hÞ)�”}”(hŒ **Constants**”h]”j÷)�”}”(hj!h]”hŒ Constants”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KhjubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ2``VFL_TYPE_VIDEO`` for video input/output devices ”h]”(hŒterm”“”)�”}”(hŒ``VFL_TYPE_VIDEO``”h]”hè)�”}”(hjFh]”hŒVFL_TYPE_VIDEO”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K hj>ubhŒ definition”“”)�”}”(hhh]”hÞ)�”}”(hŒfor video input/output devices”h]”hŒfor video input/output devices”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j[h´K hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j[h´K hj9ubj=)�”}”(hŒJ``VFL_TYPE_VBI`` for vertical blank data (i.e. closed captions, teletext) ”h]”(jC)�”}”(hŒ``VFL_TYPE_VBI``”h]”hè)�”}”(hj�h]”hŒ VFL_TYPE_VBI”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K#hj{ubj])�”}”(hhh]”hÞ)�”}”(hŒ8for vertical blank data (i.e. closed captions, teletext)”h]”hŒ8for vertical blank data (i.e. closed captions, teletext)”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j–h´K#hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j–h´K#hj9ubj=)�”}”(hŒ$``VFL_TYPE_RADIO`` for radio tuners ”h]”(jC)�”}”(hŒ``VFL_TYPE_RADIO``”h]”hè)�”}”(hjºh]”hŒVFL_TYPE_RADIO”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K&hj´ubj])�”}”(hhh]”hÞ)�”}”(hŒfor radio tuners”h]”hŒfor radio tuners”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÏh´K&hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jÏh´K&hj9ubj=)�”}”(hŒ(``VFL_TYPE_SUBDEV`` for V4L2 subdevices ”h]”(jC)�”}”(hŒ``VFL_TYPE_SUBDEV``”h]”hè)�”}”(hjóh]”hŒVFL_TYPE_SUBDEV”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K)hjíubj])�”}”(hhh]”hÞ)�”}”(hŒfor V4L2 subdevices”h]”hŒfor V4L2 subdevices”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´K)hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jh´K)hj9ubj=)�”}”(hŒ3``VFL_TYPE_SDR`` for Software Defined Radio tuners ”h]”(jC)�”}”(hŒ``VFL_TYPE_SDR``”h]”hè)�”}”(hj,h]”hŒ VFL_TYPE_SDR”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K,hj&ubj])�”}”(hhh]”hÞ)�”}”(hŒ!for Software Defined Radio tuners”h]”hŒ!for Software Defined Radio tuners”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jAh´K,hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jAh´K,hj9ubj=)�”}”(hŒ%``VFL_TYPE_TOUCH`` for touch sensors ”h]”(jC)�”}”(hŒ``VFL_TYPE_TOUCH``”h]”hè)�”}”(hjeh]”hŒVFL_TYPE_TOUCH”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K/hj_ubj])�”}”(hhh]”hÞ)�”}”(hŒfor touch sensors”h]”hŒfor touch sensors”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jzh´K/hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jzh´K/hj9ubj=)�”}”(hŒE``VFL_TYPE_MAX`` number of VFL types, must always be last in the enum”h]”(jC)�”}”(hŒ``VFL_TYPE_MAX``”h]”hè)�”}”(hjžh]”hŒ VFL_TYPE_MAX”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K1hj˜ubj])�”}”(hhh]”hÞ)�”}”(hŒ4number of VFL types, must always be last in the enum”h]”hŒ4number of VFL types, must always be last in the enum”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K2hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j³h´K1hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒvfl_devnode_direction (C enum)”Œc.vfl_devnode_direction”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒvfl_devnode_direction”h]”j˜)�”}”(hŒenum vfl_devnode_direction”h]”(jž)�”}”(hj¡h]”hŒenum”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjôh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K7ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjôh²hh³jh´K7ubjÁ)�”}”(hŒvfl_devnode_direction”h]”jÇ)�”}”(hjòh]”hŒvfl_devnode_direction”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjôh²hh³jh´K7ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjðh²hh³jh´K7ubah}”(h]”jëah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jh´K7hjíh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒ}Identifies if a :c:type:`struct video_device ` corresponds to a receiver, a transmitter or a mem-to-mem device.”h]”(hŒIdentifies if a ”…”�”}”(hj:h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjDh]”hŒstruct video_device”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjBubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jaŒ ASTIdentifier”“”)�”}”Œ identifier”jòsbŒc.vfl_devnode_direction”†”asbjŒ video_device”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Khj:ubhŒA corresponds to a receiver, a transmitter or a mem-to-mem device.”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K.hj7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjíh²hh³jh´K7ubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”jj jj…jj…j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hX **Constants** ``VFL_DIR_RX`` device is a receiver. ``VFL_DIR_TX`` device is a transmitter. ``VFL_DIR_M2M`` device is a memory to memory device. **Note** Ignored if :c:type:`enum vfl_devnode_type ` is ``VFL_TYPE_SUBDEV``.”h]”(j )�”}”(hŒ™**Constants** ``VFL_DIR_RX`` device is a receiver. ``VFL_DIR_TX`` device is a transmitter. ``VFL_DIR_M2M`` device is a memory to memory device. ”h]”(hÞ)�”}”(hŒ **Constants**”h]”j÷)�”}”(hj“h]”hŒ Constants”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K2hj�ubj8)�”}”(hhh]”(j=)�”}”(hŒ%``VFL_DIR_RX`` device is a receiver. ”h]”(jC)�”}”(hŒ``VFL_DIR_RX``”h]”hè)�”}”(hj²h]”hŒ VFL_DIR_RX”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K5hj¬ubj])�”}”(hhh]”hÞ)�”}”(hŒdevice is a receiver.”h]”hŒdevice is a receiver.”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÇh´K5hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jÇh´K5hj©ubj=)�”}”(hŒ(``VFL_DIR_TX`` device is a transmitter. ”h]”(jC)�”}”(hŒ``VFL_DIR_TX``”h]”hè)�”}”(hjëh]”hŒ VFL_DIR_TX”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K8hjåubj])�”}”(hhh]”hÞ)�”}”(hŒdevice is a transmitter.”h]”hŒdevice is a transmitter.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´K8hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jh´K8hj©ubj=)�”}”(hŒ5``VFL_DIR_M2M`` device is a memory to memory device. ”h]”(jC)�”}”(hŒ``VFL_DIR_M2M``”h]”hè)�”}”(hj$h]”hŒ VFL_DIR_M2M”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K;hjubj])�”}”(hhh]”hÞ)�”}”(hŒ$device is a memory to memory device.”h]”hŒ$device is a memory to memory device.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j9h´K;hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j9h´K;hj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¨h´K2hj‰ubhÞ)�”}”(hŒ**Note**”h]”j÷)�”}”(hjeh]”hŒNote”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K=hj‰ubhÞ)�”}”(hŒUIgnored if :c:type:`enum vfl_devnode_type ` is ``VFL_TYPE_SUBDEV``.”h]”(hŒ Ignored if ”…”�”}”(hj{h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`enum vfl_devnode_type `”h]”hè)�”}”(hj…h]”hŒenum vfl_devnode_type”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjƒubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`jc)�”}”jf]”sbjŒvfl_devnode_type”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K5hj{ubhŒ is ”…”�”}”(hj{h²hh³Nh´Nubhè)�”}”(hŒ``VFL_TYPE_SUBDEV``”h]”hŒVFL_TYPE_SUBDEV”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj{ubhŒ.”…”�”}”(hj{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¥h´K5hj‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒ v4l2_video_device_flags (C enum)”Œc.v4l2_video_device_flags”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒv4l2_video_device_flags”h]”j˜)�”}”(hŒenum v4l2_video_device_flags”h]”(jž)�”}”(hj¡h]”hŒenum”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjÞh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K:ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÞh²hh³jïh´K:ubjÁ)�”}”(hŒv4l2_video_device_flags”h]”jÇ)�”}”(hjÜh]”hŒv4l2_video_device_flags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjþubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjÞh²hh³jïh´K:ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjÚh²hh³jïh´K:ubah}”(h]”jÕah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jïh´K:hj×h²hubjó)�”}”(hhh]”hÞ)�”}”(hŒ:Flags used by :c:type:`struct video_device `”h]”(hŒFlags used by ”…”�”}”(hj$h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hj.h]”hŒstruct video_device”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`jc)�”}”jf]”ji)�”}”jljÜsbŒc.v4l2_video_device_flags”†”asbjŒ video_device”uh1hh³jph´Khj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KDhj!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj×h²hh³jïh´K:ubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”jj jjbjjbj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hXã**Constants** ``V4L2_FL_REGISTERED`` indicates that a :c:type:`struct video_device ` is registered. Drivers can clear this flag if they want to block all future device access. It is cleared by video_unregister_device. ``V4L2_FL_USES_V4L2_FH`` indicates that file->private_data points to :c:type:`struct v4l2_fh `. This flag is set by the core when v4l2_fh_init() is called. All drivers must use it. ``V4L2_FL_QUIRK_INVERTED_CROP`` some old M2M drivers use g/s_crop/cropcap incorrectly: crop and compose are swapped. If this flag is set, then the selection targets are swapped in the g/s_crop/cropcap functions in v4l2-ioctl.c. This allows those drivers to correctly implement the selection API, but the old crop API will still work as expected in order to preserve backwards compatibility. Never set this flag for new drivers. ``V4L2_FL_SUBDEV_RO_DEVNODE`` indicates that the video device node is registered in read-only mode. The flag only applies to device nodes registered for sub-devices, it is set by the core when the sub-devices device nodes are registered with v4l2_device_register_ro_subdev_nodes() and used by the sub-device ioctl handler to restrict access to some ioctl calls.”h]”(hÞ)�”}”(hŒ **Constants**”h]”j÷)�”}”(hjlh]”hŒ Constants”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KHhjfubj8)�”}”(hhh]”(j=)�”}”(hŒÚ``V4L2_FL_REGISTERED`` indicates that a :c:type:`struct video_device ` is registered. Drivers can clear this flag if they want to block all future device access. It is cleared by video_unregister_device. ”h]”(jC)�”}”(hŒ``V4L2_FL_REGISTERED``”h]”hè)�”}”(hj‹h]”hŒV4L2_FL_REGISTERED”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KMhj…ubj])�”}”(hhh]”hÞ)�”}”(hŒÂindicates that a :c:type:`struct video_device ` is registered. Drivers can clear this flag if they want to block all future device access. It is cleared by video_unregister_device.”h]”(hŒindicates that a ”…”�”}”(hj¤h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hj®h]”hŒstruct video_device”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KKhj¤ubhŒ… is registered. Drivers can clear this flag if they want to block all future device access. It is cleared by video_unregister_device.”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jËh´KKhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j h´KMhj‚ubj=)�”}”(hŒ¾``V4L2_FL_USES_V4L2_FH`` indicates that file->private_data points to :c:type:`struct v4l2_fh `. This flag is set by the core when v4l2_fh_init() is called. All drivers must use it. ”h]”(jC)�”}”(hŒ``V4L2_FL_USES_V4L2_FH``”h]”hè)�”}”(hjèh]”hŒV4L2_FL_USES_V4L2_FH”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KRhjâubj])�”}”(hhh]”hÞ)�”}”(hŒ¤indicates that file->private_data points to :c:type:`struct v4l2_fh `. This flag is set by the core when v4l2_fh_init() is called. All drivers must use it.”h]”(hŒ,indicates that file->private_data points to ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct v4l2_fh `”h]”hè)�”}”(hj h]”hŒstruct v4l2_fh”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_fh”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KPhjubhŒV. This flag is set by the core when v4l2_fh_init() is called. All drivers must use it.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j(h´KPhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jýh´KRhj‚ubj=)�”}”(hX¬``V4L2_FL_QUIRK_INVERTED_CROP`` some old M2M drivers use g/s_crop/cropcap incorrectly: crop and compose are swapped. If this flag is set, then the selection targets are swapped in the g/s_crop/cropcap functions in v4l2-ioctl.c. This allows those drivers to correctly implement the selection API, but the old crop API will still work as expected in order to preserve backwards compatibility. Never set this flag for new drivers. ”h]”(jC)�”}”(hŒ``V4L2_FL_QUIRK_INVERTED_CROP``”h]”hè)�”}”(hjEh]”hŒV4L2_FL_QUIRK_INVERTED_CROP”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K[hj?ubj])�”}”(hhh]”hÞ)�”}”(hX‹some old M2M drivers use g/s_crop/cropcap incorrectly: crop and compose are swapped. If this flag is set, then the selection targets are swapped in the g/s_crop/cropcap functions in v4l2-ioctl.c. This allows those drivers to correctly implement the selection API, but the old crop API will still work as expected in order to preserve backwards compatibility. Never set this flag for new drivers.”h]”hX‹some old M2M drivers use g/s_crop/cropcap incorrectly: crop and compose are swapped. If this flag is set, then the selection targets are swapped in the g/s_crop/cropcap functions in v4l2-ioctl.c. This allows those drivers to correctly implement the selection API, but the old crop API will still work as expected in order to preserve backwards compatibility. Never set this flag for new drivers.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KUhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jZh´K[hj‚ubj=)�”}”(hXi``V4L2_FL_SUBDEV_RO_DEVNODE`` indicates that the video device node is registered in read-only mode. The flag only applies to device nodes registered for sub-devices, it is set by the core when the sub-devices device nodes are registered with v4l2_device_register_ro_subdev_nodes() and used by the sub-device ioctl handler to restrict access to some ioctl calls.”h]”(jC)�”}”(hŒ``V4L2_FL_SUBDEV_RO_DEVNODE``”h]”hè)�”}”(hjh]”hŒV4L2_FL_SUBDEV_RO_DEVNODE”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kahjyubj])�”}”(hhh]”hÞ)�”}”(hXKindicates that the video device node is registered in read-only mode. The flag only applies to device nodes registered for sub-devices, it is set by the core when the sub-devices device nodes are registered with v4l2_device_register_ro_subdev_nodes() and used by the sub-device ioctl handler to restrict access to some ioctl calls.”h]”hXKindicates that the video device node is registered in read-only mode. The flag only applies to device nodes registered for sub-devices, it is set by the core when the sub-devices device nodes are registered with v4l2_device_register_ro_subdev_nodes() and used by the sub-device ioctl handler to restrict access to some ioctl calls.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K^hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j”h´Kahj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hjfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒv4l2_prio_state (C struct)”Œc.v4l2_prio_state”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒv4l2_prio_state”h]”j˜)�”}”(hŒstruct v4l2_prio_state”h]”(jž)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjÕh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kgubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÕh²hh³jçh´KgubjÁ)�”}”(hŒv4l2_prio_state”h]”jÇ)�”}”(hjÓh]”hŒv4l2_prio_state”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjöubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjÕh²hh³jçh´Kgubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjÑh²hh³jçh´Kgubah}”(h]”jÌah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jçh´KghjÎh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒstores the priority states”h]”hŒstores the priority states”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kghj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÎh²hh³jçh´Kgubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”jj jj4 jj4 j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hX- **Definition**:: struct v4l2_prio_state { atomic_t prios[4]; }; **Members** ``prios`` array with elements to store the array priorities **Description** .. note:: The size of **prios** array matches the number of priority types defined by enum :c:type:`v4l2_priority`.”h]”(j )�”}”(hŒM**Definition**:: struct v4l2_prio_state { atomic_t prios[4]; }; ”h]”(hÞ)�”}”(hŒ**Definition**::”h]”(j÷)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj@ ubhŒ:”…”�”}”(hj@ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kkhj< ubjl)�”}”(hŒ4struct v4l2_prio_state { atomic_t prios[4]; };”h]”hŒ4struct v4l2_prio_state { atomic_t prios[4]; };”…”�”}”hj] sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jkh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kmhj< ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j\ h´Kkhj8 ubhÞ)�”}”(hŒ **Members**”h]”j÷)�”}”(hjt h]”hŒMembers”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjr ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kqhj8 ubj8)�”}”(hhh]”j=)�”}”(hŒ=``prios`` array with elements to store the array priorities ”h]”(jC)�”}”(hŒ ``prios``”h]”hè)�”}”(hj“ h]”hŒprios”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj‘ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kkhj� ubj])�”}”(hhh]”hÞ)�”}”(hŒ1array with elements to store the array priorities”h]”hŒ1array with elements to store the array priorities”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kjhj© ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j¨ h´KkhjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj8 ubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjÏ h]”hŒ Description”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjÍ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kmhj8 ubhŒnote”“”)�”}”(hŒiThe size of **prios** array matches the number of priority types defined by enum :c:type:`v4l2_priority`.”h]”hÞ)�”}”(hŒiThe size of **prios** array matches the number of priority types defined by enum :c:type:`v4l2_priority`.”h]”(hŒ The size of ”…”�”}”(hjë h²hh³Nh´Nubj÷)�”}”(hŒ **prios**”h]”hŒprios”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjë ubhŒ< array matches the number of priority types defined by enum ”…”�”}”(hjë h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_priority`”h]”hè)�”}”(hj!h]”hŒ v4l2_priority”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j`j¡jŒ v4l2_priority”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kkhjë ubhŒ.”…”�”}”(hjë h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j$!h´Kkhjç ubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hj8 ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒv4l2_prio_init (C function)”Œc.v4l2_prio_init”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒ4void v4l2_prio_init (struct v4l2_prio_state *global)”h]”j˜)�”}”(hŒ3void v4l2_prio_init(struct v4l2_prio_state *global)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjW!h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jU!hjQ!h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kuubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg!h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjQ!h²hh³jf!h´KuubjÁ)�”}”(hŒv4l2_prio_init”h]”jÇ)�”}”(hŒv4l2_prio_init”h]”hŒv4l2_prio_init”…”�”}”(hjy!h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhju!ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjQ!h²hh³jf!h´KuubhŒdesc_parameterlist”“”)�”}”(hŒ (struct v4l2_prio_state *global)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct v4l2_prio_state *global”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hj™!h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj•!ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦!h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj•!ubh)�”}”(hhh]”jÇ)�”}”(hŒv4l2_prio_state”h]”hŒv4l2_prio_state”…”�”}”(hj·!h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj´!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j¹!Œmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlj{!sbŒc.v4l2_prio_init”†”asbuh1hhj•!ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×!h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj•!ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjç!h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jå!hj•!ubjÇ)�”}”(hŒglobal”h]”hŒglobal”…”�”}”(hjö!h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj•!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj�!ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hjQ!h²hh³jf!h´Kuubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjM!h²hh³jf!h´Kuubah}”(h]”jH!ah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jf!h´KuhjJ!h²hubjó)�”}”(hhh]”hÞ)�”}”(hŒ$initializes a struct v4l2_prio_state”h]”hŒ$initializes a struct v4l2_prio_state”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kuhj"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjJ!h²hh³jf!h´Kuubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj8"jj8"j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hŒr**Parameters** ``struct v4l2_prio_state *global`` pointer to :c:type:`struct v4l2_prio_state `”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hjB"h]”hŒ Parameters”…”�”}”(hjD"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj@"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kyhj<"ubj8)�”}”(hhh]”j=)�”}”(hŒ```struct v4l2_prio_state *global`` pointer to :c:type:`struct v4l2_prio_state `”h]”(jC)�”}”(hŒ"``struct v4l2_prio_state *global``”h]”hè)�”}”(hja"h]”hŒstruct v4l2_prio_state *global”…”�”}”(hjc"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj_"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K{hj["ubj])�”}”(hhh]”hÞ)�”}”(hŒ=pointer to :c:type:`struct v4l2_prio_state `”h]”(hŒ pointer to ”…”�”}”(hjz"h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct v4l2_prio_state `”h]”hè)�”}”(hj„"h]”hŒstruct v4l2_prio_state”…”�”}”(hj†"h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj‚"ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_prio_state”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kwhjz"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¡"h´Kwhjw"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj["ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jv"h´K{hjX"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj<"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒv4l2_prio_change (C function)”Œc.v4l2_prio_change”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒhint v4l2_prio_change (struct v4l2_prio_state *global, enum v4l2_priority *local, enum v4l2_priority new)”h]”j˜)�”}”(hŒgint v4l2_prio_change(struct v4l2_prio_state *global, enum v4l2_priority *local, enum v4l2_priority new)”h]”(jV!)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚ"h²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hjÖ"h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K|ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé"h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÖ"h²hh³jè"h´K|ubjÁ)�”}”(hŒv4l2_prio_change”h]”jÇ)�”}”(hŒv4l2_prio_change”h]”hŒv4l2_prio_change”…”�”}”(hjû"h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj÷"ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjÖ"h²hh³jè"h´K|ubjŽ!)�”}”(hŒS(struct v4l2_prio_state *global, enum v4l2_priority *local, enum v4l2_priority new)”h]”(j”!)�”}”(hŒstruct v4l2_prio_state *global”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj#ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$#h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj#ubh)�”}”(hhh]”jÇ)�”}”(hŒv4l2_prio_state”h]”hŒv4l2_prio_state”…”�”}”(hj5#h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj2#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j7#Œmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jljý"sbŒc.v4l2_prio_change”†”asbuh1hhj#ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU#h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj#ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjc#h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj#ubjÇ)�”}”(hŒglobal”h]”hŒglobal”…”�”}”(hjp#h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj#ubj”!)�”}”(hŒenum v4l2_priority *local”h]”(jž)�”}”(hj¡h]”hŒenum”…”�”}”(hj‰#h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj…#ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–#h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj…#ubh)�”}”(hhh]”jÇ)�”}”(hŒ v4l2_priority”h]”hŒ v4l2_priority”…”�”}”(hj§#h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj¤#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j©#Œmodname”NŒ classname”Nj`jc)�”}”jf]”jQ#Œc.v4l2_prio_change”†”asbuh1hhj…#ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ#h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj…#ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjÓ#h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj…#ubjÇ)�”}”(hŒlocal”h]”hŒlocal”…”�”}”(hjà#h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj…#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj#ubj”!)�”}”(hŒenum v4l2_priority new”h]”(jž)�”}”(hj¡h]”hŒenum”…”�”}”(hjù#h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjõ#ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjõ#ubh)�”}”(hhh]”jÇ)�”}”(hŒ v4l2_priority”h]”hŒ v4l2_priority”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j$Œmodname”NŒ classname”Nj`jc)�”}”jf]”jQ#Œc.v4l2_prio_change”†”asbuh1hhjõ#ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5$h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjõ#ubjÇ)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjC$h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjõ#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj#ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hjÖ"h²hh³jè"h´K|ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjÒ"h²hh³jè"h´K|ubah}”(h]”jÍ"ah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jè"h´K|hjÏ"h²hubjó)�”}”(hhh]”hÞ)�”}”(hŒ&changes the v4l2 file handler priority”h]”hŒ&changes the v4l2 file handler priority”…”�”}”(hjm$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K|hjj$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÏ"h²hh³jè"h´K|ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj…$jj…$j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hX¯**Parameters** ``struct v4l2_prio_state *global`` pointer to the :c:type:`struct v4l2_prio_state ` of the device node. ``enum v4l2_priority *local`` pointer to the desired priority, as defined by enum :c:type:`v4l2_priority` ``enum v4l2_priority new`` Priority type requested, as defined by enum :c:type:`v4l2_priority`. **Description** .. note:: This function should be used only by the V4L2 core.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj�$h]”hŒ Parameters”…”�”}”(hj‘$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj�$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K€hj‰$ubj8)�”}”(hhh]”(j=)�”}”(hŒy``struct v4l2_prio_state *global`` pointer to the :c:type:`struct v4l2_prio_state ` of the device node. ”h]”(jC)�”}”(hŒ"``struct v4l2_prio_state *global``”h]”hè)�”}”(hj®$h]”hŒstruct v4l2_prio_state *global”…”�”}”(hj°$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¬$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K~hj¨$ubj])�”}”(hhh]”hÞ)�”}”(hŒUpointer to the :c:type:`struct v4l2_prio_state ` of the device node.”h]”(hŒpointer to the ”…”�”}”(hjÇ$h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct v4l2_prio_state `”h]”hè)�”}”(hjÑ$h]”hŒstruct v4l2_prio_state”…”�”}”(hjÓ$h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÏ$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_prio_state”uh1hh³jÃ$h´K~hjÇ$ubhŒ of the device node.”…”�”}”(hjÇ$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÃ$h´K~hjÄ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj¨$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jÃ$h´K~hj¥$ubj=)�”}”(hŒj``enum v4l2_priority *local`` pointer to the desired priority, as defined by enum :c:type:`v4l2_priority` ”h]”(jC)�”}”(hŒ``enum v4l2_priority *local``”h]”hè)�”}”(hj %h]”hŒenum v4l2_priority *local”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Khj%ubj])�”}”(hhh]”hÞ)�”}”(hŒKpointer to the desired priority, as defined by enum :c:type:`v4l2_priority`”h]”(hŒ4pointer to the desired priority, as defined by enum ”…”�”}”(hj#%h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_priority`”h]”hè)�”}”(hj-%h]”hŒ v4l2_priority”…”�”}”(hj/%h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj+%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j`j¡jŒ v4l2_priority”uh1hh³j%h´Khj#%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j%h´Khj %ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j%h´Khj¥$ubj=)�”}”(hŒ```enum v4l2_priority new`` Priority type requested, as defined by enum :c:type:`v4l2_priority`. ”h]”(jC)�”}”(hŒ``enum v4l2_priority new``”h]”hè)�”}”(hjb%h]”hŒenum v4l2_priority new”…”�”}”(hjd%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj`%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K€hj\%ubj])�”}”(hhh]”hÞ)�”}”(hŒDPriority type requested, as defined by enum :c:type:`v4l2_priority`.”h]”(hŒ,Priority type requested, as defined by enum ”…”�”}”(hj{%h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_priority`”h]”hè)�”}”(hj…%h]”hŒ v4l2_priority”…”�”}”(hj‡%h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjƒ%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j`j¡jŒ v4l2_priority”uh1hh³jw%h´K€hj{%ubhŒ.”…”�”}”(hj{%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jw%h´K€hjx%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj\%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jw%h´K€hj¥$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hj‰$ubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjÀ%h]”hŒ Description”…”�”}”(hjÂ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj¾%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K‚hj‰$ubjæ )�”}”(hŒ3This function should be used only by the V4L2 core.”h]”hÞ)�”}”(hjØ%h]”hŒ3This function should be used only by the V4L2 core.”…”�”}”(hjÚ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K‚hjÖ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hj‰$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒv4l2_prio_open (C function)”Œc.v4l2_prio_open”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒOvoid v4l2_prio_open (struct v4l2_prio_state *global, enum v4l2_priority *local)”h]”j˜)�”}”(hŒNvoid v4l2_prio_open(struct v4l2_prio_state *global, enum v4l2_priority *local)”h]”(jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj &h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K‰ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj &h²hh³j&h´K‰ubjÁ)�”}”(hŒv4l2_prio_open”h]”jÇ)�”}”(hŒv4l2_prio_open”h]”hŒv4l2_prio_open”…”�”}”(hj/&h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj+&ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj &h²hh³j&h´K‰ubjŽ!)�”}”(hŒ;(struct v4l2_prio_state *global, enum v4l2_priority *local)”h]”(j”!)�”}”(hŒstruct v4l2_prio_state *global”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjK&h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjG&ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX&h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjG&ubh)�”}”(hhh]”jÇ)�”}”(hŒv4l2_prio_state”h]”hŒv4l2_prio_state”…”�”}”(hji&h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjf&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jk&Œmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlj1&sbŒc.v4l2_prio_open”†”asbuh1hhjG&ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰&h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjG&ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj—&h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjG&ubjÇ)�”}”(hŒglobal”h]”hŒglobal”…”�”}”(hj¤&h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjG&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjC&ubj”!)�”}”(hŒenum v4l2_priority *local”h]”(jž)�”}”(hj¡h]”hŒenum”…”�”}”(hj½&h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj¹&ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ&h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj¹&ubh)�”}”(hhh]”jÇ)�”}”(hŒ v4l2_priority”h]”hŒ v4l2_priority”…”�”}”(hjÛ&h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjØ&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jÝ&Œmodname”NŒ classname”Nj`jc)�”}”jf]”j…&Œc.v4l2_prio_open”†”asbuh1hhj¹&ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù&h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj¹&ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj¹&ubjÇ)�”}”(hŒlocal”h]”hŒlocal”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj¹&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjC&ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hj &h²hh³j&h´K‰ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhj&h²hh³j&h´K‰ubah}”(h]”j&ah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j&h´K‰hj&h²hubjó)�”}”(hhh]”hÞ)�”}”(hŒ5Implements the priority logic for a file handler open”h]”hŒ5Implements the priority logic for a file handler open”…”�”}”(hj>'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K‰hj;'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj&h²hh³j&h´K‰ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jjV'jjV'j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hXL**Parameters** ``struct v4l2_prio_state *global`` pointer to the :c:type:`struct v4l2_prio_state ` of the device node. ``enum v4l2_priority *local`` pointer to the desired priority, as defined by enum :c:type:`v4l2_priority` **Description** .. note:: This function should be used only by the V4L2 core.”•h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj`'h]”hŒ Parameters”…”�”}”(hjb'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj^'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K�hjZ'ubj8)�”}”(hhh]”(j=)�”}”(hŒy``struct v4l2_prio_state *global`` pointer to the :c:type:`struct v4l2_prio_state ` of the device node. ”h]”(jC)�”}”(hŒ"``struct v4l2_prio_state *global``”h]”hè)�”}”(hj'h]”hŒstruct v4l2_prio_state *global”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj}'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K‹hjy'ubj])�”}”(hhh]”hÞ)�”}”(hŒUpointer to the :c:type:`struct v4l2_prio_state ` of the device node.”h]”(hŒpointer to the ”…”�”}”(hj˜'h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct v4l2_prio_state `”h]”hè)�”}”(hj¢'h]”hŒstruct v4l2_prio_state”…”�”}”(hj¤'h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj 'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_prio_state”uh1hh³j”'h´K‹hj˜'ubhŒ of the device node.”…”�”}”(hj˜'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j”'h´K‹hj•'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjy'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j”'h´K‹hjv'ubj=)�”}”(hŒj``enum v4l2_priority *local`` pointer to the desired priority, as defined by enum :c:type:`v4l2_priority` ”h]”(jC)�”}”(hŒ``enum v4l2_priority *local``”h]”hè)�”}”(hjÛ'h]”hŒenum v4l2_priority *local”…”�”}”(hjÝ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÙ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KŒhjÕ'ubj])�”}”(hhh]”hÞ)�”}”(hŒKpointer to the desired priority, as defined by enum :c:type:`v4l2_priority`”h]”(hŒ4pointer to the desired priority, as defined by enum ”…”�”}”(hjô'h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_priority`”h]”hè)�”}”(hjþ'h]”hŒ v4l2_priority”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjü'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j`j¡jŒ v4l2_priority”uh1hh³jð'h´KŒhjô'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jð'h´KŒhjñ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÕ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jð'h´KŒhjv'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hjZ'ubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hj5(h]”hŒ Description”…”�”}”(hj7(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj3(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KŽhjZ'ubjæ )�”}”(hŒ3This function should be used only by the V4L2 core.”h]”hÞ)�”}”(hjM(h]”hŒ3This function should be used only by the V4L2 core.”…”�”}”(hjO(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KŽhjK(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hjZ'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒv4l2_prio_close (C function)”Œc.v4l2_prio_close”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒOvoid v4l2_prio_close (struct v4l2_prio_state *global, enum v4l2_priority local)”h]”j˜)�”}”(hŒNvoid v4l2_prio_close(struct v4l2_prio_state *global, enum v4l2_priority local)”h]”(jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒ(h²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj(h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K”ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’(h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj(h²hh³j‘(h´K”ubjÁ)�”}”(hŒv4l2_prio_close”h]”jÇ)�”}”(hŒv4l2_prio_close”h]”hŒv4l2_prio_close”…”�”}”(hj¤(h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj (ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj(h²hh³j‘(h´K”ubjŽ!)�”}”(hŒ:(struct v4l2_prio_state *global, enum v4l2_priority local)”h]”(j”!)�”}”(hŒstruct v4l2_prio_state *global”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjÀ(h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj¼(ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ(h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj¼(ubh)�”}”(hhh]”jÇ)�”}”(hŒv4l2_prio_state”h]”hŒv4l2_prio_state”…”�”}”(hjÞ(h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjÛ(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jà(Œmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlj¦(sbŒc.v4l2_prio_close”†”asbuh1hhj¼(ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ(h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj¼(ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj¼(ubjÇ)�”}”(hŒglobal”h]”hŒglobal”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj¼(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj¸(ubj”!)�”}”(hŒenum v4l2_priority local”h]”(jž)�”}”(hj¡h]”hŒenum”…”�”}”(hj2)h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj.)ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?)h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj.)ubh)�”}”(hhh]”jÇ)�”}”(hŒ v4l2_priority”h]”hŒ v4l2_priority”…”�”}”(hjP)h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjM)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jR)Œmodname”NŒ classname”Nj`jc)�”}”jf]”jú(Œc.v4l2_prio_close”†”asbuh1hhj.)ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn)h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj.)ubjÇ)�”}”(hŒlocal”h]”hŒlocal”…”�”}”(hj|)h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj.)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj¸(ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hj(h²hh³j‘(h´K”ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhj{(h²hh³j‘(h´K”ubah}”(h]”jv(ah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j‘(h´K”hjx(h²hubjó)�”}”(hhh]”hÞ)�”}”(hŒ6Implements the priority logic for a file handler close”h]”hŒ6Implements the priority logic for a file handler close”…”�”}”(hj¦)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K”hj£)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjx(h²hh³j‘(h´K”ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj¾)jj¾)j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hXC**Parameters** ``struct v4l2_prio_state *global`` pointer to the :c:type:`struct v4l2_prio_state ` of the device node. ``enum v4l2_priority local`` priority to be released, as defined by enum :c:type:`v4l2_priority` **Description** .. note:: This function should be used only by the V4L2 core.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hjÈ)h]”hŒ Parameters”…”�”}”(hjÊ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjÆ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K˜hjÂ)ubj8)�”}”(hhh]”(j=)�”}”(hŒy``struct v4l2_prio_state *global`` pointer to the :c:type:`struct v4l2_prio_state ` of the device node. ”h]”(jC)�”}”(hŒ"``struct v4l2_prio_state *global``”h]”hè)�”}”(hjç)h]”hŒstruct v4l2_prio_state *global”…”�”}”(hjé)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjå)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K–hjá)ubj])�”}”(hhh]”hÞ)�”}”(hŒUpointer to the :c:type:`struct v4l2_prio_state ` of the device node.”h]”(hŒpointer to the ”…”�”}”(hj*h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct v4l2_prio_state `”h]”hè)�”}”(hj *h]”hŒstruct v4l2_prio_state”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_prio_state”uh1hh³jü)h´K–hj*ubhŒ of the device node.”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jü)h´K–hjý)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjá)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jü)h´K–hjÞ)ubj=)�”}”(hŒa``enum v4l2_priority local`` priority to be released, as defined by enum :c:type:`v4l2_priority` ”h]”(jC)�”}”(hŒ``enum v4l2_priority local``”h]”hè)�”}”(hjC*h]”hŒenum v4l2_priority local”…”�”}”(hjE*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjA*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K—hj=*ubj])�”}”(hhh]”hÞ)�”}”(hŒCpriority to be released, as defined by enum :c:type:`v4l2_priority`”h]”(hŒ,priority to be released, as defined by enum ”…”�”}”(hj\*h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_priority`”h]”hè)�”}”(hjf*h]”hŒ v4l2_priority”…”�”}”(hjh*h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjd*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j`j¡jŒ v4l2_priority”uh1hh³jX*h´K—hj\*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jX*h´K—hjY*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj=*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jX*h´K—hjÞ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hjÂ)ubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hj�*h]”hŒ Description”…”�”}”(hjŸ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj›*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K™hjÂ)ubjæ )�”}”(hŒ3This function should be used only by the V4L2 core.”h]”hÞ)�”}”(hjµ*h]”hŒ3This function should be used only by the V4L2 core.”…”�”}”(hj·*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K™hj³*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hjÂ)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒv4l2_prio_max (C function)”Œc.v4l2_prio_max”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒAenum v4l2_priority v4l2_prio_max (struct v4l2_prio_state *global)”h]”j˜)�”}”(hŒ@enum v4l2_priority v4l2_prio_max(struct v4l2_prio_state *global)”h]”(jž)�”}”(hj¡h]”hŒenum”…”�”}”(hjë*h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjç*h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KŸubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù*h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjç*h²hh³jø*h´KŸubh)�”}”(hhh]”jÇ)�”}”(hŒ v4l2_priority”h]”hŒ v4l2_priority”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j +Œmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlŒ v4l2_prio_max”sbŒc.v4l2_prio_max”†”asbuh1hhjç*h²hh³jø*h´KŸubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj++h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjç*h²hh³jø*h´KŸubjÁ)�”}”(hŒ v4l2_prio_max”h]”jÇ)�”}”(hj(+h]”hŒ v4l2_prio_max”…”�”}”(hj=+h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj9+ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjç*h²hh³jø*h´KŸubjŽ!)�”}”(hŒ (struct v4l2_prio_state *global)”h]”j”!)�”}”(hŒstruct v4l2_prio_state *global”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjX+h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjT+ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje+h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjT+ubh)�”}”(hhh]”jÇ)�”}”(hŒv4l2_prio_state”h]”hŒv4l2_prio_state”…”�”}”(hjv+h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjs+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jx+Œmodname”NŒ classname”Nj`jc)�”}”jf]”j&+Œc.v4l2_prio_max”†”asbuh1hhjT+ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”+h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjT+ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj¢+h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjT+ubjÇ)�”}”(hŒglobal”h]”hŒglobal”…”�”}”(hj¯+h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjT+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjP+ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hjç*h²hh³jø*h´KŸubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjã*h²hh³jø*h´KŸubah}”(h]”jÞ*ah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jø*h´KŸhjà*h²hubjó)�”}”(hhh]”hÞ)�”}”(hŒ?Return the maximum priority, as stored at the **global** array.”h]”(hŒ.Return the maximum priority, as stored at the ”…”�”}”(hjÙ+h²hh³Nh´Nubj÷)�”}”(hŒ **global**”h]”hŒglobal”…”�”}”(hjá+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjÙ+ubhŒ array.”…”�”}”(hjÙ+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KŸhjÖ+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjà*h²hh³jø*h´KŸubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj,jj,j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hŒß**Parameters** ``struct v4l2_prio_state *global`` pointer to the :c:type:`struct v4l2_prio_state ` of the device node. **Description** .. note:: This function should be used only by the V4L2 core.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj ,h]”hŒ Parameters”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K£hj,ubj8)�”}”(hhh]”j=)�”}”(hŒy``struct v4l2_prio_state *global`` pointer to the :c:type:`struct v4l2_prio_state ` of the device node. ”h]”(jC)�”}”(hŒ"``struct v4l2_prio_state *global``”h]”hè)�”}”(hj,,h]”hŒstruct v4l2_prio_state *global”…”�”}”(hj.,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj*,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K¡hj&,ubj])�”}”(hhh]”hÞ)�”}”(hŒUpointer to the :c:type:`struct v4l2_prio_state ` of the device node.”h]”(hŒpointer to the ”…”�”}”(hjE,h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct v4l2_prio_state `”h]”hè)�”}”(hjO,h]”hŒstruct v4l2_prio_state”…”�”}”(hjQ,h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjM,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_prio_state”uh1hh³jA,h´K¡hjE,ubhŒ of the device node.”…”�”}”(hjE,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jA,h´K¡hjB,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj&,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jA,h´K¡hj#,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj,ubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjŠ,h]”hŒ Description”…”�”}”(hjŒ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjˆ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K£hj,ubjæ )�”}”(hŒ3This function should be used only by the V4L2 core.”h]”hÞ)�”}”(hj¢,h]”hŒ3This function should be used only by the V4L2 core.”…”�”}”(hj¤,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K£hj ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hj,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒv4l2_prio_check (C function)”Œc.v4l2_prio_check”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒNint v4l2_prio_check (struct v4l2_prio_state *global, enum v4l2_priority local)”h]”j˜)�”}”(hŒMint v4l2_prio_check(struct v4l2_prio_state *global, enum v4l2_priority local)”h]”(jV!)�”}”(hŒint”h]”hŒint”…”�”}”(hjØ,h²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hjÔ,h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K©ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç,h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÔ,h²hh³jæ,h´K©ubjÁ)�”}”(hŒv4l2_prio_check”h]”jÇ)�”}”(hŒv4l2_prio_check”h]”hŒv4l2_prio_check”…”�”}”(hjù,h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjõ,ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjÔ,h²hh³jæ,h´K©ubjŽ!)�”}”(hŒ:(struct v4l2_prio_state *global, enum v4l2_priority local)”h]”(j”!)�”}”(hŒstruct v4l2_prio_state *global”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj-ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"-h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj-ubh)�”}”(hhh]”jÇ)�”}”(hŒv4l2_prio_state”h]”hŒv4l2_prio_state”…”�”}”(hj3-h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj0-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j5-Œmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jljû,sbŒc.v4l2_prio_check”†”asbuh1hhj-ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS-h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj-ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hja-h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj-ubjÇ)�”}”(hŒglobal”h]”hŒglobal”…”�”}”(hjn-h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj -ubj”!)�”}”(hŒenum v4l2_priority local”h]”(jž)�”}”(hj¡h]”hŒenum”…”�”}”(hj‡-h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjƒ-ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”-h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjƒ-ubh)�”}”(hhh]”jÇ)�”}”(hŒ v4l2_priority”h]”hŒ v4l2_priority”…”�”}”(hj¥-h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj¢-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j§-Œmodname”NŒ classname”Nj`jc)�”}”jf]”jO-Œc.v4l2_prio_check”†”asbuh1hhjƒ-ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ-h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjƒ-ubjÇ)�”}”(hŒlocal”h]”hŒlocal”…”�”}”(hjÑ-h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjƒ-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj -ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hjÔ,h²hh³jæ,h´K©ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjÐ,h²hh³jæ,h´K©ubah}”(h]”jË,ah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jæ,h´K©hjÍ,h²hubjó)�”}”(hhh]”hÞ)�”}”(hŒ6Implements the priority logic for a file handler close”h]”hŒ6Implements the priority logic for a file handler close”…”�”}”(hjû-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K©hjø-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍ,h²hh³jæ,h´K©ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj.jj.j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hXB**Parameters** ``struct v4l2_prio_state *global`` pointer to the :c:type:`struct v4l2_prio_state ` of the device node. ``enum v4l2_priority local`` desired priority, as defined by enum :c:type:`v4l2_priority` local **Description** .. note:: This function should be used only by the V4L2 core.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj.h]”hŒ Parameters”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K­hj.ubj8)�”}”(hhh]”(j=)�”}”(hŒy``struct v4l2_prio_state *global`` pointer to the :c:type:`struct v4l2_prio_state ` of the device node. ”h]”(jC)�”}”(hŒ"``struct v4l2_prio_state *global``”h]”hè)�”}”(hj<.h]”hŒstruct v4l2_prio_state *global”…”�”}”(hj>.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj:.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K«hj6.ubj])�”}”(hhh]”hÞ)�”}”(hŒUpointer to the :c:type:`struct v4l2_prio_state ` of the device node.”h]”(hŒpointer to the ”…”�”}”(hjU.h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct v4l2_prio_state `”h]”hè)�”}”(hj_.h]”hŒstruct v4l2_prio_state”…”�”}”(hja.h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj].ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_prio_state”uh1hh³jQ.h´K«hjU.ubhŒ of the device node.”…”�”}”(hjU.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jQ.h´K«hjR.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj6.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jQ.h´K«hj3.ubj=)�”}”(hŒ```enum v4l2_priority local`` desired priority, as defined by enum :c:type:`v4l2_priority` local ”h]”(jC)�”}”(hŒ``enum v4l2_priority local``”h]”hè)�”}”(hj˜.h]”hŒenum v4l2_priority local”…”�”}”(hjš.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj–.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K¬hj’.ubj])�”}”(hhh]”hÞ)�”}”(hŒBdesired priority, as defined by enum :c:type:`v4l2_priority` local”h]”(hŒ%desired priority, as defined by enum ”…”�”}”(hj±.h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_priority`”h]”hè)�”}”(hj».h]”hŒ v4l2_priority”…”�”}”(hj½.h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj¹.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j`j¡jŒ v4l2_priority”uh1hh³j­.h´K¬hj±.ubhŒ local”…”�”}”(hj±.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j­.h´K¬hj®.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj’.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j­.h´K¬hj3.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hj.ubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjö.h]”hŒ Description”…”�”}”(hjø.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjô.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K®hj.ubjæ )�”}”(hŒ3This function should be used only by the V4L2 core.”h]”hÞ)�”}”(hj/h]”hŒ3This function should be used only by the V4L2 core.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K®hj /ubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hj.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒv4l2_file_operations (C struct)”Œc.v4l2_file_operations”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒv4l2_file_operations”h]”j˜)�”}”(hŒstruct v4l2_file_operations”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjD/h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj@/h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K³ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR/h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj@/h²hh³jQ/h´K³ubjÁ)�”}”(hŒv4l2_file_operations”h]”jÇ)�”}”(hj>/h]”hŒv4l2_file_operations”…”�”}”(hjd/h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj`/ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj@/h²hh³jQ/h´K³ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhj` ``intf_devnode`` pointer to :c:type:`struct media_intf_devnode ` ``pipe`` :c:type:`struct media_pipeline ` ``fops`` pointer to :c:type:`struct v4l2_file_operations ` for the video device ``device_caps`` device capabilities as used in v4l2_capabilities ``dev`` :c:type:`struct device ` for the video device ``cdev`` character device ``v4l2_dev`` pointer to :c:type:`struct v4l2_device ` parent ``dev_parent`` pointer to :c:type:`struct device ` parent ``ctrl_handler`` Control handler associated with this device node. May be NULL. ``queue`` :c:type:`struct vb2_queue ` associated with this device node. May be NULL. ``prio`` pointer to :c:type:`struct v4l2_prio_state ` with device's Priority state. If NULL, then v4l2_dev->prio will be used. ``name`` video device name ``vfl_type`` V4L device type, as defined by :c:type:`enum vfl_devnode_type ` ``vfl_dir`` V4L receiver, transmitter or m2m ``minor`` device node 'minor'. It is set to -1 if the registration failed ``num`` number of the video device node ``flags`` video device flags. Use bitops to set/clear/test flags. Contains a set of :c:type:`enum v4l2_video_device_flags `. ``index`` attribute to differentiate multiple indices on one physical device ``fh_lock`` Lock for all v4l2_fhs ``fh_list`` List of :c:type:`struct v4l2_fh ` ``dev_debug`` Internal device debug flags, not for use by drivers ``tvnorms`` Supported tv norms ``release`` video device release() callback ``ioctl_ops`` pointer to :c:type:`struct v4l2_ioctl_ops ` with ioctl callbacks ``valid_ioctls`` bitmap with the valid ioctls for this device ``lock`` pointer to :c:type:`struct mutex ` serialization lock **Description** .. note:: Only set **dev_parent** if that can't be deduced from **v4l2_dev**.”h]”(j )�”}”(hX**Definition**:: struct video_device { #if defined(CONFIG_MEDIA_CONTROLLER); struct media_entity entity; struct media_intf_devnode *intf_devnode; struct media_pipeline pipe; #endif; const struct v4l2_file_operations *fops; u32 device_caps; struct device dev; struct cdev *cdev; struct v4l2_device *v4l2_dev; struct device *dev_parent; struct v4l2_ctrl_handler *ctrl_handler; struct vb2_queue *queue; struct v4l2_prio_state *prio; char name[64]; enum vfl_devnode_type vfl_type; enum vfl_devnode_direction vfl_dir; int minor; u16 num; unsigned long flags; int index; spinlock_t fh_lock; struct list_head fh_list; int dev_debug; v4l2_std_id tvnorms; void (*release)(struct video_device *vdev); const struct v4l2_ioctl_ops *ioctl_ops; unsigned long valid_ioctls[BITS_TO_LONGS( BASE_VIDIOC_PRIVATE)]; struct mutex *lock; }; ”h]”(hÞ)�”}”(hŒ**Definition**::”h]”(j÷)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjô2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjð2ubhŒ:”…”�”}”(hjð2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kähjì2ubjl)�”}”(hXÊstruct video_device { #if defined(CONFIG_MEDIA_CONTROLLER); struct media_entity entity; struct media_intf_devnode *intf_devnode; struct media_pipeline pipe; #endif; const struct v4l2_file_operations *fops; u32 device_caps; struct device dev; struct cdev *cdev; struct v4l2_device *v4l2_dev; struct device *dev_parent; struct v4l2_ctrl_handler *ctrl_handler; struct vb2_queue *queue; struct v4l2_prio_state *prio; char name[64]; enum vfl_devnode_type vfl_type; enum vfl_devnode_direction vfl_dir; int minor; u16 num; unsigned long flags; int index; spinlock_t fh_lock; struct list_head fh_list; int dev_debug; v4l2_std_id tvnorms; void (*release)(struct video_device *vdev); const struct v4l2_ioctl_ops *ioctl_ops; unsigned long valid_ioctls[BITS_TO_LONGS( BASE_VIDIOC_PRIVATE)]; struct mutex *lock; };”h]”hXÊstruct video_device { #if defined(CONFIG_MEDIA_CONTROLLER); struct media_entity entity; struct media_intf_devnode *intf_devnode; struct media_pipeline pipe; #endif; const struct v4l2_file_operations *fops; u32 device_caps; struct device dev; struct cdev *cdev; struct v4l2_device *v4l2_dev; struct device *dev_parent; struct v4l2_ctrl_handler *ctrl_handler; struct vb2_queue *queue; struct v4l2_prio_state *prio; char name[64]; enum vfl_devnode_type vfl_type; enum vfl_devnode_direction vfl_dir; int minor; u16 num; unsigned long flags; int index; spinlock_t fh_lock; struct list_head fh_list; int dev_debug; v4l2_std_id tvnorms; void (*release)(struct video_device *vdev); const struct v4l2_ioctl_ops *ioctl_ops; unsigned long valid_ioctls[BITS_TO_LONGS( BASE_VIDIOC_PRIVATE)]; struct mutex *lock; };”…”�”}”hj 3sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jkh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kæhjì2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j 3h´Kähjè2ubhÞ)�”}”(hŒ **Members**”h]”j÷)�”}”(hj$3h]”hŒMembers”…”�”}”(hj&3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj"3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mhjè2ubj8)�”}”(hhh]”(j=)�”}”(hŒ8``entity`` :c:type:`struct media_entity ` ”h]”(jC)�”}”(hŒ ``entity``”h]”hè)�”}”(hjC3h]”hŒentity”…”�”}”(hjE3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjA3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kähj=3ubj])�”}”(hhh]”hÞ)�”}”(hŒ,:c:type:`struct media_entity `”h]”h)�”}”(hj^3h]”hè)�”}”(hj^3h]”hŒstruct media_entity”…”�”}”(hjc3h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj`3ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ media_entity”uh1hh³jX3h´Kähj\3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jX3h´KähjY3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj=3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jX3h´Kähj:3ubj=)�”}”(hŒU``intf_devnode`` pointer to :c:type:`struct media_intf_devnode ` ”h]”(jC)�”}”(hŒ``intf_devnode``”h]”hè)�”}”(hj–3h]”hŒ intf_devnode”…”�”}”(hj˜3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj”3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kåhj�3ubj])�”}”(hhh]”hÞ)�”}”(hŒCpointer to :c:type:`struct media_intf_devnode `”h]”(hŒ pointer to ”…”�”}”(hj¯3h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct media_intf_devnode `”h]”hè)�”}”(hj¹3h]”hŒstruct media_intf_devnode”…”�”}”(hj»3h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj·3ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒmedia_intf_devnode”uh1hh³j«3h´Kåhj¯3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j«3h´Kåhj¬3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj�3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j«3h´Kåhj:3ubj=)�”}”(hŒ:``pipe`` :c:type:`struct media_pipeline ` ”h]”(jC)�”}”(hŒ``pipe``”h]”hè)�”}”(hjî3h]”hŒpipe”…”�”}”(hjð3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjì3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kæhjè3ubj])�”}”(hhh]”hÞ)�”}”(hŒ0:c:type:`struct media_pipeline `”h]”h)�”}”(hj 4h]”hè)�”}”(hj 4h]”hŒstruct media_pipeline”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj 4ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒmedia_pipeline”uh1hh³j4h´Kæhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j4h´Kæhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjè3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j4h´Kæhj:3ubj=)�”}”(hŒf``fops`` pointer to :c:type:`struct v4l2_file_operations ` for the video device ”h]”(jC)�”}”(hŒ``fops``”h]”hè)�”}”(hjA4h]”hŒfops”…”�”}”(hjC4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj?4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kçhj;4ubj])�”}”(hhh]”hÞ)�”}”(hŒ\pointer to :c:type:`struct v4l2_file_operations ` for the video device”h]”(hŒ pointer to ”…”�”}”(hjZ4h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct v4l2_file_operations `”h]”hè)�”}”(hjd4h]”hŒstruct v4l2_file_operations”…”�”}”(hjf4h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjb4ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_file_operations”uh1hh³jV4h´KçhjZ4ubhŒ for the video device”…”�”}”(hjZ4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jV4h´KçhjW4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj;4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jV4h´Kçhj:3ubj=)�”}”(hŒA``device_caps`` device capabilities as used in v4l2_capabilities ”h]”(jC)�”}”(hŒ``device_caps``”h]”hè)�”}”(hj�4h]”hŒ device_caps”…”�”}”(hjŸ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj›4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kèhj—4ubj])�”}”(hhh]”hÞ)�”}”(hŒ0device capabilities as used in v4l2_capabilities”h]”hŒ0device capabilities as used in v4l2_capabilities”…”�”}”(hj¶4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j²4h´Kèhj³4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj—4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j²4h´Kèhj:3ubj=)�”}”(hŒ>``dev`` :c:type:`struct device ` for the video device ”h]”(jC)�”}”(hŒ``dev``”h]”hè)�”}”(hjÖ4h]”hŒdev”…”�”}”(hjØ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÔ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KéhjÐ4ubj])�”}”(hhh]”hÞ)�”}”(hŒ5:c:type:`struct device ` for the video device”h]”(h)�”}”(hŒ :c:type:`struct device `”h]”hè)�”}”(hjõ4h]”hŒ struct device”…”�”}”(hj÷4h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjó4ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒdevice”uh1hh³jë4h´Kéhjï4ubhŒ for the video device”…”�”}”(hjï4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jë4h´Kéhjì4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÐ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jë4h´Kéhj:3ubj=)�”}”(hŒ``cdev`` character device ”h]”(jC)�”}”(hŒ``cdev``”h]”hè)�”}”(hj.5h]”hŒcdev”…”�”}”(hj05h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj,5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kêhj(5ubj])�”}”(hhh]”hÞ)�”}”(hŒcharacter device”h]”hŒcharacter device”…”�”}”(hjG5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jC5h´KêhjD5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj(5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jC5h´Kêhj:3ubj=)�”}”(hŒJ``v4l2_dev`` pointer to :c:type:`struct v4l2_device ` parent ”h]”(jC)�”}”(hŒ ``v4l2_dev``”h]”hè)�”}”(hjg5h]”hŒv4l2_dev”…”�”}”(hji5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhje5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Këhja5ubj])�”}”(hhh]”hÞ)�”}”(hŒ` parent”h]”(hŒ pointer to ”…”�”}”(hj€5h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct v4l2_device `”h]”hè)�”}”(hjŠ5h]”hŒstruct v4l2_device”…”�”}”(hjŒ5h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjˆ5ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ v4l2_device”uh1hh³j|5h´Këhj€5ubhŒ parent”…”�”}”(hj€5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j|5h´Këhj}5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hja5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j|5h´Këhj:3ubj=)�”}”(hŒB``dev_parent`` pointer to :c:type:`struct device ` parent ”h]”(jC)�”}”(hŒ``dev_parent``”h]”hè)�”}”(hjÃ5h]”hŒ dev_parent”…”�”}”(hjÅ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÁ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kìhj½5ubj])�”}”(hhh]”hÞ)�”}”(hŒ2pointer to :c:type:`struct device ` parent”h]”(hŒ pointer to ”…”�”}”(hjÜ5h²hh³Nh´Nubh)�”}”(hŒ :c:type:`struct device `”h]”hè)�”}”(hjæ5h]”hŒ struct device”…”�”}”(hjè5h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjä5ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒdevice”uh1hh³jØ5h´KìhjÜ5ubhŒ parent”…”�”}”(hjÜ5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jØ5h´KìhjÙ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj½5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jØ5h´Kìhj:3ubj=)�”}”(hŒP``ctrl_handler`` Control handler associated with this device node. May be NULL. ”h]”(jC)�”}”(hŒ``ctrl_handler``”h]”hè)�”}”(hj6h]”hŒ ctrl_handler”…”�”}”(hj!6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kîhj6ubj])�”}”(hhh]”hÞ)�”}”(hŒ>Control handler associated with this device node. May be NULL.”h]”hŒ>Control handler associated with this device node. May be NULL.”…”�”}”(hj86h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kíhj56ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j46h´Kîhj:3ubj=)�”}”(hŒ```queue`` :c:type:`struct vb2_queue ` associated with this device node. May be NULL. ”h]”(jC)�”}”(hŒ ``queue``”h]”hè)�”}”(hjY6h]”hŒqueue”…”�”}”(hj[6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjW6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KïhjS6ubj])�”}”(hhh]”hÞ)�”}”(hŒU:c:type:`struct vb2_queue ` associated with this device node. May be NULL.”h]”(h)�”}”(hŒ&:c:type:`struct vb2_queue `”h]”hè)�”}”(hjx6h]”hŒstruct vb2_queue”…”�”}”(hjz6h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjv6ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ vb2_queue”uh1hh³jn6h´Kïhjr6ubhŒ/ associated with this device node. May be NULL.”…”�”}”(hjr6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jn6h´Kïhjo6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjS6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jn6h´Kïhj:3ubj=)�”}”(hŒ�``prio`` pointer to :c:type:`struct v4l2_prio_state ` with device's Priority state. If NULL, then v4l2_dev->prio will be used. ”h]”(jC)�”}”(hŒ``prio``”h]”hè)�”}”(hj±6h]”hŒprio”…”�”}”(hj³6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¯6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kñhj«6ubj])�”}”(hhh]”hÞ)�”}”(hŒ†pointer to :c:type:`struct v4l2_prio_state ` with device's Priority state. If NULL, then v4l2_dev->prio will be used.”h]”(hŒ pointer to ”…”�”}”(hjÊ6h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct v4l2_prio_state `”h]”hè)�”}”(hjÔ6h]”hŒstruct v4l2_prio_state”…”�”}”(hjÖ6h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÒ6ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_prio_state”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KðhjÊ6ubhŒK with device’s Priority state. If NULL, then v4l2_dev->prio will be used.”…”�”}”(hjÊ6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jñ6h´KðhjÇ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj«6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jÆ6h´Kñhj:3ubj=)�”}”(hŒ``name`` video device name ”h]”(jC)�”}”(hŒ``name``”h]”hè)�”}”(hj7h]”hŒname”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj 7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kòhj7ubj])�”}”(hhh]”hÞ)�”}”(hŒvideo device name”h]”hŒvideo device name”…”�”}”(hj'7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j#7h´Kòhj$7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j#7h´Kòhj:3ubj=)�”}”(hŒ_``vfl_type`` V4L device type, as defined by :c:type:`enum vfl_devnode_type ` ”h]”(jC)�”}”(hŒ ``vfl_type``”h]”hè)�”}”(hjG7h]”hŒvfl_type”…”�”}”(hjI7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjE7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KóhjA7ubj])�”}”(hhh]”hÞ)�”}”(hŒQV4L device type, as defined by :c:type:`enum vfl_devnode_type `”h]”(hŒV4L device type, as defined by ”…”�”}”(hj`7h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`enum vfl_devnode_type `”h]”hè)�”}”(hjj7h]”hŒenum vfl_devnode_type”…”�”}”(hjl7h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjh7ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒvfl_devnode_type”uh1hh³j\7h´Kóhj`7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j\7h´Kóhj]7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjA7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j\7h´Kóhj:3ubj=)�”}”(hŒ-``vfl_dir`` V4L receiver, transmitter or m2m ”h]”(jC)�”}”(hŒ ``vfl_dir``”h]”hè)�”}”(hjŸ7h]”hŒvfl_dir”…”�”}”(hj¡7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj�7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kôhj™7ubj])�”}”(hhh]”hÞ)�”}”(hŒ V4L receiver, transmitter or m2m”h]”hŒ V4L receiver, transmitter or m2m”…”�”}”(hj¸7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j´7h´Kôhjµ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj™7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j´7h´Kôhj:3ubj=)�”}”(hŒJ``minor`` device node 'minor'. It is set to -1 if the registration failed ”h]”(jC)�”}”(hŒ ``minor``”h]”hè)�”}”(hjØ7h]”hŒminor”…”�”}”(hjÚ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÖ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KõhjÒ7ubj])�”}”(hhh]”hÞ)�”}”(hŒ?device node 'minor'. It is set to -1 if the registration failed”h]”hŒCdevice node ‘minor’. It is set to -1 if the registration failed”…”�”}”(hjñ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jí7h´Kõhjî7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÒ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jí7h´Kõhj:3ubj=)�”}”(hŒ(``num`` number of the video device node ”h]”(jC)�”}”(hŒ``num``”h]”hè)�”}”(hj8h]”hŒnum”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Köhj 8ubj])�”}”(hhh]”hÞ)�”}”(hŒnumber of the video device node”h]”hŒnumber of the video device node”…”�”}”(hj*8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j&8h´Köhj'8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj 8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j&8h´Köhj:3ubj=)�”}”(hŒ–``flags`` video device flags. Use bitops to set/clear/test flags. Contains a set of :c:type:`enum v4l2_video_device_flags `. ”h]”(jC)�”}”(hŒ ``flags``”h]”hè)�”}”(hjJ8h]”hŒflags”…”�”}”(hjL8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjH8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KøhjD8ubj])�”}”(hhh]”hÞ)�”}”(hŒ‹video device flags. Use bitops to set/clear/test flags. Contains a set of :c:type:`enum v4l2_video_device_flags `.”h]”(hŒJvideo device flags. Use bitops to set/clear/test flags. Contains a set of ”…”�”}”(hjc8h²hh³Nh´Nubh)�”}”(hŒ@:c:type:`enum v4l2_video_device_flags `”h]”hè)�”}”(hjm8h]”hŒenum v4l2_video_device_flags”…”�”}”(hjo8h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjk8ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_video_device_flags”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´K÷hjc8ubhŒ.”…”�”}”(hjc8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jŠ8h´K÷hj`8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjD8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j_8h´Køhj:3ubj=)�”}”(hŒM``index`` attribute to differentiate multiple indices on one physical device ”h]”(jC)�”}”(hŒ ``index``”h]”hè)�”}”(hj§8h]”hŒindex”…”�”}”(hj©8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¥8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kùhj¡8ubj])�”}”(hhh]”hÞ)�”}”(hŒBattribute to differentiate multiple indices on one physical device”h]”hŒBattribute to differentiate multiple indices on one physical device”…”�”}”(hjÀ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¼8h´Kùhj½8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj¡8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j¼8h´Kùhj:3ubj=)�”}”(hŒ"``fh_lock`` Lock for all v4l2_fhs ”h]”(jC)�”}”(hŒ ``fh_lock``”h]”hè)�”}”(hjà8h]”hŒfh_lock”…”�”}”(hjâ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÞ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KúhjÚ8ubj])�”}”(hhh]”hÞ)�”}”(hŒLock for all v4l2_fhs”h]”hŒLock for all v4l2_fhs”…”�”}”(hjù8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jõ8h´Kúhjö8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÚ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jõ8h´Kúhj:3ubj=)�”}”(hŒ7``fh_list`` List of :c:type:`struct v4l2_fh ` ”h]”(jC)�”}”(hŒ ``fh_list``”h]”hè)�”}”(hj9h]”hŒfh_list”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kûhj9ubj])�”}”(hhh]”hÞ)�”}”(hŒ*List of :c:type:`struct v4l2_fh `”h]”(hŒList of ”…”�”}”(hj29h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct v4l2_fh `”h]”hè)�”}”(hj<9h]”hŒstruct v4l2_fh”…”�”}”(hj>9h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj:9ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_fh”uh1hh³j.9h´Kûhj29ubeh•}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j.9h´Kûhj/9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j.9h´Kûhj:3ubj=)�”}”(hŒB``dev_debug`` Internal device debug flags, not for use by drivers ”h]”(jC)�”}”(hŒ ``dev_debug``”h]”hè)�”}”(hjq9h]”hŒ dev_debug”…”�”}”(hjs9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjo9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kühjk9ubj])�”}”(hhh]”hÞ)�”}”(hŒ3Internal device debug flags, not for use by drivers”h]”hŒ3Internal device debug flags, not for use by drivers”…”�”}”(hjŠ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j†9h´Kühj‡9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjk9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j†9h´Kühj:3ubj=)�”}”(hŒ``tvnorms`` Supported tv norms ”h]”(jC)�”}”(hŒ ``tvnorms``”h]”hè)�”}”(hjª9h]”hŒtvnorms”…”�”}”(hj¬9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¨9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Kýhj¤9ubj])�”}”(hhh]”hÞ)�”}”(hŒSupported tv norms”h]”hŒSupported tv norms”…”�”}”(hjÃ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¿9h´KýhjÀ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj¤9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j¿9h´Kýhj:3ubj=)�”}”(hŒ,``release`` video device release() callback ”h]”(jC)�”}”(hŒ ``release``”h]”hè)�”}”(hjã9h]”hŒrelease”…”�”}”(hjå9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjá9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KÿhjÝ9ubj])�”}”(hhh]”hÞ)�”}”(hŒvideo device release() callback”h]”hŒvideo device release() callback”…”�”}”(hjü9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jø9h´Kÿhjù9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÝ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jø9h´Kÿhj:3ubj=)�”}”(hŒ_``ioctl_ops`` pointer to :c:type:`struct v4l2_ioctl_ops ` with ioctl callbacks ”h]”(jC)�”}”(hŒ ``ioctl_ops``”h]”hè)�”}”(hj:h]”hŒ ioctl_ops”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mhj:ubj])�”}”(hhh]”hÞ)�”}”(hŒPpointer to :c:type:`struct v4l2_ioctl_ops ` with ioctl callbacks”h]”(hŒ pointer to ”…”�”}”(hj5:h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct v4l2_ioctl_ops `”h]”hè)�”}”(hj?:h]”hŒstruct v4l2_ioctl_ops”…”�”}”(hjA:h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj=:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒv4l2_ioctl_ops”uh1hh³j1:h´Mhj5:ubhŒ with ioctl callbacks”…”�”}”(hj5:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j1:h´Mhj2:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j1:h´Mhj:3ubj=)�”}”(hŒ>``valid_ioctls`` bitmap with the valid ioctls for this device ”h]”(jC)�”}”(hŒ``valid_ioctls``”h]”hè)�”}”(hjx:h]”hŒ valid_ioctls”…”�”}”(hjz:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjv:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mhjr:ubj])�”}”(hhh]”hÞ)�”}”(hŒ,bitmap with the valid ioctls for this device”h]”hŒ,bitmap with the valid ioctls for this device”…”�”}”(hj‘:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j�:h´MhjŽ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjr:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j�:h´Mhj:3ubj=)�”}”(hŒG``lock`` pointer to :c:type:`struct mutex ` serialization lock ”h]”(jC)�”}”(hŒ``lock``”h]”hè)�”}”(hj±:h]”hŒlock”…”�”}”(hj³:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¯:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mhj«:ubj])�”}”(hhh]”hÞ)�”}”(hŒ` serialization lock”h]”(hŒ pointer to ”…”�”}”(hjÊ:h²hh³Nh´Nubh)�”}”(hŒ:c:type:`struct mutex `”h]”hè)�”}”(hjÔ:h]”hŒ struct mutex”…”�”}”(hjÖ:h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÒ:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒmutex”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MhjÊ:ubhŒ serialization lock”…”�”}”(hjÊ:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jñ:h´MhjÇ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj«:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jÆ:h´Mhj:3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hjè2ubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hj;h]”hŒ Description”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mhjè2ubjæ )�”}”(hŒCOnly set **dev_parent** if that can't be deduced from **v4l2_dev**.”h]”hÞ)�”}”(hj(;h]”(hŒ Only set ”…”�”}”(hj*;h²hh³Nh´Nubj÷)�”}”(hŒ**dev_parent**”h]”hŒ dev_parent”…”�”}”(hj1;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj*;ubhŒ! if that can’t be deduced from ”…”�”}”(hj*;h²hh³Nh´Nubj÷)�”}”(hŒ **v4l2_dev**”h]”hŒv4l2_dev”…”�”}”(hjC;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj*;ubhŒ.”…”�”}”(hj*;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mhj&;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hjè2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒ&media_entity_to_video_device (C macro)”Œc.media_entity_to_video_device”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒmedia_entity_to_video_device”h]”j˜)�”}”(hŒmedia_entity_to_video_device”h]”jÁ)�”}”(hŒmedia_entity_to_video_device”h]”jÇ)�”}”(hj|;h]”hŒmedia_entity_to_video_device”…”�”}”(hj†;h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj‚;ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj~;h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M9ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjz;h²hh³j™;h´M9ubah}”(h]”ju;ah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j™;h´M9hjw;h²hubjó)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jòhjw;h²hh³j™;h´M9ubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”jj jj²;jj²;j‰j‰j‰uh1jŒh²hhjjh³Nh´NubhÞ)�”}”(hŒ+``media_entity_to_video_device (__entity)``”h]”hè)�”}”(hj¸;h]”hŒ'media_entity_to_video_device (__entity)”…”�”}”(hjº;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¶;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M;hjjh²hubj )�”}”(hŒ}Returns a :c:type:`struct video_device ` from the :c:type:`struct media_entity ` embedded on it. ”h]”hÞ)�”}”(hŒ|Returns a :c:type:`struct video_device ` from the :c:type:`struct media_entity ` embedded on it.”h]”(hŒ Returns a ”…”�”}”(hjÒ;h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjÜ;h]”hŒstruct video_device”…”�”}”(hjÞ;h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÚ;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M9hjÒ;ubhŒ from the ”…”�”}”(hjÒ;h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct media_entity `”h]”hè)�”}”(hj<h]”hŒstruct media_entity”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjþ;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ media_entity”uh1hh³jù;h´M9hjÒ;ubhŒ embedded on it.”…”�”}”(hjÒ;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jù;h´M9hjÎ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jù;h´M9hjjh²hubj)�”}”(hŒc**Parameters** ``__entity`` pointer to :c:type:`struct media_entity `, may be NULL”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj3<h]”hŒ Parameters”…”�”}”(hj5<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj1<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M=hj-<ubj8)�”}”(hhh]”j=)�”}”(hŒQ``__entity`` pointer to :c:type:`struct media_entity `, may be NULL”h]”(jC)�”}”(hŒ ``__entity``”h]”hè)�”}”(hjR<h]”hŒ__entity”…”�”}”(hjT<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjP<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M?hjL<ubj])�”}”(hhh]”hÞ)�”}”(hŒDpointer to :c:type:`struct media_entity `, may be NULL”h]”(hŒ pointer to ”…”�”}”(hjk<h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct media_entity `”h]”hè)�”}”(hju<h]”hŒstruct media_entity”…”�”}”(hjw<h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjs<ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ media_entity”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M<hjk<ubhŒ , may be NULL”…”�”}”(hjk<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j’<h´M<hjh<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjL<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jg<h´M?hjI<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj-<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒto_video_device (C macro)”Œc.to_video_device”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒto_video_device”h]”j˜)�”}”(hŒto_video_device”h]”jÁ)�”}”(hŒto_video_device”h]”jÇ)�”}”(hjÉ<h]”hŒto_video_device”…”�”}”(hjÓ<h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjÏ<ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjË<h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MHubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjÇ<h²hh³jæ<h´MHubah}”(h]”jÂ<ah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jæ<h´MHhjÄ<h²hubjó)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÄ<h²hh³jæ<h´MHubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”jj jjÿ<jjÿ<j‰j‰j‰uh1jŒh²hhjjh³Nh´NubhÞ)�”}”(hŒ``to_video_device (cd)``”h]”hè)�”}”(hj=h]”hŒto_video_device (cd)”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MJhjjh²hubj )�”}”(hŒqReturns a :c:type:`struct video_device ` from the :c:type:`struct device ` embedded on it. ”h]”hÞ)�”}”(hŒpReturns a :c:type:`struct video_device ` from the :c:type:`struct device ` embedded on it.”h]”(hŒ Returns a ”…”�”}”(hj=h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hj)=h]”hŒstruct video_device”…”�”}”(hj+=h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj'=ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MHhj=ubhŒ from the ”…”�”}”(hj=h²hh³Nh´Nubh)�”}”(hŒ :c:type:`struct device `”h]”hè)�”}”(hjM=h]”hŒ struct device”…”�”}”(hjO=h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjK=ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒdevice”uh1hh³jF=h´MHhj=ubhŒ embedded on it.”…”�”}”(hj=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jF=h´MHhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jF=h´MHhjjh²hubj)�”}”(hŒD**Parameters** ``cd`` pointer to :c:type:`struct device `”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj€=h]”hŒ Parameters”…”�”}”(hj‚=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj~=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MLhjz=ubj8)�”}”(hhh]”j=)�”}”(hŒ2``cd`` pointer to :c:type:`struct device `”h]”(jC)�”}”(hŒ``cd``”h]”hè)�”}”(hjŸ=h]”hŒcd”…”�”}”(hj¡=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj�=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MNhj™=ubj])�”}”(hhh]”hÞ)�”}”(hŒ+pointer to :c:type:`struct device `”h]”(hŒ pointer to ”…”�”}”(hj¸=h²hh³Nh´Nubh)�”}”(hŒ :c:type:`struct device `”h]”hè)�”}”(hjÂ=h]”hŒ struct device”…”�”}”(hjÄ=h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÀ=ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒdevice”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MKhj¸=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jß=h´MKhjµ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj™=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j´=h´MNhj–=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjz=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒ$__video_register_device (C function)”Œc.__video_register_device”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒˆint __video_register_device (struct video_device *vdev, enum vfl_devnode_type type, int nr, int warn_if_nr_in_use, struct module *owner)”h]”j˜)�”}”(hŒ‡int __video_register_device(struct video_device *vdev, enum vfl_devnode_type type, int nr, int warn_if_nr_in_use, struct module *owner)”h]”(jV!)�”}”(hŒint”h]”hŒint”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj>h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MPubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'>h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj>h²hh³j&>h´MPubjÁ)�”}”(hŒ__video_register_device”h]”jÇ)�”}”(hŒ__video_register_device”h]”hŒ__video_register_device”…”�”}”(hj9>h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj5>ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj>h²hh³j&>h´MPubjŽ!)�”}”(hŒl(struct video_device *vdev, enum vfl_devnode_type type, int nr, int warn_if_nr_in_use, struct module *owner)”h]”(j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjU>h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjQ>ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb>h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjQ>ubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hjs>h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjp>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”ju>Œmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlj;>sbŒc.__video_register_device”†”asbuh1hhjQ>ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“>h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjQ>ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj¡>h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjQ>ubjÇ)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hj®>h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjQ>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjM>ubj”!)�”}”(hŒenum vfl_devnode_type type”h]”(jž)�”}”(hj¡h]”hŒenum”…”�”}”(hjÇ>h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjÃ>ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ>h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÃ>ubh)�”}”(hhh]”jÇ)�”}”(hŒvfl_devnode_type”h]”hŒvfl_devnode_type”…”�”}”(hjå>h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjâ>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jç>Œmodname”NŒ classname”Nj`jc)�”}”jf]”j�>Œc.__video_register_device”†”asbuh1hhjÃ>ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÃ>ubjÇ)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjÃ>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjM>ubj”!)�”}”(hŒint nr”h]”(jV!)�”}”(hŒint”h]”hŒint”…”�”}”(hj*?h²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj&?ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8?h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj&?ubjÇ)�”}”(hŒnr”h]”hŒnr”…”�”}”(hjF?h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj&?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjM>ubj”!)�”}”(hŒint warn_if_nr_in_use”h]”(jV!)�”}”(hŒint”h]”hŒint”…”�”}”(hj_?h²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj[?ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm?h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj[?ubjÇ)�”}”(hŒwarn_if_nr_in_use”h]”hŒwarn_if_nr_in_use”…”�”}”(hj{?h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj[?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjM>ubj”!)�”}”(hŒstruct module *owner”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hj”?h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj�?ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡?h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj�?ubh)�”}”(hhh]”jÇ)�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hj²?h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj¯?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j´?Œmodname”NŒ classname”Nj`jc)�”}”jf]”j�>Œc.__video_register_device”†”asbuh1hhj�?ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ?h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj�?ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjÞ?h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj�?ubjÇ)�”}”(hŒowner”h]”hŒowner”…”�”}”(hjë?h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj�?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjM>ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hj>h²hh³j&>h´MPubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhj>h²hh³j&>h´MPubah}”(h]”j >ah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j&>h´MPhj >h²hubjó)�”}”(hhh]”hÞ)�”}”(hŒregister video4linux devices”h]”hŒregister video4linux devices”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MPhj@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj >h²hh³j&>h´MPubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj-@jj-@j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hXZ**Parameters** ``struct video_device *vdev`` struct video_device to register ``enum vfl_devnode_type type`` type of device to register, as defined by :c:type:`enum vfl_devnode_type ` ``int nr`` which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free) ``int warn_if_nr_in_use`` warn if the desired device node number was already in use and another number was chosen instead. ``struct module *owner`` module that owns the video device node **Description** The registration code assigns minor numbers and device node numbers based on the requested type and registers the new device node with the kernel. This function assumes that struct video_device was zeroed when it was allocated and does not contain any stale date. An error is returned if no free minor or device node number could be found, or if the registration of the device node failed. Returns 0 on success. .. note:: This function is meant to be used only inside the V4L2 core. Drivers should use video_register_device() or video_register_device_no_warn().”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj7@h]”hŒ Parameters”…”�”}”(hj9@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj5@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MThj1@ubj8)�”}”(hhh]”(j=)�”}”(hŒ>``struct video_device *vdev`` struct video_device to register ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hjV@h]”hŒstruct video_device *vdev”…”�”}”(hjX@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjT@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MRhjP@ubj])�”}”(hhh]”hÞ)�”}”(hŒstruct video_device to register”h]”hŒstruct video_device to register”…”�”}”(hjo@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jk@h´MRhjl@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjP@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jk@h´MRhjM@ubj=)�”}”(hŒ|``enum vfl_devnode_type type`` type of device to register, as defined by :c:type:`enum vfl_devnode_type ` ”h]”(jC)�”}”(hŒ``enum vfl_devnode_type type``”h]”hè)�”}”(hj�@h]”hŒenum vfl_devnode_type type”…”�”}”(hj‘@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj�@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MShj‰@ubj])�”}”(hhh]”hÞ)�”}”(hŒ\type of device to register, as defined by :c:type:`enum vfl_devnode_type `”h]”(hŒ*type of device to register, as defined by ”…”�”}”(hj¨@h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`enum vfl_devnode_type `”h]”hè)�”}”(hj²@h]”hŒenum vfl_devnode_type”…”�”}”(hj´@h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj°@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒvfl_devnode_type”uh1hh³j¤@h´MShj¨@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¤@h´MShj¥@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj‰@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j¤@h´MShjM@ubj=)�”}”(hŒl``int nr`` which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free) ”h]”(jC)�”}”(hŒ ``int nr``”h]”hè)�”}”(hjç@h]”hŒint nr”…”�”}”(hjé@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjå@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MUhjá@ubj])�”}”(hhh]”hÞ)�”}”(hŒ`which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)”h]”hŒ`which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MThjý@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjá@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jü@h´MUhjM@ubj=)�”}”(hŒ{``int warn_if_nr_in_use`` warn if the desired device node number was already in use and another number was chosen instead. ”h]”(jC)�”}”(hŒ``int warn_if_nr_in_use``”h]”hè)�”}”(hj!Ah]”hŒint warn_if_nr_in_use”…”�”}”(hj#Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MWhjAubj])�”}”(hhh]”hÞ)�”}”(hŒ`warn if the desired device node number was already in use and another number was chosen instead.”h]”hŒ`warn if the desired device node number was already in use and another number was chosen instead.”…”�”}”(hj:Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MVhj7Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j6Ah´MWhjM@ubj=)�”}”(hŒ@``struct module *owner`` module that owns the video device node ”h]”(jC)�”}”(hŒ``struct module *owner``”h]”hè)�”}”(hj[Ah]”hŒstruct module *owner”…”�”}”(hj]Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjYAubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MXhjUAubj])�”}”(hhh]”hÞ)�”}”(hŒ&module that owns the video device node”h]”hŒ&module that owns the video device node”…”�”}”(hjtAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jpAh´MXhjqAubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjUAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jpAh´MXhjM@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hj1@ubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hj–Ah]”hŒ Description”…”�”}”(hj˜Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj”Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MZhj1@ubhÞ)�”}”(hŒ’The registration code assigns minor numbers and device node numbers based on the requested type and registers the new device node with the kernel.”h]”hŒ’The registration code assigns minor numbers and device node numbers based on the requested type and registers the new device node with the kernel.”…”�”}”(hj¬Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MYhj1@ubhÞ)�”}”(hŒtThis function assumes that struct video_device was zeroed when it was allocated and does not contain any stale date.”h]”hŒtThis function assumes that struct video_device was zeroed when it was allocated and does not contain any stale date.”…”�”}”(hj»Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M]hj1@ubhÞ)�”}”(hŒ}An error is returned if no free minor or device node number could be found, or if the registration of the device node failed.”h]”hŒ}An error is returned if no free minor or device node number could be found, or if the registration of the device node failed.”…”�”}”(hjÊAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M`hj1@ubhÞ)�”}”(hŒReturns 0 on success.”h]”hŒReturns 0 on success.”…”�”}”(hjÙAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mchj1@ubjæ )�”}”(hŒ‹This function is meant to be used only inside the V4L2 core. Drivers should use video_register_device() or video_register_device_no_warn().”h]”hÞ)�”}”(hŒ‹This function is meant to be used only inside the V4L2 core. Drivers should use video_register_device() or video_register_device_no_warn().”h]”hŒ‹This function is meant to be used only inside the V4L2 core. Drivers should use video_register_device() or video_register_device_no_warn().”…”�”}”(hjìAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MghjèAubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hj1@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒ"video_register_device (C function)”Œc.video_register_device”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒYint video_register_device (struct video_device *vdev, enum vfl_devnode_type type, int nr)”h]”j˜)�”}”(hŒXint video_register_device(struct video_device *vdev, enum vfl_devnode_type type, int nr)”h]”(jV!)�”}”(hŒint”h]”hŒint”…”�”}”(hj!Bh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hjBh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mrubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Bh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjBh²hh³j/Bh´MrubjÁ)�”}”(hŒvideo_register_device”h]”jÇ)�”}”(hŒvideo_register_device”h]”hŒvideo_register_device”…”�”}”(hjBBh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj>Bubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjBh²hh³j/Bh´MrubjŽ!)�”}”(hŒ?(struct video_device *vdev, enum vfl_devnode_type type, int nr)”h]”(j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hj^Bh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjZBubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkBh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjZBubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hj|Bh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjyBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j~BŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jljDBsbŒc.video_register_device”†”asbuh1hhjZBubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœBh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjZBubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjªBh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjZBubjÇ)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hj·Bh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjZBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjVBubj”!)�”}”(hŒenum vfl_devnode_type type”h]”(jž)�”}”(hj¡h]”hŒenum”…”�”}”(hjÐBh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjÌBubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝBh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÌBubh)�”}”(hhh]”jÇ)�”}”(hŒvfl_devnode_type”h]”hŒvfl_devnode_type”…”�”}”(hjîBh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjëBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jðBŒmodname”NŒ classname”Nj`jc)�”}”jf]”j˜BŒc.video_register_device”†”asbuh1hhjÌBubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÌBubjÇ)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjÌBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjVBubj”!)�”}”(hŒint nr”h]”(jV!)�”}”(hŒint”h]”hŒint”…”�”}”(hj3Ch²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj/Cubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjACh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj/CubjÇ)�”}”(hŒnr”h]”hŒnr”…”�”}”(hjOCh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj/Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjVBubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hjBh²hh³j/Bh´Mrubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjBh²hh³j/Bh´Mrubah}”(h]”jBah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j/Bh´MrhjBh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒregister video4linux devices”h]”hŒregister video4linux devices”…”�”}”(hjyCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MrhjvCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjBh²hh³j/Bh´Mrubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj‘Cjj‘Cj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hXÔ**Parameters** ``struct video_device *vdev`` struct video_device to register ``enum vfl_devnode_type type`` type of device to register, as defined by :c:type:`enum vfl_devnode_type ` ``int nr`` which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free) **Description** Internally, it calls __video_register_device(). Please see its documentation for more details. .. note:: if video_register_device fails, the release() callback of :c:type:`struct video_device ` structure is *not* called, so the caller is responsible for freeing any data. Usually that means that you video_device_release() should be called on failure.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj›Ch]”hŒ Parameters”…”�”}”(hj�Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj™Cubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mvhj•Cubj8)�”}”(hhh]”(j=)�”}”(hŒ>``struct video_device *vdev`` struct video_device to register ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hjºCh]”hŒstruct video_device *vdev”…”�”}”(hj¼Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¸Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mthj´Cubj])�”}”(hhh]”hÞ)�”}”(hŒstruct video_device to register”h]”hŒstruct video_device to register”…”�”}”(hjÓCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÏCh´MthjÐCubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj´Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jÏCh´Mthj±Cubj=)�”}”(hŒ|``enum vfl_devnode_type type`` type of device to register, as defined by :c:type:`enum vfl_devnode_type ` ”h]”(jC)�”}”(hŒ``enum vfl_devnode_type type``”h]”hè)�”}”(hjóCh]”hŒenum vfl_devnode_type type”…”�”}”(hjõCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjñCubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MuhjíCubj])�”}”(hhh]”hÞ)�”}”(hŒ\type of device to register, as defined by :c:type:`enum vfl_devnode_type `”h]”(hŒ*type of device to register, as defined by ”…”�”}”(hj Dh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`enum vfl_devnode_type `”h]”hè)�”}”(hjDh]”hŒenum vfl_devnode_type”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒvfl_devnode_type”uh1hh³jDh´Muhj Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jDh´Muhj Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjíCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jDh´Muhj±Cubj=)�”}”(hŒl``int nr`` which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free) ”h]”(jC)�”}”(hŒ ``int nr``”h]”hè)�”}”(hjKDh]”hŒint nr”…”�”}”(hjMDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjIDubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MwhjEDubj])�”}”(hhh]”hÞ)�”}”(hŒ`which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)”h]”hŒ`which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)”…”�”}”(hjdDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MvhjaDubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjEDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j`Dh´Mwhj±Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hj•CubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hj‡Dh]”hŒ Description”…”�”}”(hj‰Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj…Dubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Myhj•CubhÞ)�”}”(hŒ^Internally, it calls __video_register_device(). Please see its documentation for more details.”h]”hŒ^Internally, it calls __video_register_device(). Please see its documentation for more details.”…”�”}”(hj�Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mxhj•Cubjæ )�”}”(hXif video_register_device fails, the release() callback of :c:type:`struct video_device ` structure is *not* called, so the caller is responsible for freeing any data. Usually that means that you video_device_release() should be called on failure.”h]”hÞ)�”}”(hXif video_register_device fails, the release() callback of :c:type:`struct video_device ` structure is *not* called, so the caller is responsible for freeing any data. Usually that means that you video_device_release() should be called on failure.”h]”(hŒ:if video_register_device fails, the release() callback of ”…”�”}”(hj°Dh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjºDh]”hŒstruct video_device”…”�”}”(hj¼Dh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj¸Dubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M|hj°DubhŒ structure is ”…”�”}”(hj°Dh²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hjÞDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜDhj°DubhŒ‹ called, so the caller is responsible for freeing any data. Usually that means that you video_device_release() should be called on failure.”…”�”}”(hj°Dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j×Dh´M|hj¬Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hj•Cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒ*video_register_device_no_warn (C function)”Œc.video_register_device_no_warn”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒaint video_register_device_no_warn (struct video_device *vdev, enum vfl_devnode_type type, int nr)”h]”j˜)�”}”(hŒ`int video_register_device_no_warn(struct video_device *vdev, enum vfl_devnode_type type, int nr)”h]”(jV!)�”}”(hŒint”h]”hŒint”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hjEh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MŠubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Eh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjEh²hh³j*Eh´MŠubjÁ)�”}”(hŒvideo_register_device_no_warn”h]”jÇ)�”}”(hŒvideo_register_device_no_warn”h]”hŒvideo_register_device_no_warn”…”�”}”(hj=Eh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj9Eubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjEh²hh³j*Eh´MŠubjŽ!)�”}”(hŒ?(struct video_device *vdev, enum vfl_devnode_type type, int nr)”h]”(j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjYEh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjUEubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfEh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjUEubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hjwEh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjtEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jyEŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlj?EsbŒc.video_register_device_no_warn”†”asbuh1hhjUEubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Eh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjUEubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj¥Eh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjUEubjÇ)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hj²Eh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjUEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjQEubj”!)�”}”(hŒenum vfl_devnode_type type”h]”(jž)�”}”(hj¡h]”hŒenum”…”�”}”(hjËEh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjÇEubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØEh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÇEubh)�”}”(hhh]”jÇ)�”}”(hŒvfl_devnode_type”h]”hŒvfl_devnode_type”…”�”}”(hjéEh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjæEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jëEŒmodname”NŒ classname”Nj`jc)�”}”jf]”j“EŒc.video_register_device_no_warn”†”asbuh1hhjÇEubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÇEubjÇ)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjÇEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjQEubj”!)�”}”(hŒint nr”h]”(jV!)�”}”(hŒint”h]”hŒint”…”�”}”(hj.Fh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj*Fubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj` ``int nr`` which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free) **Description** This function is identical to video_register_device() except that no warning is issued if the desired device node number was already in use. Internally, it calls __video_register_device(). Please see its documentation for more details. .. note:: if video_register_device fails, the release() callback of :c:type:`struct video_device ` structure is *not* called, so the caller is responsible for freeing any data. Usually that means that you video_device_release() should be called on failure.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj–Fh]”hŒ Parameters”…”�”}”(hj˜Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj”Fubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MŽhj�Fubj8)�”}”(hhh]”(j=)�”}”(hŒ>``struct video_device *vdev`` struct video_device to register ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hjµFh]”hŒstruct video_device *vdev”…”�”}”(hj·Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj³Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MŒhj¯Fubj])�”}”(hhh]”hÞ)�”}”(hŒstruct video_device to register”h]”hŒstruct video_device to register”…”�”}”(hjÎFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÊFh´MŒhjËFubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj¯Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jÊFh´MŒhj¬Fubj=)�”}”(hŒ|``enum vfl_devnode_type type`` type of device to register, as defined by :c:type:`enum vfl_devnode_type ` ”h]”(jC)�”}”(hŒ``enum vfl_devnode_type type``”h]”hè)�”}”(hjîFh]”hŒenum vfl_devnode_type type”…”�”}”(hjðFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjìFubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M�hjèFubj])�”}”(hhh]”hÞ)�”}”(hŒ\type of device to register, as defined by :c:type:`enum vfl_devnode_type `”h]”(hŒ*type of device to register, as defined by ”…”�”}”(hjGh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`enum vfl_devnode_type `”h]”hè)�”}”(hjGh]”hŒenum vfl_devnode_type”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjGubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒvfl_devnode_type”uh1hh³jGh´M�hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jGh´M�hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjèFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jGh´M�hj¬Fubj=)�”}”(hŒl``int nr`` which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free) ”h]”(jC)�”}”(hŒ ``int nr``”h]”hè)�”}”(hjFGh]”hŒint nr”…”�”}”(hjHGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjDGubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M�hj@Gubj])�”}”(hhh]”hÞ)�”}”(hŒ`which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)”h]”hŒ`which device node number is desired: (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)”…”�”}”(hj_Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MŽhj\Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj@Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j[Gh´M�hj¬Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hj�FubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hj‚Gh]”hŒ Description”…”�”}”(hj„Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj€Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M‘hj�FubhÞ)�”}”(hŒŒThis function is identical to video_register_device() except that no warning is issued if the desired device node number was already in use.”h]”hŒŒThis function is identical to video_register_device() except that no warning is issued if the desired device node number was already in use.”…”�”}”(hj˜Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M�hj�FubhÞ)�”}”(hŒ^Internally, it calls __video_register_device(). Please see its documentation for more details.”h]”hŒ^Internally, it calls __video_register_device(). Please see its documentation for more details.”…”�”}”(hj§Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M“hj�Fubjæ )�”}”(hXif video_register_device fails, the release() callback of :c:type:`struct video_device ` structure is *not* called, so the caller is responsible for freeing any data. Usually that means that you video_device_release() should be called on failure.”h]”hÞ)�”}”(hXif video_register_device fails, the release() callback of :c:type:`struct video_device ` structure is *not* called, so the caller is responsible for freeing any data. Usually that means that you video_device_release() should be called on failure.”h]”(hŒ:if video_register_device fails, the release() callback of ”…”�”}”(hjºGh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjÄGh]”hŒstruct video_device”…”�”}”(hjÆGh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÂGubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M—hjºGubhŒ structure is ”…”�”}”(hjºGh²hh³Nh´NubjÝD)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hjæGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜDhjºGubhŒ‹ called, so the caller is responsible for freeing any data. Usually that means that you video_device_release() should be called on failure.”…”�”}”(hjºGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jáGh´M—hj¶Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hj�Fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒ$video_unregister_device (C function)”Œc.video_unregister_device”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒ8void video_unregister_device (struct video_device *vdev)”h]”j˜)�”}”(hŒ7void video_unregister_device(struct video_device *vdev)”h]”(jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj$Hh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj Hh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M¥ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Hh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj Hh²hh³j2Hh´M¥ubjÁ)�”}”(hŒvideo_unregister_device”h]”jÇ)�”}”(hŒvideo_unregister_device”h]”hŒvideo_unregister_device”…”�”}”(hjEHh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjAHubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj Hh²hh³j2Hh´M¥ubjŽ!)�”}”(hŒ(struct video_device *vdev)”h]”j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjaHh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj]Hubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnHh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj]Hubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj|Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j�HŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jljGHsbŒc.video_unregister_device”†”asbuh1hhj]Hubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸHh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj]Hubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj­Hh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj]HubjÇ)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hjºHh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj]Hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjYHubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hj Hh²hh³j2Hh´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjHh²hh³j2Hh´M¥ubah}”(h]”jHah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j2Hh´M¥hjHh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒUnregister video devices.”h]”hŒUnregister video devices.”…”�”}”(hjäHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M¥hjáHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjHh²hh³j2Hh´M¥ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jjüHjjüHj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hŒÂ**Parameters** ``struct video_device *vdev`` :c:type:`struct video_device ` to register **Description** Does nothing if vdev == NULL or if video_is_registered() returns false.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hjIh]”hŒ Parameters”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M©hjIubj8)�”}”(hhh]”j=)�”}”(hŒW``struct video_device *vdev`` :c:type:`struct video_device ` to register ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hj%Ih]”hŒstruct video_device *vdev”…”�”}”(hj'Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj#Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M§hjIubj])�”}”(hhh]”hÞ)�”}”(hŒ8:c:type:`struct video_device ` to register”h]”(h)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjDIh]”hŒstruct video_device”…”�”}”(hjFIh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjBIubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³j:Ih´M§hj>IubhŒ to register”…”�”}”(hj>Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j:Ih´M§hj;Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j:Ih´M§hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjIubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjIh]”hŒ Description”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj}Iubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M©hjIubhÞ)�”}”(hŒGDoes nothing if vdev == NULL or if video_is_registered() returns false.”h]”hŒGDoes nothing if vdev == NULL or if video_is_registered() returns false.”…”�”}”(hj•Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M¨hjIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒvideo_device_alloc (C function)”Œc.video_device_alloc”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒ/struct video_device * video_device_alloc (void)”h]”j˜)�”}”(hŒ-struct video_device *video_device_alloc(void)”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjÄIh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjÀIh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M®ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒIh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÀIh²hh³jÑIh´M®ubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hjãIh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjàIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jåIŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlŒvideo_device_alloc”sbŒc.video_device_alloc”†”asbuh1hhjÀIh²hh³jÑIh´M®ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÀIh²hh³jÑIh´M®ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjÀIh²hh³jÑIh´M®ubjÁ)�”}”(hŒvideo_device_alloc”h]”jÇ)�”}”(hjJh]”hŒvideo_device_alloc”…”�”}”(hj#Jh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjJubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjÀIh²hh³jÑIh´M®ubjŽ!)�”}”(hŒ(void)”h]”j”!)�”}”(hŒvoid”h]”jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj>Jh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj:Jubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj6Jubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hjÀIh²hh³jÑIh´M®ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhj¼Ih²hh³jÑIh´M®ubah}”(h]”j·Iah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jÑIh´M®hj¹Ih²hubjó)�”}”(hhh]”hÞ)�”}”(hŒEhelper function to alloc :c:type:`struct video_device `”h]”(hŒhelper function to alloc ”…”�”}”(hjhJh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjrJh]”hŒstruct video_device”…”�”}”(hjtJh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjpJubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`jc)�”}”jf]”jÿIŒc.video_device_alloc”†”asbjŒ video_device”uh1hh³jph´KhjhJubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M®hjeJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¹Ih²hh³jÑIh´M®ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj¤Jjj¤Jj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hŒ“**Parameters** ``void`` no arguments **Description** Returns NULL if ``-ENOMEM`` or a :c:type:`struct video_device ` on success.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj®Jh]”hŒ Parameters”…”�”}”(hj°Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj¬Jubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M²hj¨Jubj8)�”}”(hhh]”j=)�”}”(hŒ``void`` no arguments ”h]”(jC)�”}”(hŒ``void``”h]”hè)�”}”(hjÍJh]”hŒvoid”…”�”}”(hjÏJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjËJubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´KhjÇJubj])�”}”(hhh]”hÞ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjæJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jâJh´KhjãJubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÇJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jâJh´KhjÄJubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj¨JubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjKh]”hŒ Description”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Khj¨JubhÞ)�”}”(hŒYReturns NULL if ``-ENOMEM`` or a :c:type:`struct video_device ` on success.”h]”(hŒReturns NULL if ”…”�”}”(hjKh²hh³Nh´Nubhè)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hj&Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjKubhŒ or a ”…”�”}”(hjKh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hj:Kh]”hŒstruct video_device”…”�”}”(hj`”h]”(hŒhelper function to release ”…”�”}”(hjBLh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjLLh]”hŒstruct video_device”…”�”}”(hjNLh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjJLubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`jc)�”}”jf]”jùKŒc.video_device_release”†”asbjŒ video_device”uh1hh³jph´KhjBLubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mµhj?Lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjwKh²hh³j�Kh´Mµubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj~Ljj~Lj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hŒ©**Parameters** ``struct video_device *vdev`` pointer to :c:type:`struct video_device ` **Description** Can also be used for video_device->release\(\).”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hjˆLh]”hŒ Parameters”…”�”}”(hjŠLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj†Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M¹hj‚Lubj8)�”}”(hhh]”j=)�”}”(hŒV``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hj§Lh]”hŒstruct video_device *vdev”…”�”}”(hj©Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¥Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M·hj¡Lubj])�”}”(hhh]”hÞ)�”}”(hŒ7pointer to :c:type:`struct video_device `”h]”(hŒ pointer to ”…”�”}”(hjÀLh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjÊLh]”hŒstruct video_device”…”�”}”(hjÌLh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÈLubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³j¼Lh´M·hjÀLubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¼Lh´M·hj½Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj¡Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j¼Lh´M·hjžLubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj‚LubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjMh]”hŒ Description”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjÿLubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M¹hj‚LubhÞ)�”}”(hŒ/Can also be used for video_device->release\(\).”h]”hŒ/Can also be used for video_device->release().”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M¸hj‚Lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒ'video_device_release_empty (C function)”Œc.video_device_release_empty”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒ;void video_device_release_empty (struct video_device *vdev)”h]”j˜)�”}”(hŒ:void video_device_release_empty(struct video_device *vdev)”h]”(jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjFMh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hjBMh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M¾ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUMh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjBMh²hh³jTMh´M¾ubjÁ)�”}”(hŒvideo_device_release_empty”h]”jÇ)�”}”(hŒvideo_device_release_empty”h]”hŒvideo_device_release_empty”…”�”}”(hjgMh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjcMubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjBMh²hh³jTMh´M¾ubjŽ!)�”•}”(hŒ(struct video_device *vdev)”h]”j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjƒMh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjMubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjMubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hj¡Mh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjžMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j£MŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jljiMsbŒc.video_device_release_empty”†”asbuh1hhjMubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁMh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjMubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjÏMh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjMubjÇ)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hjÜMh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj{Mubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hjBMh²hh³jTMh´M¾ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhj>Mh²hh³jTMh´M¾ubah}”(h]”j9Mah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jTMh´M¾hj;Mh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒDhelper function to implement the video_device->release\(\) callback.”h]”hŒDhelper function to implement the video_device->release() callback.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M¾hjNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj;Mh²hh³jTMh´M¾ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jjNjjNj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hX1**Parameters** ``struct video_device *vdev`` pointer to :c:type:`struct video_device ` **Description** This release function does nothing. It should be used when the video_device is a static global struct. .. note:: Having a static video_device is a dubious construction at best.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj(Nh]”hŒ Parameters”…”�”}”(hj*Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj&Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÂhj"Nubj8)�”}”(hhh]”j=)�”}”(hŒV``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hjGNh]”hŒstruct video_device *vdev”…”�”}”(hjINh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjENubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÁhjANubj])�”}”(hhh]”hÞ)�”}”(hŒ7pointer to :c:type:`struct video_device `”h]”(hŒ pointer to ”…”�”}”(hj`Nh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjjNh]”hŒstruct video_device”…”�”}”(hjlNh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjhNubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³j\Nh´MÁhj`Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j\Nh´MÁhj]Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjANubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j\Nh´MÁhj>Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj"NubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hj¡Nh]”hŒ Description”…”�”}”(hj£Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjŸNubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÃhj"NubhÞ)�”}”(hŒ#This release function does nothing.”h]”hŒ#This release function does nothing.”…”�”}”(hj·Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÂhj"NubhÞ)�”}”(hŒBIt should be used when the video_device is a static global struct.”h]”hŒBIt should be used when the video_device is a static global struct.”…”�”}”(hjÆNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÄhj"Nubjæ )�”}”(hŒ?Having a static video_device is a dubious construction at best.”h]”hÞ)�”}”(hj×Nh]”hŒ?Having a static video_device is a dubious construction at best.”…”�”}”(hjÙNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÇhjÕNubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hj"Nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒv4l2_disable_ioctl (C function)”Œc.v4l2_disable_ioctl”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒEvoid v4l2_disable_ioctl (struct video_device *vdev, unsigned int cmd)”h]”j˜)�”}”(hŒDvoid v4l2_disable_ioctl(struct video_device *vdev, unsigned int cmd)”h]”(jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj Oh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÍubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj Oh²hh³jOh´MÍubjÁ)�”}”(hŒv4l2_disable_ioctl”h]”jÇ)�”}”(hŒv4l2_disable_ioctl”h]”hŒv4l2_disable_ioctl”…”�”}”(hj.Oh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj*Oubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj Oh²hh³jOh´MÍubjŽ!)�”}”(hŒ-(struct video_device *vdev, unsigned int cmd)”h]”(j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjJOh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjFOubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWOh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjFOubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hjhOh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjeOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jjOŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlj0OsbŒc.v4l2_disable_ioctl”†”asbuh1hhjFOubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆOh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjFOubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj–Oh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjFOubjÇ)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hj£Oh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjFOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjBOubj”!)�”}”(hŒunsigned int cmd”h]”(jV!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¼Oh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj¸Oubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊOh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj¸OubjV!)�”}”(hŒint”h]”hŒint”…”�”}”(hjØOh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj¸Oubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæOh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj¸OubjÇ)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjôOh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj¸Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjBOubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hj Oh²hh³jOh´MÍubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjOh²hh³jOh´MÍubah}”(h]”jOah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jOh´MÍhjOh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒGmark that a given command isn't implemented. shouldn't use core locking”h]”hŒKmark that a given command isn’t implemented. shouldn’t use core locking”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÍhjPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjOh²hh³jOh´MÍubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj6Pjj6Pj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hX¥**Parameters** ``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ``unsigned int cmd`` ioctl command **Description** This function allows drivers to provide just one v4l2_ioctl_ops struct, but disable ioctls based on the specific card that is actually found. .. note:: This must be called before video_register_device. See also the comments for determine_valid_ioctls().”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj@Ph]”hŒ Parameters”…”�”}”(hjBPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj>Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÑhj:Pubj8)�”}”(hhh]”(j=)�”}”(hŒV``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hj_Ph]”hŒstruct video_device *vdev”…”�”}”(hjaPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj]Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÐhjYPubj])�”}”(hhh]”hÞ)�”}”(hŒ7pointer to :c:type:`struct video_device `”h]”(hŒ pointer to ”…”�”}”(hjxPh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hj‚Ph]”hŒstruct video_device”…”�”}”(hj„Ph²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj€Pubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³jtPh´MÐhjxPubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jtPh´MÐhjuPubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjYPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jtPh´MÐhjVPubj=)�”}”(hŒ#``unsigned int cmd`` ioctl command ”h]”(jC)�”}”(hŒ``unsigned int cmd``”h]”hè)�”}”(hj·Ph]”hŒunsigned int cmd”…”�”}”(hj¹Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjµPubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÑhj±Pubj])�”}”(hhh]”hÞ)�”}”(hŒ ioctl command”h]”hŒ ioctl command”…”�”}”(hjÐPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÌPh´MÑhjÍPubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj±Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jÌPh´MÑhjVPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hj:PubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjòPh]”hŒ Description”…”�”}”(hjôPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjðPubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÓhj:PubhÞ)�”}”(hŒ�This function allows drivers to provide just one v4l2_ioctl_ops struct, but disable ioctls based on the specific card that is actually found.”h]”hŒ�This function allows drivers to provide just one v4l2_ioctl_ops struct, but disable ioctls based on the specific card that is actually found.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MÒhj:Pubjæ )�”}”(hŒeThis must be called before video_register_device. See also the comments for determine_valid_ioctls().”h]”hÞ)�”}”(hŒeThis must be called before video_register_device. See also the comments for determine_valid_ioctls().”h]”hŒeThis must be called before video_register_device. See also the comments for determine_valid_ioctls().”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M×hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jå hj:Pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒvideo_get_drvdata (C function)”Œc.video_get_drvdata”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒ4void * video_get_drvdata (struct video_device *vdev)”h]”j˜)�”}”(hŒ2void *video_get_drvdata(struct video_device *vdev)”h]”(jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjPQh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hjLQh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mãubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Qh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjLQh²hh³j^Qh´Mãubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjmQh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjLQh²hh³j^Qh´MãubjÁ)�”}”(hŒvideo_get_drvdata”h]”jÇ)�”}”(hŒvideo_get_drvdata”h]”hŒvideo_get_drvdata”…”�”}”(hj~Qh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjzQubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjLQh²hh³j^Qh´MãubjŽ!)�”}”(hŒ(struct video_device *vdev)”h]”j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjšQh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj–Qubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§Qh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj–Qubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hj¸Qh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjµQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jºQŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlj€QsbŒc.video_get_drvdata”†”asbuh1hhj–Qubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØQh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj–Qubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjæQh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj–QubjÇ)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hjóQh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj–Qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj’Qubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hjLQh²hh³j^Qh´Mãubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjHQh²hh³j^Qh´Mãubah}”(h]”jCQah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j^Qh´MãhjEQh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒDgets private data from :c:type:`struct video_device `.”h]”(hŒgets private data from ”…”�”}”(hjRh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hj'Rh]”hŒstruct video_device”…”�”}”(hj)Rh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj%Rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`jc)�”}”jf]”jÔQŒc.video_get_drvdata”†”asbjŒ video_device”uh1hh³jph´KhjRubhŒ.”…”�”}”(hjRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MãhjRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjEQh²hh³j^Qh´Mãubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj]Rjj]Rj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hŒŸ**Parameters** ``struct video_device *vdev`` pointer to :c:type:`struct video_device ` **Description** returns a pointer to the private data”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hjgRh]”hŒ Parameters”…”�”}”(hjiRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjeRubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MçhjaRubj8)�”}”(hhh]”j=)�”}”(hŒV``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hj†Rh]”hŒstruct video_device *vdev”…”�”}”(hjˆRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj„Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Måhj€Rubj])�”}”(hhh]”hÞ)�”}”(hŒ7pointer to :c:type:`struct video_device `”h]”(hŒ pointer to ”…”�”}”(hjŸRh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hj©Rh]”hŒstruct video_device”…”�”}”(hj«Rh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj§Rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³j›Rh´MåhjŸRubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j›Rh´MåhjœRubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj€Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j›Rh´Måhj}Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjaRubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjàRh]”hŒ Description”…”�”}”(hjâRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjÞRubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MçhjaRubhÞ)�”}”(hŒ%returns a pointer to the private data”h]”hŒ%returns a pointer to the private data”…”�”}”(hjöRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MæhjaRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒvideo_set_drvdata (C function)”Œc.video_set_drvdata”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒ>void video_set_drvdata (struct video_device *vdev, void *data)”h]”j˜)�”}”(hŒ=void video_set_drvdata(struct video_device *vdev, void *data)”h]”(jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj%Sh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj!Sh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mïubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Sh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj!Sh²hh³j3Sh´MïubjÁ)�”}”(hŒvideo_set_drvdata”h]”jÇ)�”}”(hŒvideo_set_drvdata”h]”hŒvideo_set_drvdata”…”�”}”(hjFSh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjBSubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj!Sh²hh³j3Sh´MïubjŽ!)�”}”(hŒ'(struct video_device *vdev, void *data)”h]”(j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjbSh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj^Subj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoSh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj^Subh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hj€Sh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj}Subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j‚SŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jljHSsbŒc.video_set_drvdata”†”asbuh1hhj^Subj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Sh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj^Subjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj®Sh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj^SubjÇ)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hj»Sh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj^Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjZSubj”!)�”}”(hŒ void *data”h]”(jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÔSh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hjÐSubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâSh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjÐSubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjðSh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjÐSubjÇ)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjýSh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjÐSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjZSubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hj!Sh²hh³j3Sh´Mïubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjSh²hh³j3Sh´Mïubah}”(h]”jSah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j3Sh´MïhjSh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒDsets private data from :c:type:`struct video_device `.”h]”(hŒsets private data from ”…”�”}”(hj'Th²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hj1Th]”hŒstruct video_device”…”�”}”(hj3Th²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj/Tubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`jc)�”}”jf]”jœSŒc.video_set_drvdata”†”asbjŒ video_device”uh1hh³jph´Khj'TubhŒ.”…”�”}”(hj'Th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mïhj$Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjSh²hh³j3Sh´Mïubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jjgTjjgTj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hŒŽ**Parameters** ``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ``void *data`` private data pointer”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hjqTh]”hŒ Parameters”…”�”}”(hjsTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjoTubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MóhjkTubj8)�”}”(hhh]”(j=)�”}”(hŒV``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hj�Th]”hŒstruct video_device *vdev”…”�”}”(hj’Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjŽTubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MñhjŠTubj])�”}”(hhh]”hÞ)�”}”(hŒ7pointer to :c:type:`struct video_device `”h]”(hŒ pointer to ”…”�”}”(hj©Th²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hj³Th]”hŒstruct video_device”…”�”}”(hjµTh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhj±Tubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³j¥Th´Mñhj©Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¥Th´Mñhj¦Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjŠTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j¥Th´Mñhj‡Tubj=)�”}”(hŒ#``void *data`` private data pointer”h]”(jC)�”}”(hŒ``void *data``”h]”hè)�”}”(hjèTh]”hŒ void *data”…”�”}”(hjêTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjæTubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MóhjâTubj])�”}”(hhh]”hÞ)�”}”(hŒprivate data pointer”h]”hŒprivate data pointer”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MòhjþTubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjâTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jýTh´Móhj‡Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hjkTubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒvideo_devdata (C function)”Œc.video_devdata”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒ7struct video_device * video_devdata (struct file *file)”h]”j˜)�”}”(hŒ5struct video_device *video_devdata(struct file *file)”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjBUh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj>Uh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Múubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPUh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj>Uh²hh³jOUh´Múubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hjaUh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj^Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jcUŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlŒ video_devdata”sbŒc.video_devdata”†”asbuh1hhj>Uh²hh³jOUh´Múubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Uh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj>Uh²hh³jOUh´Múubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj�Uh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj>Uh²hh³jOUh´MúubjÁ)�”}”(hŒ video_devdata”h]”jÇ)�”}”(hjUh]”hŒ video_devdata”…”�”}”(hj¡Uh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj�Uubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj>Uh²hh³jOUh´MúubjŽ!)�”}”(hŒ(struct file *file)”h]”j”!)�”}”(hŒstruct file *file”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hj¼Uh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj¸Uubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉUh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj¸Uubh)�”}”(hhh]”jÇ)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÚUh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj×Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jÜUŒmodname”NŒ classname”Nj`jc)�”}”jf]”j}UŒc.video_devdata”†”asbuh1hhj¸Uubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøUh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj¸Uubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj¸UubjÇ)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj¸Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj´Uubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hj>Uh²hh³jOUh´Múubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhj:Uh²hh³jOUh´Múubah}”(h]”j5Uah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jOUh´Múhj7Uh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒCgets :c:type:`struct video_device ` from struct file.”h]”(hŒgets ”…”�”}”(hj=Vh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjGVh]”hŒstruct video_device”…”�”}”(hjIVh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjEVubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`jc)�”}”jf]”j}UŒc.video_devdata”†”asbjŒ video_device”uh1hh³jph´Khj=VubhŒ from struct file.”…”�”}”(hj=Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Múhj:Vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj7Uh²hh³jOUh´Múubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj}Vjj}Vj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hŒ>**Parameters** ``struct file *file`` pointer to struct file”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj‡Vh]”hŒ Parameters”…”�”}”(hj‰Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj…Vubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mþhj�Vubj8)�”}”(hhh]”j=)�”}”(hŒ,``struct file *file`` pointer to struct file”h]”(jC)�”}”(hŒ``struct file *file``”h]”hè)�”}”(hj¦Vh]”hŒstruct file *file”…”�”}”(hj¨Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¤Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mhj Vubj])�”}”(hhh]”hÞ)�”}”(hŒpointer to struct file”h]”hŒpointer to struct file”…”�”}”(hj¿Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mühj¼Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j»Vh´Mhj�Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj�Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒvideo_drvdata (C function)”Œc.video_drvdata”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒ(void * video_drvdata (struct file *file)”h]”j˜)�”}”(hŒ&void *video_drvdata(struct file *file)”h]”(jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hjüVh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjüVh²hh³jWh´Mubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjüVh²hh³jWh´MubjÁ)�”}”(hŒ video_drvdata”h]”jÇ)�”}”(hŒ video_drvdata”h]”hŒ video_drvdata”…”�”}”(hj.Wh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj*Wubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjüVh²hh³jWh´MubjŽ!)�”}”(hŒ(struct file *file)”h]”j”!)�”}”(hŒstruct file *file”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjJWh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjFWubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWWh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjFWubh)�”}”(hhh]”jÇ)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjhWh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjeWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jjWŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlj0WsbŒc.video_drvdata”†”asbuh1hhjFWubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆWh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjFWubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj–Wh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjFWubjÇ)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj£Wh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjFWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjBWubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hjüVh²hh³jWh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjøVh²hh³jWh´Mubah}”(h]”jóVah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³jWh´MhjõVh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒZgets private data from :c:type:`struct video_device ` using the struct file.”h]”(hŒgets private data from ”…”�”}”(hjÍWh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hj×Wh]”hŒstruct video_device”…”�”}”(hjÙWh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÕWubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`jc)�”}”jf]”j„WŒc.video_drvdata”†”asbjŒ video_device”uh1hh³jph´KhjÍWubhŒ using the struct file.”…”�”}”(hjÍWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MhjÊWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjõVh²hh³jWh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj Xjj Xj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hŒ³**Parameters** ``struct file *file`` pointer to struct file **Description** This is function combines both video_get_drvdata() and video_devdata() as this is used very often.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hjXh]”hŒ Parameters”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MhjXubj8)�”}”(hhh]”j=)�”}”(hŒ-``struct file *file`` pointer to struct file ”h]”(jC)�”}”(hŒ``struct file *file``”h]”hè)�”}”(hj6Xh]”hŒstruct file *file”…”�”}”(hj8Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj4Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mhj0Xubj])�”}”(hhh]”hÞ)�”}”(hŒpointer to struct file”h]”hŒpointer to struct file”…”�”}”(hjOXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jKXh´MhjLXubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj0Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jKXh´Mhj-Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjXubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjqXh]”hŒ Description”…”�”}”(hjsXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjoXubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MhjXubhÞ)�”}”(hŒbThis is function combines both video_get_drvdata() and video_devdata() as this is used very often.”h]”hŒbThis is function combines both video_get_drvdata() and video_devdata() as this is used very often.”…”�”}”(hj‡Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MhjXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒ#video_device_node_name (C function)”Œc.video_device_node_name”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒ?const char * video_device_node_name (struct video_device *vdev)”h]”j˜)�”}”(hŒ=const char *video_device_node_name(struct video_device *vdev)”h]”(jž)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj¶Xh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj²Xh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅXh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj²Xh²hh³jÄXh´MubjV!)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÓXh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj²Xh²hh³jÄXh´Mubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáXh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj²Xh²hh³jÄXh´Mubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjïXh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj²Xh²hh³jÄXh´MubjÁ)�”}”(hŒvideo_device_node_name”h]”jÇ)�”}”(hŒvideo_device_node_name”h]”hŒvideo_device_node_name”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjüXubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj²Xh²hh³jÄXh´MubjŽ!)�”}”(hŒ(struct video_device *vdev)”h]”j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hjYubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Yh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjYubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hj:Yh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj7Yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j` **Description** Returns the device name string”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hjÁYh]”hŒ Parameters”…”�”}”(hjÃYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj¿Yubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mhj»Yubj8)�”}”(hhh]”j=)�”}”(hŒV``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hjàYh]”hŒstruct video_device *vdev”…”�”}”(hjâYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÞYubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MhjÚYubj])�”}”(hhh]”hÞ)�”}”(hŒ7pointer to :c:type:`struct video_device `”h]”(hŒ pointer to ”…”�”}”(hjùYh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjZh]”hŒstruct video_device”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjZubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³jõYh´MhjùYubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jõYh´MhjöYubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÚYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jõYh´Mhj×Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj»YubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hj:Zh]”hŒ Description”…”�”}”(hj` is registered.”h]”(hŒreturns true if the ”…”�”}”(hj?[h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjI[h]”hŒstruct video_device”…”�”}”(hjK[h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjG[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`jc)�”}”jf]”jöZŒc.video_is_registered”†”asbjŒ video_device”uh1hh³jph´Khj?[ubhŒ is registered.”…”�”}”(hj?[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mhj<[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjtZh²hh³j�Zh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj[jj[j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hŒg**Parameters** ``struct video_device *vdev`` pointer to :c:type:`struct video_device `”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj‰[h]”hŒ Parameters”…”�”}”(hj‹[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj‡[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Mhjƒ[ubj8)�”}”(hhh]”j=)�”}”(hŒU``struct video_device *vdev`` pointer to :c:type:`struct video_device `”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hj¨[h]”hŒstruct video_device *vdev”…”�”}”(hjª[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¦[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M!hj¢[ubj])�”}”(hhh]”hÞ)�”}”(hŒ7pointer to :c:type:`struct video_device `”h]”(hŒ pointer to ”…”�”}”(hjÁ[h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”hè)�”}”(hjË[h]”hŒstruct video_device”…”�”}”(hjÍ[h²hh³Nh´Nubah}”(h]”h ]”(j j Œc-type”eh"]”h$]”h&]”uh1hçhjÉ[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j`j¡jŒ video_device”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MhjÁ[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jè[h´Mhj¾[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj¢[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j½[h´M!hjŸ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjƒ[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒv4l2_debugfs_root (C function)”Œc.v4l2_debugfs_root”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒ(struct dentry * v4l2_debugfs_root (void)”h]”j˜)�”}”(hŒ&struct dentry *v4l2_debugfs_root(void)”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hj!\h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj\h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M&ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/\h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj\h²hh³j.\h´M&ubh)�”}”(hhh]”jÇ)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj@\h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj=\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jB\Œmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlŒv4l2_debugfs_root”sbŒc.v4l2_debugfs_root”†”asbuh1hhj\h²hh³j.\h´M&ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja\h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj\h²hh³j.\h´M&ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjo\h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj\h²hh³j.\h´M&ubjÁ)�”}”(hŒv4l2_debugfs_root”h]”jÇ)�”}”(hj^\h]”hŒv4l2_debugfs_root”…”�”}”(hj€\h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj|\ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj\h²hh³j.\h´M&ubjŽ!)�”}”(hŒ(void)”h]”j”!)�”}”(hŒvoid”h]”jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj›\h²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj—\ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj“\ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hj\h²hh³j.\h´M&ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhj\h²hh³j.\h´M&ubah}”(h]”j\ah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j.\h´M&hj\h²hubjó)�”}”(hhh]”hÞ)�”}”(hŒ6returns the dentry of the top-level "v4l2" debugfs dir”h]”hŒ:returns the dentry of the top-level “v4l2â€� debugfs dir”…”�”}”(hjÅ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M&hjÂ\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj\h²hh³j.\h´M&ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jjÝ\jjÝ\j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hŒx**Parameters** ``void`` no arguments **Description** If this directory does not yet exist, then it will be created.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hjç\h]”hŒ Parameters”…”�”}”(hjé\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjå\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M*hjá\ubj8)�”}”(hhh]”j=)�”}”(hŒ``void`` no arguments ”h]”(jC)�”}”(hŒ``void``”h]”hè)�”}”(hj]h]”hŒvoid”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Khj]ubj])�”}”(hhh]”hÞ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j]h´Khj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j]h´Khjý\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjá\ubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjA]h]”hŒ Description”…”�”}”(hjC]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhj?]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´Khjá\ubhÞ)�”}”(hŒ>If this directory does not yet exist, then it will be created.”h]”hŒ>If this directory does not yet exist, then it will be created.”…”�”}”(hjW]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M'hjá\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒ(video_device_pipeline_start (C function)”Œc.video_device_pipeline_start”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒXint video_device_pipeline_start (struct video_device *vdev, struct media_pipeline *pipe)”h]”j˜)�”}”(hŒWint video_device_pipeline_start(struct video_device *vdev, struct media_pipeline *pipe)”h]”(jV!)�”}”(hŒint”h]”hŒint”…”�”}”(hj†]h²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj‚]h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M6ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•]h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj‚]h²hh³j”]h´M6ubjÁ)�”}”(hŒvideo_device_pipeline_start”h]”jÇ)�”}”(hŒvideo_device_pipeline_start”h]”hŒvideo_device_pipeline_start”…”�”}”(hj§]h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj£]ubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj‚]h²hh³j”]h´M6ubjŽ!)�”}”(hŒ8(struct video_device *vdev, struct media_pipeline *pipe)”h]”(j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjÃ]h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj¿]ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ]h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj¿]ubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hjá]h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjÞ]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jã]Œmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlj©]sbŒc.video_device_pipeline_start”†”asbuh1hhj¿]ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj¿]ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj¿]ubjÇ)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj¿]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj»]ubj”!)�”}”(hŒstruct media_pipeline *pipe”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hj5^h²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj1^ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB^h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj1^ubh)�”}”(hhh]”jÇ)�”}”(hŒmedia_pipeline”h]”hŒmedia_pipeline”…”�”}”(hjS^h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjP^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”jU^Œmodname”NŒ classname”Nj`jc)�”}”jf]”jý]Œc.video_device_pipeline_start”†”asbuh1hhj1^ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq^h²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj1^ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj1^ubjÇ)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjŒ^h²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj1^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj»]ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hj‚]h²hh³j”]h´M6ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhj~]h²hh³j”]h´M6ubah}”(h]”jy]ah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j”]h´M6hj{]h²hubjó)�”}”(hhh]”hÞ)�”}”(hŒMark a pipeline as streaming”h]”hŒMark a pipeline as streaming”…”�”}”(hj¶^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M6hj³^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj{]h²hh³j”]h´M6ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jjÎ^jjÎ^j‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hXô**Parameters** ``struct video_device *vdev`` Starting video device ``struct media_pipeline *pipe`` Media pipeline to be assigned to all entities in the pipeline. **Description** Mark all entities connected to a given video device through enabled links, either directly or indirectly, as streaming. The given pipeline object is assigned to every pad in the pipeline and stored in the media_pad pipe field. Calls to this function can be nested, in which case the same number of video_device_pipeline_stop() calls will be required to stop streaming. The pipeline pointer must be identical for all nested calls to video_device_pipeline_start(). The video device must contain a single pad. This is a convenience wrapper around media_pipeline_start().”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hjØ^h]”hŒ Parameters”…”�”}”(hjÚ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjÖ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M:hjÒ^ubj8)�”}”(hhh]”(j=)�”}”(hŒ4``struct video_device *vdev`` Starting video device ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hj÷^h]”hŒstruct video_device *vdev”…”�”}”(hjù^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjõ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M7hjñ^ubj])�”}”(hhh]”hÞ)�”}”(hŒStarting video device”h]”hŒStarting video device”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j _h´M7hj _ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjñ^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³j _h´M7hjî^ubj=)�”}”(hŒ_``struct media_pipeline *pipe`` Media pipeline to be assigned to all entities in the pipeline. ”h]”(jC)�”}”(hŒ``struct media_pipeline *pipe``”h]”hè)�”}”(hj0_h]”hŒstruct media_pipeline *pipe”…”�”}”(hj2_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj._ubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M8hj*_ubj])�”}”(hhh]”hÞ)�”}”(hŒ>Media pipeline to be assigned to all entities in the pipeline.”h]”hŒ>Media pipeline to be assigned to all entities in the pipeline.”…”�”}”(hjI_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jE_h´M8hjF_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj*_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jE_h´M8hjî^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hjÒ^ubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjk_h]”hŒ Description”…”�”}”(hjm_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhji_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M:hjÒ^ubhÞ)�”}”(hŒâMark all entities connected to a given video device through enabled links, either directly or indirectly, as streaming. The given pipeline object is assigned to every pad in the pipeline and stored in the media_pad pipe field.”h]”hŒâMark all entities connected to a given video device through enabled links, either directly or indirectly, as streaming. The given pipeline object is assigned to every pad in the pipeline and stored in the media_pad pipe field.”…”�”}”(hj�_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M9hjÒ^ubhÞ)�”}”(hŒëCalls to this function can be nested, in which case the same number of video_device_pipeline_stop() calls will be required to stop streaming. The pipeline pointer must be identical for all nested calls to video_device_pipeline_start().”h]”hŒëCalls to this function can be nested, in which case the same number of video_device_pipeline_stop() calls will be required to stop streaming. The pipeline pointer must be identical for all nested calls to video_device_pipeline_start().”…”�”}”(hj�_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M>hjÒ^ubhÞ)�”}”(hŒ+The video device must contain a single pad.”h]”hŒ+The video device must contain a single pad.”…”�”}”(hjŸ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MChjÒ^ubhÞ)�”}”(hŒMedia pipeline to be assigned to all entities in the pipeline.”h]”hŒ>Media pipeline to be assigned to all entities in the pipeline.”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jœah´MNhj�aubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj�aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j<h³jœah´MNhjEaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hj)aubhÞ)�”}”(hŒ**Description**”h]”j÷)�”}”(hjÂah]”hŒ Description”…”�”}”(hjÄah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjÀaubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MPhj)aubhÞ)�”}”(hŒI..note:: This is the non-locking version of video_device_pipeline_start()”h]”hŒI..note:: This is the non-locking version of video_device_pipeline_start()”…”�”}”(hjØah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MOhj)aubhÞ)�”}”(hŒ+The video device must contain a single pad.”h]”hŒ+The video device must contain a single pad.”…”�”}”(hjçah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MQhj)aubhÞ)�”}”(hŒ>This is a convenience wrapper around __media_pipeline_start().”h]”hŒ>This is a convenience wrapper around __media_pipeline_start().”…”�”}”(hjöah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MShj)aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubj|)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒ'video_device_pipeline_stop (C function)”Œc.video_device_pipeline_stop”hNt”auh1j{hjjh²hh³Nh´Nubj�)�”}”(hhh]”(j’)�”}”(hŒ;void video_device_pipeline_stop (struct video_device *vdev)”h]”j˜)�”}”(hŒ:void video_device_pipeline_stop(struct video_device *vdev)”h]”(jV!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj%bh²hh³Nh´Nubah}”(h]”h ]”jb!ah"]”h$]”h&]”uh1jU!hj!bh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MZubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4bh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj!bh²hh³j3bh´MZubjÁ)�”}”(hŒvideo_device_pipeline_stop”h]”jÇ)�”}”(hŒvideo_device_pipeline_stop”h]”hŒvideo_device_pipeline_stop”…”�”}”(hjFbh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjBbubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhj!bh²hh³j3bh´MZubjŽ!)�”}”(hŒ(struct video_device *vdev)”h]”j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hjbbh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj^bubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjobh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj^bubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hj€bh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj}bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j‚bŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jljHbsbŒc.video_device_pipeline_stop”†”asbuh1hhj^bubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj^bubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hj®bh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj^bubjÇ)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hj»bh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj^bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hjZbubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hj!bh²hh³j3bh´MZubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjbh²hh³j3bh´MZubah}”(h]”jbah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j3bh´MZhjbh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒ Mark a pipeline as not streaming”h]”hŒ Mark a pipeline as not streaming”…”�”}”(hjåbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´MZhjâbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjbh²hh³j3bh´MZubeh}”(h]”h ]”(j Œfunction”eh"]”h$•Œ_]”h&]”jj jjýbjjýbj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hX**Parameters** ``struct video_device *vdev`` Starting video device **Description** Mark all entities connected to a given video device through enabled links, either directly or indirectly, as not streaming. The media_pad pipe field is reset to ``NULL``. If multiple calls to media_pipeline_start() have been made, the same number of calls to this function are required to mark the pipeline as not streaming. The video device must contain a single pad. This is a convenience wrapper around media_pipeline_stop().”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hjch]”hŒ Parameters”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jöhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M^hjcubj8)�”}”(hhh]”j=)�”}”(hŒ4``struct video_device *vdev`` Starting video device ”h]”(jC)�”}”(hŒ``struct video_device *vdev``”h]”hè)�”}”(hj&ch]”hŒstruct video_device *vdev”…”�”}”(hj(ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj$cubah}”(h]”h ]”h"]”h$]”h&]”uh1jBh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M[hj cubj])�”}”(hhh]”hÞ)�”}”(hŒStarting video device”h]”hŒStarting video device”…”�”}”(hj?ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j;ch´M[hjgŒmodname”NŒ classname”Nj`jc)�”}”jf]”ji)�”}”jlŒvideo_device_pipeline”sbŒc.video_device_pipeline”†”asbuh1hhjgh²hh³j*gh´M†ubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]gh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hjgh²hh³j*gh´M†ubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjkgh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hjgh²hh³j*gh´M†ubjÁ)�”}”(hŒvideo_device_pipeline”h]”jÇ)�”}”(hjZgh]”hŒvideo_device_pipeline”…”�”}”(hj|gh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhjxgubah}”(h]”h ]”(jÙjÚeh"]”h$]”h&]”hÅhÆuh1jÀhjgh²hh³j*gh´M†ubjŽ!)�”}”(hŒ(struct video_device *vdev)”h]”j”!)�”}”(hŒstruct video_device *vdev”h]”(jž)�”}”(hjÛh]”hŒstruct”…”�”}”(hj—gh²hh³Nh´Nubah}”(h]”h ]”jªah"]”h$]”h&]”uh1j�hj“gubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤gh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj“gubh)�”}”(hhh]”jÇ)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hjµgh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj²gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jlŒ reftarget”j·gŒmodname”NŒ classname”Nj`jc)�”}”jf]”jXgŒc.video_device_pipeline”†”asbuh1hhj“gubj°)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓgh²hh³Nh´Nubah}”(h]”h ]”j¼ah"]”h$]”h&]”uh1j¯hj“gubjæ!)�”}”(hjé!h]”hŒ*”…”�”}”(hjágh²hh³Nh´Nubah}”(h]”h ]”jò!ah"]”h$]”h&]”uh1jå!hj“gubjÇ)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hjîgh²hh³Nh´Nubah}”(h]”h ]”jÒah"]”h$]”h&]”uh1jÆhj“gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j“!hj�gubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j�!hjgh²hh³j*gh´M†ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjäˆuh1j—jåjæhjgh²hh³j*gh´M†ubah}”(h]”jgah ]”(jêjëeh"]”h$]”h&]”jïˆjð)jñhuh1j‘h³j*gh´M†hjgh²hubjó)�”}”(hhh]”hÞ)�”}”(hŒ0Get the media pipeline a video device is part of”h]”hŒ0Get the media pipeline a video device is part of”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-dev:367: ./include/media/v4l2-dev.h”h´M†hjhh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjgh²hh³j*gh´M†ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”jj jj0hjj0hj‰j‰j‰uh1jŒh²hhjjh³Nh´Nubj)�”}”(hX**Parameters** ``struct video_device *vdev`` The video device **Description** This function returns the media pipeline that a video device has been associated with when constructing the pipeline with video_device_pipeline_start(). The pointer remains valid until video_device_pipeline_stop() is called. The video device must contain a single pad. This is a convenience wrapper around media_entity_pipeline(). **Return** The media_pipeline the video device is part of, or NULL if the video device is not part of any pipeline.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j÷)�”}”(hj:hh]”hŒ Parameters”…”�”}”(hjj>jBjBjEjEjHjHj·Ij¼IjuKjzKj9Mj>MjOjOjCQjHQjSjSj5Uj:UjóVjøVj©Xj®XjrZjwZj\j\jy]j~]jÐ_jÕ_jbjbjØcjÝcj€ej…ejgjguŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.