File Index
Files and directories
Sign in
FILE

uvc.c

File preview with syntax highlighting.

linux-6.19.14/drivers/media/common/uvc.c C
  1// SPDX-License-Identifier: GPL-2.0-or-later
  2
  3#include <linux/kernel.h>
  4#include <linux/module.h>
  5#include <linux/string.h>
  6#include <linux/types.h>
  7#include <linux/usb/uvc.h>
  8#include <linux/videodev2.h>
  9
 10/* ------------------------------------------------------------------------
 11 * Video formats
 12 */
 13
 14static const struct uvc_format_desc uvc_fmts[] = {
 15	{
 16		.guid		= UVC_GUID_FORMAT_YUY2,
 17		.fcc		= V4L2_PIX_FMT_YUYV,
 18	},
 19	{
 20		.guid		= UVC_GUID_FORMAT_YUY2_ISIGHT,
 21		.fcc		= V4L2_PIX_FMT_YUYV,
 22	},
 23	{
 24		.guid		= UVC_GUID_FORMAT_NV12,
 25		.fcc		= V4L2_PIX_FMT_NV12,
 26	},
 27	{
 28		.guid		= UVC_GUID_FORMAT_MJPEG,
 29		.fcc		= V4L2_PIX_FMT_MJPEG,
 30	},
 31	{
 32		.guid		= UVC_GUID_FORMAT_YV12,
 33		.fcc		= V4L2_PIX_FMT_YVU420,
 34	},
 35	{
 36		.guid		= UVC_GUID_FORMAT_I420,
 37		.fcc		= V4L2_PIX_FMT_YUV420,
 38	},
 39	{
 40		.guid		= UVC_GUID_FORMAT_M420,
 41		.fcc		= V4L2_PIX_FMT_M420,
 42	},
 43	{
 44		.guid		= UVC_GUID_FORMAT_UYVY,
 45		.fcc		= V4L2_PIX_FMT_UYVY,
 46	},
 47	{
 48		.guid		= UVC_GUID_FORMAT_Y800,
 49		.fcc		= V4L2_PIX_FMT_GREY,
 50	},
 51	{
 52		.guid		= UVC_GUID_FORMAT_Y8,
 53		.fcc		= V4L2_PIX_FMT_GREY,
 54	},
 55	{
 56		.guid		= UVC_GUID_FORMAT_D3DFMT_L8,
 57		.fcc		= V4L2_PIX_FMT_GREY,
 58	},
 59	{
 60		.guid		= UVC_GUID_FORMAT_KSMEDIA_L8_IR,
 61		.fcc		= V4L2_PIX_FMT_GREY,
 62	},
 63	{
 64		.guid		= UVC_GUID_FORMAT_Y10,
 65		.fcc		= V4L2_PIX_FMT_Y10,
 66	},
 67	{
 68		.guid		= UVC_GUID_FORMAT_Y12,
 69		.fcc		= V4L2_PIX_FMT_Y12,
 70	},
 71	{
 72		.guid		= UVC_GUID_FORMAT_Y16,
 73		.fcc		= V4L2_PIX_FMT_Y16,
 74	},
 75	{
 76		.guid		= UVC_GUID_FORMAT_BY8,
 77		.fcc		= V4L2_PIX_FMT_SBGGR8,
 78	},
 79	{
 80		.guid		= UVC_GUID_FORMAT_BA81,
 81		.fcc		= V4L2_PIX_FMT_SBGGR8,
 82	},
 83	{
 84		.guid		= UVC_GUID_FORMAT_GBRG,
 85		.fcc		= V4L2_PIX_FMT_SGBRG8,
 86	},
 87	{
 88		.guid		= UVC_GUID_FORMAT_GRBG,
 89		.fcc		= V4L2_PIX_FMT_SGRBG8,
 90	},
 91	{
 92		.guid		= UVC_GUID_FORMAT_RGGB,
 93		.fcc		= V4L2_PIX_FMT_SRGGB8,
 94	},
 95	{
 96		.guid		= UVC_GUID_FORMAT_RGBP,
 97		.fcc		= V4L2_PIX_FMT_RGB565,
 98	},
 99	{
100		.guid		= UVC_GUID_FORMAT_D3DFMT_R5G6B5,
101		.fcc		= V4L2_PIX_FMT_RGB565,
102	},
103	{
104		.guid		= UVC_GUID_FORMAT_BGR3,
105		.fcc		= V4L2_PIX_FMT_BGR24,
106	},
107	{
108		.guid		= UVC_GUID_FORMAT_BGR4,
109		.fcc		= V4L2_PIX_FMT_XBGR32,
110	},
111	{
112		.guid		= UVC_GUID_FORMAT_H264,
113		.fcc		= V4L2_PIX_FMT_H264,
114	},
115	{
116		.guid		= UVC_GUID_FORMAT_H265,
117		.fcc		= V4L2_PIX_FMT_HEVC,
118	},
119	{
120		.guid		= UVC_GUID_FORMAT_Y8I,
121		.fcc		= V4L2_PIX_FMT_Y8I,
122	},
123	{
124		.guid		= UVC_GUID_FORMAT_Y12I,
125		.fcc		= V4L2_PIX_FMT_Y12I,
126	},
127	{
128		.guid		= UVC_GUID_FORMAT_Y16I,
129		.fcc		= V4L2_PIX_FMT_Y16I,
130	},
131	{
132		.guid		= UVC_GUID_FORMAT_Z16,
133		.fcc		= V4L2_PIX_FMT_Z16,
134	},
135	{
136		.guid		= UVC_GUID_FORMAT_RW10,
137		.fcc		= V4L2_PIX_FMT_SRGGB10P,
138	},
139	{
140		.guid		= UVC_GUID_FORMAT_BG16,
141		.fcc		= V4L2_PIX_FMT_SBGGR16,
142	},
143	{
144		.guid		= UVC_GUID_FORMAT_GB16,
145		.fcc		= V4L2_PIX_FMT_SGBRG16,
146	},
147	{
148		.guid		= UVC_GUID_FORMAT_RG16,
149		.fcc		= V4L2_PIX_FMT_SRGGB16,
150	},
151	{
152		.guid		= UVC_GUID_FORMAT_GR16,
153		.fcc		= V4L2_PIX_FMT_SGRBG16,
154	},
155	{
156		.guid		= UVC_GUID_FORMAT_INVZ,
157		.fcc		= V4L2_PIX_FMT_Z16,
158	},
159	{
160		.guid		= UVC_GUID_FORMAT_INVI,
161		.fcc		= V4L2_PIX_FMT_Y10,
162	},
163	{
164		.guid		= UVC_GUID_FORMAT_INZI,
165		.fcc		= V4L2_PIX_FMT_INZI,
166	},
167	{
168		.guid		= UVC_GUID_FORMAT_CNF4,
169		.fcc		= V4L2_PIX_FMT_CNF4,
170	},
171	{
172		.guid		= UVC_GUID_FORMAT_HEVC,
173		.fcc		= V4L2_PIX_FMT_HEVC,
174	},
175};
176
177const struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16])
178{
179	unsigned int len = ARRAY_SIZE(uvc_fmts);
180	unsigned int i;
181
182	for (i = 0; i < len; ++i) {
183		if (memcmp(guid, uvc_fmts[i].guid, 16) == 0)
184			return &uvc_fmts[i];
185	}
186
187	return NULL;
188}
189EXPORT_SYMBOL_GPL(uvc_format_by_guid);
190
191MODULE_DESCRIPTION("USB Video Class common code");
192MODULE_LICENSE("GPL");
~/ Read-only file preview.