xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/v4l2-subdev.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*f80ad8b4SAndroid Build Coastguard Worker /*
3*f80ad8b4SAndroid Build Coastguard Worker  * V4L2 subdev userspace API
4*f80ad8b4SAndroid Build Coastguard Worker  *
5*f80ad8b4SAndroid Build Coastguard Worker  * Copyright (C) 2010 Nokia Corporation
6*f80ad8b4SAndroid Build Coastguard Worker  *
7*f80ad8b4SAndroid Build Coastguard Worker  * Contacts: Laurent Pinchart <[email protected]>
8*f80ad8b4SAndroid Build Coastguard Worker  *	     Sakari Ailus <[email protected]>
9*f80ad8b4SAndroid Build Coastguard Worker  */
10*f80ad8b4SAndroid Build Coastguard Worker 
11*f80ad8b4SAndroid Build Coastguard Worker #ifndef __LINUX_V4L2_SUBDEV_H
12*f80ad8b4SAndroid Build Coastguard Worker #define __LINUX_V4L2_SUBDEV_H
13*f80ad8b4SAndroid Build Coastguard Worker 
14*f80ad8b4SAndroid Build Coastguard Worker #include <linux/const.h>
15*f80ad8b4SAndroid Build Coastguard Worker #include <linux/ioctl.h>
16*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h>
17*f80ad8b4SAndroid Build Coastguard Worker #include <linux/v4l2-common.h>
18*f80ad8b4SAndroid Build Coastguard Worker #include <linux/v4l2-mediabus.h>
19*f80ad8b4SAndroid Build Coastguard Worker 
20*f80ad8b4SAndroid Build Coastguard Worker /**
21*f80ad8b4SAndroid Build Coastguard Worker  * enum v4l2_subdev_format_whence - Media bus format type
22*f80ad8b4SAndroid Build Coastguard Worker  * @V4L2_SUBDEV_FORMAT_TRY: try format, for negotiation only
23*f80ad8b4SAndroid Build Coastguard Worker  * @V4L2_SUBDEV_FORMAT_ACTIVE: active format, applied to the device
24*f80ad8b4SAndroid Build Coastguard Worker  */
25*f80ad8b4SAndroid Build Coastguard Worker enum v4l2_subdev_format_whence {
26*f80ad8b4SAndroid Build Coastguard Worker 	V4L2_SUBDEV_FORMAT_TRY = 0,
27*f80ad8b4SAndroid Build Coastguard Worker 	V4L2_SUBDEV_FORMAT_ACTIVE = 1,
28*f80ad8b4SAndroid Build Coastguard Worker };
29*f80ad8b4SAndroid Build Coastguard Worker 
30*f80ad8b4SAndroid Build Coastguard Worker /**
31*f80ad8b4SAndroid Build Coastguard Worker  * struct v4l2_subdev_format - Pad-level media bus format
32*f80ad8b4SAndroid Build Coastguard Worker  * @which: format type (from enum v4l2_subdev_format_whence)
33*f80ad8b4SAndroid Build Coastguard Worker  * @pad: pad number, as reported by the media API
34*f80ad8b4SAndroid Build Coastguard Worker  * @format: media bus format (format code and frame size)
35*f80ad8b4SAndroid Build Coastguard Worker  * @stream: stream number, defined in subdev routing
36*f80ad8b4SAndroid Build Coastguard Worker  * @reserved: drivers and applications must zero this array
37*f80ad8b4SAndroid Build Coastguard Worker  */
38*f80ad8b4SAndroid Build Coastguard Worker struct v4l2_subdev_format {
39*f80ad8b4SAndroid Build Coastguard Worker 	__u32 which;
40*f80ad8b4SAndroid Build Coastguard Worker 	__u32 pad;
41*f80ad8b4SAndroid Build Coastguard Worker 	struct v4l2_mbus_framefmt format;
42*f80ad8b4SAndroid Build Coastguard Worker 	__u32 stream;
43*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[7];
44*f80ad8b4SAndroid Build Coastguard Worker };
45*f80ad8b4SAndroid Build Coastguard Worker 
46*f80ad8b4SAndroid Build Coastguard Worker /**
47*f80ad8b4SAndroid Build Coastguard Worker  * struct v4l2_subdev_crop - Pad-level crop settings
48*f80ad8b4SAndroid Build Coastguard Worker  * @which: format type (from enum v4l2_subdev_format_whence)
49*f80ad8b4SAndroid Build Coastguard Worker  * @pad: pad number, as reported by the media API
50*f80ad8b4SAndroid Build Coastguard Worker  * @rect: pad crop rectangle boundaries
51*f80ad8b4SAndroid Build Coastguard Worker  * @stream: stream number, defined in subdev routing
52*f80ad8b4SAndroid Build Coastguard Worker  * @reserved: drivers and applications must zero this array
53*f80ad8b4SAndroid Build Coastguard Worker  *
54*f80ad8b4SAndroid Build Coastguard Worker  * The subdev crop API is an obsolete interface and may be removed in the
55*f80ad8b4SAndroid Build Coastguard Worker  * future. It is superseded by the selection API. No new extensions to this
56*f80ad8b4SAndroid Build Coastguard Worker  * structure will be accepted.
57*f80ad8b4SAndroid Build Coastguard Worker  */
58*f80ad8b4SAndroid Build Coastguard Worker struct v4l2_subdev_crop {
59*f80ad8b4SAndroid Build Coastguard Worker 	__u32 which;
60*f80ad8b4SAndroid Build Coastguard Worker 	__u32 pad;
61*f80ad8b4SAndroid Build Coastguard Worker 	struct v4l2_rect rect;
62*f80ad8b4SAndroid Build Coastguard Worker 	__u32 stream;
63*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[7];
64*f80ad8b4SAndroid Build Coastguard Worker };
65*f80ad8b4SAndroid Build Coastguard Worker 
66*f80ad8b4SAndroid Build Coastguard Worker #define V4L2_SUBDEV_MBUS_CODE_CSC_COLORSPACE	0x00000001
67*f80ad8b4SAndroid Build Coastguard Worker #define V4L2_SUBDEV_MBUS_CODE_CSC_XFER_FUNC	0x00000002
68*f80ad8b4SAndroid Build Coastguard Worker #define V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC	0x00000004
69*f80ad8b4SAndroid Build Coastguard Worker #define V4L2_SUBDEV_MBUS_CODE_CSC_HSV_ENC	V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC
70*f80ad8b4SAndroid Build Coastguard Worker #define V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION	0x00000008
71*f80ad8b4SAndroid Build Coastguard Worker 
72*f80ad8b4SAndroid Build Coastguard Worker /**
73*f80ad8b4SAndroid Build Coastguard Worker  * struct v4l2_subdev_mbus_code_enum - Media bus format enumeration
74*f80ad8b4SAndroid Build Coastguard Worker  * @pad: pad number, as reported by the media API
75*f80ad8b4SAndroid Build Coastguard Worker  * @index: format index during enumeration
76*f80ad8b4SAndroid Build Coastguard Worker  * @code: format code (MEDIA_BUS_FMT_ definitions)
77*f80ad8b4SAndroid Build Coastguard Worker  * @which: format type (from enum v4l2_subdev_format_whence)
78*f80ad8b4SAndroid Build Coastguard Worker  * @flags: flags set by the driver, (V4L2_SUBDEV_MBUS_CODE_*)
79*f80ad8b4SAndroid Build Coastguard Worker  * @stream: stream number, defined in subdev routing
80*f80ad8b4SAndroid Build Coastguard Worker  * @reserved: drivers and applications must zero this array
81*f80ad8b4SAndroid Build Coastguard Worker  */
82*f80ad8b4SAndroid Build Coastguard Worker struct v4l2_subdev_mbus_code_enum {
83*f80ad8b4SAndroid Build Coastguard Worker 	__u32 pad;
84*f80ad8b4SAndroid Build Coastguard Worker 	__u32 index;
85*f80ad8b4SAndroid Build Coastguard Worker 	__u32 code;
86*f80ad8b4SAndroid Build Coastguard Worker 	__u32 which;
87*f80ad8b4SAndroid Build Coastguard Worker 	__u32 flags;
88*f80ad8b4SAndroid Build Coastguard Worker 	__u32 stream;
89*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[6];
90*f80ad8b4SAndroid Build Coastguard Worker };
91*f80ad8b4SAndroid Build Coastguard Worker 
92*f80ad8b4SAndroid Build Coastguard Worker /**
93*f80ad8b4SAndroid Build Coastguard Worker  * struct v4l2_subdev_frame_size_enum - Media bus format enumeration
94*f80ad8b4SAndroid Build Coastguard Worker  * @index: format index during enumeration
95*f80ad8b4SAndroid Build Coastguard Worker  * @pad: pad number, as reported by the media API
96*f80ad8b4SAndroid Build Coastguard Worker  * @code: format code (MEDIA_BUS_FMT_ definitions)
97*f80ad8b4SAndroid Build Coastguard Worker  * @min_width: minimum frame width, in pixels
98*f80ad8b4SAndroid Build Coastguard Worker  * @max_width: maximum frame width, in pixels
99*f80ad8b4SAndroid Build Coastguard Worker  * @min_height: minimum frame height, in pixels
100*f80ad8b4SAndroid Build Coastguard Worker  * @max_height: maximum frame height, in pixels
101*f80ad8b4SAndroid Build Coastguard Worker  * @which: format type (from enum v4l2_subdev_format_whence)
102*f80ad8b4SAndroid Build Coastguard Worker  * @stream: stream number, defined in subdev routing
103*f80ad8b4SAndroid Build Coastguard Worker  * @reserved: drivers and applications must zero this array
104*f80ad8b4SAndroid Build Coastguard Worker  */
105*f80ad8b4SAndroid Build Coastguard Worker struct v4l2_subdev_frame_size_enum {
106*f80ad8b4SAndroid Build Coastguard Worker 	__u32 index;
107*f80ad8b4SAndroid Build Coastguard Worker 	__u32 pad;
108*f80ad8b4SAndroid Build Coastguard Worker 	__u32 code;
109*f80ad8b4SAndroid Build Coastguard Worker 	__u32 min_width;
110*f80ad8b4SAndroid Build Coastguard Worker 	__u32 max_width;
111*f80ad8b4SAndroid Build Coastguard Worker 	__u32 min_height;
112*f80ad8b4SAndroid Build Coastguard Worker 	__u32 max_height;
113*f80ad8b4SAndroid Build Coastguard Worker 	__u32 which;
114*f80ad8b4SAndroid Build Coastguard Worker 	__u32 stream;
115*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[7];
116*f80ad8b4SAndroid Build Coastguard Worker };
117*f80ad8b4SAndroid Build Coastguard Worker 
118*f80ad8b4SAndroid Build Coastguard Worker /**
119*f80ad8b4SAndroid Build Coastguard Worker  * struct v4l2_subdev_frame_interval - Pad-level frame rate
120*f80ad8b4SAndroid Build Coastguard Worker  * @pad: pad number, as reported by the media API
121*f80ad8b4SAndroid Build Coastguard Worker  * @interval: frame interval in seconds
122*f80ad8b4SAndroid Build Coastguard Worker  * @stream: stream number, defined in subdev routing
123*f80ad8b4SAndroid Build Coastguard Worker  * @which: interval type (from enum v4l2_subdev_format_whence)
124*f80ad8b4SAndroid Build Coastguard Worker  * @reserved: drivers and applications must zero this array
125*f80ad8b4SAndroid Build Coastguard Worker  */
126*f80ad8b4SAndroid Build Coastguard Worker struct v4l2_subdev_frame_interval {
127*f80ad8b4SAndroid Build Coastguard Worker 	__u32 pad;
128*f80ad8b4SAndroid Build Coastguard Worker 	struct v4l2_fract interval;
129*f80ad8b4SAndroid Build Coastguard Worker 	__u32 stream;
130*f80ad8b4SAndroid Build Coastguard Worker 	__u32 which;
131*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[7];
132*f80ad8b4SAndroid Build Coastguard Worker };
133*f80ad8b4SAndroid Build Coastguard Worker 
134*f80ad8b4SAndroid Build Coastguard Worker /**
135*f80ad8b4SAndroid Build Coastguard Worker  * struct v4l2_subdev_frame_interval_enum - Frame interval enumeration
136*f80ad8b4SAndroid Build Coastguard Worker  * @pad: pad number, as reported by the media API
137*f80ad8b4SAndroid Build Coastguard Worker  * @index: frame interval index during enumeration
138*f80ad8b4SAndroid Build Coastguard Worker  * @code: format code (MEDIA_BUS_FMT_ definitions)
139*f80ad8b4SAndroid Build Coastguard Worker  * @width: frame width in pixels
140*f80ad8b4SAndroid Build Coastguard Worker  * @height: frame height in pixels
141*f80ad8b4SAndroid Build Coastguard Worker  * @interval: frame interval in seconds
142*f80ad8b4SAndroid Build Coastguard Worker  * @which: interval type (from enum v4l2_subdev_format_whence)
143*f80ad8b4SAndroid Build Coastguard Worker  * @stream: stream number, defined in subdev routing
144*f80ad8b4SAndroid Build Coastguard Worker  * @reserved: drivers and applications must zero this array
145*f80ad8b4SAndroid Build Coastguard Worker  */
146*f80ad8b4SAndroid Build Coastguard Worker struct v4l2_subdev_frame_interval_enum {
147*f80ad8b4SAndroid Build Coastguard Worker 	__u32 index;
148*f80ad8b4SAndroid Build Coastguard Worker 	__u32 pad;
149*f80ad8b4SAndroid Build Coastguard Worker 	__u32 code;
150*f80ad8b4SAndroid Build Coastguard Worker 	__u32 width;
151*f80ad8b4SAndroid Build Coastguard Worker 	__u32 height;
152*f80ad8b4SAndroid Build Coastguard Worker 	struct v4l2_fract interval;
153*f80ad8b4SAndroid Build Coastguard Worker 	__u32 which;
154*f80ad8b4SAndroid Build Coastguard Worker 	__u32 stream;
155*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[7];
156*f80ad8b4SAndroid Build Coastguard Worker };
157*f80ad8b4SAndroid Build Coastguard Worker 
158*f80ad8b4SAndroid Build Coastguard Worker /**
159*f80ad8b4SAndroid Build Coastguard Worker  * struct v4l2_subdev_selection - selection info
160*f80ad8b4SAndroid Build Coastguard Worker  *
161*f80ad8b4SAndroid Build Coastguard Worker  * @which: either V4L2_SUBDEV_FORMAT_ACTIVE or V4L2_SUBDEV_FORMAT_TRY
162*f80ad8b4SAndroid Build Coastguard Worker  * @pad: pad number, as reported by the media API
163*f80ad8b4SAndroid Build Coastguard Worker  * @target: Selection target, used to choose one of possible rectangles,
164*f80ad8b4SAndroid Build Coastguard Worker  *	    defined in v4l2-common.h; V4L2_SEL_TGT_* .
165*f80ad8b4SAndroid Build Coastguard Worker  * @flags: constraint flags, defined in v4l2-common.h; V4L2_SEL_FLAG_*.
166*f80ad8b4SAndroid Build Coastguard Worker  * @r: coordinates of the selection window
167*f80ad8b4SAndroid Build Coastguard Worker  * @stream: stream number, defined in subdev routing
168*f80ad8b4SAndroid Build Coastguard Worker  * @reserved: for future use, set to zero for now
169*f80ad8b4SAndroid Build Coastguard Worker  *
170*f80ad8b4SAndroid Build Coastguard Worker  * Hardware may use multiple helper windows to process a video stream.
171*f80ad8b4SAndroid Build Coastguard Worker  * The structure is used to exchange this selection areas between
172*f80ad8b4SAndroid Build Coastguard Worker  * an application and a driver.
173*f80ad8b4SAndroid Build Coastguard Worker  */
174*f80ad8b4SAndroid Build Coastguard Worker struct v4l2_subdev_selection {
175*f80ad8b4SAndroid Build Coastguard Worker 	__u32 which;
176*f80ad8b4SAndroid Build Coastguard Worker 	__u32 pad;
177*f80ad8b4SAndroid Build Coastguard Worker 	__u32 target;
178*f80ad8b4SAndroid Build Coastguard Worker 	__u32 flags;
179*f80ad8b4SAndroid Build Coastguard Worker 	struct v4l2_rect r;
180*f80ad8b4SAndroid Build Coastguard Worker 	__u32 stream;
181*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[7];
182*f80ad8b4SAndroid Build Coastguard Worker };
183*f80ad8b4SAndroid Build Coastguard Worker 
184*f80ad8b4SAndroid Build Coastguard Worker /**
185*f80ad8b4SAndroid Build Coastguard Worker  * struct v4l2_subdev_capability - subdev capabilities
186*f80ad8b4SAndroid Build Coastguard Worker  * @version: the driver versioning number
187*f80ad8b4SAndroid Build Coastguard Worker  * @capabilities: the subdev capabilities, see V4L2_SUBDEV_CAP_*
188*f80ad8b4SAndroid Build Coastguard Worker  * @reserved: for future use, set to zero for now
189*f80ad8b4SAndroid Build Coastguard Worker  */
190*f80ad8b4SAndroid Build Coastguard Worker struct v4l2_subdev_capability {
191*f80ad8b4SAndroid Build Coastguard Worker 	__u32 version;
192*f80ad8b4SAndroid Build Coastguard Worker 	__u32 capabilities;
193*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[14];
194*f80ad8b4SAndroid Build Coastguard Worker };
195*f80ad8b4SAndroid Build Coastguard Worker 
196*f80ad8b4SAndroid Build Coastguard Worker /* The v4l2 sub-device video device node is registered in read-only mode. */
197*f80ad8b4SAndroid Build Coastguard Worker #define V4L2_SUBDEV_CAP_RO_SUBDEV		0x00000001
198*f80ad8b4SAndroid Build Coastguard Worker 
199*f80ad8b4SAndroid Build Coastguard Worker /* The v4l2 sub-device supports routing and multiplexed streams. */
200*f80ad8b4SAndroid Build Coastguard Worker #define V4L2_SUBDEV_CAP_STREAMS			0x00000002
201*f80ad8b4SAndroid Build Coastguard Worker 
202*f80ad8b4SAndroid Build Coastguard Worker /*
203*f80ad8b4SAndroid Build Coastguard Worker  * Is the route active? An active route will start when streaming is enabled
204*f80ad8b4SAndroid Build Coastguard Worker  * on a video node.
205*f80ad8b4SAndroid Build Coastguard Worker  */
206*f80ad8b4SAndroid Build Coastguard Worker #define V4L2_SUBDEV_ROUTE_FL_ACTIVE		(1U << 0)
207*f80ad8b4SAndroid Build Coastguard Worker 
208*f80ad8b4SAndroid Build Coastguard Worker /**
209*f80ad8b4SAndroid Build Coastguard Worker  * struct v4l2_subdev_route - A route inside a subdev
210*f80ad8b4SAndroid Build Coastguard Worker  *
211*f80ad8b4SAndroid Build Coastguard Worker  * @sink_pad: the sink pad index
212*f80ad8b4SAndroid Build Coastguard Worker  * @sink_stream: the sink stream identifier
213*f80ad8b4SAndroid Build Coastguard Worker  * @source_pad: the source pad index
214*f80ad8b4SAndroid Build Coastguard Worker  * @source_stream: the source stream identifier
215*f80ad8b4SAndroid Build Coastguard Worker  * @flags: route flags V4L2_SUBDEV_ROUTE_FL_*
216*f80ad8b4SAndroid Build Coastguard Worker  * @reserved: drivers and applications must zero this array
217*f80ad8b4SAndroid Build Coastguard Worker  */
218*f80ad8b4SAndroid Build Coastguard Worker struct v4l2_subdev_route {
219*f80ad8b4SAndroid Build Coastguard Worker 	__u32 sink_pad;
220*f80ad8b4SAndroid Build Coastguard Worker 	__u32 sink_stream;
221*f80ad8b4SAndroid Build Coastguard Worker 	__u32 source_pad;
222*f80ad8b4SAndroid Build Coastguard Worker 	__u32 source_stream;
223*f80ad8b4SAndroid Build Coastguard Worker 	__u32 flags;
224*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[5];
225*f80ad8b4SAndroid Build Coastguard Worker };
226*f80ad8b4SAndroid Build Coastguard Worker 
227*f80ad8b4SAndroid Build Coastguard Worker /**
228*f80ad8b4SAndroid Build Coastguard Worker  * struct v4l2_subdev_routing - Subdev routing information
229*f80ad8b4SAndroid Build Coastguard Worker  *
230*f80ad8b4SAndroid Build Coastguard Worker  * @which: configuration type (from enum v4l2_subdev_format_whence)
231*f80ad8b4SAndroid Build Coastguard Worker  * @len_routes: the length of the routes array, in routes; set by the user, not
232*f80ad8b4SAndroid Build Coastguard Worker  *		modified by the kernel
233*f80ad8b4SAndroid Build Coastguard Worker  * @routes: pointer to the routes array
234*f80ad8b4SAndroid Build Coastguard Worker  * @num_routes: the total number of routes, possibly more than fits in the
235*f80ad8b4SAndroid Build Coastguard Worker  *		routes array
236*f80ad8b4SAndroid Build Coastguard Worker  * @reserved: drivers and applications must zero this array
237*f80ad8b4SAndroid Build Coastguard Worker  */
238*f80ad8b4SAndroid Build Coastguard Worker struct v4l2_subdev_routing {
239*f80ad8b4SAndroid Build Coastguard Worker 	__u32 which;
240*f80ad8b4SAndroid Build Coastguard Worker 	__u32 len_routes;
241*f80ad8b4SAndroid Build Coastguard Worker 	__u64 routes;
242*f80ad8b4SAndroid Build Coastguard Worker 	__u32 num_routes;
243*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[11];
244*f80ad8b4SAndroid Build Coastguard Worker };
245*f80ad8b4SAndroid Build Coastguard Worker 
246*f80ad8b4SAndroid Build Coastguard Worker /*
247*f80ad8b4SAndroid Build Coastguard Worker  * The client is aware of streams. Setting this flag enables the use of 'stream'
248*f80ad8b4SAndroid Build Coastguard Worker  * fields (referring to the stream number) with various ioctls. If this is not
249*f80ad8b4SAndroid Build Coastguard Worker  * set (which is the default), the 'stream' fields will be forced to 0 by the
250*f80ad8b4SAndroid Build Coastguard Worker  * kernel.
251*f80ad8b4SAndroid Build Coastguard Worker  */
252*f80ad8b4SAndroid Build Coastguard Worker #define V4L2_SUBDEV_CLIENT_CAP_STREAMS			(1ULL << 0)
253*f80ad8b4SAndroid Build Coastguard Worker 
254*f80ad8b4SAndroid Build Coastguard Worker /*
255*f80ad8b4SAndroid Build Coastguard Worker  * The client is aware of the struct v4l2_subdev_frame_interval which field. If
256*f80ad8b4SAndroid Build Coastguard Worker  * this is not set (which is the default), the which field is forced to
257*f80ad8b4SAndroid Build Coastguard Worker  * V4L2_SUBDEV_FORMAT_ACTIVE by the kernel.
258*f80ad8b4SAndroid Build Coastguard Worker  */
259*f80ad8b4SAndroid Build Coastguard Worker #define V4L2_SUBDEV_CLIENT_CAP_INTERVAL_USES_WHICH	(1ULL << 1)
260*f80ad8b4SAndroid Build Coastguard Worker 
261*f80ad8b4SAndroid Build Coastguard Worker /**
262*f80ad8b4SAndroid Build Coastguard Worker  * struct v4l2_subdev_client_capability - Capabilities of the client accessing
263*f80ad8b4SAndroid Build Coastguard Worker  *					  the subdev
264*f80ad8b4SAndroid Build Coastguard Worker  *
265*f80ad8b4SAndroid Build Coastguard Worker  * @capabilities: A bitmask of V4L2_SUBDEV_CLIENT_CAP_* flags.
266*f80ad8b4SAndroid Build Coastguard Worker  */
267*f80ad8b4SAndroid Build Coastguard Worker struct v4l2_subdev_client_capability {
268*f80ad8b4SAndroid Build Coastguard Worker 	__u64 capabilities;
269*f80ad8b4SAndroid Build Coastguard Worker };
270*f80ad8b4SAndroid Build Coastguard Worker 
271*f80ad8b4SAndroid Build Coastguard Worker /* Backwards compatibility define --- to be removed */
272*f80ad8b4SAndroid Build Coastguard Worker #define v4l2_subdev_edid v4l2_edid
273*f80ad8b4SAndroid Build Coastguard Worker 
274*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_QUERYCAP			_IOR('V',  0, struct v4l2_subdev_capability)
275*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_G_FMT			_IOWR('V',  4, struct v4l2_subdev_format)
276*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_S_FMT			_IOWR('V',  5, struct v4l2_subdev_format)
277*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_G_FRAME_INTERVAL		_IOWR('V', 21, struct v4l2_subdev_frame_interval)
278*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_S_FRAME_INTERVAL		_IOWR('V', 22, struct v4l2_subdev_frame_interval)
279*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_ENUM_MBUS_CODE		_IOWR('V',  2, struct v4l2_subdev_mbus_code_enum)
280*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_ENUM_FRAME_SIZE		_IOWR('V', 74, struct v4l2_subdev_frame_size_enum)
281*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL	_IOWR('V', 75, struct v4l2_subdev_frame_interval_enum)
282*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_G_CROP			_IOWR('V', 59, struct v4l2_subdev_crop)
283*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_S_CROP			_IOWR('V', 60, struct v4l2_subdev_crop)
284*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_G_SELECTION		_IOWR('V', 61, struct v4l2_subdev_selection)
285*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_S_SELECTION		_IOWR('V', 62, struct v4l2_subdev_selection)
286*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_G_ROUTING			_IOWR('V', 38, struct v4l2_subdev_routing)
287*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_S_ROUTING			_IOWR('V', 39, struct v4l2_subdev_routing)
288*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_G_CLIENT_CAP		_IOR('V',  101, struct v4l2_subdev_client_capability)
289*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_S_CLIENT_CAP		_IOWR('V',  102, struct v4l2_subdev_client_capability)
290*f80ad8b4SAndroid Build Coastguard Worker 
291*f80ad8b4SAndroid Build Coastguard Worker /* The following ioctls are identical to the ioctls in videodev2.h */
292*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_G_STD			_IOR('V', 23, v4l2_std_id)
293*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_S_STD			_IOW('V', 24, v4l2_std_id)
294*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_ENUMSTD			_IOWR('V', 25, struct v4l2_standard)
295*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_G_EDID			_IOWR('V', 40, struct v4l2_edid)
296*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_S_EDID			_IOWR('V', 41, struct v4l2_edid)
297*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_QUERYSTD			_IOR('V', 63, v4l2_std_id)
298*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_S_DV_TIMINGS		_IOWR('V', 87, struct v4l2_dv_timings)
299*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_G_DV_TIMINGS		_IOWR('V', 88, struct v4l2_dv_timings)
300*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_ENUM_DV_TIMINGS		_IOWR('V', 98, struct v4l2_enum_dv_timings)
301*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_QUERY_DV_TIMINGS		_IOR('V', 99, struct v4l2_dv_timings)
302*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_SUBDEV_DV_TIMINGS_CAP		_IOWR('V', 100, struct v4l2_dv_timings_cap)
303*f80ad8b4SAndroid Build Coastguard Worker 
304*f80ad8b4SAndroid Build Coastguard Worker #endif
305