xref: /linux/include/uapi/linux/v4l2-mediabus.h (revision 62aacfa9bf93f94f6949338e0c7a2ed4c4bd2c2a)
1e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2607ca46eSDavid Howells /*
3607ca46eSDavid Howells  * Media Bus API header
4607ca46eSDavid Howells  *
5607ca46eSDavid Howells  * Copyright (C) 2009, Guennadi Liakhovetski <g.liakhovetski@gmx.de>
6607ca46eSDavid Howells  *
7607ca46eSDavid Howells  * This program is free software; you can redistribute it and/or modify
8607ca46eSDavid Howells  * it under the terms of the GNU General Public License version 2 as
9607ca46eSDavid Howells  * published by the Free Software Foundation.
10607ca46eSDavid Howells  */
11607ca46eSDavid Howells 
12607ca46eSDavid Howells #ifndef __LINUX_V4L2_MEDIABUS_H
13607ca46eSDavid Howells #define __LINUX_V4L2_MEDIABUS_H
14607ca46eSDavid Howells 
15edcf58bcSBoris BREZILLON #include <linux/media-bus-format.h>
16607ca46eSDavid Howells #include <linux/types.h>
17607ca46eSDavid Howells #include <linux/videodev2.h>
18607ca46eSDavid Howells 
19*62aacfa9SDafna Hirschfeld #define V4L2_MBUS_FRAMEFMT_SET_CSC	0x0001
20*62aacfa9SDafna Hirschfeld 
21aa1b4da6SBoris BREZILLON /**
22aa1b4da6SBoris BREZILLON  * struct v4l2_mbus_framefmt - frame format on the media bus
230018147cSKieran Bingham  * @width:	image width
240018147cSKieran Bingham  * @height:	image height
25aa1b4da6SBoris BREZILLON  * @code:	data format code (from enum v4l2_mbus_pixelcode)
26aa1b4da6SBoris BREZILLON  * @field:	used interlacing type (from enum v4l2_field)
27aa1b4da6SBoris BREZILLON  * @colorspace:	colorspace of the data (from enum v4l2_colorspace)
2811ff030cSHans Verkuil  * @ycbcr_enc:	YCbCr encoding of the data (from enum v4l2_ycbcr_encoding)
29*62aacfa9SDafna Hirschfeld  * @hsv_enc:	HSV encoding of the data (from enum v4l2_hsv_encoding)
3011ff030cSHans Verkuil  * @quantization: quantization of the data (from enum v4l2_quantization)
3174fdcb2eSHans Verkuil  * @xfer_func:  transfer function of the data (from enum v4l2_xfer_func)
32*62aacfa9SDafna Hirschfeld  * @flags:	flags (V4L2_MBUS_FRAMEFMT_*)
33*62aacfa9SDafna Hirschfeld  * @reserved:  reserved bytes that can be later used
34aa1b4da6SBoris BREZILLON  */
35aa1b4da6SBoris BREZILLON struct v4l2_mbus_framefmt {
36aa1b4da6SBoris BREZILLON 	__u32			width;
37aa1b4da6SBoris BREZILLON 	__u32			height;
38aa1b4da6SBoris BREZILLON 	__u32			code;
39aa1b4da6SBoris BREZILLON 	__u32			field;
40aa1b4da6SBoris BREZILLON 	__u32			colorspace;
41*62aacfa9SDafna Hirschfeld 	union {
42*62aacfa9SDafna Hirschfeld 		/* enum v4l2_ycbcr_encoding */
43f2d27e45SHans Verkuil 		__u16			ycbcr_enc;
44*62aacfa9SDafna Hirschfeld 		/* enum v4l2_hsv_encoding */
45*62aacfa9SDafna Hirschfeld 		__u16			hsv_enc;
46*62aacfa9SDafna Hirschfeld 	};
47f2d27e45SHans Verkuil 	__u16			quantization;
4874fdcb2eSHans Verkuil 	__u16			xfer_func;
49*62aacfa9SDafna Hirschfeld 	__u16			flags;
50*62aacfa9SDafna Hirschfeld 	__u16			reserved[10];
51aa1b4da6SBoris BREZILLON };
52aa1b4da6SBoris BREZILLON 
53aa1b4da6SBoris BREZILLON #ifndef __KERNEL__
54aa1b4da6SBoris BREZILLON /*
55aa1b4da6SBoris BREZILLON  * enum v4l2_mbus_pixelcode and its definitions are now deprecated, and
56aa1b4da6SBoris BREZILLON  * MEDIA_BUS_FMT_ definitions (defined in media-bus-format.h) should be
57aa1b4da6SBoris BREZILLON  * used instead.
58aa1b4da6SBoris BREZILLON  *
59aa1b4da6SBoris BREZILLON  * New defines should only be added to media-bus-format.h. The
60aa1b4da6SBoris BREZILLON  * v4l2_mbus_pixelcode enum is frozen.
61aa1b4da6SBoris BREZILLON  */
62aa1b4da6SBoris BREZILLON 
63edcf58bcSBoris BREZILLON #define V4L2_MBUS_FROM_MEDIA_BUS_FMT(name)	\
64edcf58bcSBoris BREZILLON 	V4L2_MBUS_FMT_ ## name = MEDIA_BUS_FMT_ ## name
65edcf58bcSBoris BREZILLON 
66607ca46eSDavid Howells enum v4l2_mbus_pixelcode {
67edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(FIXED),
68607ca46eSDavid Howells 
69edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_BE),
70edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_LE),
71edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_BE),
72edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_LE),
73edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_BE),
74edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_LE),
75edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_BE),
76edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_LE),
77edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB666_1X18),
78edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_1X24),
79edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_BE),
80edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_LE),
81edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(ARGB8888_1X32),
82607ca46eSDavid Howells 
83edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y8_1X8),
84edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UV8_1X8),
85edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1_5X8),
86edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1_5X8),
87edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1_5X8),
88edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1_5X8),
89edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_2X8),
90edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_2X8),
91edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_2X8),
92edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_2X8),
93edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y10_1X10),
94edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_2X10),
95edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_2X10),
96edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_2X10),
97edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_2X10),
98edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y12_1X12),
99edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1X16),
100edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1X16),
101edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1X16),
102edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1X16),
103edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YDYUYDYV8_1X16),
104edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_1X20),
105edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_1X20),
106edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_1X20),
107edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_1X20),
108edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUV10_1X30),
109edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(AYUV8_1X32),
110edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_2X12),
111edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_2X12),
112edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_2X12),
113edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_2X12),
114edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_1X24),
115edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_1X24),
116edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_1X24),
117edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_1X24),
118607ca46eSDavid Howells 
119edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR8_1X8),
120edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG8_1X8),
121edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG8_1X8),
122edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB8_1X8),
123edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_ALAW8_1X8),
124edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_ALAW8_1X8),
125edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_ALAW8_1X8),
126edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_ALAW8_1X8),
127edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_DPCM8_1X8),
128edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_DPCM8_1X8),
129edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_DPCM8_1X8),
130edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_DPCM8_1X8),
131edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_BE),
132edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_LE),
133edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_BE),
134edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_LE),
135edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_1X10),
136edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_1X10),
137edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_1X10),
138edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_1X10),
139edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR12_1X12),
140edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG12_1X12),
141edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG12_1X12),
142edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB12_1X12),
143607ca46eSDavid Howells 
144edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(JPEG_1X8),
145607ca46eSDavid Howells 
146edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(S5C_UYVY_JPEG_1X8),
147607ca46eSDavid Howells 
148edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(AHSV8888_1X32),
149607ca46eSDavid Howells };
150aa1b4da6SBoris BREZILLON #endif /* __KERNEL__ */
151607ca46eSDavid Howells 
152607ca46eSDavid Howells #endif
153