1
2
3
4
5
6
7
8#ifndef V4L2_MEDIABUS_H
9#define V4L2_MEDIABUS_H
10
11#include <linux/v4l2-mediabus.h>
12#include <linux/bitops.h>
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46#define V4L2_MBUS_MASTER BIT(0)
47#define V4L2_MBUS_SLAVE BIT(1)
48
49
50
51
52
53
54#define V4L2_MBUS_HSYNC_ACTIVE_HIGH BIT(2)
55#define V4L2_MBUS_HSYNC_ACTIVE_LOW BIT(3)
56#define V4L2_MBUS_VSYNC_ACTIVE_HIGH BIT(4)
57#define V4L2_MBUS_VSYNC_ACTIVE_LOW BIT(5)
58#define V4L2_MBUS_PCLK_SAMPLE_RISING BIT(6)
59#define V4L2_MBUS_PCLK_SAMPLE_FALLING BIT(7)
60#define V4L2_MBUS_DATA_ACTIVE_HIGH BIT(8)
61#define V4L2_MBUS_DATA_ACTIVE_LOW BIT(9)
62
63#define V4L2_MBUS_FIELD_EVEN_HIGH BIT(10)
64
65#define V4L2_MBUS_FIELD_EVEN_LOW BIT(11)
66
67#define V4L2_MBUS_VIDEO_SOG_ACTIVE_HIGH BIT(12)
68#define V4L2_MBUS_VIDEO_SOG_ACTIVE_LOW BIT(13)
69#define V4L2_MBUS_DATA_ENABLE_HIGH BIT(14)
70#define V4L2_MBUS_DATA_ENABLE_LOW BIT(15)
71
72
73
74#define V4L2_MBUS_CSI2_1_LANE BIT(0)
75#define V4L2_MBUS_CSI2_2_LANE BIT(1)
76#define V4L2_MBUS_CSI2_3_LANE BIT(2)
77#define V4L2_MBUS_CSI2_4_LANE BIT(3)
78
79#define V4L2_MBUS_CSI2_CHANNEL_0 BIT(4)
80#define V4L2_MBUS_CSI2_CHANNEL_1 BIT(5)
81#define V4L2_MBUS_CSI2_CHANNEL_2 BIT(6)
82#define V4L2_MBUS_CSI2_CHANNEL_3 BIT(7)
83
84#define V4L2_MBUS_CSI2_CONTINUOUS_CLOCK BIT(8)
85#define V4L2_MBUS_CSI2_NONCONTINUOUS_CLOCK BIT(9)
86
87#define V4L2_MBUS_CSI2_LANES (V4L2_MBUS_CSI2_1_LANE | \
88 V4L2_MBUS_CSI2_2_LANE | \
89 V4L2_MBUS_CSI2_3_LANE | \
90 V4L2_MBUS_CSI2_4_LANE)
91#define V4L2_MBUS_CSI2_CHANNELS (V4L2_MBUS_CSI2_CHANNEL_0 | \
92 V4L2_MBUS_CSI2_CHANNEL_1 | \
93 V4L2_MBUS_CSI2_CHANNEL_2 | \
94 V4L2_MBUS_CSI2_CHANNEL_3)
95
96
97
98
99
100
101
102
103
104
105
106
107
108enum v4l2_mbus_type {
109 V4L2_MBUS_UNKNOWN,
110 V4L2_MBUS_PARALLEL,
111 V4L2_MBUS_BT656,
112 V4L2_MBUS_CSI1,
113 V4L2_MBUS_CCP2,
114 V4L2_MBUS_CSI2_DPHY,
115 V4L2_MBUS_CSI2_CPHY,
116 V4L2_MBUS_INVALID,
117};
118
119
120
121
122
123
124struct v4l2_mbus_config {
125 enum v4l2_mbus_type type;
126 unsigned int flags;
127};
128
129
130
131
132
133
134
135
136static inline void
137v4l2_fill_pix_format(struct v4l2_pix_format *pix_fmt,
138 const struct v4l2_mbus_framefmt *mbus_fmt)
139{
140 pix_fmt->width = mbus_fmt->width;
141 pix_fmt->height = mbus_fmt->height;
142 pix_fmt->field = mbus_fmt->field;
143 pix_fmt->colorspace = mbus_fmt->colorspace;
144 pix_fmt->ycbcr_enc = mbus_fmt->ycbcr_enc;
145 pix_fmt->quantization = mbus_fmt->quantization;
146 pix_fmt->xfer_func = mbus_fmt->xfer_func;
147}
148
149
150
151
152
153
154
155
156
157
158static inline void v4l2_fill_mbus_format(struct v4l2_mbus_framefmt *mbus_fmt,
159 const struct v4l2_pix_format *pix_fmt,
160 u32 code)
161{
162 mbus_fmt->width = pix_fmt->width;
163 mbus_fmt->height = pix_fmt->height;
164 mbus_fmt->field = pix_fmt->field;
165 mbus_fmt->colorspace = pix_fmt->colorspace;
166 mbus_fmt->ycbcr_enc = pix_fmt->ycbcr_enc;
167 mbus_fmt->quantization = pix_fmt->quantization;
168 mbus_fmt->xfer_func = pix_fmt->xfer_func;
169 mbus_fmt->code = code;
170}
171
172
173
174
175
176
177
178
179static inline void
180v4l2_fill_pix_format_mplane(struct v4l2_pix_format_mplane *pix_mp_fmt,
181 const struct v4l2_mbus_framefmt *mbus_fmt)
182{
183 pix_mp_fmt->width = mbus_fmt->width;
184 pix_mp_fmt->height = mbus_fmt->height;
185 pix_mp_fmt->field = mbus_fmt->field;
186 pix_mp_fmt->colorspace = mbus_fmt->colorspace;
187 pix_mp_fmt->ycbcr_enc = mbus_fmt->ycbcr_enc;
188 pix_mp_fmt->quantization = mbus_fmt->quantization;
189 pix_mp_fmt->xfer_func = mbus_fmt->xfer_func;
190}
191
192
193
194
195
196
197
198
199static inline void
200v4l2_fill_mbus_format_mplane(struct v4l2_mbus_framefmt *mbus_fmt,
201 const struct v4l2_pix_format_mplane *pix_mp_fmt)
202{
203 mbus_fmt->width = pix_mp_fmt->width;
204 mbus_fmt->height = pix_mp_fmt->height;
205 mbus_fmt->field = pix_mp_fmt->field;
206 mbus_fmt->colorspace = pix_mp_fmt->colorspace;
207 mbus_fmt->ycbcr_enc = pix_mp_fmt->ycbcr_enc;
208 mbus_fmt->quantization = pix_mp_fmt->quantization;
209 mbus_fmt->xfer_func = pix_mp_fmt->xfer_func;
210}
211
212#endif
213