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