18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * V 4 L 2 D R I V E R H E L P E R A P I 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * Moved from videodev2.h 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci * Some commonly needed functions for drivers (v4l2-common.o module) 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci#ifndef _V4L2_IOCTL_H 118c2ecf20Sopenharmony_ci#define _V4L2_IOCTL_H 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#include <linux/poll.h> 148c2ecf20Sopenharmony_ci#include <linux/fs.h> 158c2ecf20Sopenharmony_ci#include <linux/mutex.h> 168c2ecf20Sopenharmony_ci#include <linux/sched/signal.h> 178c2ecf20Sopenharmony_ci#include <linux/compiler.h> /* need __user */ 188c2ecf20Sopenharmony_ci#include <linux/videodev2.h> 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistruct v4l2_fh; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci/** 238c2ecf20Sopenharmony_ci * struct v4l2_ioctl_ops - describe operations for each V4L2 ioctl 248c2ecf20Sopenharmony_ci * 258c2ecf20Sopenharmony_ci * @vidioc_querycap: pointer to the function that implements 268c2ecf20Sopenharmony_ci * :ref:`VIDIOC_QUERYCAP <vidioc_querycap>` ioctl 278c2ecf20Sopenharmony_ci * @vidioc_enum_fmt_vid_cap: pointer to the function that implements 288c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic 298c2ecf20Sopenharmony_ci * for video capture in single and multi plane mode 308c2ecf20Sopenharmony_ci * @vidioc_enum_fmt_vid_overlay: pointer to the function that implements 318c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic 328c2ecf20Sopenharmony_ci * for video overlay 338c2ecf20Sopenharmony_ci * @vidioc_enum_fmt_vid_out: pointer to the function that implements 348c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic 358c2ecf20Sopenharmony_ci * for video output in single and multi plane mode 368c2ecf20Sopenharmony_ci * @vidioc_enum_fmt_sdr_cap: pointer to the function that implements 378c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic 388c2ecf20Sopenharmony_ci * for Software Defined Radio capture 398c2ecf20Sopenharmony_ci * @vidioc_enum_fmt_sdr_out: pointer to the function that implements 408c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic 418c2ecf20Sopenharmony_ci * for Software Defined Radio output 428c2ecf20Sopenharmony_ci * @vidioc_enum_fmt_meta_cap: pointer to the function that implements 438c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic 448c2ecf20Sopenharmony_ci * for metadata capture 458c2ecf20Sopenharmony_ci * @vidioc_enum_fmt_meta_out: pointer to the function that implements 468c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic 478c2ecf20Sopenharmony_ci * for metadata output 488c2ecf20Sopenharmony_ci * @vidioc_g_fmt_vid_cap: pointer to the function that implements 498c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for video capture 508c2ecf20Sopenharmony_ci * in single plane mode 518c2ecf20Sopenharmony_ci * @vidioc_g_fmt_vid_overlay: pointer to the function that implements 528c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for video overlay 538c2ecf20Sopenharmony_ci * @vidioc_g_fmt_vid_out: pointer to the function that implements 548c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for video out 558c2ecf20Sopenharmony_ci * in single plane mode 568c2ecf20Sopenharmony_ci * @vidioc_g_fmt_vid_out_overlay: pointer to the function that implements 578c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for video overlay output 588c2ecf20Sopenharmony_ci * @vidioc_g_fmt_vbi_cap: pointer to the function that implements 598c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for raw VBI capture 608c2ecf20Sopenharmony_ci * @vidioc_g_fmt_vbi_out: pointer to the function that implements 618c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for raw VBI output 628c2ecf20Sopenharmony_ci * @vidioc_g_fmt_sliced_vbi_cap: pointer to the function that implements 638c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for sliced VBI capture 648c2ecf20Sopenharmony_ci * @vidioc_g_fmt_sliced_vbi_out: pointer to the function that implements 658c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for sliced VBI output 668c2ecf20Sopenharmony_ci * @vidioc_g_fmt_vid_cap_mplane: pointer to the function that implements 678c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for video capture 688c2ecf20Sopenharmony_ci * in multiple plane mode 698c2ecf20Sopenharmony_ci * @vidioc_g_fmt_vid_out_mplane: pointer to the function that implements 708c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for video out 718c2ecf20Sopenharmony_ci * in multiplane plane mode 728c2ecf20Sopenharmony_ci * @vidioc_g_fmt_sdr_cap: pointer to the function that implements 738c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for Software Defined 748c2ecf20Sopenharmony_ci * Radio capture 758c2ecf20Sopenharmony_ci * @vidioc_g_fmt_sdr_out: pointer to the function that implements 768c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for Software Defined 778c2ecf20Sopenharmony_ci * Radio output 788c2ecf20Sopenharmony_ci * @vidioc_g_fmt_meta_cap: pointer to the function that implements 798c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for metadata capture 808c2ecf20Sopenharmony_ci * @vidioc_g_fmt_meta_out: pointer to the function that implements 818c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FMT <vidioc_g_fmt>` ioctl logic for metadata output 828c2ecf20Sopenharmony_ci * @vidioc_s_fmt_vid_cap: pointer to the function that implements 838c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for video capture 848c2ecf20Sopenharmony_ci * in single plane mode 858c2ecf20Sopenharmony_ci * @vidioc_s_fmt_vid_overlay: pointer to the function that implements 868c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for video overlay 878c2ecf20Sopenharmony_ci * @vidioc_s_fmt_vid_out: pointer to the function that implements 888c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for video out 898c2ecf20Sopenharmony_ci * in single plane mode 908c2ecf20Sopenharmony_ci * @vidioc_s_fmt_vid_out_overlay: pointer to the function that implements 918c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for video overlay output 928c2ecf20Sopenharmony_ci * @vidioc_s_fmt_vbi_cap: pointer to the function that implements 938c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for raw VBI capture 948c2ecf20Sopenharmony_ci * @vidioc_s_fmt_vbi_out: pointer to the function that implements 958c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for raw VBI output 968c2ecf20Sopenharmony_ci * @vidioc_s_fmt_sliced_vbi_cap: pointer to the function that implements 978c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for sliced VBI capture 988c2ecf20Sopenharmony_ci * @vidioc_s_fmt_sliced_vbi_out: pointer to the function that implements 998c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for sliced VBI output 1008c2ecf20Sopenharmony_ci * @vidioc_s_fmt_vid_cap_mplane: pointer to the function that implements 1018c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for video capture 1028c2ecf20Sopenharmony_ci * in multiple plane mode 1038c2ecf20Sopenharmony_ci * @vidioc_s_fmt_vid_out_mplane: pointer to the function that implements 1048c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for video out 1058c2ecf20Sopenharmony_ci * in multiplane plane mode 1068c2ecf20Sopenharmony_ci * @vidioc_s_fmt_sdr_cap: pointer to the function that implements 1078c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for Software Defined 1088c2ecf20Sopenharmony_ci * Radio capture 1098c2ecf20Sopenharmony_ci * @vidioc_s_fmt_sdr_out: pointer to the function that implements 1108c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for Software Defined 1118c2ecf20Sopenharmony_ci * Radio output 1128c2ecf20Sopenharmony_ci * @vidioc_s_fmt_meta_cap: pointer to the function that implements 1138c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for metadata capture 1148c2ecf20Sopenharmony_ci * @vidioc_s_fmt_meta_out: pointer to the function that implements 1158c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FMT <vidioc_g_fmt>` ioctl logic for metadata output 1168c2ecf20Sopenharmony_ci * @vidioc_try_fmt_vid_cap: pointer to the function that implements 1178c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for video capture 1188c2ecf20Sopenharmony_ci * in single plane mode 1198c2ecf20Sopenharmony_ci * @vidioc_try_fmt_vid_overlay: pointer to the function that implements 1208c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for video overlay 1218c2ecf20Sopenharmony_ci * @vidioc_try_fmt_vid_out: pointer to the function that implements 1228c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for video out 1238c2ecf20Sopenharmony_ci * in single plane mode 1248c2ecf20Sopenharmony_ci * @vidioc_try_fmt_vid_out_overlay: pointer to the function that implements 1258c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for video overlay 1268c2ecf20Sopenharmony_ci * output 1278c2ecf20Sopenharmony_ci * @vidioc_try_fmt_vbi_cap: pointer to the function that implements 1288c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for raw VBI capture 1298c2ecf20Sopenharmony_ci * @vidioc_try_fmt_vbi_out: pointer to the function that implements 1308c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for raw VBI output 1318c2ecf20Sopenharmony_ci * @vidioc_try_fmt_sliced_vbi_cap: pointer to the function that implements 1328c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for sliced VBI 1338c2ecf20Sopenharmony_ci * capture 1348c2ecf20Sopenharmony_ci * @vidioc_try_fmt_sliced_vbi_out: pointer to the function that implements 1358c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for sliced VBI output 1368c2ecf20Sopenharmony_ci * @vidioc_try_fmt_vid_cap_mplane: pointer to the function that implements 1378c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for video capture 1388c2ecf20Sopenharmony_ci * in multiple plane mode 1398c2ecf20Sopenharmony_ci * @vidioc_try_fmt_vid_out_mplane: pointer to the function that implements 1408c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for video out 1418c2ecf20Sopenharmony_ci * in multiplane plane mode 1428c2ecf20Sopenharmony_ci * @vidioc_try_fmt_sdr_cap: pointer to the function that implements 1438c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for Software Defined 1448c2ecf20Sopenharmony_ci * Radio capture 1458c2ecf20Sopenharmony_ci * @vidioc_try_fmt_sdr_out: pointer to the function that implements 1468c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for Software Defined 1478c2ecf20Sopenharmony_ci * Radio output 1488c2ecf20Sopenharmony_ci * @vidioc_try_fmt_meta_cap: pointer to the function that implements 1498c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for metadata capture 1508c2ecf20Sopenharmony_ci * @vidioc_try_fmt_meta_out: pointer to the function that implements 1518c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_FMT <vidioc_g_fmt>` ioctl logic for metadata output 1528c2ecf20Sopenharmony_ci * @vidioc_reqbufs: pointer to the function that implements 1538c2ecf20Sopenharmony_ci * :ref:`VIDIOC_REQBUFS <vidioc_reqbufs>` ioctl 1548c2ecf20Sopenharmony_ci * @vidioc_querybuf: pointer to the function that implements 1558c2ecf20Sopenharmony_ci * :ref:`VIDIOC_QUERYBUF <vidioc_querybuf>` ioctl 1568c2ecf20Sopenharmony_ci * @vidioc_qbuf: pointer to the function that implements 1578c2ecf20Sopenharmony_ci * :ref:`VIDIOC_QBUF <vidioc_qbuf>` ioctl 1588c2ecf20Sopenharmony_ci * @vidioc_expbuf: pointer to the function that implements 1598c2ecf20Sopenharmony_ci * :ref:`VIDIOC_EXPBUF <vidioc_expbuf>` ioctl 1608c2ecf20Sopenharmony_ci * @vidioc_dqbuf: pointer to the function that implements 1618c2ecf20Sopenharmony_ci * :ref:`VIDIOC_DQBUF <vidioc_qbuf>` ioctl 1628c2ecf20Sopenharmony_ci * @vidioc_create_bufs: pointer to the function that implements 1638c2ecf20Sopenharmony_ci * :ref:`VIDIOC_CREATE_BUFS <vidioc_create_bufs>` ioctl 1648c2ecf20Sopenharmony_ci * @vidioc_prepare_buf: pointer to the function that implements 1658c2ecf20Sopenharmony_ci * :ref:`VIDIOC_PREPARE_BUF <vidioc_prepare_buf>` ioctl 1668c2ecf20Sopenharmony_ci * @vidioc_overlay: pointer to the function that implements 1678c2ecf20Sopenharmony_ci * :ref:`VIDIOC_OVERLAY <vidioc_overlay>` ioctl 1688c2ecf20Sopenharmony_ci * @vidioc_g_fbuf: pointer to the function that implements 1698c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FBUF <vidioc_g_fbuf>` ioctl 1708c2ecf20Sopenharmony_ci * @vidioc_s_fbuf: pointer to the function that implements 1718c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FBUF <vidioc_g_fbuf>` ioctl 1728c2ecf20Sopenharmony_ci * @vidioc_streamon: pointer to the function that implements 1738c2ecf20Sopenharmony_ci * :ref:`VIDIOC_STREAMON <vidioc_streamon>` ioctl 1748c2ecf20Sopenharmony_ci * @vidioc_streamoff: pointer to the function that implements 1758c2ecf20Sopenharmony_ci * :ref:`VIDIOC_STREAMOFF <vidioc_streamon>` ioctl 1768c2ecf20Sopenharmony_ci * @vidioc_g_std: pointer to the function that implements 1778c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_STD <vidioc_g_std>` ioctl 1788c2ecf20Sopenharmony_ci * @vidioc_s_std: pointer to the function that implements 1798c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_STD <vidioc_g_std>` ioctl 1808c2ecf20Sopenharmony_ci * @vidioc_querystd: pointer to the function that implements 1818c2ecf20Sopenharmony_ci * :ref:`VIDIOC_QUERYSTD <vidioc_querystd>` ioctl 1828c2ecf20Sopenharmony_ci * @vidioc_enum_input: pointer to the function that implements 1838c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_INPUT <vidioc_g_input>` ioctl 1848c2ecf20Sopenharmony_ci * @vidioc_g_input: pointer to the function that implements 1858c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_INPUT <vidioc_g_input>` ioctl 1868c2ecf20Sopenharmony_ci * @vidioc_s_input: pointer to the function that implements 1878c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_INPUT <vidioc_g_input>` ioctl 1888c2ecf20Sopenharmony_ci * @vidioc_enum_output: pointer to the function that implements 1898c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_OUTPUT <vidioc_g_output>` ioctl 1908c2ecf20Sopenharmony_ci * @vidioc_g_output: pointer to the function that implements 1918c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_OUTPUT <vidioc_g_output>` ioctl 1928c2ecf20Sopenharmony_ci * @vidioc_s_output: pointer to the function that implements 1938c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_OUTPUT <vidioc_g_output>` ioctl 1948c2ecf20Sopenharmony_ci * @vidioc_queryctrl: pointer to the function that implements 1958c2ecf20Sopenharmony_ci * :ref:`VIDIOC_QUERYCTRL <vidioc_queryctrl>` ioctl 1968c2ecf20Sopenharmony_ci * @vidioc_query_ext_ctrl: pointer to the function that implements 1978c2ecf20Sopenharmony_ci * :ref:`VIDIOC_QUERY_EXT_CTRL <vidioc_queryctrl>` ioctl 1988c2ecf20Sopenharmony_ci * @vidioc_g_ctrl: pointer to the function that implements 1998c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_CTRL <vidioc_g_ctrl>` ioctl 2008c2ecf20Sopenharmony_ci * @vidioc_s_ctrl: pointer to the function that implements 2018c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_CTRL <vidioc_g_ctrl>` ioctl 2028c2ecf20Sopenharmony_ci * @vidioc_g_ext_ctrls: pointer to the function that implements 2038c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_EXT_CTRLS <vidioc_g_ext_ctrls>` ioctl 2048c2ecf20Sopenharmony_ci * @vidioc_s_ext_ctrls: pointer to the function that implements 2058c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_EXT_CTRLS <vidioc_g_ext_ctrls>` ioctl 2068c2ecf20Sopenharmony_ci * @vidioc_try_ext_ctrls: pointer to the function that implements 2078c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_EXT_CTRLS <vidioc_g_ext_ctrls>` ioctl 2088c2ecf20Sopenharmony_ci * @vidioc_querymenu: pointer to the function that implements 2098c2ecf20Sopenharmony_ci * :ref:`VIDIOC_QUERYMENU <vidioc_queryctrl>` ioctl 2108c2ecf20Sopenharmony_ci * @vidioc_enumaudio: pointer to the function that implements 2118c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUMAUDIO <vidioc_enumaudio>` ioctl 2128c2ecf20Sopenharmony_ci * @vidioc_g_audio: pointer to the function that implements 2138c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_AUDIO <vidioc_g_audio>` ioctl 2148c2ecf20Sopenharmony_ci * @vidioc_s_audio: pointer to the function that implements 2158c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_AUDIO <vidioc_g_audio>` ioctl 2168c2ecf20Sopenharmony_ci * @vidioc_enumaudout: pointer to the function that implements 2178c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUMAUDOUT <vidioc_enumaudout>` ioctl 2188c2ecf20Sopenharmony_ci * @vidioc_g_audout: pointer to the function that implements 2198c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_AUDOUT <vidioc_g_audout>` ioctl 2208c2ecf20Sopenharmony_ci * @vidioc_s_audout: pointer to the function that implements 2218c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_AUDOUT <vidioc_g_audout>` ioctl 2228c2ecf20Sopenharmony_ci * @vidioc_g_modulator: pointer to the function that implements 2238c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_MODULATOR <vidioc_g_modulator>` ioctl 2248c2ecf20Sopenharmony_ci * @vidioc_s_modulator: pointer to the function that implements 2258c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_MODULATOR <vidioc_g_modulator>` ioctl 2268c2ecf20Sopenharmony_ci * @vidioc_g_pixelaspect: pointer to the function that implements 2278c2ecf20Sopenharmony_ci * the pixelaspect part of the :ref:`VIDIOC_CROPCAP <vidioc_cropcap>` ioctl 2288c2ecf20Sopenharmony_ci * @vidioc_g_selection: pointer to the function that implements 2298c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_SELECTION <vidioc_g_selection>` ioctl 2308c2ecf20Sopenharmony_ci * @vidioc_s_selection: pointer to the function that implements 2318c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_SELECTION <vidioc_g_selection>` ioctl 2328c2ecf20Sopenharmony_ci * @vidioc_g_jpegcomp: pointer to the function that implements 2338c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_JPEGCOMP <vidioc_g_jpegcomp>` ioctl 2348c2ecf20Sopenharmony_ci * @vidioc_s_jpegcomp: pointer to the function that implements 2358c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_JPEGCOMP <vidioc_g_jpegcomp>` ioctl 2368c2ecf20Sopenharmony_ci * @vidioc_g_enc_index: pointer to the function that implements 2378c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_ENC_INDEX <vidioc_g_enc_index>` ioctl 2388c2ecf20Sopenharmony_ci * @vidioc_encoder_cmd: pointer to the function that implements 2398c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENCODER_CMD <vidioc_encoder_cmd>` ioctl 2408c2ecf20Sopenharmony_ci * @vidioc_try_encoder_cmd: pointer to the function that implements 2418c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_ENCODER_CMD <vidioc_encoder_cmd>` ioctl 2428c2ecf20Sopenharmony_ci * @vidioc_decoder_cmd: pointer to the function that implements 2438c2ecf20Sopenharmony_ci * :ref:`VIDIOC_DECODER_CMD <vidioc_decoder_cmd>` ioctl 2448c2ecf20Sopenharmony_ci * @vidioc_try_decoder_cmd: pointer to the function that implements 2458c2ecf20Sopenharmony_ci * :ref:`VIDIOC_TRY_DECODER_CMD <vidioc_decoder_cmd>` ioctl 2468c2ecf20Sopenharmony_ci * @vidioc_g_parm: pointer to the function that implements 2478c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_PARM <vidioc_g_parm>` ioctl 2488c2ecf20Sopenharmony_ci * @vidioc_s_parm: pointer to the function that implements 2498c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_PARM <vidioc_g_parm>` ioctl 2508c2ecf20Sopenharmony_ci * @vidioc_g_tuner: pointer to the function that implements 2518c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_TUNER <vidioc_g_tuner>` ioctl 2528c2ecf20Sopenharmony_ci * @vidioc_s_tuner: pointer to the function that implements 2538c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_TUNER <vidioc_g_tuner>` ioctl 2548c2ecf20Sopenharmony_ci * @vidioc_g_frequency: pointer to the function that implements 2558c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_FREQUENCY <vidioc_g_frequency>` ioctl 2568c2ecf20Sopenharmony_ci * @vidioc_s_frequency: pointer to the function that implements 2578c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_FREQUENCY <vidioc_g_frequency>` ioctl 2588c2ecf20Sopenharmony_ci * @vidioc_enum_freq_bands: pointer to the function that implements 2598c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_FREQ_BANDS <vidioc_enum_freq_bands>` ioctl 2608c2ecf20Sopenharmony_ci * @vidioc_g_sliced_vbi_cap: pointer to the function that implements 2618c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_SLICED_VBI_CAP <vidioc_g_sliced_vbi_cap>` ioctl 2628c2ecf20Sopenharmony_ci * @vidioc_log_status: pointer to the function that implements 2638c2ecf20Sopenharmony_ci * :ref:`VIDIOC_LOG_STATUS <vidioc_log_status>` ioctl 2648c2ecf20Sopenharmony_ci * @vidioc_s_hw_freq_seek: pointer to the function that implements 2658c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_HW_FREQ_SEEK <vidioc_s_hw_freq_seek>` ioctl 2668c2ecf20Sopenharmony_ci * @vidioc_g_register: pointer to the function that implements 2678c2ecf20Sopenharmony_ci * :ref:`VIDIOC_DBG_G_REGISTER <vidioc_dbg_g_register>` ioctl 2688c2ecf20Sopenharmony_ci * @vidioc_s_register: pointer to the function that implements 2698c2ecf20Sopenharmony_ci * :ref:`VIDIOC_DBG_S_REGISTER <vidioc_dbg_g_register>` ioctl 2708c2ecf20Sopenharmony_ci * @vidioc_g_chip_info: pointer to the function that implements 2718c2ecf20Sopenharmony_ci * :ref:`VIDIOC_DBG_G_CHIP_INFO <vidioc_dbg_g_chip_info>` ioctl 2728c2ecf20Sopenharmony_ci * @vidioc_enum_framesizes: pointer to the function that implements 2738c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_FRAMESIZES <vidioc_enum_framesizes>` ioctl 2748c2ecf20Sopenharmony_ci * @vidioc_enum_frameintervals: pointer to the function that implements 2758c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_FRAMEINTERVALS <vidioc_enum_frameintervals>` ioctl 2768c2ecf20Sopenharmony_ci * @vidioc_s_dv_timings: pointer to the function that implements 2778c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_DV_TIMINGS <vidioc_g_dv_timings>` ioctl 2788c2ecf20Sopenharmony_ci * @vidioc_g_dv_timings: pointer to the function that implements 2798c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_DV_TIMINGS <vidioc_g_dv_timings>` ioctl 2808c2ecf20Sopenharmony_ci * @vidioc_query_dv_timings: pointer to the function that implements 2818c2ecf20Sopenharmony_ci * :ref:`VIDIOC_QUERY_DV_TIMINGS <vidioc_query_dv_timings>` ioctl 2828c2ecf20Sopenharmony_ci * @vidioc_enum_dv_timings: pointer to the function that implements 2838c2ecf20Sopenharmony_ci * :ref:`VIDIOC_ENUM_DV_TIMINGS <vidioc_enum_dv_timings>` ioctl 2848c2ecf20Sopenharmony_ci * @vidioc_dv_timings_cap: pointer to the function that implements 2858c2ecf20Sopenharmony_ci * :ref:`VIDIOC_DV_TIMINGS_CAP <vidioc_dv_timings_cap>` ioctl 2868c2ecf20Sopenharmony_ci * @vidioc_g_edid: pointer to the function that implements 2878c2ecf20Sopenharmony_ci * :ref:`VIDIOC_G_EDID <vidioc_g_edid>` ioctl 2888c2ecf20Sopenharmony_ci * @vidioc_s_edid: pointer to the function that implements 2898c2ecf20Sopenharmony_ci * :ref:`VIDIOC_S_EDID <vidioc_g_edid>` ioctl 2908c2ecf20Sopenharmony_ci * @vidioc_subscribe_event: pointer to the function that implements 2918c2ecf20Sopenharmony_ci * :ref:`VIDIOC_SUBSCRIBE_EVENT <vidioc_subscribe_event>` ioctl 2928c2ecf20Sopenharmony_ci * @vidioc_unsubscribe_event: pointer to the function that implements 2938c2ecf20Sopenharmony_ci * :ref:`VIDIOC_UNSUBSCRIBE_EVENT <vidioc_unsubscribe_event>` ioctl 2948c2ecf20Sopenharmony_ci * @vidioc_default: pointed used to allow other ioctls 2958c2ecf20Sopenharmony_ci */ 2968c2ecf20Sopenharmony_cistruct v4l2_ioctl_ops { 2978c2ecf20Sopenharmony_ci /* ioctl callbacks */ 2988c2ecf20Sopenharmony_ci 2998c2ecf20Sopenharmony_ci /* VIDIOC_QUERYCAP handler */ 3008c2ecf20Sopenharmony_ci int (*vidioc_querycap)(struct file *file, void *fh, 3018c2ecf20Sopenharmony_ci struct v4l2_capability *cap); 3028c2ecf20Sopenharmony_ci 3038c2ecf20Sopenharmony_ci /* VIDIOC_ENUM_FMT handlers */ 3048c2ecf20Sopenharmony_ci int (*vidioc_enum_fmt_vid_cap)(struct file *file, void *fh, 3058c2ecf20Sopenharmony_ci struct v4l2_fmtdesc *f); 3068c2ecf20Sopenharmony_ci int (*vidioc_enum_fmt_vid_overlay)(struct file *file, void *fh, 3078c2ecf20Sopenharmony_ci struct v4l2_fmtdesc *f); 3088c2ecf20Sopenharmony_ci int (*vidioc_enum_fmt_vid_out)(struct file *file, void *fh, 3098c2ecf20Sopenharmony_ci struct v4l2_fmtdesc *f); 3108c2ecf20Sopenharmony_ci int (*vidioc_enum_fmt_sdr_cap)(struct file *file, void *fh, 3118c2ecf20Sopenharmony_ci struct v4l2_fmtdesc *f); 3128c2ecf20Sopenharmony_ci int (*vidioc_enum_fmt_sdr_out)(struct file *file, void *fh, 3138c2ecf20Sopenharmony_ci struct v4l2_fmtdesc *f); 3148c2ecf20Sopenharmony_ci int (*vidioc_enum_fmt_meta_cap)(struct file *file, void *fh, 3158c2ecf20Sopenharmony_ci struct v4l2_fmtdesc *f); 3168c2ecf20Sopenharmony_ci int (*vidioc_enum_fmt_meta_out)(struct file *file, void *fh, 3178c2ecf20Sopenharmony_ci struct v4l2_fmtdesc *f); 3188c2ecf20Sopenharmony_ci 3198c2ecf20Sopenharmony_ci /* VIDIOC_G_FMT handlers */ 3208c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_vid_cap)(struct file *file, void *fh, 3218c2ecf20Sopenharmony_ci struct v4l2_format *f); 3228c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_vid_overlay)(struct file *file, void *fh, 3238c2ecf20Sopenharmony_ci struct v4l2_format *f); 3248c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_vid_out)(struct file *file, void *fh, 3258c2ecf20Sopenharmony_ci struct v4l2_format *f); 3268c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_vid_out_overlay)(struct file *file, void *fh, 3278c2ecf20Sopenharmony_ci struct v4l2_format *f); 3288c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_vbi_cap)(struct file *file, void *fh, 3298c2ecf20Sopenharmony_ci struct v4l2_format *f); 3308c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_vbi_out)(struct file *file, void *fh, 3318c2ecf20Sopenharmony_ci struct v4l2_format *f); 3328c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_sliced_vbi_cap)(struct file *file, void *fh, 3338c2ecf20Sopenharmony_ci struct v4l2_format *f); 3348c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_sliced_vbi_out)(struct file *file, void *fh, 3358c2ecf20Sopenharmony_ci struct v4l2_format *f); 3368c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_vid_cap_mplane)(struct file *file, void *fh, 3378c2ecf20Sopenharmony_ci struct v4l2_format *f); 3388c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_vid_out_mplane)(struct file *file, void *fh, 3398c2ecf20Sopenharmony_ci struct v4l2_format *f); 3408c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_sdr_cap)(struct file *file, void *fh, 3418c2ecf20Sopenharmony_ci struct v4l2_format *f); 3428c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_sdr_out)(struct file *file, void *fh, 3438c2ecf20Sopenharmony_ci struct v4l2_format *f); 3448c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_meta_cap)(struct file *file, void *fh, 3458c2ecf20Sopenharmony_ci struct v4l2_format *f); 3468c2ecf20Sopenharmony_ci int (*vidioc_g_fmt_meta_out)(struct file *file, void *fh, 3478c2ecf20Sopenharmony_ci struct v4l2_format *f); 3488c2ecf20Sopenharmony_ci 3498c2ecf20Sopenharmony_ci /* VIDIOC_S_FMT handlers */ 3508c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_vid_cap)(struct file *file, void *fh, 3518c2ecf20Sopenharmony_ci struct v4l2_format *f); 3528c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_vid_overlay)(struct file *file, void *fh, 3538c2ecf20Sopenharmony_ci struct v4l2_format *f); 3548c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_vid_out)(struct file *file, void *fh, 3558c2ecf20Sopenharmony_ci struct v4l2_format *f); 3568c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_vid_out_overlay)(struct file *file, void *fh, 3578c2ecf20Sopenharmony_ci struct v4l2_format *f); 3588c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_vbi_cap)(struct file *file, void *fh, 3598c2ecf20Sopenharmony_ci struct v4l2_format *f); 3608c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_vbi_out)(struct file *file, void *fh, 3618c2ecf20Sopenharmony_ci struct v4l2_format *f); 3628c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_sliced_vbi_cap)(struct file *file, void *fh, 3638c2ecf20Sopenharmony_ci struct v4l2_format *f); 3648c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_sliced_vbi_out)(struct file *file, void *fh, 3658c2ecf20Sopenharmony_ci struct v4l2_format *f); 3668c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_vid_cap_mplane)(struct file *file, void *fh, 3678c2ecf20Sopenharmony_ci struct v4l2_format *f); 3688c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_vid_out_mplane)(struct file *file, void *fh, 3698c2ecf20Sopenharmony_ci struct v4l2_format *f); 3708c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_sdr_cap)(struct file *file, void *fh, 3718c2ecf20Sopenharmony_ci struct v4l2_format *f); 3728c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_sdr_out)(struct file *file, void *fh, 3738c2ecf20Sopenharmony_ci struct v4l2_format *f); 3748c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_meta_cap)(struct file *file, void *fh, 3758c2ecf20Sopenharmony_ci struct v4l2_format *f); 3768c2ecf20Sopenharmony_ci int (*vidioc_s_fmt_meta_out)(struct file *file, void *fh, 3778c2ecf20Sopenharmony_ci struct v4l2_format *f); 3788c2ecf20Sopenharmony_ci 3798c2ecf20Sopenharmony_ci /* VIDIOC_TRY_FMT handlers */ 3808c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_vid_cap)(struct file *file, void *fh, 3818c2ecf20Sopenharmony_ci struct v4l2_format *f); 3828c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_vid_overlay)(struct file *file, void *fh, 3838c2ecf20Sopenharmony_ci struct v4l2_format *f); 3848c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_vid_out)(struct file *file, void *fh, 3858c2ecf20Sopenharmony_ci struct v4l2_format *f); 3868c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_vid_out_overlay)(struct file *file, void *fh, 3878c2ecf20Sopenharmony_ci struct v4l2_format *f); 3888c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_vbi_cap)(struct file *file, void *fh, 3898c2ecf20Sopenharmony_ci struct v4l2_format *f); 3908c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_vbi_out)(struct file *file, void *fh, 3918c2ecf20Sopenharmony_ci struct v4l2_format *f); 3928c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_sliced_vbi_cap)(struct file *file, void *fh, 3938c2ecf20Sopenharmony_ci struct v4l2_format *f); 3948c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_sliced_vbi_out)(struct file *file, void *fh, 3958c2ecf20Sopenharmony_ci struct v4l2_format *f); 3968c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_vid_cap_mplane)(struct file *file, void *fh, 3978c2ecf20Sopenharmony_ci struct v4l2_format *f); 3988c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_vid_out_mplane)(struct file *file, void *fh, 3998c2ecf20Sopenharmony_ci struct v4l2_format *f); 4008c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_sdr_cap)(struct file *file, void *fh, 4018c2ecf20Sopenharmony_ci struct v4l2_format *f); 4028c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_sdr_out)(struct file *file, void *fh, 4038c2ecf20Sopenharmony_ci struct v4l2_format *f); 4048c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_meta_cap)(struct file *file, void *fh, 4058c2ecf20Sopenharmony_ci struct v4l2_format *f); 4068c2ecf20Sopenharmony_ci int (*vidioc_try_fmt_meta_out)(struct file *file, void *fh, 4078c2ecf20Sopenharmony_ci struct v4l2_format *f); 4088c2ecf20Sopenharmony_ci 4098c2ecf20Sopenharmony_ci /* Buffer handlers */ 4108c2ecf20Sopenharmony_ci int (*vidioc_reqbufs)(struct file *file, void *fh, 4118c2ecf20Sopenharmony_ci struct v4l2_requestbuffers *b); 4128c2ecf20Sopenharmony_ci int (*vidioc_querybuf)(struct file *file, void *fh, 4138c2ecf20Sopenharmony_ci struct v4l2_buffer *b); 4148c2ecf20Sopenharmony_ci int (*vidioc_qbuf)(struct file *file, void *fh, 4158c2ecf20Sopenharmony_ci struct v4l2_buffer *b); 4168c2ecf20Sopenharmony_ci int (*vidioc_expbuf)(struct file *file, void *fh, 4178c2ecf20Sopenharmony_ci struct v4l2_exportbuffer *e); 4188c2ecf20Sopenharmony_ci int (*vidioc_dqbuf)(struct file *file, void *fh, 4198c2ecf20Sopenharmony_ci struct v4l2_buffer *b); 4208c2ecf20Sopenharmony_ci 4218c2ecf20Sopenharmony_ci int (*vidioc_create_bufs)(struct file *file, void *fh, 4228c2ecf20Sopenharmony_ci struct v4l2_create_buffers *b); 4238c2ecf20Sopenharmony_ci int (*vidioc_prepare_buf)(struct file *file, void *fh, 4248c2ecf20Sopenharmony_ci struct v4l2_buffer *b); 4258c2ecf20Sopenharmony_ci 4268c2ecf20Sopenharmony_ci int (*vidioc_overlay)(struct file *file, void *fh, unsigned int i); 4278c2ecf20Sopenharmony_ci int (*vidioc_g_fbuf)(struct file *file, void *fh, 4288c2ecf20Sopenharmony_ci struct v4l2_framebuffer *a); 4298c2ecf20Sopenharmony_ci int (*vidioc_s_fbuf)(struct file *file, void *fh, 4308c2ecf20Sopenharmony_ci const struct v4l2_framebuffer *a); 4318c2ecf20Sopenharmony_ci 4328c2ecf20Sopenharmony_ci /* Stream on/off */ 4338c2ecf20Sopenharmony_ci int (*vidioc_streamon)(struct file *file, void *fh, 4348c2ecf20Sopenharmony_ci enum v4l2_buf_type i); 4358c2ecf20Sopenharmony_ci int (*vidioc_streamoff)(struct file *file, void *fh, 4368c2ecf20Sopenharmony_ci enum v4l2_buf_type i); 4378c2ecf20Sopenharmony_ci 4388c2ecf20Sopenharmony_ci /* 4398c2ecf20Sopenharmony_ci * Standard handling 4408c2ecf20Sopenharmony_ci * 4418c2ecf20Sopenharmony_ci * Note: ENUMSTD is handled by videodev.c 4428c2ecf20Sopenharmony_ci */ 4438c2ecf20Sopenharmony_ci int (*vidioc_g_std)(struct file *file, void *fh, v4l2_std_id *norm); 4448c2ecf20Sopenharmony_ci int (*vidioc_s_std)(struct file *file, void *fh, v4l2_std_id norm); 4458c2ecf20Sopenharmony_ci int (*vidioc_querystd)(struct file *file, void *fh, v4l2_std_id *a); 4468c2ecf20Sopenharmony_ci 4478c2ecf20Sopenharmony_ci /* Input handling */ 4488c2ecf20Sopenharmony_ci int (*vidioc_enum_input)(struct file *file, void *fh, 4498c2ecf20Sopenharmony_ci struct v4l2_input *inp); 4508c2ecf20Sopenharmony_ci int (*vidioc_g_input)(struct file *file, void *fh, unsigned int *i); 4518c2ecf20Sopenharmony_ci int (*vidioc_s_input)(struct file *file, void *fh, unsigned int i); 4528c2ecf20Sopenharmony_ci 4538c2ecf20Sopenharmony_ci /* Output handling */ 4548c2ecf20Sopenharmony_ci int (*vidioc_enum_output)(struct file *file, void *fh, 4558c2ecf20Sopenharmony_ci struct v4l2_output *a); 4568c2ecf20Sopenharmony_ci int (*vidioc_g_output)(struct file *file, void *fh, unsigned int *i); 4578c2ecf20Sopenharmony_ci int (*vidioc_s_output)(struct file *file, void *fh, unsigned int i); 4588c2ecf20Sopenharmony_ci 4598c2ecf20Sopenharmony_ci /* Control handling */ 4608c2ecf20Sopenharmony_ci int (*vidioc_queryctrl)(struct file *file, void *fh, 4618c2ecf20Sopenharmony_ci struct v4l2_queryctrl *a); 4628c2ecf20Sopenharmony_ci int (*vidioc_query_ext_ctrl)(struct file *file, void *fh, 4638c2ecf20Sopenharmony_ci struct v4l2_query_ext_ctrl *a); 4648c2ecf20Sopenharmony_ci int (*vidioc_g_ctrl)(struct file *file, void *fh, 4658c2ecf20Sopenharmony_ci struct v4l2_control *a); 4668c2ecf20Sopenharmony_ci int (*vidioc_s_ctrl)(struct file *file, void *fh, 4678c2ecf20Sopenharmony_ci struct v4l2_control *a); 4688c2ecf20Sopenharmony_ci int (*vidioc_g_ext_ctrls)(struct file *file, void *fh, 4698c2ecf20Sopenharmony_ci struct v4l2_ext_controls *a); 4708c2ecf20Sopenharmony_ci int (*vidioc_s_ext_ctrls)(struct file *file, void *fh, 4718c2ecf20Sopenharmony_ci struct v4l2_ext_controls *a); 4728c2ecf20Sopenharmony_ci int (*vidioc_try_ext_ctrls)(struct file *file, void *fh, 4738c2ecf20Sopenharmony_ci struct v4l2_ext_controls *a); 4748c2ecf20Sopenharmony_ci int (*vidioc_querymenu)(struct file *file, void *fh, 4758c2ecf20Sopenharmony_ci struct v4l2_querymenu *a); 4768c2ecf20Sopenharmony_ci 4778c2ecf20Sopenharmony_ci /* Audio ioctls */ 4788c2ecf20Sopenharmony_ci int (*vidioc_enumaudio)(struct file *file, void *fh, 4798c2ecf20Sopenharmony_ci struct v4l2_audio *a); 4808c2ecf20Sopenharmony_ci int (*vidioc_g_audio)(struct file *file, void *fh, 4818c2ecf20Sopenharmony_ci struct v4l2_audio *a); 4828c2ecf20Sopenharmony_ci int (*vidioc_s_audio)(struct file *file, void *fh, 4838c2ecf20Sopenharmony_ci const struct v4l2_audio *a); 4848c2ecf20Sopenharmony_ci 4858c2ecf20Sopenharmony_ci /* Audio out ioctls */ 4868c2ecf20Sopenharmony_ci int (*vidioc_enumaudout)(struct file *file, void *fh, 4878c2ecf20Sopenharmony_ci struct v4l2_audioout *a); 4888c2ecf20Sopenharmony_ci int (*vidioc_g_audout)(struct file *file, void *fh, 4898c2ecf20Sopenharmony_ci struct v4l2_audioout *a); 4908c2ecf20Sopenharmony_ci int (*vidioc_s_audout)(struct file *file, void *fh, 4918c2ecf20Sopenharmony_ci const struct v4l2_audioout *a); 4928c2ecf20Sopenharmony_ci int (*vidioc_g_modulator)(struct file *file, void *fh, 4938c2ecf20Sopenharmony_ci struct v4l2_modulator *a); 4948c2ecf20Sopenharmony_ci int (*vidioc_s_modulator)(struct file *file, void *fh, 4958c2ecf20Sopenharmony_ci const struct v4l2_modulator *a); 4968c2ecf20Sopenharmony_ci /* Crop ioctls */ 4978c2ecf20Sopenharmony_ci int (*vidioc_g_pixelaspect)(struct file *file, void *fh, 4988c2ecf20Sopenharmony_ci int buf_type, struct v4l2_fract *aspect); 4998c2ecf20Sopenharmony_ci int (*vidioc_g_selection)(struct file *file, void *fh, 5008c2ecf20Sopenharmony_ci struct v4l2_selection *s); 5018c2ecf20Sopenharmony_ci int (*vidioc_s_selection)(struct file *file, void *fh, 5028c2ecf20Sopenharmony_ci struct v4l2_selection *s); 5038c2ecf20Sopenharmony_ci /* Compression ioctls */ 5048c2ecf20Sopenharmony_ci int (*vidioc_g_jpegcomp)(struct file *file, void *fh, 5058c2ecf20Sopenharmony_ci struct v4l2_jpegcompression *a); 5068c2ecf20Sopenharmony_ci int (*vidioc_s_jpegcomp)(struct file *file, void *fh, 5078c2ecf20Sopenharmony_ci const struct v4l2_jpegcompression *a); 5088c2ecf20Sopenharmony_ci int (*vidioc_g_enc_index)(struct file *file, void *fh, 5098c2ecf20Sopenharmony_ci struct v4l2_enc_idx *a); 5108c2ecf20Sopenharmony_ci int (*vidioc_encoder_cmd)(struct file *file, void *fh, 5118c2ecf20Sopenharmony_ci struct v4l2_encoder_cmd *a); 5128c2ecf20Sopenharmony_ci int (*vidioc_try_encoder_cmd)(struct file *file, void *fh, 5138c2ecf20Sopenharmony_ci struct v4l2_encoder_cmd *a); 5148c2ecf20Sopenharmony_ci int (*vidioc_decoder_cmd)(struct file *file, void *fh, 5158c2ecf20Sopenharmony_ci struct v4l2_decoder_cmd *a); 5168c2ecf20Sopenharmony_ci int (*vidioc_try_decoder_cmd)(struct file *file, void *fh, 5178c2ecf20Sopenharmony_ci struct v4l2_decoder_cmd *a); 5188c2ecf20Sopenharmony_ci 5198c2ecf20Sopenharmony_ci /* Stream type-dependent parameter ioctls */ 5208c2ecf20Sopenharmony_ci int (*vidioc_g_parm)(struct file *file, void *fh, 5218c2ecf20Sopenharmony_ci struct v4l2_streamparm *a); 5228c2ecf20Sopenharmony_ci int (*vidioc_s_parm)(struct file *file, void *fh, 5238c2ecf20Sopenharmony_ci struct v4l2_streamparm *a); 5248c2ecf20Sopenharmony_ci 5258c2ecf20Sopenharmony_ci /* Tuner ioctls */ 5268c2ecf20Sopenharmony_ci int (*vidioc_g_tuner)(struct file *file, void *fh, 5278c2ecf20Sopenharmony_ci struct v4l2_tuner *a); 5288c2ecf20Sopenharmony_ci int (*vidioc_s_tuner)(struct file *file, void *fh, 5298c2ecf20Sopenharmony_ci const struct v4l2_tuner *a); 5308c2ecf20Sopenharmony_ci int (*vidioc_g_frequency)(struct file *file, void *fh, 5318c2ecf20Sopenharmony_ci struct v4l2_frequency *a); 5328c2ecf20Sopenharmony_ci int (*vidioc_s_frequency)(struct file *file, void *fh, 5338c2ecf20Sopenharmony_ci const struct v4l2_frequency *a); 5348c2ecf20Sopenharmony_ci int (*vidioc_enum_freq_bands)(struct file *file, void *fh, 5358c2ecf20Sopenharmony_ci struct v4l2_frequency_band *band); 5368c2ecf20Sopenharmony_ci 5378c2ecf20Sopenharmony_ci /* Sliced VBI cap */ 5388c2ecf20Sopenharmony_ci int (*vidioc_g_sliced_vbi_cap)(struct file *file, void *fh, 5398c2ecf20Sopenharmony_ci struct v4l2_sliced_vbi_cap *a); 5408c2ecf20Sopenharmony_ci 5418c2ecf20Sopenharmony_ci /* Log status ioctl */ 5428c2ecf20Sopenharmony_ci int (*vidioc_log_status)(struct file *file, void *fh); 5438c2ecf20Sopenharmony_ci 5448c2ecf20Sopenharmony_ci int (*vidioc_s_hw_freq_seek)(struct file *file, void *fh, 5458c2ecf20Sopenharmony_ci const struct v4l2_hw_freq_seek *a); 5468c2ecf20Sopenharmony_ci 5478c2ecf20Sopenharmony_ci /* Debugging ioctls */ 5488c2ecf20Sopenharmony_ci#ifdef CONFIG_VIDEO_ADV_DEBUG 5498c2ecf20Sopenharmony_ci int (*vidioc_g_register)(struct file *file, void *fh, 5508c2ecf20Sopenharmony_ci struct v4l2_dbg_register *reg); 5518c2ecf20Sopenharmony_ci int (*vidioc_s_register)(struct file *file, void *fh, 5528c2ecf20Sopenharmony_ci const struct v4l2_dbg_register *reg); 5538c2ecf20Sopenharmony_ci 5548c2ecf20Sopenharmony_ci int (*vidioc_g_chip_info)(struct file *file, void *fh, 5558c2ecf20Sopenharmony_ci struct v4l2_dbg_chip_info *chip); 5568c2ecf20Sopenharmony_ci#endif 5578c2ecf20Sopenharmony_ci 5588c2ecf20Sopenharmony_ci int (*vidioc_enum_framesizes)(struct file *file, void *fh, 5598c2ecf20Sopenharmony_ci struct v4l2_frmsizeenum *fsize); 5608c2ecf20Sopenharmony_ci 5618c2ecf20Sopenharmony_ci int (*vidioc_enum_frameintervals)(struct file *file, void *fh, 5628c2ecf20Sopenharmony_ci struct v4l2_frmivalenum *fival); 5638c2ecf20Sopenharmony_ci 5648c2ecf20Sopenharmony_ci /* DV Timings IOCTLs */ 5658c2ecf20Sopenharmony_ci int (*vidioc_s_dv_timings)(struct file *file, void *fh, 5668c2ecf20Sopenharmony_ci struct v4l2_dv_timings *timings); 5678c2ecf20Sopenharmony_ci int (*vidioc_g_dv_timings)(struct file *file, void *fh, 5688c2ecf20Sopenharmony_ci struct v4l2_dv_timings *timings); 5698c2ecf20Sopenharmony_ci int (*vidioc_query_dv_timings)(struct file *file, void *fh, 5708c2ecf20Sopenharmony_ci struct v4l2_dv_timings *timings); 5718c2ecf20Sopenharmony_ci int (*vidioc_enum_dv_timings)(struct file *file, void *fh, 5728c2ecf20Sopenharmony_ci struct v4l2_enum_dv_timings *timings); 5738c2ecf20Sopenharmony_ci int (*vidioc_dv_timings_cap)(struct file *file, void *fh, 5748c2ecf20Sopenharmony_ci struct v4l2_dv_timings_cap *cap); 5758c2ecf20Sopenharmony_ci int (*vidioc_g_edid)(struct file *file, void *fh, 5768c2ecf20Sopenharmony_ci struct v4l2_edid *edid); 5778c2ecf20Sopenharmony_ci int (*vidioc_s_edid)(struct file *file, void *fh, 5788c2ecf20Sopenharmony_ci struct v4l2_edid *edid); 5798c2ecf20Sopenharmony_ci 5808c2ecf20Sopenharmony_ci int (*vidioc_subscribe_event)(struct v4l2_fh *fh, 5818c2ecf20Sopenharmony_ci const struct v4l2_event_subscription *sub); 5828c2ecf20Sopenharmony_ci int (*vidioc_unsubscribe_event)(struct v4l2_fh *fh, 5838c2ecf20Sopenharmony_ci const struct v4l2_event_subscription *sub); 5848c2ecf20Sopenharmony_ci 5858c2ecf20Sopenharmony_ci /* For other private ioctls */ 5868c2ecf20Sopenharmony_ci long (*vidioc_default)(struct file *file, void *fh, 5878c2ecf20Sopenharmony_ci bool valid_prio, unsigned int cmd, void *arg); 5888c2ecf20Sopenharmony_ci}; 5898c2ecf20Sopenharmony_ci 5908c2ecf20Sopenharmony_ci 5918c2ecf20Sopenharmony_ci/* v4l debugging and diagnostics */ 5928c2ecf20Sopenharmony_ci 5938c2ecf20Sopenharmony_ci/* Device debug flags to be used with the video device debug attribute */ 5948c2ecf20Sopenharmony_ci 5958c2ecf20Sopenharmony_ci/* Just log the ioctl name + error code */ 5968c2ecf20Sopenharmony_ci#define V4L2_DEV_DEBUG_IOCTL 0x01 5978c2ecf20Sopenharmony_ci/* Log the ioctl name arguments + error code */ 5988c2ecf20Sopenharmony_ci#define V4L2_DEV_DEBUG_IOCTL_ARG 0x02 5998c2ecf20Sopenharmony_ci/* Log the file operations open, release, mmap and get_unmapped_area */ 6008c2ecf20Sopenharmony_ci#define V4L2_DEV_DEBUG_FOP 0x04 6018c2ecf20Sopenharmony_ci/* Log the read and write file operations and the VIDIOC_(D)QBUF ioctls */ 6028c2ecf20Sopenharmony_ci#define V4L2_DEV_DEBUG_STREAMING 0x08 6038c2ecf20Sopenharmony_ci/* Log poll() */ 6048c2ecf20Sopenharmony_ci#define V4L2_DEV_DEBUG_POLL 0x10 6058c2ecf20Sopenharmony_ci/* Log controls */ 6068c2ecf20Sopenharmony_ci#define V4L2_DEV_DEBUG_CTRL 0x20 6078c2ecf20Sopenharmony_ci 6088c2ecf20Sopenharmony_ci/* Video standard functions */ 6098c2ecf20Sopenharmony_ci 6108c2ecf20Sopenharmony_ci/** 6118c2ecf20Sopenharmony_ci * v4l2_norm_to_name - Ancillary routine to analog TV standard name from its ID. 6128c2ecf20Sopenharmony_ci * 6138c2ecf20Sopenharmony_ci * @id: analog TV standard ID. 6148c2ecf20Sopenharmony_ci * 6158c2ecf20Sopenharmony_ci * Return: returns a string with the name of the analog TV standard. 6168c2ecf20Sopenharmony_ci * If the standard is not found or if @id points to multiple standard, 6178c2ecf20Sopenharmony_ci * it returns "Unknown". 6188c2ecf20Sopenharmony_ci */ 6198c2ecf20Sopenharmony_ciconst char *v4l2_norm_to_name(v4l2_std_id id); 6208c2ecf20Sopenharmony_ci 6218c2ecf20Sopenharmony_ci/** 6228c2ecf20Sopenharmony_ci * v4l2_video_std_frame_period - Ancillary routine that fills a 6238c2ecf20Sopenharmony_ci * struct &v4l2_fract pointer with the default framerate fraction. 6248c2ecf20Sopenharmony_ci * 6258c2ecf20Sopenharmony_ci * @id: analog TV standard ID. 6268c2ecf20Sopenharmony_ci * @frameperiod: struct &v4l2_fract pointer to be filled 6278c2ecf20Sopenharmony_ci * 6288c2ecf20Sopenharmony_ci */ 6298c2ecf20Sopenharmony_civoid v4l2_video_std_frame_period(int id, struct v4l2_fract *frameperiod); 6308c2ecf20Sopenharmony_ci 6318c2ecf20Sopenharmony_ci/** 6328c2ecf20Sopenharmony_ci * v4l2_video_std_construct - Ancillary routine that fills in the fields of 6338c2ecf20Sopenharmony_ci * a &v4l2_standard structure according to the @id parameter. 6348c2ecf20Sopenharmony_ci * 6358c2ecf20Sopenharmony_ci * @vs: struct &v4l2_standard pointer to be filled 6368c2ecf20Sopenharmony_ci * @id: analog TV standard ID. 6378c2ecf20Sopenharmony_ci * @name: name of the standard to be used 6388c2ecf20Sopenharmony_ci * 6398c2ecf20Sopenharmony_ci * .. note:: 6408c2ecf20Sopenharmony_ci * 6418c2ecf20Sopenharmony_ci * This ancillary routine is obsolete. Shouldn't be used on newer drivers. 6428c2ecf20Sopenharmony_ci */ 6438c2ecf20Sopenharmony_ciint v4l2_video_std_construct(struct v4l2_standard *vs, 6448c2ecf20Sopenharmony_ci int id, const char *name); 6458c2ecf20Sopenharmony_ci 6468c2ecf20Sopenharmony_ci/** 6478c2ecf20Sopenharmony_ci * v4l_video_std_enumstd - Ancillary routine that fills in the fields of 6488c2ecf20Sopenharmony_ci * a &v4l2_standard structure according to the @id and @vs->index 6498c2ecf20Sopenharmony_ci * parameters. 6508c2ecf20Sopenharmony_ci * 6518c2ecf20Sopenharmony_ci * @vs: struct &v4l2_standard pointer to be filled. 6528c2ecf20Sopenharmony_ci * @id: analog TV standard ID. 6538c2ecf20Sopenharmony_ci * 6548c2ecf20Sopenharmony_ci */ 6558c2ecf20Sopenharmony_ciint v4l_video_std_enumstd(struct v4l2_standard *vs, v4l2_std_id id); 6568c2ecf20Sopenharmony_ci 6578c2ecf20Sopenharmony_ci/** 6588c2ecf20Sopenharmony_ci * v4l_printk_ioctl - Ancillary routine that prints the ioctl in a 6598c2ecf20Sopenharmony_ci * human-readable format. 6608c2ecf20Sopenharmony_ci * 6618c2ecf20Sopenharmony_ci * @prefix: prefix to be added at the ioctl prints. 6628c2ecf20Sopenharmony_ci * @cmd: ioctl name 6638c2ecf20Sopenharmony_ci * 6648c2ecf20Sopenharmony_ci * .. note:: 6658c2ecf20Sopenharmony_ci * 6668c2ecf20Sopenharmony_ci * If prefix != %NULL, then it will issue a 6678c2ecf20Sopenharmony_ci * ``printk(KERN_DEBUG "%s: ", prefix)`` first. 6688c2ecf20Sopenharmony_ci */ 6698c2ecf20Sopenharmony_civoid v4l_printk_ioctl(const char *prefix, unsigned int cmd); 6708c2ecf20Sopenharmony_ci 6718c2ecf20Sopenharmony_cistruct video_device; 6728c2ecf20Sopenharmony_ci 6738c2ecf20Sopenharmony_ci/* names for fancy debug output */ 6748c2ecf20Sopenharmony_ciextern const char *v4l2_field_names[]; 6758c2ecf20Sopenharmony_ciextern const char *v4l2_type_names[]; 6768c2ecf20Sopenharmony_ci 6778c2ecf20Sopenharmony_ci#ifdef CONFIG_COMPAT 6788c2ecf20Sopenharmony_ci/** 6798c2ecf20Sopenharmony_ci * v4l2_compat_ioctl32 -32 Bits compatibility layer for 64 bits processors 6808c2ecf20Sopenharmony_ci * 6818c2ecf20Sopenharmony_ci * @file: Pointer to struct &file. 6828c2ecf20Sopenharmony_ci * @cmd: Ioctl name. 6838c2ecf20Sopenharmony_ci * @arg: Ioctl argument. 6848c2ecf20Sopenharmony_ci */ 6858c2ecf20Sopenharmony_cilong int v4l2_compat_ioctl32(struct file *file, unsigned int cmd, 6868c2ecf20Sopenharmony_ci unsigned long arg); 6878c2ecf20Sopenharmony_ci#endif 6888c2ecf20Sopenharmony_ci 6898c2ecf20Sopenharmony_ci/** 6908c2ecf20Sopenharmony_ci * typedef v4l2_kioctl - Typedef used to pass an ioctl handler. 6918c2ecf20Sopenharmony_ci * 6928c2ecf20Sopenharmony_ci * @file: Pointer to struct &file. 6938c2ecf20Sopenharmony_ci * @cmd: Ioctl name. 6948c2ecf20Sopenharmony_ci * @arg: Ioctl argument. 6958c2ecf20Sopenharmony_ci */ 6968c2ecf20Sopenharmony_citypedef long (*v4l2_kioctl)(struct file *file, unsigned int cmd, void *arg); 6978c2ecf20Sopenharmony_ci 6988c2ecf20Sopenharmony_ci/** 6998c2ecf20Sopenharmony_ci * video_usercopy - copies data from/to userspace memory when an ioctl is 7008c2ecf20Sopenharmony_ci * issued. 7018c2ecf20Sopenharmony_ci * 7028c2ecf20Sopenharmony_ci * @file: Pointer to struct &file. 7038c2ecf20Sopenharmony_ci * @cmd: Ioctl name. 7048c2ecf20Sopenharmony_ci * @arg: Ioctl argument. 7058c2ecf20Sopenharmony_ci * @func: function that will handle the ioctl 7068c2ecf20Sopenharmony_ci * 7078c2ecf20Sopenharmony_ci * .. note:: 7088c2ecf20Sopenharmony_ci * 7098c2ecf20Sopenharmony_ci * This routine should be used only inside the V4L2 core. 7108c2ecf20Sopenharmony_ci */ 7118c2ecf20Sopenharmony_cilong int video_usercopy(struct file *file, unsigned int cmd, 7128c2ecf20Sopenharmony_ci unsigned long int arg, v4l2_kioctl func); 7138c2ecf20Sopenharmony_ci 7148c2ecf20Sopenharmony_ci/** 7158c2ecf20Sopenharmony_ci * video_ioctl2 - Handles a V4L2 ioctl. 7168c2ecf20Sopenharmony_ci * 7178c2ecf20Sopenharmony_ci * @file: Pointer to struct &file. 7188c2ecf20Sopenharmony_ci * @cmd: Ioctl name. 7198c2ecf20Sopenharmony_ci * @arg: Ioctl argument. 7208c2ecf20Sopenharmony_ci * 7218c2ecf20Sopenharmony_ci * Method used to hancle an ioctl. Should be used to fill the 7228c2ecf20Sopenharmony_ci * &v4l2_ioctl_ops.unlocked_ioctl on all V4L2 drivers. 7238c2ecf20Sopenharmony_ci */ 7248c2ecf20Sopenharmony_cilong int video_ioctl2(struct file *file, 7258c2ecf20Sopenharmony_ci unsigned int cmd, unsigned long int arg); 7268c2ecf20Sopenharmony_ci 7278c2ecf20Sopenharmony_ci/* 7288c2ecf20Sopenharmony_ci * The user space interpretation of the 'v4l2_event' differs 7298c2ecf20Sopenharmony_ci * based on the 'time_t' definition on 32-bit architectures, so 7308c2ecf20Sopenharmony_ci * the kernel has to handle both. 7318c2ecf20Sopenharmony_ci * This is the old version for 32-bit architectures. 7328c2ecf20Sopenharmony_ci */ 7338c2ecf20Sopenharmony_cistruct v4l2_event_time32 { 7348c2ecf20Sopenharmony_ci __u32 type; 7358c2ecf20Sopenharmony_ci union { 7368c2ecf20Sopenharmony_ci struct v4l2_event_vsync vsync; 7378c2ecf20Sopenharmony_ci struct v4l2_event_ctrl ctrl; 7388c2ecf20Sopenharmony_ci struct v4l2_event_frame_sync frame_sync; 7398c2ecf20Sopenharmony_ci struct v4l2_event_src_change src_change; 7408c2ecf20Sopenharmony_ci struct v4l2_event_motion_det motion_det; 7418c2ecf20Sopenharmony_ci __u8 data[64]; 7428c2ecf20Sopenharmony_ci } u; 7438c2ecf20Sopenharmony_ci __u32 pending; 7448c2ecf20Sopenharmony_ci __u32 sequence; 7458c2ecf20Sopenharmony_ci struct old_timespec32 timestamp; 7468c2ecf20Sopenharmony_ci __u32 id; 7478c2ecf20Sopenharmony_ci __u32 reserved[8]; 7488c2ecf20Sopenharmony_ci}; 7498c2ecf20Sopenharmony_ci 7508c2ecf20Sopenharmony_ci#define VIDIOC_DQEVENT_TIME32 _IOR('V', 89, struct v4l2_event_time32) 7518c2ecf20Sopenharmony_ci 7528c2ecf20Sopenharmony_cistruct v4l2_buffer_time32 { 7538c2ecf20Sopenharmony_ci __u32 index; 7548c2ecf20Sopenharmony_ci __u32 type; 7558c2ecf20Sopenharmony_ci __u32 bytesused; 7568c2ecf20Sopenharmony_ci __u32 flags; 7578c2ecf20Sopenharmony_ci __u32 field; 7588c2ecf20Sopenharmony_ci struct old_timeval32 timestamp; 7598c2ecf20Sopenharmony_ci struct v4l2_timecode timecode; 7608c2ecf20Sopenharmony_ci __u32 sequence; 7618c2ecf20Sopenharmony_ci 7628c2ecf20Sopenharmony_ci /* memory location */ 7638c2ecf20Sopenharmony_ci __u32 memory; 7648c2ecf20Sopenharmony_ci union { 7658c2ecf20Sopenharmony_ci __u32 offset; 7668c2ecf20Sopenharmony_ci unsigned long userptr; 7678c2ecf20Sopenharmony_ci struct v4l2_plane *planes; 7688c2ecf20Sopenharmony_ci __s32 fd; 7698c2ecf20Sopenharmony_ci } m; 7708c2ecf20Sopenharmony_ci __u32 length; 7718c2ecf20Sopenharmony_ci __u32 reserved2; 7728c2ecf20Sopenharmony_ci union { 7738c2ecf20Sopenharmony_ci __s32 request_fd; 7748c2ecf20Sopenharmony_ci __u32 reserved; 7758c2ecf20Sopenharmony_ci }; 7768c2ecf20Sopenharmony_ci}; 7778c2ecf20Sopenharmony_ci#define VIDIOC_QUERYBUF_TIME32 _IOWR('V', 9, struct v4l2_buffer_time32) 7788c2ecf20Sopenharmony_ci#define VIDIOC_QBUF_TIME32 _IOWR('V', 15, struct v4l2_buffer_time32) 7798c2ecf20Sopenharmony_ci#define VIDIOC_DQBUF_TIME32 _IOWR('V', 17, struct v4l2_buffer_time32) 7808c2ecf20Sopenharmony_ci#define VIDIOC_PREPARE_BUF_TIME32 _IOWR('V', 93, struct v4l2_buffer_time32) 7818c2ecf20Sopenharmony_ci 7828c2ecf20Sopenharmony_ci#endif /* _V4L2_IOCTL_H */ 783