xref: /linux/include/uapi/linux/v4l2-mediabus.h (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
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 
8607ca46eSDavid Howells #ifndef __LINUX_V4L2_MEDIABUS_H
9607ca46eSDavid Howells #define __LINUX_V4L2_MEDIABUS_H
10607ca46eSDavid Howells 
11edcf58bcSBoris BREZILLON #include <linux/media-bus-format.h>
12607ca46eSDavid Howells #include <linux/types.h>
13607ca46eSDavid Howells #include <linux/videodev2.h>
14607ca46eSDavid Howells 
15*62aacfa9SDafna Hirschfeld #define V4L2_MBUS_FRAMEFMT_SET_CSC	0x0001
16*62aacfa9SDafna Hirschfeld 
17aa1b4da6SBoris BREZILLON /**
18aa1b4da6SBoris BREZILLON  * struct v4l2_mbus_framefmt - frame format on the media bus
190018147cSKieran Bingham  * @width:	image width
200018147cSKieran Bingham  * @height:	image height
21aa1b4da6SBoris BREZILLON  * @code:	data format code (from enum v4l2_mbus_pixelcode)
22aa1b4da6SBoris BREZILLON  * @field:	used interlacing type (from enum v4l2_field)
23aa1b4da6SBoris BREZILLON  * @colorspace:	colorspace of the data (from enum v4l2_colorspace)
2411ff030cSHans Verkuil  * @ycbcr_enc:	YCbCr encoding of the data (from enum v4l2_ycbcr_encoding)
25*62aacfa9SDafna Hirschfeld  * @hsv_enc:	HSV encoding of the data (from enum v4l2_hsv_encoding)
2611ff030cSHans Verkuil  * @quantization: quantization of the data (from enum v4l2_quantization)
2774fdcb2eSHans Verkuil  * @xfer_func:  transfer function of the data (from enum v4l2_xfer_func)
28*62aacfa9SDafna Hirschfeld  * @flags:	flags (V4L2_MBUS_FRAMEFMT_*)
29*62aacfa9SDafna Hirschfeld  * @reserved:  reserved bytes that can be later used
30aa1b4da6SBoris BREZILLON  */
31aa1b4da6SBoris BREZILLON struct v4l2_mbus_framefmt {
32aa1b4da6SBoris BREZILLON 	__u32			width;
33aa1b4da6SBoris BREZILLON 	__u32			height;
34aa1b4da6SBoris BREZILLON 	__u32			code;
35aa1b4da6SBoris BREZILLON 	__u32			field;
36aa1b4da6SBoris BREZILLON 	__u32			colorspace;
37*62aacfa9SDafna Hirschfeld 	union {
38*62aacfa9SDafna Hirschfeld 		/* enum v4l2_ycbcr_encoding */
39f2d27e45SHans Verkuil 		__u16			ycbcr_enc;
40*62aacfa9SDafna Hirschfeld 		/* enum v4l2_hsv_encoding */
41*62aacfa9SDafna Hirschfeld 		__u16			hsv_enc;
42*62aacfa9SDafna Hirschfeld 	};
43f2d27e45SHans Verkuil 	__u16			quantization;
4474fdcb2eSHans Verkuil 	__u16			xfer_func;
45*62aacfa9SDafna Hirschfeld 	__u16			flags;
46*62aacfa9SDafna Hirschfeld 	__u16			reserved[10];
47aa1b4da6SBoris BREZILLON };
48aa1b4da6SBoris BREZILLON 
49aa1b4da6SBoris BREZILLON #ifndef __KERNEL__
50aa1b4da6SBoris BREZILLON /*
51aa1b4da6SBoris BREZILLON  * enum v4l2_mbus_pixelcode and its definitions are now deprecated, and
52aa1b4da6SBoris BREZILLON  * MEDIA_BUS_FMT_ definitions (defined in media-bus-format.h) should be
53aa1b4da6SBoris BREZILLON  * used instead.
54aa1b4da6SBoris BREZILLON  *
55aa1b4da6SBoris BREZILLON  * New defines should only be added to media-bus-format.h. The
56aa1b4da6SBoris BREZILLON  * v4l2_mbus_pixelcode enum is frozen.
57aa1b4da6SBoris BREZILLON  */
58aa1b4da6SBoris BREZILLON 
59edcf58bcSBoris BREZILLON #define V4L2_MBUS_FROM_MEDIA_BUS_FMT(name)	\
60edcf58bcSBoris BREZILLON 	V4L2_MBUS_FMT_ ## name = MEDIA_BUS_FMT_ ## name
61edcf58bcSBoris BREZILLON 
62607ca46eSDavid Howells enum v4l2_mbus_pixelcode {
63edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(FIXED),
64607ca46eSDavid Howells 
65edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_BE),
66edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_LE),
67edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_BE),
68edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_LE),
69edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_BE),
70edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_LE),
71edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_BE),
72edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_LE),
73edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB666_1X18),
74edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_1X24),
75edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_BE),
76edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_LE),
77edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(ARGB8888_1X32),
78607ca46eSDavid Howells 
79edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y8_1X8),
80edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UV8_1X8),
81edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1_5X8),
82edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1_5X8),
83edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1_5X8),
84edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1_5X8),
85edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_2X8),
86edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_2X8),
87edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_2X8),
88edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_2X8),
89edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y10_1X10),
90edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_2X10),
91edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_2X10),
92edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_2X10),
93edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_2X10),
94edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y12_1X12),
95edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1X16),
96edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1X16),
97edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1X16),
98edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1X16),
99edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YDYUYDYV8_1X16),
100edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_1X20),
101edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_1X20),
102edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_1X20),
103edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_1X20),
104edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUV10_1X30),
105edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(AYUV8_1X32),
106edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_2X12),
107edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_2X12),
108edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_2X12),
109edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_2X12),
110edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_1X24),
111edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_1X24),
112edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_1X24),
113edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_1X24),
114607ca46eSDavid Howells 
115edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR8_1X8),
116edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG8_1X8),
117edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG8_1X8),
118edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB8_1X8),
119edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_ALAW8_1X8),
120edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_ALAW8_1X8),
121edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_ALAW8_1X8),
122edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_ALAW8_1X8),
123edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_DPCM8_1X8),
124edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_DPCM8_1X8),
125edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_DPCM8_1X8),
126edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_DPCM8_1X8),
127edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_BE),
128edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_LE),
129edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_BE),
130edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_LE),
131edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_1X10),
132edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_1X10),
133edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_1X10),
134edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_1X10),
135edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR12_1X12),
136edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG12_1X12),
137edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG12_1X12),
138edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB12_1X12),
139607ca46eSDavid Howells 
140edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(JPEG_1X8),
141607ca46eSDavid Howells 
142edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(S5C_UYVY_JPEG_1X8),
143607ca46eSDavid Howells 
144edcf58bcSBoris BREZILLON 	V4L2_MBUS_FROM_MEDIA_BUS_FMT(AHSV8888_1X32),
145607ca46eSDavid Howells };
146aa1b4da6SBoris BREZILLON #endif /* __KERNEL__ */
147607ca46eSDavid Howells 
148607ca46eSDavid Howells #endif
149