* [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use
@ 2023-01-26 23:14 Michael Grzeschik
2023-01-26 23:14 ` [PATCH v3 1/5] media: uvcvideo: Add GUID for BGRA/X 8:8:8:8 Michael Grzeschik
` (5 more replies)
0 siblings, 6 replies; 8+ messages in thread
From: Michael Grzeschik @ 2023-01-26 23:14 UTC (permalink / raw)
To: laurent.pinchart
Cc: gregkh, mchehab, hverkuil-cisco, linux-usb, linux-media, kernel
This series is improving the use of the uvc_format_desc
in v4l2-uvc.h and also reuses the declarative strings from
v4l_fill_fmtdesc.
This series applies on
git://git.kernel.org/pub/scm/linux/kernel/git/pinchartl/linux.git media-uvc-next-20230115
which has been merged in the Linux media tree for v6.3 (as shown by
https://git.linuxtv.org/media_stage.git/commit/?id=82adfe34694c98f1115a7b75cff6af9c4a35dba9).
v1 -> v3: dropped 4/5 ("media: v4l2: move v4l_fill_fmtdesc to common v4l2_fill_fmtdesc function")
Marek Vasut (1):
media: uvcvideo: Add GUID for BGRA/X 8:8:8:8
Michael Grzeschik (4):
usb: uvc: move media/v4l2-uvc.h to usb/uvc.h
usb: uvc: move uvc_fmts and uvc_format_by_guid to own compile unit
usb: uvc: make uvc_format_desc table const
usb: uvc: use v4l2_fill_fmtdesc instead of open coded format name
drivers/media/common/Kconfig | 3 +
drivers/media/common/Makefile | 1 +
drivers/media/common/uvc.c | 183 +++++++++++++++
drivers/media/usb/uvc/Kconfig | 1 +
drivers/media/usb/uvc/uvc_ctrl.c | 2 +-
drivers/media/usb/uvc/uvc_driver.c | 4 +-
drivers/usb/gadget/Kconfig | 1 +
drivers/usb/gadget/function/uvc_v4l2.c | 16 +-
include/{media/v4l2-uvc.h => linux/usb/uvc.h} | 209 +-----------------
9 files changed, 201 insertions(+), 219 deletions(-)
create mode 100644 drivers/media/common/uvc.c
rename include/{media/v4l2-uvc.h => linux/usb/uvc.h} (59%)
--
2.30.2
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH v3 1/5] media: uvcvideo: Add GUID for BGRA/X 8:8:8:8 2023-01-26 23:14 [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use Michael Grzeschik @ 2023-01-26 23:14 ` Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 2/5] usb: uvc: move media/v4l2-uvc.h to usb/uvc.h Michael Grzeschik ` (4 subsequent siblings) 5 siblings, 0 replies; 8+ messages in thread From: Michael Grzeschik @ 2023-01-26 23:14 UTC (permalink / raw) To: laurent.pinchart Cc: gregkh, mchehab, hverkuil-cisco, linux-usb, linux-media, kernel, Marek Vasut, Ricardo Ribalda From: Marek Vasut <marex@denx.de> The Cypress EZUSB FX3 UVC example can be configured to report pixel format "e436eb7e-524f-11ce-9f53-0020af0ba770". This is its GUID for BGRA/X 8:8:8:8. The UVC 1.5 spec [1] only defines GUIDs for YUY2, NV12, M420 and I420. This seems to be an extension documented in the Microsoft Windows Media Format SDK[2]. This Media Format SDK defines this GUID as corresponding to `MEDIASUBTYPE_RGB32`, which is confirmed by [4] as `MEDIASUBTYPE_ARGB32` has different GUID. Note that in my case, the FX3 UVC can output either channel order, BGR or RGB or any other mix for that matter. Since Linux commit 1b8dc32286a1a ("[media] uvcvideo: Add GUID for BGR 8:8:8") defined a GUID for `MEDIASUBTYPE_RGB24` channel order as BGR, keep this change consistent and define `MEDIASUBTYPE_RGB32` as BGR as well. Document [3] also indicates the channel order is BGR. [1] https://www.usb.org/document-library/video-class-v15-document-set [2] https://learn.microsoft.com/en-us/windows/win32/wmformat/media-type-identifiers [3] https://learn.microsoft.com/en-us/windows/win32/directshow/uncompressed-rgb-video-subtypes [4] https://gix.github.io/media-types/ Signed-off-by: Marek Vasut <marex@denx.de> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Ricardo Ribalda <ricardo@ribalda.com> Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> --- v1 -> v3: - added to the series include/media/v4l2-uvc.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/media/v4l2-uvc.h b/include/media/v4l2-uvc.h index f83e31661333bb..b010a36fc1d951 100644 --- a/include/media/v4l2-uvc.h +++ b/include/media/v4l2-uvc.h @@ -99,6 +99,9 @@ #define UVC_GUID_FORMAT_BGR3 \ { 0x7d, 0xeb, 0x36, 0xe4, 0x4f, 0x52, 0xce, 0x11, \ 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70} +#define UVC_GUID_FORMAT_BGR4 \ + { 0x7e, 0xeb, 0x36, 0xe4, 0x4f, 0x52, 0xce, 0x11, \ + 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70} #define UVC_GUID_FORMAT_M420 \ { 'M', '4', '2', '0', 0x00, 0x00, 0x10, 0x00, \ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} @@ -266,6 +269,11 @@ static struct uvc_format_desc uvc_fmts[] = { .guid = UVC_GUID_FORMAT_BGR3, .fcc = V4L2_PIX_FMT_BGR24, }, + { + .name = "BGRA/X 8:8:8:8 (BGR4)", + .guid = UVC_GUID_FORMAT_BGR4, + .fcc = V4L2_PIX_FMT_XBGR32, + }, { .name = "H.264", .guid = UVC_GUID_FORMAT_H264, -- 2.30.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 2/5] usb: uvc: move media/v4l2-uvc.h to usb/uvc.h 2023-01-26 23:14 [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 1/5] media: uvcvideo: Add GUID for BGRA/X 8:8:8:8 Michael Grzeschik @ 2023-01-26 23:14 ` Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 3/5] usb: uvc: move uvc_fmts and uvc_format_by_guid to own compile unit Michael Grzeschik ` (3 subsequent siblings) 5 siblings, 0 replies; 8+ messages in thread From: Michael Grzeschik @ 2023-01-26 23:14 UTC (permalink / raw) To: laurent.pinchart Cc: gregkh, mchehab, hverkuil-cisco, linux-usb, linux-media, kernel, Daniel Scally Since the headerfile is only used in usb devices it is better placed with the other usb files. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com> Tested-by: Daniel Scally <dan.scally@ideasonboard.com> Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> --- v1 -> v2: - added reviewed and tested tags v2 -> v3: - no changes drivers/media/usb/uvc/uvc_ctrl.c | 2 +- drivers/media/usb/uvc/uvc_driver.c | 2 +- drivers/usb/gadget/function/uvc_v4l2.c | 2 +- include/{media/v4l2-uvc.h => linux/usb/uvc.h} | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename include/{media/v4l2-uvc.h => linux/usb/uvc.h} (100%) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index c3aeba3fe31b12..5e9d3da862dd86 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -14,13 +14,13 @@ #include <linux/slab.h> #include <linux/uaccess.h> #include <linux/usb.h> +#include <linux/usb/uvc.h> #include <linux/videodev2.h> #include <linux/vmalloc.h> #include <linux/wait.h> #include <linux/workqueue.h> #include <linux/atomic.h> #include <media/v4l2-ctrls.h> -#include <media/v4l2-uvc.h> #include "uvcvideo.h" diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index 11f3d716b5bf6a..edf8c4a201a8ab 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -14,6 +14,7 @@ #include <linux/module.h> #include <linux/slab.h> #include <linux/usb.h> +#include <linux/usb/uvc.h> #include <linux/videodev2.h> #include <linux/vmalloc.h> #include <linux/wait.h> @@ -21,7 +22,6 @@ #include <media/v4l2-common.h> #include <media/v4l2-ioctl.h> -#include <media/v4l2-uvc.h> #include "uvcvideo.h" diff --git a/drivers/usb/gadget/function/uvc_v4l2.c b/drivers/usb/gadget/function/uvc_v4l2.c index a189b08bba800d..7435df0cf2a847 100644 --- a/drivers/usb/gadget/function/uvc_v4l2.c +++ b/drivers/usb/gadget/function/uvc_v4l2.c @@ -11,6 +11,7 @@ #include <linux/kernel.h> #include <linux/list.h> #include <linux/usb/g_uvc.h> +#include <linux/usb/uvc.h> #include <linux/videodev2.h> #include <linux/vmalloc.h> #include <linux/wait.h> @@ -18,7 +19,6 @@ #include <media/v4l2-dev.h> #include <media/v4l2-event.h> #include <media/v4l2-ioctl.h> -#include <media/v4l2-uvc.h> #include "f_uvc.h" #include "uvc.h" diff --git a/include/media/v4l2-uvc.h b/include/linux/usb/uvc.h similarity index 100% rename from include/media/v4l2-uvc.h rename to include/linux/usb/uvc.h -- 2.30.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 3/5] usb: uvc: move uvc_fmts and uvc_format_by_guid to own compile unit 2023-01-26 23:14 [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 1/5] media: uvcvideo: Add GUID for BGRA/X 8:8:8:8 Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 2/5] usb: uvc: move media/v4l2-uvc.h to usb/uvc.h Michael Grzeschik @ 2023-01-26 23:14 ` Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 4/5] usb: uvc: make uvc_format_desc table const Michael Grzeschik ` (2 subsequent siblings) 5 siblings, 0 replies; 8+ messages in thread From: Michael Grzeschik @ 2023-01-26 23:14 UTC (permalink / raw) To: laurent.pinchart Cc: gregkh, mchehab, hverkuil-cisco, linux-usb, linux-media, kernel, Daniel Scally The media driver USB_VIDEO_CLASS and USB_F_UVC are using the same function uvc_format_by_guid. Since the function is inline, every user will get a copy of the used uvc_fmts array and the function. This patch moves the code to an own compile unit and add this dependency as UVC_COMMON to both users. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com> Tested-by: Daniel Scally <dan.scally@ideasonboard.com> Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> --- v1 -> v2: - added reviewed and tested tags - added string.h and kernel.h v2 -> v3: - no changes drivers/media/common/Kconfig | 3 + drivers/media/common/Makefile | 1 + drivers/media/common/uvc.c | 221 ++++++++++++++++++++++++++++++++++ drivers/media/usb/uvc/Kconfig | 1 + drivers/usb/gadget/Kconfig | 1 + include/linux/usb/uvc.h | 210 +------------------------------- 6 files changed, 228 insertions(+), 209 deletions(-) create mode 100644 drivers/media/common/uvc.c diff --git a/drivers/media/common/Kconfig b/drivers/media/common/Kconfig index 852b7d92fbdd93..b1bc58da27fcdd 100644 --- a/drivers/media/common/Kconfig +++ b/drivers/media/common/Kconfig @@ -14,6 +14,9 @@ config TTPCI_EEPROM tristate depends on I2C +config UVC_COMMON + tristate + config VIDEO_CX2341X tristate diff --git a/drivers/media/common/Makefile b/drivers/media/common/Makefile index d78a0df154783a..3f17d696feb24c 100644 --- a/drivers/media/common/Makefile +++ b/drivers/media/common/Makefile @@ -5,5 +5,6 @@ obj-y += b2c2/ siano/ v4l2-tpg/ videobuf2/ # (e. g. LC_ALL=C sort Makefile) obj-$(CONFIG_CYPRESS_FIRMWARE) += cypress_firmware.o obj-$(CONFIG_TTPCI_EEPROM) += ttpci-eeprom.o +obj-$(CONFIG_UVC_COMMON) += uvc.o obj-$(CONFIG_VIDEO_CX2341X) += cx2341x.o obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o diff --git a/drivers/media/common/uvc.c b/drivers/media/common/uvc.c new file mode 100644 index 00000000000000..bb96d9e26d8019 --- /dev/null +++ b/drivers/media/common/uvc.c @@ -0,0 +1,221 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/string.h> +#include <linux/types.h> +#include <linux/usb/uvc.h> +#include <linux/videodev2.h> + +/* ------------------------------------------------------------------------ + * Video formats + */ + +static struct uvc_format_desc uvc_fmts[] = { + { + .name = "YUV 4:2:2 (YUYV)", + .guid = UVC_GUID_FORMAT_YUY2, + .fcc = V4L2_PIX_FMT_YUYV, + }, + { + .name = "YUV 4:2:2 (YUYV)", + .guid = UVC_GUID_FORMAT_YUY2_ISIGHT, + .fcc = V4L2_PIX_FMT_YUYV, + }, + { + .name = "YUV 4:2:0 (NV12)", + .guid = UVC_GUID_FORMAT_NV12, + .fcc = V4L2_PIX_FMT_NV12, + }, + { + .name = "MJPEG", + .guid = UVC_GUID_FORMAT_MJPEG, + .fcc = V4L2_PIX_FMT_MJPEG, + }, + { + .name = "YVU 4:2:0 (YV12)", + .guid = UVC_GUID_FORMAT_YV12, + .fcc = V4L2_PIX_FMT_YVU420, + }, + { + .name = "YUV 4:2:0 (I420)", + .guid = UVC_GUID_FORMAT_I420, + .fcc = V4L2_PIX_FMT_YUV420, + }, + { + .name = "YUV 4:2:0 (M420)", + .guid = UVC_GUID_FORMAT_M420, + .fcc = V4L2_PIX_FMT_M420, + }, + { + .name = "YUV 4:2:2 (UYVY)", + .guid = UVC_GUID_FORMAT_UYVY, + .fcc = V4L2_PIX_FMT_UYVY, + }, + { + .name = "Greyscale 8-bit (Y800)", + .guid = UVC_GUID_FORMAT_Y800, + .fcc = V4L2_PIX_FMT_GREY, + }, + { + .name = "Greyscale 8-bit (Y8 )", + .guid = UVC_GUID_FORMAT_Y8, + .fcc = V4L2_PIX_FMT_GREY, + }, + { + .name = "Greyscale 8-bit (D3DFMT_L8)", + .guid = UVC_GUID_FORMAT_D3DFMT_L8, + .fcc = V4L2_PIX_FMT_GREY, + }, + { + .name = "IR 8-bit (L8_IR)", + .guid = UVC_GUID_FORMAT_KSMEDIA_L8_IR, + .fcc = V4L2_PIX_FMT_GREY, + }, + { + .name = "Greyscale 10-bit (Y10 )", + .guid = UVC_GUID_FORMAT_Y10, + .fcc = V4L2_PIX_FMT_Y10, + }, + { + .name = "Greyscale 12-bit (Y12 )", + .guid = UVC_GUID_FORMAT_Y12, + .fcc = V4L2_PIX_FMT_Y12, + }, + { + .name = "Greyscale 16-bit (Y16 )", + .guid = UVC_GUID_FORMAT_Y16, + .fcc = V4L2_PIX_FMT_Y16, + }, + { + .name = "BGGR Bayer (BY8 )", + .guid = UVC_GUID_FORMAT_BY8, + .fcc = V4L2_PIX_FMT_SBGGR8, + }, + { + .name = "BGGR Bayer (BA81)", + .guid = UVC_GUID_FORMAT_BA81, + .fcc = V4L2_PIX_FMT_SBGGR8, + }, + { + .name = "GBRG Bayer (GBRG)", + .guid = UVC_GUID_FORMAT_GBRG, + .fcc = V4L2_PIX_FMT_SGBRG8, + }, + { + .name = "GRBG Bayer (GRBG)", + .guid = UVC_GUID_FORMAT_GRBG, + .fcc = V4L2_PIX_FMT_SGRBG8, + }, + { + .name = "RGGB Bayer (RGGB)", + .guid = UVC_GUID_FORMAT_RGGB, + .fcc = V4L2_PIX_FMT_SRGGB8, + }, + { + .name = "RGB565", + .guid = UVC_GUID_FORMAT_RGBP, + .fcc = V4L2_PIX_FMT_RGB565, + }, + { + .name = "BGR 8:8:8 (BGR3)", + .guid = UVC_GUID_FORMAT_BGR3, + .fcc = V4L2_PIX_FMT_BGR24, + }, + { + .name = "BGRA/X 8:8:8:8 (BGR4)", + .guid = UVC_GUID_FORMAT_BGR4, + .fcc = V4L2_PIX_FMT_XBGR32, + }, + { + .name = "H.264", + .guid = UVC_GUID_FORMAT_H264, + .fcc = V4L2_PIX_FMT_H264, + }, + { + .name = "H.265", + .guid = UVC_GUID_FORMAT_H265, + .fcc = V4L2_PIX_FMT_HEVC, + }, + { + .name = "Greyscale 8 L/R (Y8I)", + .guid = UVC_GUID_FORMAT_Y8I, + .fcc = V4L2_PIX_FMT_Y8I, + }, + { + .name = "Greyscale 12 L/R (Y12I)", + .guid = UVC_GUID_FORMAT_Y12I, + .fcc = V4L2_PIX_FMT_Y12I, + }, + { + .name = "Depth data 16-bit (Z16)", + .guid = UVC_GUID_FORMAT_Z16, + .fcc = V4L2_PIX_FMT_Z16, + }, + { + .name = "Bayer 10-bit (SRGGB10P)", + .guid = UVC_GUID_FORMAT_RW10, + .fcc = V4L2_PIX_FMT_SRGGB10P, + }, + { + .name = "Bayer 16-bit (SBGGR16)", + .guid = UVC_GUID_FORMAT_BG16, + .fcc = V4L2_PIX_FMT_SBGGR16, + }, + { + .name = "Bayer 16-bit (SGBRG16)", + .guid = UVC_GUID_FORMAT_GB16, + .fcc = V4L2_PIX_FMT_SGBRG16, + }, + { + .name = "Bayer 16-bit (SRGGB16)", + .guid = UVC_GUID_FORMAT_RG16, + .fcc = V4L2_PIX_FMT_SRGGB16, + }, + { + .name = "Bayer 16-bit (SGRBG16)", + .guid = UVC_GUID_FORMAT_GR16, + .fcc = V4L2_PIX_FMT_SGRBG16, + }, + { + .name = "Depth data 16-bit (Z16)", + .guid = UVC_GUID_FORMAT_INVZ, + .fcc = V4L2_PIX_FMT_Z16, + }, + { + .name = "Greyscale 10-bit (Y10 )", + .guid = UVC_GUID_FORMAT_INVI, + .fcc = V4L2_PIX_FMT_Y10, + }, + { + .name = "IR:Depth 26-bit (INZI)", + .guid = UVC_GUID_FORMAT_INZI, + .fcc = V4L2_PIX_FMT_INZI, + }, + { + .name = "4-bit Depth Confidence (Packed)", + .guid = UVC_GUID_FORMAT_CNF4, + .fcc = V4L2_PIX_FMT_CNF4, + }, + { + .name = "HEVC", + .guid = UVC_GUID_FORMAT_HEVC, + .fcc = V4L2_PIX_FMT_HEVC, + }, +}; + +struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16]) +{ + unsigned int len = ARRAY_SIZE(uvc_fmts); + unsigned int i; + + for (i = 0; i < len; ++i) { + if (memcmp(guid, uvc_fmts[i].guid, 16) == 0) + return &uvc_fmts[i]; + } + + return NULL; +} +EXPORT_SYMBOL_GPL(uvc_format_by_guid); + +MODULE_LICENSE("GPL"); diff --git a/drivers/media/usb/uvc/Kconfig b/drivers/media/usb/uvc/Kconfig index ca51ee8e45f39c..579532272fd6d7 100644 --- a/drivers/media/usb/uvc/Kconfig +++ b/drivers/media/usb/uvc/Kconfig @@ -3,6 +3,7 @@ config USB_VIDEO_CLASS tristate "USB Video Class (UVC)" depends on VIDEO_DEV select VIDEOBUF2_VMALLOC + select UVC_COMMON help Support for the USB Video Class (UVC). Currently only video input devices, such as webcams, are supported. diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig index 4fa2ddf322b48d..336db8f92afa6a 100644 --- a/drivers/usb/gadget/Kconfig +++ b/drivers/usb/gadget/Kconfig @@ -203,6 +203,7 @@ config USB_F_UAC2 config USB_F_UVC tristate + select UVC_COMMON config USB_F_MIDI tristate diff --git a/include/linux/usb/uvc.h b/include/linux/usb/uvc.h index b010a36fc1d951..8cebb46602a118 100644 --- a/include/linux/usb/uvc.h +++ b/include/linux/usb/uvc.h @@ -148,220 +148,12 @@ { 'H', 'E', 'V', 'C', 0x00, 0x00, 0x10, 0x00, \ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -/* ------------------------------------------------------------------------ - * Video formats - */ - struct uvc_format_desc { char *name; u8 guid[16]; u32 fcc; }; -static struct uvc_format_desc uvc_fmts[] = { - { - .name = "YUV 4:2:2 (YUYV)", - .guid = UVC_GUID_FORMAT_YUY2, - .fcc = V4L2_PIX_FMT_YUYV, - }, - { - .name = "YUV 4:2:2 (YUYV)", - .guid = UVC_GUID_FORMAT_YUY2_ISIGHT, - .fcc = V4L2_PIX_FMT_YUYV, - }, - { - .name = "YUV 4:2:0 (NV12)", - .guid = UVC_GUID_FORMAT_NV12, - .fcc = V4L2_PIX_FMT_NV12, - }, - { - .name = "MJPEG", - .guid = UVC_GUID_FORMAT_MJPEG, - .fcc = V4L2_PIX_FMT_MJPEG, - }, - { - .name = "YVU 4:2:0 (YV12)", - .guid = UVC_GUID_FORMAT_YV12, - .fcc = V4L2_PIX_FMT_YVU420, - }, - { - .name = "YUV 4:2:0 (I420)", - .guid = UVC_GUID_FORMAT_I420, - .fcc = V4L2_PIX_FMT_YUV420, - }, - { - .name = "YUV 4:2:0 (M420)", - .guid = UVC_GUID_FORMAT_M420, - .fcc = V4L2_PIX_FMT_M420, - }, - { - .name = "YUV 4:2:2 (UYVY)", - .guid = UVC_GUID_FORMAT_UYVY, - .fcc = V4L2_PIX_FMT_UYVY, - }, - { - .name = "Greyscale 8-bit (Y800)", - .guid = UVC_GUID_FORMAT_Y800, - .fcc = V4L2_PIX_FMT_GREY, - }, - { - .name = "Greyscale 8-bit (Y8 )", - .guid = UVC_GUID_FORMAT_Y8, - .fcc = V4L2_PIX_FMT_GREY, - }, - { - .name = "Greyscale 8-bit (D3DFMT_L8)", - .guid = UVC_GUID_FORMAT_D3DFMT_L8, - .fcc = V4L2_PIX_FMT_GREY, - }, - { - .name = "IR 8-bit (L8_IR)", - .guid = UVC_GUID_FORMAT_KSMEDIA_L8_IR, - .fcc = V4L2_PIX_FMT_GREY, - }, - { - .name = "Greyscale 10-bit (Y10 )", - .guid = UVC_GUID_FORMAT_Y10, - .fcc = V4L2_PIX_FMT_Y10, - }, - { - .name = "Greyscale 12-bit (Y12 )", - .guid = UVC_GUID_FORMAT_Y12, - .fcc = V4L2_PIX_FMT_Y12, - }, - { - .name = "Greyscale 16-bit (Y16 )", - .guid = UVC_GUID_FORMAT_Y16, - .fcc = V4L2_PIX_FMT_Y16, - }, - { - .name = "BGGR Bayer (BY8 )", - .guid = UVC_GUID_FORMAT_BY8, - .fcc = V4L2_PIX_FMT_SBGGR8, - }, - { - .name = "BGGR Bayer (BA81)", - .guid = UVC_GUID_FORMAT_BA81, - .fcc = V4L2_PIX_FMT_SBGGR8, - }, - { - .name = "GBRG Bayer (GBRG)", - .guid = UVC_GUID_FORMAT_GBRG, - .fcc = V4L2_PIX_FMT_SGBRG8, - }, - { - .name = "GRBG Bayer (GRBG)", - .guid = UVC_GUID_FORMAT_GRBG, - .fcc = V4L2_PIX_FMT_SGRBG8, - }, - { - .name = "RGGB Bayer (RGGB)", - .guid = UVC_GUID_FORMAT_RGGB, - .fcc = V4L2_PIX_FMT_SRGGB8, - }, - { - .name = "RGB565", - .guid = UVC_GUID_FORMAT_RGBP, - .fcc = V4L2_PIX_FMT_RGB565, - }, - { - .name = "BGR 8:8:8 (BGR3)", - .guid = UVC_GUID_FORMAT_BGR3, - .fcc = V4L2_PIX_FMT_BGR24, - }, - { - .name = "BGRA/X 8:8:8:8 (BGR4)", - .guid = UVC_GUID_FORMAT_BGR4, - .fcc = V4L2_PIX_FMT_XBGR32, - }, - { - .name = "H.264", - .guid = UVC_GUID_FORMAT_H264, - .fcc = V4L2_PIX_FMT_H264, - }, - { - .name = "H.265", - .guid = UVC_GUID_FORMAT_H265, - .fcc = V4L2_PIX_FMT_HEVC, - }, - { - .name = "Greyscale 8 L/R (Y8I)", - .guid = UVC_GUID_FORMAT_Y8I, - .fcc = V4L2_PIX_FMT_Y8I, - }, - { - .name = "Greyscale 12 L/R (Y12I)", - .guid = UVC_GUID_FORMAT_Y12I, - .fcc = V4L2_PIX_FMT_Y12I, - }, - { - .name = "Depth data 16-bit (Z16)", - .guid = UVC_GUID_FORMAT_Z16, - .fcc = V4L2_PIX_FMT_Z16, - }, - { - .name = "Bayer 10-bit (SRGGB10P)", - .guid = UVC_GUID_FORMAT_RW10, - .fcc = V4L2_PIX_FMT_SRGGB10P, - }, - { - .name = "Bayer 16-bit (SBGGR16)", - .guid = UVC_GUID_FORMAT_BG16, - .fcc = V4L2_PIX_FMT_SBGGR16, - }, - { - .name = "Bayer 16-bit (SGBRG16)", - .guid = UVC_GUID_FORMAT_GB16, - .fcc = V4L2_PIX_FMT_SGBRG16, - }, - { - .name = "Bayer 16-bit (SRGGB16)", - .guid = UVC_GUID_FORMAT_RG16, - .fcc = V4L2_PIX_FMT_SRGGB16, - }, - { - .name = "Bayer 16-bit (SGRBG16)", - .guid = UVC_GUID_FORMAT_GR16, - .fcc = V4L2_PIX_FMT_SGRBG16, - }, - { - .name = "Depth data 16-bit (Z16)", - .guid = UVC_GUID_FORMAT_INVZ, - .fcc = V4L2_PIX_FMT_Z16, - }, - { - .name = "Greyscale 10-bit (Y10 )", - .guid = UVC_GUID_FORMAT_INVI, - .fcc = V4L2_PIX_FMT_Y10, - }, - { - .name = "IR:Depth 26-bit (INZI)", - .guid = UVC_GUID_FORMAT_INZI, - .fcc = V4L2_PIX_FMT_INZI, - }, - { - .name = "4-bit Depth Confidence (Packed)", - .guid = UVC_GUID_FORMAT_CNF4, - .fcc = V4L2_PIX_FMT_CNF4, - }, - { - .name = "HEVC", - .guid = UVC_GUID_FORMAT_HEVC, - .fcc = V4L2_PIX_FMT_HEVC, - }, -}; - -static inline struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16]) -{ - unsigned int len = ARRAY_SIZE(uvc_fmts); - unsigned int i; - - for (i = 0; i < len; ++i) { - if (memcmp(guid, uvc_fmts[i].guid, 16) == 0) - return &uvc_fmts[i]; - } - - return NULL; -} +struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16]); #endif /* __LINUX_V4L2_UVC_H */ -- 2.30.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 4/5] usb: uvc: make uvc_format_desc table const 2023-01-26 23:14 [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use Michael Grzeschik ` (2 preceding siblings ...) 2023-01-26 23:14 ` [PATCH v3 3/5] usb: uvc: move uvc_fmts and uvc_format_by_guid to own compile unit Michael Grzeschik @ 2023-01-26 23:14 ` Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 5/5] usb: uvc: use v4l2_fill_fmtdesc instead of open coded format name Michael Grzeschik 2023-01-31 8:41 ` [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use Greg KH 5 siblings, 0 replies; 8+ messages in thread From: Michael Grzeschik @ 2023-01-26 23:14 UTC (permalink / raw) To: laurent.pinchart Cc: gregkh, mchehab, hverkuil-cisco, linux-usb, linux-media, kernel, Daniel Scally Since the uvc_fmts array can not be modified we declare it const and change every user of the uvc_format_by_guid function aswell. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com> Tested-by: Daniel Scally <dan.scally@ideasonboard.com> Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> --- v1 -> v2: - added reviewed and tested tags v2 -> v3: - no changes drivers/media/common/uvc.c | 4 ++-- drivers/media/usb/uvc/uvc_driver.c | 2 +- drivers/usb/gadget/function/uvc_v4l2.c | 8 ++++---- include/linux/usb/uvc.h | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/media/common/uvc.c b/drivers/media/common/uvc.c index bb96d9e26d8019..2b4df3e8f48aa6 100644 --- a/drivers/media/common/uvc.c +++ b/drivers/media/common/uvc.c @@ -11,7 +11,7 @@ * Video formats */ -static struct uvc_format_desc uvc_fmts[] = { +static const struct uvc_format_desc uvc_fmts[] = { { .name = "YUV 4:2:2 (YUYV)", .guid = UVC_GUID_FORMAT_YUY2, @@ -204,7 +204,7 @@ static struct uvc_format_desc uvc_fmts[] = { }, }; -struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16]) +const struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16]) { unsigned int len = ARRAY_SIZE(uvc_fmts); unsigned int i; diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index edf8c4a201a8ab..7aefa76a42b316 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -225,7 +225,7 @@ static int uvc_parse_format(struct uvc_device *dev, { struct usb_interface *intf = streaming->intf; struct usb_host_interface *alts = intf->cur_altsetting; - struct uvc_format_desc *fmtdesc; + const struct uvc_format_desc *fmtdesc; struct uvc_frame *frame; const unsigned char *start = buffer; unsigned int width_multiplier = 1; diff --git a/drivers/usb/gadget/function/uvc_v4l2.c b/drivers/usb/gadget/function/uvc_v4l2.c index 7435df0cf2a847..21e573e628f4e7 100644 --- a/drivers/usb/gadget/function/uvc_v4l2.c +++ b/drivers/usb/gadget/function/uvc_v4l2.c @@ -27,10 +27,10 @@ #include "uvc_v4l2.h" #include "uvc_configfs.h" -static struct uvc_format_desc *to_uvc_format(struct uvcg_format *uformat) +static const struct uvc_format_desc *to_uvc_format(struct uvcg_format *uformat) { char guid[16] = UVC_GUID_FORMAT_MJPEG; - struct uvc_format_desc *format; + const struct uvc_format_desc *format; struct uvcg_uncompressed *unc; if (uformat->type == UVCG_UNCOMPRESSED) { @@ -119,7 +119,7 @@ static struct uvcg_format *find_format_by_pix(struct uvc_device *uvc, struct uvcg_format *uformat = NULL; list_for_each_entry(format, &uvc->header->formats, entry) { - struct uvc_format_desc *fmtdesc = to_uvc_format(format->fmt); + const struct uvc_format_desc *fmtdesc = to_uvc_format(format->fmt); if (fmtdesc->fcc == pixelformat) { uformat = format->fmt; @@ -364,7 +364,7 @@ uvc_v4l2_enum_format(struct file *file, void *fh, struct v4l2_fmtdesc *f) { struct video_device *vdev = video_devdata(file); struct uvc_device *uvc = video_get_drvdata(vdev); - struct uvc_format_desc *fmtdesc; + const struct uvc_format_desc *fmtdesc; struct uvcg_format *uformat; if (f->index >= uvc->header->num_fmt) diff --git a/include/linux/usb/uvc.h b/include/linux/usb/uvc.h index 8cebb46602a118..b0210c5c5406b3 100644 --- a/include/linux/usb/uvc.h +++ b/include/linux/usb/uvc.h @@ -154,6 +154,6 @@ struct uvc_format_desc { u32 fcc; }; -struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16]); +const struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16]); #endif /* __LINUX_V4L2_UVC_H */ -- 2.30.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 5/5] usb: uvc: use v4l2_fill_fmtdesc instead of open coded format name 2023-01-26 23:14 [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use Michael Grzeschik ` (3 preceding siblings ...) 2023-01-26 23:14 ` [PATCH v3 4/5] usb: uvc: make uvc_format_desc table const Michael Grzeschik @ 2023-01-26 23:14 ` Michael Grzeschik 2023-01-26 23:26 ` Laurent Pinchart 2023-01-31 8:41 ` [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use Greg KH 5 siblings, 1 reply; 8+ messages in thread From: Michael Grzeschik @ 2023-01-26 23:14 UTC (permalink / raw) To: laurent.pinchart Cc: gregkh, mchehab, hverkuil-cisco, linux-usb, linux-media, kernel, Daniel Scally Since v4l2_fill_fmtdesc will be called in the ioctl v4l_enum_fmt anyway. We can set the format description and compressed flag from v4l_fill_fmtdesc and can remove the extra name field in uvc_format_desc. Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com> Tested-by: Daniel Scally <dan.scally@ideasonboard.com> Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> --- v1 -> v2: - added reviewed and tested tags v2 -> v3: - removed corresponding code in uvc_driver - using call from v4l_enum_fmt in uvc_v4l2.c drivers/media/common/uvc.c | 38 -------------------------- drivers/usb/gadget/function/uvc_v4l2.c | 6 ---- include/linux/usb/uvc.h | 1 - 3 files changed, 45 deletions(-) diff --git a/drivers/media/common/uvc.c b/drivers/media/common/uvc.c index 2b4df3e8f48aa6..9c0ba7a6c185b1 100644 --- a/drivers/media/common/uvc.c +++ b/drivers/media/common/uvc.c @@ -13,192 +13,154 @@ static const struct uvc_format_desc uvc_fmts[] = { { - .name = "YUV 4:2:2 (YUYV)", .guid = UVC_GUID_FORMAT_YUY2, .fcc = V4L2_PIX_FMT_YUYV, }, { - .name = "YUV 4:2:2 (YUYV)", .guid = UVC_GUID_FORMAT_YUY2_ISIGHT, .fcc = V4L2_PIX_FMT_YUYV, }, { - .name = "YUV 4:2:0 (NV12)", .guid = UVC_GUID_FORMAT_NV12, .fcc = V4L2_PIX_FMT_NV12, }, { - .name = "MJPEG", .guid = UVC_GUID_FORMAT_MJPEG, .fcc = V4L2_PIX_FMT_MJPEG, }, { - .name = "YVU 4:2:0 (YV12)", .guid = UVC_GUID_FORMAT_YV12, .fcc = V4L2_PIX_FMT_YVU420, }, { - .name = "YUV 4:2:0 (I420)", .guid = UVC_GUID_FORMAT_I420, .fcc = V4L2_PIX_FMT_YUV420, }, { - .name = "YUV 4:2:0 (M420)", .guid = UVC_GUID_FORMAT_M420, .fcc = V4L2_PIX_FMT_M420, }, { - .name = "YUV 4:2:2 (UYVY)", .guid = UVC_GUID_FORMAT_UYVY, .fcc = V4L2_PIX_FMT_UYVY, }, { - .name = "Greyscale 8-bit (Y800)", .guid = UVC_GUID_FORMAT_Y800, .fcc = V4L2_PIX_FMT_GREY, }, { - .name = "Greyscale 8-bit (Y8 )", .guid = UVC_GUID_FORMAT_Y8, .fcc = V4L2_PIX_FMT_GREY, }, { - .name = "Greyscale 8-bit (D3DFMT_L8)", .guid = UVC_GUID_FORMAT_D3DFMT_L8, .fcc = V4L2_PIX_FMT_GREY, }, { - .name = "IR 8-bit (L8_IR)", .guid = UVC_GUID_FORMAT_KSMEDIA_L8_IR, .fcc = V4L2_PIX_FMT_GREY, }, { - .name = "Greyscale 10-bit (Y10 )", .guid = UVC_GUID_FORMAT_Y10, .fcc = V4L2_PIX_FMT_Y10, }, { - .name = "Greyscale 12-bit (Y12 )", .guid = UVC_GUID_FORMAT_Y12, .fcc = V4L2_PIX_FMT_Y12, }, { - .name = "Greyscale 16-bit (Y16 )", .guid = UVC_GUID_FORMAT_Y16, .fcc = V4L2_PIX_FMT_Y16, }, { - .name = "BGGR Bayer (BY8 )", .guid = UVC_GUID_FORMAT_BY8, .fcc = V4L2_PIX_FMT_SBGGR8, }, { - .name = "BGGR Bayer (BA81)", .guid = UVC_GUID_FORMAT_BA81, .fcc = V4L2_PIX_FMT_SBGGR8, }, { - .name = "GBRG Bayer (GBRG)", .guid = UVC_GUID_FORMAT_GBRG, .fcc = V4L2_PIX_FMT_SGBRG8, }, { - .name = "GRBG Bayer (GRBG)", .guid = UVC_GUID_FORMAT_GRBG, .fcc = V4L2_PIX_FMT_SGRBG8, }, { - .name = "RGGB Bayer (RGGB)", .guid = UVC_GUID_FORMAT_RGGB, .fcc = V4L2_PIX_FMT_SRGGB8, }, { - .name = "RGB565", .guid = UVC_GUID_FORMAT_RGBP, .fcc = V4L2_PIX_FMT_RGB565, }, { - .name = "BGR 8:8:8 (BGR3)", .guid = UVC_GUID_FORMAT_BGR3, .fcc = V4L2_PIX_FMT_BGR24, }, { - .name = "BGRA/X 8:8:8:8 (BGR4)", .guid = UVC_GUID_FORMAT_BGR4, .fcc = V4L2_PIX_FMT_XBGR32, }, { - .name = "H.264", .guid = UVC_GUID_FORMAT_H264, .fcc = V4L2_PIX_FMT_H264, }, { - .name = "H.265", .guid = UVC_GUID_FORMAT_H265, .fcc = V4L2_PIX_FMT_HEVC, }, { - .name = "Greyscale 8 L/R (Y8I)", .guid = UVC_GUID_FORMAT_Y8I, .fcc = V4L2_PIX_FMT_Y8I, }, { - .name = "Greyscale 12 L/R (Y12I)", .guid = UVC_GUID_FORMAT_Y12I, .fcc = V4L2_PIX_FMT_Y12I, }, { - .name = "Depth data 16-bit (Z16)", .guid = UVC_GUID_FORMAT_Z16, .fcc = V4L2_PIX_FMT_Z16, }, { - .name = "Bayer 10-bit (SRGGB10P)", .guid = UVC_GUID_FORMAT_RW10, .fcc = V4L2_PIX_FMT_SRGGB10P, }, { - .name = "Bayer 16-bit (SBGGR16)", .guid = UVC_GUID_FORMAT_BG16, .fcc = V4L2_PIX_FMT_SBGGR16, }, { - .name = "Bayer 16-bit (SGBRG16)", .guid = UVC_GUID_FORMAT_GB16, .fcc = V4L2_PIX_FMT_SGBRG16, }, { - .name = "Bayer 16-bit (SRGGB16)", .guid = UVC_GUID_FORMAT_RG16, .fcc = V4L2_PIX_FMT_SRGGB16, }, { - .name = "Bayer 16-bit (SGRBG16)", .guid = UVC_GUID_FORMAT_GR16, .fcc = V4L2_PIX_FMT_SGRBG16, }, { - .name = "Depth data 16-bit (Z16)", .guid = UVC_GUID_FORMAT_INVZ, .fcc = V4L2_PIX_FMT_Z16, }, { - .name = "Greyscale 10-bit (Y10 )", .guid = UVC_GUID_FORMAT_INVI, .fcc = V4L2_PIX_FMT_Y10, }, { - .name = "IR:Depth 26-bit (INZI)", .guid = UVC_GUID_FORMAT_INZI, .fcc = V4L2_PIX_FMT_INZI, }, { - .name = "4-bit Depth Confidence (Packed)", .guid = UVC_GUID_FORMAT_CNF4, .fcc = V4L2_PIX_FMT_CNF4, }, { - .name = "HEVC", .guid = UVC_GUID_FORMAT_HEVC, .fcc = V4L2_PIX_FMT_HEVC, }, diff --git a/drivers/usb/gadget/function/uvc_v4l2.c b/drivers/usb/gadget/function/uvc_v4l2.c index 21e573e628f4e7..3f0a9795c0d45d 100644 --- a/drivers/usb/gadget/function/uvc_v4l2.c +++ b/drivers/usb/gadget/function/uvc_v4l2.c @@ -374,15 +374,9 @@ uvc_v4l2_enum_format(struct file *file, void *fh, struct v4l2_fmtdesc *f) if (!uformat) return -EINVAL; - if (uformat->type != UVCG_UNCOMPRESSED) - f->flags |= V4L2_FMT_FLAG_COMPRESSED; - fmtdesc = to_uvc_format(uformat); f->pixelformat = fmtdesc->fcc; - strscpy(f->description, fmtdesc->name, sizeof(f->description)); - f->description[strlen(fmtdesc->name) - 1] = 0; - return 0; } diff --git a/include/linux/usb/uvc.h b/include/linux/usb/uvc.h index b0210c5c5406b3..88d96095bcb163 100644 --- a/include/linux/usb/uvc.h +++ b/include/linux/usb/uvc.h @@ -149,7 +149,6 @@ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} struct uvc_format_desc { - char *name; u8 guid[16]; u32 fcc; }; -- 2.30.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v3 5/5] usb: uvc: use v4l2_fill_fmtdesc instead of open coded format name 2023-01-26 23:14 ` [PATCH v3 5/5] usb: uvc: use v4l2_fill_fmtdesc instead of open coded format name Michael Grzeschik @ 2023-01-26 23:26 ` Laurent Pinchart 0 siblings, 0 replies; 8+ messages in thread From: Laurent Pinchart @ 2023-01-26 23:26 UTC (permalink / raw) To: Michael Grzeschik Cc: gregkh, mchehab, hverkuil-cisco, linux-usb, linux-media, kernel, Daniel Scally Hi Michael, Thank you for the patch. On Fri, Jan 27, 2023 at 12:14:56AM +0100, Michael Grzeschik wrote: > Since v4l2_fill_fmtdesc will be called in the ioctl v4l_enum_fmt anyway. > We can set the format description and compressed flag from v4l_fill_fmtdesc > and can remove the extra name field in uvc_format_desc. > > Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com> > Tested-by: Daniel Scally <dan.scally@ideasonboard.com> > Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Happy to see the name field being dropped. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > v1 -> v2: - added reviewed and tested tags > v2 -> v3: - removed corresponding code in uvc_driver > - using call from v4l_enum_fmt in uvc_v4l2.c > > drivers/media/common/uvc.c | 38 -------------------------- > drivers/usb/gadget/function/uvc_v4l2.c | 6 ---- > include/linux/usb/uvc.h | 1 - > 3 files changed, 45 deletions(-) > > diff --git a/drivers/media/common/uvc.c b/drivers/media/common/uvc.c > index 2b4df3e8f48aa6..9c0ba7a6c185b1 100644 > --- a/drivers/media/common/uvc.c > +++ b/drivers/media/common/uvc.c > @@ -13,192 +13,154 @@ > > static const struct uvc_format_desc uvc_fmts[] = { > { > - .name = "YUV 4:2:2 (YUYV)", > .guid = UVC_GUID_FORMAT_YUY2, > .fcc = V4L2_PIX_FMT_YUYV, > }, > { > - .name = "YUV 4:2:2 (YUYV)", > .guid = UVC_GUID_FORMAT_YUY2_ISIGHT, > .fcc = V4L2_PIX_FMT_YUYV, > }, > { > - .name = "YUV 4:2:0 (NV12)", > .guid = UVC_GUID_FORMAT_NV12, > .fcc = V4L2_PIX_FMT_NV12, > }, > { > - .name = "MJPEG", > .guid = UVC_GUID_FORMAT_MJPEG, > .fcc = V4L2_PIX_FMT_MJPEG, > }, > { > - .name = "YVU 4:2:0 (YV12)", > .guid = UVC_GUID_FORMAT_YV12, > .fcc = V4L2_PIX_FMT_YVU420, > }, > { > - .name = "YUV 4:2:0 (I420)", > .guid = UVC_GUID_FORMAT_I420, > .fcc = V4L2_PIX_FMT_YUV420, > }, > { > - .name = "YUV 4:2:0 (M420)", > .guid = UVC_GUID_FORMAT_M420, > .fcc = V4L2_PIX_FMT_M420, > }, > { > - .name = "YUV 4:2:2 (UYVY)", > .guid = UVC_GUID_FORMAT_UYVY, > .fcc = V4L2_PIX_FMT_UYVY, > }, > { > - .name = "Greyscale 8-bit (Y800)", > .guid = UVC_GUID_FORMAT_Y800, > .fcc = V4L2_PIX_FMT_GREY, > }, > { > - .name = "Greyscale 8-bit (Y8 )", > .guid = UVC_GUID_FORMAT_Y8, > .fcc = V4L2_PIX_FMT_GREY, > }, > { > - .name = "Greyscale 8-bit (D3DFMT_L8)", > .guid = UVC_GUID_FORMAT_D3DFMT_L8, > .fcc = V4L2_PIX_FMT_GREY, > }, > { > - .name = "IR 8-bit (L8_IR)", > .guid = UVC_GUID_FORMAT_KSMEDIA_L8_IR, > .fcc = V4L2_PIX_FMT_GREY, > }, > { > - .name = "Greyscale 10-bit (Y10 )", > .guid = UVC_GUID_FORMAT_Y10, > .fcc = V4L2_PIX_FMT_Y10, > }, > { > - .name = "Greyscale 12-bit (Y12 )", > .guid = UVC_GUID_FORMAT_Y12, > .fcc = V4L2_PIX_FMT_Y12, > }, > { > - .name = "Greyscale 16-bit (Y16 )", > .guid = UVC_GUID_FORMAT_Y16, > .fcc = V4L2_PIX_FMT_Y16, > }, > { > - .name = "BGGR Bayer (BY8 )", > .guid = UVC_GUID_FORMAT_BY8, > .fcc = V4L2_PIX_FMT_SBGGR8, > }, > { > - .name = "BGGR Bayer (BA81)", > .guid = UVC_GUID_FORMAT_BA81, > .fcc = V4L2_PIX_FMT_SBGGR8, > }, > { > - .name = "GBRG Bayer (GBRG)", > .guid = UVC_GUID_FORMAT_GBRG, > .fcc = V4L2_PIX_FMT_SGBRG8, > }, > { > - .name = "GRBG Bayer (GRBG)", > .guid = UVC_GUID_FORMAT_GRBG, > .fcc = V4L2_PIX_FMT_SGRBG8, > }, > { > - .name = "RGGB Bayer (RGGB)", > .guid = UVC_GUID_FORMAT_RGGB, > .fcc = V4L2_PIX_FMT_SRGGB8, > }, > { > - .name = "RGB565", > .guid = UVC_GUID_FORMAT_RGBP, > .fcc = V4L2_PIX_FMT_RGB565, > }, > { > - .name = "BGR 8:8:8 (BGR3)", > .guid = UVC_GUID_FORMAT_BGR3, > .fcc = V4L2_PIX_FMT_BGR24, > }, > { > - .name = "BGRA/X 8:8:8:8 (BGR4)", > .guid = UVC_GUID_FORMAT_BGR4, > .fcc = V4L2_PIX_FMT_XBGR32, > }, > { > - .name = "H.264", > .guid = UVC_GUID_FORMAT_H264, > .fcc = V4L2_PIX_FMT_H264, > }, > { > - .name = "H.265", > .guid = UVC_GUID_FORMAT_H265, > .fcc = V4L2_PIX_FMT_HEVC, > }, > { > - .name = "Greyscale 8 L/R (Y8I)", > .guid = UVC_GUID_FORMAT_Y8I, > .fcc = V4L2_PIX_FMT_Y8I, > }, > { > - .name = "Greyscale 12 L/R (Y12I)", > .guid = UVC_GUID_FORMAT_Y12I, > .fcc = V4L2_PIX_FMT_Y12I, > }, > { > - .name = "Depth data 16-bit (Z16)", > .guid = UVC_GUID_FORMAT_Z16, > .fcc = V4L2_PIX_FMT_Z16, > }, > { > - .name = "Bayer 10-bit (SRGGB10P)", > .guid = UVC_GUID_FORMAT_RW10, > .fcc = V4L2_PIX_FMT_SRGGB10P, > }, > { > - .name = "Bayer 16-bit (SBGGR16)", > .guid = UVC_GUID_FORMAT_BG16, > .fcc = V4L2_PIX_FMT_SBGGR16, > }, > { > - .name = "Bayer 16-bit (SGBRG16)", > .guid = UVC_GUID_FORMAT_GB16, > .fcc = V4L2_PIX_FMT_SGBRG16, > }, > { > - .name = "Bayer 16-bit (SRGGB16)", > .guid = UVC_GUID_FORMAT_RG16, > .fcc = V4L2_PIX_FMT_SRGGB16, > }, > { > - .name = "Bayer 16-bit (SGRBG16)", > .guid = UVC_GUID_FORMAT_GR16, > .fcc = V4L2_PIX_FMT_SGRBG16, > }, > { > - .name = "Depth data 16-bit (Z16)", > .guid = UVC_GUID_FORMAT_INVZ, > .fcc = V4L2_PIX_FMT_Z16, > }, > { > - .name = "Greyscale 10-bit (Y10 )", > .guid = UVC_GUID_FORMAT_INVI, > .fcc = V4L2_PIX_FMT_Y10, > }, > { > - .name = "IR:Depth 26-bit (INZI)", > .guid = UVC_GUID_FORMAT_INZI, > .fcc = V4L2_PIX_FMT_INZI, > }, > { > - .name = "4-bit Depth Confidence (Packed)", > .guid = UVC_GUID_FORMAT_CNF4, > .fcc = V4L2_PIX_FMT_CNF4, > }, > { > - .name = "HEVC", > .guid = UVC_GUID_FORMAT_HEVC, > .fcc = V4L2_PIX_FMT_HEVC, > }, > diff --git a/drivers/usb/gadget/function/uvc_v4l2.c b/drivers/usb/gadget/function/uvc_v4l2.c > index 21e573e628f4e7..3f0a9795c0d45d 100644 > --- a/drivers/usb/gadget/function/uvc_v4l2.c > +++ b/drivers/usb/gadget/function/uvc_v4l2.c > @@ -374,15 +374,9 @@ uvc_v4l2_enum_format(struct file *file, void *fh, struct v4l2_fmtdesc *f) > if (!uformat) > return -EINVAL; > > - if (uformat->type != UVCG_UNCOMPRESSED) > - f->flags |= V4L2_FMT_FLAG_COMPRESSED; > - > fmtdesc = to_uvc_format(uformat); > f->pixelformat = fmtdesc->fcc; > > - strscpy(f->description, fmtdesc->name, sizeof(f->description)); > - f->description[strlen(fmtdesc->name) - 1] = 0; > - > return 0; > } > > diff --git a/include/linux/usb/uvc.h b/include/linux/usb/uvc.h > index b0210c5c5406b3..88d96095bcb163 100644 > --- a/include/linux/usb/uvc.h > +++ b/include/linux/usb/uvc.h > @@ -149,7 +149,6 @@ > 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} > > struct uvc_format_desc { > - char *name; > u8 guid[16]; > u32 fcc; > }; -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use 2023-01-26 23:14 [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use Michael Grzeschik ` (4 preceding siblings ...) 2023-01-26 23:14 ` [PATCH v3 5/5] usb: uvc: use v4l2_fill_fmtdesc instead of open coded format name Michael Grzeschik @ 2023-01-31 8:41 ` Greg KH 5 siblings, 0 replies; 8+ messages in thread From: Greg KH @ 2023-01-31 8:41 UTC (permalink / raw) To: Michael Grzeschik Cc: laurent.pinchart, mchehab, hverkuil-cisco, linux-usb, linux-media, kernel On Fri, Jan 27, 2023 at 12:14:51AM +0100, Michael Grzeschik wrote: > This series is improving the use of the uvc_format_desc > in v4l2-uvc.h and also reuses the declarative strings from > v4l_fill_fmtdesc. > > This series applies on > > git://git.kernel.org/pub/scm/linux/kernel/git/pinchartl/linux.git media-uvc-next-20230115 > > which has been merged in the Linux media tree for v6.3 (as shown by > https://git.linuxtv.org/media_stage.git/commit/?id=82adfe34694c98f1115a7b75cff6af9c4a35dba9). I've merged that git tag into my usb-next branch and taken this series as well. Thanks for sticking with this, and sorry for the complexity in getting it merged properly. greg k-h ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-01-31 8:46 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-01-26 23:14 [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 1/5] media: uvcvideo: Add GUID for BGRA/X 8:8:8:8 Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 2/5] usb: uvc: move media/v4l2-uvc.h to usb/uvc.h Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 3/5] usb: uvc: move uvc_fmts and uvc_format_by_guid to own compile unit Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 4/5] usb: uvc: make uvc_format_desc table const Michael Grzeschik 2023-01-26 23:14 ` [PATCH v3 5/5] usb: uvc: use v4l2_fill_fmtdesc instead of open coded format name Michael Grzeschik 2023-01-26 23:26 ` Laurent Pinchart 2023-01-31 8:41 ` [PATCH v3 0/5] [PATCH v3] usb: uvc: improve header files and function use Greg KH
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.