1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
2 | /* |
3 | * Media Bus API header |
4 | * |
5 | * Copyright (C) 2009, Guennadi Liakhovetski <g.liakhovetski@gmx.de> |
6 | */ |
7 | |
8 | #ifndef __LINUX_V4L2_MEDIABUS_H |
9 | #define __LINUX_V4L2_MEDIABUS_H |
10 | |
11 | #include <linux/media-bus-format.h> |
12 | #include <linux/types.h> |
13 | #include <linux/videodev2.h> |
14 | |
15 | #define V4L2_MBUS_FRAMEFMT_SET_CSC 0x0001 |
16 | |
17 | /** |
18 | * struct v4l2_mbus_framefmt - frame format on the media bus |
19 | * @width: image width |
20 | * @height: image height |
21 | * @code: data format code (from enum v4l2_mbus_pixelcode) |
22 | * @field: used interlacing type (from enum v4l2_field) |
23 | * @colorspace: colorspace of the data (from enum v4l2_colorspace) |
24 | * @ycbcr_enc: YCbCr encoding of the data (from enum v4l2_ycbcr_encoding) |
25 | * @hsv_enc: HSV encoding of the data (from enum v4l2_hsv_encoding) |
26 | * @quantization: quantization of the data (from enum v4l2_quantization) |
27 | * @xfer_func: transfer function of the data (from enum v4l2_xfer_func) |
28 | * @flags: flags (V4L2_MBUS_FRAMEFMT_*) |
29 | * @reserved: reserved bytes that can be later used |
30 | */ |
31 | struct v4l2_mbus_framefmt { |
32 | __u32 width; |
33 | __u32 height; |
34 | __u32 code; |
35 | __u32 field; |
36 | __u32 colorspace; |
37 | union { |
38 | /* enum v4l2_ycbcr_encoding */ |
39 | __u16 ycbcr_enc; |
40 | /* enum v4l2_hsv_encoding */ |
41 | __u16 hsv_enc; |
42 | }; |
43 | __u16 quantization; |
44 | __u16 xfer_func; |
45 | __u16 flags; |
46 | __u16 reserved[10]; |
47 | }; |
48 | |
49 | #ifndef __KERNEL__ |
50 | /* |
51 | * enum v4l2_mbus_pixelcode and its definitions are now deprecated, and |
52 | * MEDIA_BUS_FMT_ definitions (defined in media-bus-format.h) should be |
53 | * used instead. |
54 | * |
55 | * New defines should only be added to media-bus-format.h. The |
56 | * v4l2_mbus_pixelcode enum is frozen. |
57 | */ |
58 | |
59 | #define V4L2_MBUS_FROM_MEDIA_BUS_FMT(name) \ |
60 | V4L2_MBUS_FMT_ ## name = MEDIA_BUS_FMT_ ## name |
61 | |
62 | enum v4l2_mbus_pixelcode { |
63 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(FIXED), |
64 | |
65 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_BE), |
66 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_LE), |
67 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_BE), |
68 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_LE), |
69 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_BE), |
70 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_LE), |
71 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_BE), |
72 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_LE), |
73 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB666_1X18), |
74 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_1X24), |
75 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_BE), |
76 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_LE), |
77 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(ARGB8888_1X32), |
78 | |
79 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y8_1X8), |
80 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(UV8_1X8), |
81 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1_5X8), |
82 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1_5X8), |
83 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1_5X8), |
84 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1_5X8), |
85 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_2X8), |
86 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_2X8), |
87 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_2X8), |
88 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_2X8), |
89 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y10_1X10), |
90 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_2X10), |
91 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_2X10), |
92 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_2X10), |
93 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_2X10), |
94 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y12_1X12), |
95 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1X16), |
96 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1X16), |
97 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1X16), |
98 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1X16), |
99 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YDYUYDYV8_1X16), |
100 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_1X20), |
101 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_1X20), |
102 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_1X20), |
103 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_1X20), |
104 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUV10_1X30), |
105 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(AYUV8_1X32), |
106 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_2X12), |
107 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_2X12), |
108 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_2X12), |
109 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_2X12), |
110 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_1X24), |
111 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_1X24), |
112 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_1X24), |
113 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_1X24), |
114 | |
115 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR8_1X8), |
116 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG8_1X8), |
117 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG8_1X8), |
118 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB8_1X8), |
119 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_ALAW8_1X8), |
120 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_ALAW8_1X8), |
121 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_ALAW8_1X8), |
122 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_ALAW8_1X8), |
123 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_DPCM8_1X8), |
124 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_DPCM8_1X8), |
125 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_DPCM8_1X8), |
126 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_DPCM8_1X8), |
127 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_BE), |
128 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_LE), |
129 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_BE), |
130 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_LE), |
131 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_1X10), |
132 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_1X10), |
133 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_1X10), |
134 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_1X10), |
135 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR12_1X12), |
136 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG12_1X12), |
137 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG12_1X12), |
138 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB12_1X12), |
139 | |
140 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(JPEG_1X8), |
141 | |
142 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(S5C_UYVY_JPEG_1X8), |
143 | |
144 | V4L2_MBUS_FROM_MEDIA_BUS_FMT(AHSV8888_1X32), |
145 | }; |
146 | #endif /* __KERNEL__ */ |
147 | |
148 | #endif |
149 | |